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/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/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/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/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) - ) + (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) - ) - ) +(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) - ) + (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) - ) +(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) - ) - ) - ) - ) + (&+! data16 2))))) + (none)) - (none) - ) - -(defun decomp-frame ((output-frame joint-anim-frame) (num-joints int) (anim joint-anim-compressed-frame) (amount float) (hdr joint-anim-compressed-hdr)) +(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) - ) - ) + ((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 *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 - (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)) - ) - (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 + ((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 - ((<= (-> 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) - ) - ) - ) + ((< 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))) + (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 + ((<= (-> 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 + (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) - ) - ) - ) - -(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) - ) - ) - ) - -(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 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 ((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) - ) - ) - ) - ) + (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)))) + +(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))) + (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))) - (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) + :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)) - (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) - ) - ) - ) - ) + (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) - ) - ) - + ((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) - ) - ) - ) + :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)))) (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) - ) - ) - ) - -(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)) - ) + (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?)) - (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) - ) - ) - ) - ) + (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))) + (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 *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))) ;; 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) - ) - ) + ((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) - ) - ) +(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) - ) - (send-event (handle->process (-> self notify-handle)) 'notify 'die) - (suspend) - (suspend) - (cleanup-for-death self) - (deactivate self) - ) - ) + (suspend) + (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)) - -(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!) - (.lvf vf1 (&-> arg0 quad)) + (.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!) - (.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) - ) - ) + (.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)) +(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))) - ) - ) + (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) - ) +(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)) - ) - ) + (.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)) +(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 - ) - ) - ) - ) + (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) - ) - ) - ) +(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) - ) - ) - ) - ) - ) + (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) - ) +(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 - ) + :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) - ) +(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 - ) - ) - ) - ) + (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)) +(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) - ) + (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)) +(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) - ) - ) + (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 *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))) - ) + (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-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 - ) - ) +(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) - ) + ;; 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)) +(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 - ) + ;; 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)) +(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) - ) + (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) - ) +(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 - ) + (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)) +(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) + (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))) - ;; 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)) +(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) - ) + (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 - ) - ) +(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) - ) - ) - ) - ) + (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)) +(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))) + (vf4 :class vf)) (nop!) - (zero? v1-4) - ) - ) - ) + (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))) + (vf9 :class vf)) + (init-vf0-vector) (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)) + (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!) - (.mov vf7 a3-4) + (vitof12.xyzw vf5 vf5) (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))) + (vitof12.xyzw vf6 vf6) (nop!) - (zero? v1-6) - ) - ) - ) + (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-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 *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 - ) - ) +(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) - ) - ) - ) +(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-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 *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 *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 *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 *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 *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 *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 *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 *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-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 *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 *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) - ) - ) +(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) - ) - ) - ) +(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 *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 *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-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 *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) - ) - ) +(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) - ) - ) - ) +(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 *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 *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 *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-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 *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 - ) - ) +(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 - ) - ) - ) +(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) - ) + (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 - ) - ) - ) +(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) - ) + (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 - ) - ) - ) +(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) - ) + (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 - ) - ) - ) +(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) - ) + (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 - ) - ) - ) +(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) - ) + (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 - ) - ) - ) +(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) - ) + (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 - ) - ) - ) +(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) - ) + (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) - ) - ) - ) +(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) - ) + (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 - ) - ) - ) +(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 8b6e332b40..9a28e4e91f 100644 --- a/goal_src/jak1/engine/common-obs/babak.gc +++ b/goal_src/jak1/engine/common-obs/babak.gc @@ -1,250 +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) - () +(deftype babak (nav-enemy) () (:states - babak-run-to-cannon - ) - ) + 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))) - ) - ) + :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))) - (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! (loop! f30-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! (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)) - ) - ) - (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) + :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)) @@ -257,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* '()) @@ -292,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) - ) - ) + :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-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 9740cca0f0..e2ff87d473 100644 --- a/goal_src/jak1/engine/common-obs/collectables.gc +++ b/goal_src/jak1/engine/common-obs/collectables.gc @@ -1,19 +1,14 @@ ;;-*-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") (require "pc/pckernel.gc") (require "engine/common-obs/collectables-part.gc") (require "engine/entity/entity.gc") - -;; name: collectables.gc -;; name in dgo: collectables -;; dgos: GAME, ENGINE - (declare-type vent process-drawable) + (declare-type eco eco-collectable) (defenum collectable-flags @@ -25,65 +20,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)) @@ -91,43 +72,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 @@ -137,33 +109,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)) @@ -171,52 +134,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)) @@ -224,28 +176,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) @@ -255,103 +194,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))) @@ -359,633 +252,375 @@ (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)) - (!= (-> 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))) - ) - (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 - (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)) + :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 *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) - ) - ) - ) + (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)))) + (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 (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 - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (the-as - symbol - (case message - (('set-movie-pos) - (let ((v1-3 (res-lump-struct (-> self entity) 'movie-pos vector :time (the-as float -1000000000.0)))) - (the-as symbol (when v1-3 - (set! (-> v1-3 quad) (-> (the-as vector (-> block param 0)) quad)) - (the-as symbol v1-3) - ) - ) - ) - ) - (('actor-pause) - (the-as symbol (cond - ((-> block param 0) - (logior! (-> self mask) (process-mask actor-pause)) - (let ((v0-1 #t)) - (set! (-> self actor-pause) v0-1) - v0-1 - ) - ) - (else - (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self actor-pause) #f) - #f - ) - ) - ) - ) - (('fade) - (process-entity-status! self (entity-perm-status dead) #t) - (the-as symbol (deactivate self)) - ) - ) - ) - ) - :enter (behavior ((arg0 object) (arg1 handle)) - (set! (-> self pickup-handle) arg1) - (when (-> self notify-parent) - (let ((gp-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> gp-0 from) self) - (set! (-> gp-0 num-params) 1) - (set! (-> gp-0 message) 'notify) - (set! (-> gp-0 param 0) (the-as uint 'pickup)) - (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 - ) - ) - ) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :code (behavior ((arg0 object) (arg1 handle)) - (clear-collide-with-as (-> self root)) - (if (not (or (= (-> self fact pickup-type) (pickup-type eco-pill)) - (logtest? (-> self fact options) (fact-options powerup)) - ) - ) - (send-event (handle->process arg1) 'powerup (-> self fact pickup-type) (-> self fact pickup-amount)) - ) - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (case (-> self fact pickup-type) - (((pickup-type eco-yellow)) - (sound-play "y-eco-pickup") - ) - (((pickup-type eco-red)) - (sound-play "r-eco-pickup") - ) - (((pickup-type eco-blue)) - (sound-play "b-eco-pickup") - (case (-> (level-get-target-inside *level*) name) - (('training) - (level-hint-spawn - (text-id training-eco-reminder) - "sagevb23" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - ) - (((pickup-type eco-green)) - (sound-play "g-eco-pickup") - ) - (((pickup-type eco-green) (pickup-type eco-pill)) - (sound-play "pill-pickup") - ) - ) - (if (nonzero? (-> self part)) - (kill-and-free-particles (-> self part)) - ) - (let ((gp-6 (handle->process (-> self pickup-handle)))) - (if (nonzero? (-> self collect-effect)) - (process-spawn - part-tracker - :init part-tracker-init - (-> self collect-effect) - -1 - part-tracker-track-target - #f - #f - (-> self root root-prim prim-core) - :to gp-6 - ) - ) - ) - (if (nonzero? (-> self collect-effect2)) - (process-spawn - part-tracker - :init part-tracker-init - (-> self collect-effect2) - -1 - (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)) - ) - ) - ) - ) - ) - ) - (process->handle self) - #f - (-> self root root-prim prim-core) - :to self - ) - ) - (while (-> self child) - (suspend) - ) - (go-virtual die) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (the-as symbol + (case message + (('set-movie-pos) + (let ((v1-3 (res-lump-struct (-> self entity) 'movie-pos vector :time (the-as float -1000000000.0)))) + (the-as symbol (when v1-3 (set! (-> v1-3 quad) (-> (the-as vector (-> block param 0)) quad)) (the-as symbol v1-3))))) + (('actor-pause) + (the-as symbol + (cond + ((-> block param 0) + (logior! (-> self mask) (process-mask actor-pause)) + (let ((v0-1 #t)) (set! (-> self actor-pause) v0-1) v0-1)) + (else (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self actor-pause) #f) #f)))) + (('fade) (process-entity-status! self (entity-perm-status dead) #t) (the-as symbol (deactivate self)))))) + :enter + (behavior ((arg0 object) (arg1 handle)) + (set! (-> self pickup-handle) arg1) + (when (-> self notify-parent) + (let ((gp-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> gp-0 from) self) + (set! (-> gp-0 num-params) 1) + (set! (-> gp-0 message) 'notify) + (set! (-> gp-0 param 0) (the-as uint 'pickup)) + (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)))) + (logclear! (-> self mask) (process-mask actor-pause))) + :code + (behavior ((arg0 object) (arg1 handle)) + (clear-collide-with-as (-> self root)) + (if (not (or (= (-> self fact pickup-type) (pickup-type eco-pill)) (logtest? (-> self fact options) (fact-options powerup)))) + (send-event (handle->process arg1) 'powerup (-> self fact pickup-type) (-> self fact pickup-amount))) + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (case (-> self fact pickup-type) + (((pickup-type eco-yellow)) (sound-play "y-eco-pickup")) + (((pickup-type eco-red)) (sound-play "r-eco-pickup")) + (((pickup-type eco-blue)) + (sound-play "b-eco-pickup") + (case (-> (level-get-target-inside *level*) name) + (('training) + (level-hint-spawn (text-id training-eco-reminder) "sagevb23" (the-as entity #f) *entity-pool* (game-task none))))) + (((pickup-type eco-green)) (sound-play "g-eco-pickup")) + (((pickup-type eco-green) (pickup-type eco-pill)) (sound-play "pill-pickup"))) + (if (nonzero? (-> self part)) (kill-and-free-particles (-> self part))) + (let ((gp-6 (handle->process (-> self pickup-handle)))) + (if (nonzero? (-> self collect-effect)) + (process-spawn part-tracker + :init + part-tracker-init + (-> self collect-effect) + -1 + part-tracker-track-target + #f + #f + (-> self root root-prim prim-core) + :to + gp-6))) + (if (nonzero? (-> self collect-effect2)) + (process-spawn part-tracker + :init + part-tracker-init + (-> self collect-effect2) + -1 + (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)))))))) + (process->handle self) + #f + (-> self root root-prim prim-core) + :to + self)) + (while (-> self child) + (suspend)) + (go-virtual die))) (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)) @@ -996,179 +631,132 @@ (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 - ) + 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 *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) - () - ) +(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) - ) - ) - ) - -(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 () + (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)))) - ) - ) - ) - ) - ) - (transform-post) - ;; og:preserve-this added particle! - (with-pc - (if (-> *pc-settings* money-starburst?) - (spawn (-> self part) (-> self root root-prim world-sphere)))) - (suspend) - ) - ) - ) + (* 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) + (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))))))))) + (transform-post) + ;; og:preserve-this added particle! + (with-pc + (if (-> *pc-settings* money-starburst?) (spawn (-> self part) (-> self root root-prim world-sphere)))) + (suspend)))) (defstate pickup (money) :virtual #t - :code (behavior ((arg0 object) (arg1 handle)) - ;; og:preserve-this added - (if (nonzero? (-> self part)) - (kill-and-free-particles (-> self part)) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - (clear-collide-with-as (-> self root)) - (process-entity-status! self (entity-perm-status dead) #t) - (convert-to-hud-object self (the-as hud (ppointer->process (-> *hud-parts* money)))) - ) - ) + :code + (behavior ((arg0 object) (arg1 handle)) + ;; og:preserve-this added + (if (nonzero? (-> self part)) (kill-and-free-particles (-> self part))) + (logclear! (-> self mask) (process-mask actor-pause)) + (clear-collide-with-as (-> self root)) + (process-entity-status! self (entity-perm-status dead) #t) + (convert-to-hud-object self (the-as hud (ppointer->process (-> *hud-parts* money)))))) (defmethod initialize ((this money)) (stack-size-set! (-> this main-thread) 192) ;; og:preserve-this hack increased from 128 (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) @@ -1176,20 +764,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)) @@ -1200,8 +785,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) @@ -1220,664 +804,308 @@ (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)))) + :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)) - ) - ) - ) - ) - ) - ) + (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)))) + :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) - ) - ) - ) - (cond - ((and *debug-segment* (< (-> *fuel-cell-tune-pos* w) 1000000000.0)) - (move-to-point! (-> self root) *fuel-cell-tune-pos*) - (set-yaw-angle-clear-roll-pitch! (-> self root) (-> *fuel-cell-tune-pos* w)) - ) - ((= (-> self movie-pos-index) -1) - ) - (gp-1 - (move-to-point! (-> self root) gp-1) - (set-yaw-angle-clear-roll-pitch! (-> self root) (-> gp-1 w)) - ) - (else - (move-to-point! (-> self root) (-> *target* control trans)) - (set-yaw-angle-clear-roll-pitch! (-> self root) (y-angle (-> *target* control))) - (move-to-ground (-> self root) (the-as float 40960.0) (the-as float 40960.0) #f (collide-kind background)) - ) - ) - ) - (spool-push *art-control* (-> self victory-anim name) 0 self (the-as float -99.0)) - (send-event *target* 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) - (set! (-> self draw bounds w) 32768.0) - (logior! (-> self skel status) (janim-status inited)) - (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) - (process-spawn othercam self 10 #f #t :to self) - (auto-save-command 'auto-save 0 0 *default-pool*) - (ja-play-spooled-anim - (-> self victory-anim) - (the-as art-joint-anim fuel-cell-idle-ja) - (the-as art-joint-anim #f) - (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) - (send-event *target* 'end-mode) - (send-event *camera* 'no-intro) - (send-event *camera* 'clear-entity) - (ja-channel-set! 0) - (suspend) - (suspend) - (process-spawn-function - process - (lambda :behavior collectable - ((arg0 game-task)) - (while (or (-> *setting-control* current ambient) - (-> *setting-control* current movie) - (-> *setting-control* current hint) - (str-is-playing?) - ) - (suspend) - ) + (the-as vector #f)))) (cond - ((= arg0 (game-task training-buzzer)) - (level-hint-spawn - (text-id training-buzzer-resolution) - "asstvb45" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task training-door)) - (level-hint-spawn - (text-id training-eco-opened-door) - "sagevb25" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task beach-ecorocks)) - (level-hint-spawn - (text-id beach-ecorocks-resolution) - "sagevb01" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task misty-cannon)) - (level-hint-spawn - (text-id misty-cannon-resolution) - "sagevb02" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task misty-bike)) - (level-hint-spawn - (text-id misty-bike-resolution) - "asstvb03" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task firecanyon-end)) - (level-hint-spawn - (text-id firecanyon-end-resolution) - "sksp0095" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task rolling-robbers)) - (level-hint-spawn - (text-id rolling-robbers-resolution) - "asstvb20" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task rolling-plants)) - (level-hint-spawn - (text-id rolling-plants-resolution) - "sagevb03" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task swamp-flutflut)) - (level-hint-spawn - (text-id swamp-flutflut-resolution) - "asstvb21" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task ogre-boss)) - (level-hint-spawn (text-id ogre-boss-resolution) "asstvb23" (the-as entity #f) *entity-pool* (game-task none)) - ) - ((= arg0 (game-task ogre-end)) - (level-hint-spawn (text-id ogre-race-resolution) "asstvb25" (the-as entity #f) *entity-pool* (game-task none)) - ) - ((= arg0 (game-task beach-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task jungle-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task misty-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task firecanyon-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task rolling-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task sunken-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task swamp-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task ogre-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task cave-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task snow-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task lavatube-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task citadel-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task village1-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task village2-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 (game-task village3-buzzer)) - (level-hint-spawn - (text-id sidekick-buzzer-resolution) - "sksp009k" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - (none) - ) - (the int (-> self fact pickup-amount)) - :to self - ) - (case (the int (-> self fact pickup-amount)) - (((game-task citadel-sage-blue)) - (send-event (process-by-name "blue-sagecage-1" *active-pool*) 'play-anim) - ) - (((game-task citadel-sage-red)) - (send-event (process-by-name "red-sagecage-1" *active-pool*) 'play-anim) - ) - (((game-task citadel-sage-yellow)) - (send-event (process-by-name "yellow-sagecage-1" *active-pool*) 'play-anim) - ) - (((game-task citadel-sage-green)) - (send-event (process-by-name "green-sagecage-1" *active-pool*) 'play-anim) - ) - (((game-task jungle-eggtop) (game-task snow-eggtop) (game-task snow-ball) (game-task sunken-slide)) - ) - (else - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'show) - ) - ) - (convert-to-hud-object self (the-as hud (ppointer->process (-> *hud-parts* fuel-cell)))) - ) - :post (behavior () - (transform-post) - (if (-> self state-object) - (spawn (-> self part) (the-as vector (-> self root root-prim prim-core))) - ) - ) - ) + ((and *debug-segment* (< (-> *fuel-cell-tune-pos* w) 1000000000.0)) + (move-to-point! (-> self root) *fuel-cell-tune-pos*) + (set-yaw-angle-clear-roll-pitch! (-> self root) (-> *fuel-cell-tune-pos* w))) + ((= (-> self movie-pos-index) -1)) + (gp-1 (move-to-point! (-> self root) gp-1) (set-yaw-angle-clear-roll-pitch! (-> self root) (-> gp-1 w))) + (else + (move-to-point! (-> self root) (-> *target* control trans)) + (set-yaw-angle-clear-roll-pitch! (-> self root) (y-angle (-> *target* control))) + (move-to-ground (-> self root) (the-as float 40960.0) (the-as float 40960.0) #f (collide-kind background))))) + (spool-push *art-control* (-> self victory-anim name) 0 self (the-as float -99.0)) + (send-event *target* 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) + (set! (-> self draw bounds w) 32768.0) + (logior! (-> self skel status) (janim-status inited)) + (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) + (process-spawn othercam self 10 #f #t :to self) + (auto-save-command 'auto-save 0 0 *default-pool*) + (ja-play-spooled-anim (-> self victory-anim) + (the-as art-joint-anim fuel-cell-idle-ja) + (the-as art-joint-anim #f) + (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) + (send-event *target* 'end-mode) + (send-event *camera* 'no-intro) + (send-event *camera* 'clear-entity) + (ja-channel-set! 0) + (suspend) + (suspend) + (process-spawn-function process + (lambda :behavior collectable ((arg0 game-task)) + (while (or (-> *setting-control* current ambient) + (-> *setting-control* current movie) + (-> *setting-control* current hint) + (str-is-playing?)) + (suspend)) + (cond + ((= arg0 (game-task training-buzzer)) + (level-hint-spawn (text-id training-buzzer-resolution) "asstvb45" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task training-door)) + (level-hint-spawn (text-id training-eco-opened-door) "sagevb25" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task beach-ecorocks)) + (level-hint-spawn (text-id beach-ecorocks-resolution) "sagevb01" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task misty-cannon)) + (level-hint-spawn (text-id misty-cannon-resolution) "sagevb02" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task misty-bike)) + (level-hint-spawn (text-id misty-bike-resolution) "asstvb03" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task firecanyon-end)) + (level-hint-spawn (text-id firecanyon-end-resolution) "sksp0095" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task rolling-robbers)) + (level-hint-spawn (text-id rolling-robbers-resolution) "asstvb20" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task rolling-plants)) + (level-hint-spawn (text-id rolling-plants-resolution) "sagevb03" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task swamp-flutflut)) + (level-hint-spawn (text-id swamp-flutflut-resolution) "asstvb21" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task ogre-boss)) + (level-hint-spawn (text-id ogre-boss-resolution) "asstvb23" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task ogre-end)) + (level-hint-spawn (text-id ogre-race-resolution) "asstvb25" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task beach-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task jungle-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task misty-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task firecanyon-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task rolling-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task sunken-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task swamp-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task ogre-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task cave-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task snow-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task lavatube-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task citadel-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task village1-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task village2-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 (game-task village3-buzzer)) + (level-hint-spawn (text-id sidekick-buzzer-resolution) "sksp009k" (the-as entity #f) *entity-pool* (game-task none)))) + (none)) + (the int (-> self fact pickup-amount)) + :to + self) + (case (the int (-> self fact pickup-amount)) + (((game-task citadel-sage-blue)) (send-event (process-by-name "blue-sagecage-1" *active-pool*) 'play-anim)) + (((game-task citadel-sage-red)) (send-event (process-by-name "red-sagecage-1" *active-pool*) 'play-anim)) + (((game-task citadel-sage-yellow)) (send-event (process-by-name "yellow-sagecage-1" *active-pool*) 'play-anim)) + (((game-task citadel-sage-green)) (send-event (process-by-name "green-sagecage-1" *active-pool*) 'play-anim)) + (((game-task jungle-eggtop) (game-task snow-eggtop) (game-task snow-ball) (game-task sunken-slide))) + (else (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'show))) + (convert-to-hud-object self (the-as hud (ppointer->process (-> *hud-parts* fuel-cell))))) + :post + (behavior () + (transform-post) + (if (-> self state-object) (spawn (-> self part) (the-as vector (-> self root root-prim prim-core)))))) (defmethod initialize ((this fuel-cell)) (stack-size-set! (-> this main-thread) 512) (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) @@ -1886,12 +1114,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) @@ -1900,20 +1125,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)) @@ -1928,71 +1150,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) @@ -2003,195 +1207,125 @@ (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 - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (process-entity-status! self (entity-perm-status dead) #t) - ) - ) - ) - :enter (behavior ((arg0 object) (arg1 handle)) - (set! (-> self pickup-handle) arg1) - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :code (behavior ((arg0 object) (arg1 handle)) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status complete) #t) - (sound-play "buzzer-pickup") - (case (-> (level-get-target-inside *level*) name) - (('training) - (level-hint-spawn (text-id training-buzzer-hint) "asstvb44" (the-as entity #f) *entity-pool* (game-task none)) - ) - (('firecanyon) - (level-hint-spawn - (text-id firecanyon-buzzer-hint) - "sksp0096" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (else - (level-hint-spawn - (text-id sidekick-hint-buzzer3) - "sksp009j" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - (ja-channel-set! 0) - (clear-collide-with-as (-> self root)) - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (when (not arg0) - (let ((v1-18 (manipy-spawn (-> self root trans) #f *buzzer-sg* #f :to *entity-pool*))) - (send-event (ppointer->process v1-18) 'become-hud-object (ppointer->process (-> *hud-parts* buzzers))) - ) - ) - (let* ((s5-2 (logand (the int (-> self fact pickup-amount)) #xffff)) - (s4-1 (get-task-control (the-as game-task s5-2))) - ) - (if (nonzero? s5-2) - (close-specific-task! (the-as game-task s5-2) (task-status need-hint)) - ) - (when (and (= (get-reminder s4-1 0) 127) - (and (-> self entity) (not (task-complete? *game-info* (the-as game-task s5-2)))) - ) - (if (and *target* - (logtest? (-> *target* control root-prim prim-core action) (collide-action racer snowball tube flut)) - (not arg0) - ) - (logior! (-> self fact options) (fact-options instant-collect skip-jump-anim)) - ) - (let ((v1-47 (birth-pickup-at-point - (vector+! (new 'stack-no-clear 'vector) (-> self root trans) (new 'static 'vector :y 4096.0 :w 1.0)) - (pickup-type fuel-cell) - (the float s5-2) - #f - self - (-> self fact) - ) - ) - ) - (when v1-47 - (send-event (ppointer->process v1-47) 'movie-pos (-> self movie-pos-index)) - (ja-channel-set! 0) - (clear-collide-with-as (-> self root)) - (ja-post) - (while (-> self child) - (suspend) - ) - ) - ) - ) - ) - (when (-> self notify-parent) - (let ((gp-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> gp-1 from) self) - (set! (-> gp-1 num-params) 1) - (set! (-> gp-1 message) 'notify) - (set! (-> gp-1 param 0) (the-as uint 'pickup)) - (let ((s5-3 send-event-function) - (s4-2 (ppointer->process (-> self parent))) - ) - (s5-3 - (if (and (nonzero? s4-2) (type-type? (-> s4-2 type) process)) - s4-2 - ) - gp-1 - ) - ) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) (process-entity-status! self (entity-perm-status dead) #t)))) + :enter + (behavior ((arg0 object) (arg1 handle)) + (set! (-> self pickup-handle) arg1) + (logclear! (-> self mask) (process-mask actor-pause))) + :code + (behavior ((arg0 object) (arg1 handle)) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status complete) #t) + (sound-play "buzzer-pickup") + (case (-> (level-get-target-inside *level*) name) + (('training) + (level-hint-spawn (text-id training-buzzer-hint) "asstvb44" (the-as entity #f) *entity-pool* (game-task none))) + (('firecanyon) + (level-hint-spawn (text-id firecanyon-buzzer-hint) "sksp0096" (the-as entity #f) *entity-pool* (game-task none))) + (else (level-hint-spawn (text-id sidekick-hint-buzzer3) "sksp009j" (the-as entity #f) *entity-pool* (game-task none)))) + (ja-channel-set! 0) + (clear-collide-with-as (-> self root)) + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (when (not arg0) + (let ((v1-18 (manipy-spawn (-> self root trans) #f *buzzer-sg* #f :to *entity-pool*))) + (send-event (ppointer->process v1-18) 'become-hud-object (ppointer->process (-> *hud-parts* buzzers))))) + (let* ((s5-2 (logand (the int (-> self fact pickup-amount)) #xffff)) + (s4-1 (get-task-control (the-as game-task s5-2)))) + (if (nonzero? s5-2) (close-specific-task! (the-as game-task s5-2) (task-status need-hint))) + (when (and (= (get-reminder s4-1 0) 127) (and (-> self entity) (not (task-complete? *game-info* (the-as game-task s5-2))))) + (if (and *target* + (logtest? (-> *target* control root-prim prim-core action) (collide-action racer snowball tube flut)) + (not arg0)) + (logior! (-> self fact options) (fact-options instant-collect skip-jump-anim))) + (let ((v1-47 (birth-pickup-at-point (vector+! (new 'stack-no-clear 'vector) (-> self root trans) (new 'static 'vector :y 4096.0 :w 1.0)) + (pickup-type fuel-cell) + (the float s5-2) + #f + self + (-> self fact)))) + (when v1-47 + (send-event (ppointer->process v1-47) 'movie-pos (-> self movie-pos-index)) + (ja-channel-set! 0) + (clear-collide-with-as (-> self root)) + (ja-post) + (while (-> self child) + (suspend)))))) + (when (-> self notify-parent) + (let ((gp-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> gp-1 from) self) + (set! (-> gp-1 num-params) 1) + (set! (-> gp-1 message) 'notify) + (set! (-> gp-1 param 0) (the-as uint 'pickup)) + (let ((s5-3 send-event-function) + (s4-2 (ppointer->process (-> self parent)))) + (s5-3 (if (and (nonzero? s4-2) (type-type? (-> s4-2 type) process)) s4-2) gp-1)))))) (defmethod initialize ((this buzzer)) (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) @@ -2201,23 +1335,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)) @@ -2229,42 +1359,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 @@ -2287,191 +1397,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))) @@ -2480,106 +1531,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)) @@ -2587,53 +1602,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) @@ -2643,12 +1644,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) @@ -2659,220 +1658,143 @@ (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)) - (if (and (or (= message 'touch) (= message 'attack)) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 2) - (set! (-> a1-1 message) 'get-pickup) - (set! (-> a1-1 param 0) (the-as uint (-> self fact pickup-type))) - (set! (-> a1-1 param 1) (the-as uint (-> self fact pickup-amount))) - (and (= (send-event-function proc a1-1) #t) - (or (logtest? (-> self fact options) (fact-options powerup)) (send-event proc 'powerup)) - ) - ) - ) - (go vent-pickup (process->handle proc)) - ) - (vent-standard-event-handler proc argc message block) - ) - :code (behavior () - (loop - (let ((a0-0 (-> self part)) - (a1-0 (-> self root trans)) - (gp-0 (-> self sound)) - ) - (if (and (nonzero? a0-0) (-> self show-particles)) - (spawn a0-0 a1-0) - ) - (if (nonzero? gp-0) - (update! gp-0) - ) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (if (and (or (= message 'touch) (= message 'attack)) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 2) + (set! (-> a1-1 message) 'get-pickup) + (set! (-> a1-1 param 0) (the-as uint (-> self fact pickup-type))) + (set! (-> a1-1 param 1) (the-as uint (-> self fact pickup-amount))) + (and (= (send-event-function proc a1-1) #t) + (or (logtest? (-> self fact options) (fact-options powerup)) (send-event proc 'powerup))))) + (go vent-pickup (process->handle proc))) + (vent-standard-event-handler proc argc message block)) + :code + (behavior () + (loop + (let ((a0-0 (-> self part)) + (a1-0 (-> self root trans)) + (gp-0 (-> self sound))) + (if (and (nonzero? a0-0) (-> self show-particles)) (spawn a0-0 a1-0)) + (if (nonzero? gp-0) (update! gp-0))) + (suspend)))) (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-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-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-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-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-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-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) - ) + (none)) -(deftype target-start (process-hidden) - () - ) - - -(deftype camera-start (process-hidden) - () - ) +(deftype target-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) - ) - ) + (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-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-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) - ) +(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)) - ) - )) - ) + (#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) - ) +(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) - ) + (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 - ) + 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)))))))) -(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)) +(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 - ) + (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)) - ) +(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) - ) + (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 - ) - ) +(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) - ) - ) + ((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-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-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-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-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 - ) - ) + 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 *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 *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-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-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 *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) - ) +(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) - ) - ) + ((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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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) - ) +(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) - ) - ) + ((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 - ) - ) +(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) - ) - ) + ((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 - ) - ) +(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 - ) + (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) - ) - ) +(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 - ) - ) + (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)) +(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 96853471b5..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,583 +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 "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-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*) @@ -3894,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 - ) - ) + "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) - ) +(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 - ) + (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)) +(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) - ) - ) + :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 - (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) - ) - ) + :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)) - ) + +(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) - ) - ) - + ((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 *compact-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,60 +467,40 @@ ;; 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) - - (defmethod print-volume-sizes ((this level-group)) "Loop through all entities and print their visibility. Excludes crate, fuel-cell and springbox." @@ -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) - ) - ) + ((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) - ) - ) +(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 1d99cacb83..c193c40dd7 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) - ) - ) + ((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 - ) - ) +(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 116)) (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 d4add774d5..3a041b7841 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. @@ -35,47 +30,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 @@ -83,8 +72,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*)) @@ -95,11 +83,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" @@ -111,18 +95,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. @@ -137,52 +114,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) @@ -196,52 +156,29 @@ (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) - ) - ) - ) - ) + ;; not in play mode, we're done. + (set! this this) + (goto cfg-50))))) (kill-current-level-hint '() '() 'die) (case cause (('game) ;; we are doing a full restart. ;; reset everything! (reset-all-hint-controls) - (set-continue! this (cond - (continue-point-override - (empty) - continue-point-override - ) - ((!= *kernel-boot-message* 'play) - "demo-start" - ) - (*debug-segment* - "village1-hut" - ) - (else - "title-start" - ) - ) - ) + (set-continue! this + (cond + (continue-point-override (empty) continue-point-override) + ((!= *kernel-boot-message* 'play) "demo-start") + (*debug-segment* "village1-hut") + (else "title-start"))) (set! (-> this auto-save-count) 0) (set! (-> *setting-control* default auto-save) #f) (set! (-> this money) 0.0) @@ -262,108 +199,75 @@ (set-time! (-> this hit-time)) (dotimes (v1-50 116) (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))) @@ -377,18 +281,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 @@ -406,18 +301,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))) @@ -425,98 +316,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) @@ -532,284 +392,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 @@ -822,146 +567,101 @@ (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) (when (or (not arg0) (= arg0 'game-task)) (format #t "~Tgame-task:~%") (dotimes (s4-0 116) - (if (task-complete? this (the-as game-task s4-0)) - (format #t "~T~T~S~%" (game-task->string (the-as game-task s4-0))) - ) - ) - ) + (if (task-complete? this (the-as game-task s4-0)) (format #t "~T~T~S~%" (game-task->string (the-as game-task s4-0)))))) (when (or (not arg0) (= arg0 'entity-perm)) (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*)) @@ -969,64 +669,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 116))) (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 1f4ddd0856..0096693b0b 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) 116) - (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) 116) - (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 (s4-2 115) ;; max - 1 @@ -1069,64 +723,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 @@ -1138,22 +777,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 @@ -1163,157 +800,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) @@ -1328,456 +908,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))) - - (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) - ) - ) + :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))) (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) - ) - ) + :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))) (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 e2e6300c18..d06326de0a 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 ;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -24,75 +19,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 @@ -102,85 +72,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) @@ -190,216 +132,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) @@ -415,120 +264,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) @@ -538,35 +329,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) 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) @@ -578,28 +355,21 @@ (blerc-init) ;; collide dma (suspend) - - (while *run* ;; 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) @@ -607,255 +377,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. @@ -863,73 +551,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 120251b42d..6f18a8e273 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 ac0d10ab69..9322fcfd20 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 116))) ;; 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 1c58fe3a65..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,106 +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))) - (s4-0 (-> ((method-of-type res-lump lookup-tag-idx) (the-as entity-actor s5-1) 'vol 'exact 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) - ) - ) + ((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) - ) - ) - ) +(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) - ) - ) + ((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) - ) - ) - ) +(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) - ) + (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 - ) - ) +(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 - ) + ((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) - ) - ) +(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-envmap-dproc function) + +(def-mips2c generic-interp-dproc function) + +(def-mips2c generic-no-light-dproc function) + +(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)) - (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) - ) - ) + ((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-prim (uint32) - () - ) - -(deftype gif-tag-count (uint32) - () - :flag-assert #x900000004 - ) +(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 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 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 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)) - ) +(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 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 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 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 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 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 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 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 - ) +(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) - ) - ) - ) - ) + (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 (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 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 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 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 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 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 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 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 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 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) - ) + (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 *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) - ) + (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 *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 *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 *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) - ) - ) + ((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-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) - ) - ) + (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-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 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)) ;; 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*) - - - - 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) - ) - ) + (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)) +(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) - ) - ) + (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)) +(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 fe27585488..89ac36be56 100644 --- a/goal_src/jak1/engine/gfx/shrub/shrubbery-h.gc +++ b/goal_src/jak1/engine/gfx/shrub/shrubbery-h.gc @@ -1,112 +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" @@ -117,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))) @@ -138,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 - ) + (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)) +(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-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) - ) - ) + ((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 - ) - ) +(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 - ) + (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. ) - - ;; 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. - ) - 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) - ) + (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 - (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 - (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) - ) + (none)) -(defun forall-particles-with-key ((arg0 sparticle-launch-control) - (arg1 (function sparticle-system sparticle-cpuinfo none)) - (arg2 symbol) - (arg3 symbol) - ) +(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) - (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 to) 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 + (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))) + (set! (-> arg0 fangif 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) - ) - ) - ) - ) - (set! (-> arg0 strgif regs) - (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) - ) - ) + :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 - ) - ) - ) - ) - - - + (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) - ) - ) + `(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)) - ) - ) +(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) - ) - ) + ((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)) +(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))) - ) - + ;; 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) + (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 ) - (('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) - ) + (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. ) - ) - (('loading) - ;; loading... - (case (str-load-status (&-> this len)) + (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) - ;; 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) + ;; 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.w (vec) (cadddr 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.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.)) + +(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 *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))) - ) + (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) - ) - ) - ) +(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) - ) + (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) - ) +(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 e067f8fbcc..32e6c688f3 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,114 +270,70 @@ ((= (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 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 TIMER1_BANK #x10000800) ;; has HOLD register! + +(defconstant TIMER2_BANK #x10001000) ;; 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 898fee9dc6..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,326 +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) - ) - ) + ((group sound-group))) +(deftype sound-rpc-load-bank (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-load-music (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) - ) - ) + ((name sound-name) + (parms sound-play-parms :inline))) +(deftype sound-rpc-pause-sound (sound-rpc-sound-cmd) ()) -(deftype sound-rpc-pause-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-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) - ) - ) + ((volume int32))) +(deftype sound-rpc-pause-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-stop-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) - ) - ) + ((fps uint8))) +(deftype sound-rpc-list-sounds (sound-rpc-cmd) ()) -(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)) - ) - ) + (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 ())) +(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 @@ -492,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)) - ) - ) - ) + (set! ,sound-trans (the vector #f))))) + (sound-trans-convert (-> ,cmd parms trans) ,sound-trans))) - (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) - ) +(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) - ) + (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 jungle (jungle-temple-exit 1) (jungle-lurkerm 2) (jungle-temple-top 3)) -(flava-table-add firecanyon - (racer 1) - ) +(flava-table-add firecanyon (racer 1)) -(flava-table-add jungleb - (jungleb-eggtop 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 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 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 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 swamp (flutflut 4) (swamp-launcher 2) (swamp-battle 3)) -(flava-table-add rolling - (rolling-gorge 1) - ) +(flava-table-add rolling (rolling-gorge 1)) -(flava-table-add ogre - (ogre-middle 1) - (ogre-end 2) - ) +(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 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 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 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 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 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 finalboss (finalboss-middle 1) (finalboss-end 2)) -(flava-table-add credits - (default 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 6aacdab51c..84b19dd11b 100644 --- a/goal_src/jak1/engine/target/target-death.gc +++ b/goal_src/jak1/engine/target/target-death.gc @@ -1,751 +1,492 @@ ;;-*-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 -(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 - ) - ) + (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 ((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)) + (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-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) - (suspend) - (logior! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (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) + (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)) @@ -753,24 +494,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)))))) @@ -779,625 +513,405 @@ (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)) - (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)) + (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 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)) - ) - ) + :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 97) -(defpart 98 - ) +(defpart 98) -(defpart 99 - ) +(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) - ) - ) + ((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) - ) - ) +(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)) + :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-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) + (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)) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self control unknown-surface00) *walk-mods*)) + :exit + (behavior () (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 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 - ) + :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) - ) - (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! (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 - ((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)) - ) - ) + :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 - ((< (ja-aframe-num 0) 32.0) - (quaternion-rotate-y! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion00) - (* f30-0 (seconds-per-frame)) - ) - ) + (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 ((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)))) + :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-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))) - ) - 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) - ) - ) - ) - :post target-post - ) + (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)))) + 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 566d227eda..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 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) - ) + (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 vector 2 w) 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 (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) - ) - ) + (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) - ) + (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) - ) + (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) - ) + (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) - ) + (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 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) - ) + (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 matrix)) (cond - ((>= 0.0 arg1) - (set! (-> arg5 vector 1 z) -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 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)))))) - ) - ) - ) - ) - ) - ) + (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)) - ) + (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) - ) + (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))) - ) - ) + (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 vector 0 w) f0-3) - (set! (-> arg2 vector 1 w) 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) - ) + (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))) - ) - ) + (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 vector 0 w) f0-3) - (set! (-> arg2 vector 1 w) 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) - ) + (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))) - ) - ) + (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 vector 0 w) f0-3) - (set! (-> arg2 vector 1 w) 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) - ) + (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) - ) + (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) - ) + (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) - ) + (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) - ) - ) + ((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 - ) - ) +(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) - ) - ) + (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) + (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) - (hud-update self) - (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) + :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) - - - 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) + :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 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)) - (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 641841a39f..b56a8d426b 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,28 +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) @@ -829,30 +790,25 @@ (input-opts-binds-unknown #x1615) (progress-no-other-resolution-options #x1616) (input-opts-controller-led-reflect-heat #x1617) -;; GAME-TEXT-ID ENUM ENDS + ;; GAME-TEXT-ID ENUM ENDS ) ;; DECOMP BEGINS ;; 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. @@ -881,10 +837,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 26f7118041..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) - ) + (none)) -(defmethod load-params! ((this sync-info) - (proc process) - (default-period uint) - (default-phase float) - (default-out float) - (default-in float) - ) +(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 - ) - ) - ) - ) + ;; 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) - ) +(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 - ) - ) - ) - ) + ;; 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) - ) +(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 @@ -474,44 +310,28 @@ max-vel: velocity limit damping: this is 1 - damping really. 0 means don't move, 1 means oscillate forever. accel: gain." - (set! (-> this value) init-val) (set! (-> this target) init-val) (set! (-> this vel) 0.0) (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) - ) + (-> 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) - ) +(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. @@ -526,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. @@ -578,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" @@ -588,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/kernel-defs.gc b/goal_src/jak1/kernel-defs.gc index feca93142a..d9795e328c 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) - (ppointer (pointer process) :offset-assert 24) - (self process-tree :offset-assert 28) - ) +(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) + (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 + (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,96 +427,155 @@ ;; 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)) + (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 - ) - ) + (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 *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) - ) +(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 - ) + (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*)) + :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) - ) - (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 - ) + (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 + :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 -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)) - (suspend) - ) - ) - :post ja-post - ) + (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) - (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)) + :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-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-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-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 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 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)) + :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) - ) - ) - (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) - ) - ) + (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 - ) + :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 - ) - ) +(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) - (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 - ) + :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) - (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 - ) + :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) (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 - ) - -(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 - ) - -(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) - (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) + :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!)) - ) - ) - ) - :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!))) + (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) + +(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) + (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))) (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 - 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 - ) + #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)) + #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) - ) - ) + ((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-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 - ) +(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) + :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!)) - ) - (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!)) - ) - (when (< f30-1 0.5) - (ja-no-eval :group! sculptor-to-huge-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!)) - ) - (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 :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) - ) - ) - ) - ) + (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) - ) +(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-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 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-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 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 :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) (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 - ) - -(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) - ) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post seagull-post - ) + (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 - ) + :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) (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) - ) - ) + (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-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-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-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-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-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) - ) +(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) - ) + (none)) -(deftype citb-arm-a (citb-arm) - () - ) +(deftype citb-arm-a (citb-arm) ()) +(deftype citb-arm-b (citb-arm) ()) -(deftype citb-arm-b (citb-arm) - () - ) +(deftype citb-arm-c (citb-arm) ()) +(deftype citb-arm-d (citb-arm) ()) -(deftype citb-arm-c (citb-arm) - () - ) - - -(deftype citb-arm-d (citb-arm) - () - ) - - -(deftype citb-arm-shoulder-a (citb-arm-shoulder) - () - ) - - -(deftype citb-arm-shoulder-b (citb-arm-shoulder) - () - ) +(deftype citb-arm-shoulder-a (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) - ) + (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-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-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-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) - ) +(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) - ) + (none)) -(deftype citb-disc-a (citb-disc) - () - ) +(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-d (citb-disc) - () - ) +(deftype citb-disc-c (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) - ) + (none)) -(deftype citb-iris-door (eco-door) - () - ) +(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)) - ) - ) + :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) - ) +(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) - ) + (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-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-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-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-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-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-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-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-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) - ) +(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) - ) + (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) - ) +(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) - () +(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) - ) + (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) - () - ) +(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-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) - ) +(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) - ) + (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) - ) +(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) - () +(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) - ) + (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 *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 *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 *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 *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 *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 - ) +(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-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-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 *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 *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) - ) + (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" - ) - ) +(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 0c4abc2fbb..169f1a2061 100644 --- a/goal_src/jak1/levels/common/blocking-plane.gc +++ b/goal_src/jak1/levels/common/blocking-plane.gc @@ -1,52 +1,39 @@ ;;-*-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) - :code (behavior () - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - ) - ) + :code + (behavior () + (transform-post) + (loop + (logior! (-> self mask) (process-mask sleep)) + (suspend)))) (defbehavior blocking-plane-init-by-other blocking-plane ((arg0 curve-control) (arg1 int)) - (if (or (not arg0) (logtest? (-> arg0 flags) (path-control-flag not-found))) - (deactivate self) - ) + (if (or (not arg0) (logtest? (-> arg0 flags) (path-control-flag not-found))) (deactivate self)) (let ((s5-0 (new 'static 'vector)) - (gp-0 (new 'static 'vector)) - ) + (gp-0 (new 'static 'vector))) 0.0 (eval-path-curve-div! arg0 s5-0 (the float arg1) 'exact) (eval-path-curve-div! arg0 gp-0 (+ 1.0 (the float arg1)) 'exact) (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)) @@ -54,52 +41,38 @@ (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 (fmax 122880.0 f30-1)) - (set-root-prim! s4-1 s3-1) - ) + (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)) (let ((s4-2 (new-stack-matrix0))) (vector+! (-> self root trans) s5-0 gp-0) (vector-float*! (-> self root trans) (-> self root trans) 0.5) (+! (-> self root trans y) 61440.0) (vector-! (the-as vector (-> s4-2 vector)) gp-0 s5-0) - (set! (-> self root scale x) - (* 0.00024414062 (vector-normalize-ret-len! (the-as vector (-> s4-2 vector)) 1.0)) - ) + (set! (-> self root scale x) (* 0.00024414062 (vector-normalize-ret-len! (the-as vector (-> s4-2 vector)) 1.0))) (set! (-> self root scale y) 30.0) (set! (-> self root scale z) 0.0) (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) - (none) - ) + (none)) (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)))) - (s4-0 0) - ) - (while (< s4-0 s5-0) - (process-spawn blocking-plane arg0 s4-0 :to self) - (+! s4-0 2) - ) - ) - ) - ) + (let ((s5-0 (the int (the float (+ (-> arg0 curve num-cverts) -1)))) + (s4-0 0)) + (while (< s4-0 s5-0) + (process-spawn blocking-plane arg0 s4-0 :to self) + (+! s4-0 2))))) 0 - (none) - ) + (none)) (defun blocking-plane-destroy () (with-pp @@ -107,13 +80,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 + :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) - (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) - 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) - ) + (none)) -(deftype power-left (final-door) - () - ) - - -(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 - ) - ) + 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) -(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 - ) - ) +(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)) - ) + :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 - (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 - (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) - ) + :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) - ) - (while (> (-> self num-alive) 0) - (suspend) - ) - (send-event (ppointer->process (-> self parent)) 'trigger) - (until (not (-> self child)) - (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 - ) - ) + 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-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) - ) +(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)) - ) - ) + :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))) +(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 - ) - ) + 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) - ) +(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!)) - ) - ) - ) - :post transform-post - ) + (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)) + (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?) - (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) + :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?) + (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) - ) - ;; 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)) - (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) + (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 :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-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)) + (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) + (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) + (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) - (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!)) - ) - (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 - ) + (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 - (cond - ((ja-group? robotboss-green-roar-ja) - (go robotboss-green-dark-bomb) - ) - ((not (ja-group? robotboss-idle-hover-no-blue-ja)) + :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-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-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 :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 *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 *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-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 *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 - ) - ) + 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) - ) +(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 8834f09b7e..42affa6c5d 100644 --- a/goal_src/jak1/levels/flut_common/flutflut.gc +++ b/goal_src/jak1/levels/flut_common/flutflut.gc @@ -1,318 +1,229 @@ ;;-*-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 -(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 - :event (-> (method-of-type flutflut wait-for-start) event) - :enter (behavior () - (blocking-plane-destroy) - (blocking-plane-spawn (the-as curve-control (-> self path-target))) - ) - :exit (-> (method-of-type flutflut wait-for-start) exit) - :code (behavior () - (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)) - (loop - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action flut))) - (go-virtual wait-for-return) - ) - (when (logtest? (-> self draw status) (draw-status was-drawn)) - (if (and *target* (>= 40960.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (level-hint-spawn (text-id swamp-flutflut-hint) "sksp0160" (the-as entity #f) *entity-pool* (game-task none)) - ) - ) - (when (and (and *target* (>= 20480.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (not (movie?)) - (not (level-hint-displayed?)) - (!= (-> self condition) 4) - ) - (hide-hud) - (level-hint-surpress!) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (when (and (hud-hidden?) (can-grab-display? self)) - (let ((gp-0 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-34 gp-0)) - (set! (-> v1-34 width) (the float 440)) - ) - (let ((v1-35 gp-0)) - (set! (-> v1-35 height) (the float 80)) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning large)) - (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22) - ) - (if (and (cpad-pressed? 0 circle) (send-event *target* 'change-mode 'flut self)) - (go-virtual pickup (method-of-object self wait-for-return)) - ) - ) - ) - (flutflut-effect) - (suspend) - (ja :num! (loop!)) - ) - ) - :post ja-post - ) + :event + (-> (method-of-type flutflut wait-for-start) + event) + :enter + (behavior () + (blocking-plane-destroy) + (blocking-plane-spawn (the-as curve-control (-> self path-target)))) + :exit + (-> (method-of-type flutflut wait-for-start) + exit) + :code + (behavior () + (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)) + (loop + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action flut))) + (go-virtual wait-for-return)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) + (if (and *target* (>= 40960.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (level-hint-spawn (text-id swamp-flutflut-hint) "sksp0160" (the-as entity #f) *entity-pool* (game-task none)))) + (when (and (and *target* (>= 20480.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (not (movie?)) + (not (level-hint-displayed?)) + (!= (-> self condition) 4)) + (hide-hud) + (level-hint-surpress!) + (kill-current-level-hint '() '(sidekick voicebox) 'exit) + (when (and (hud-hidden?) (can-grab-display? self)) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-34 gp-0)) (set! (-> v1-34 width) (the float 440))) + (let ((v1-35 gp-0)) (set! (-> v1-35 height) (the float 80))) + (set! (-> gp-0 flags) (font-flags shadow kerning large)) + (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22)) + (if (and (cpad-pressed? 0 circle) (send-event *target* 'change-mode 'flut self)) + (go-virtual pickup (method-of-object self wait-for-return))))) + (flutflut-effect) + (suspend) + (ja :num! (loop!)))) + :post ja-post) (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 - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (if (and (or (= message 'touch) (= message 'attack)) (send-event *target* 'end-mode)) - (go-virtual pickup (method-of-object self idle)) - ) - (if (= message 'trans) - (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans)) - ) - ) - :enter (behavior () - (blocking-plane-destroy) - (blocking-plane-spawn (the-as curve-control (-> self path-flut))) - ) - :code (behavior () - (ja-channel-set! 0) - (ja-post) - (loop - (if (not (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)))) - (go-virtual idle) - ) - (flutflut-effect) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (if (and (or (= message 'touch) (= message 'attack)) (send-event *target* 'end-mode)) + (go-virtual pickup (method-of-object self idle))) + (if (= message 'trans) (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans)))) + :enter + (behavior () + (blocking-plane-destroy) + (blocking-plane-spawn (the-as curve-control (-> self path-flut)))) + :code + (behavior () + (ja-channel-set! 0) + (ja-post) + (loop + (if (not (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)))) + (go-virtual idle)) + (flutflut-effect) + (suspend)))) (defmethod init-from-entity! ((this flutflut) (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 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* '()) @@ -321,36 +232,21 @@ (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)) (set! (-> this cell) (the-as handle #f)) - (blocking-plane-spawn - (the-as - curve-control - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action flut))) - (-> this path-flut) - (-> this path-target) - ) - ) - ) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "zoom-teleport" :fo-max 30) (-> this root trans)) - ) + (blocking-plane-spawn (the-as curve-control + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action flut))) + (-> this path-flut) + (-> this path-target)))) + (set! (-> this sound) (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 - ) + :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) - ) - (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 - ) - (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))) + :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) - ) + (none)) -(deftype evilsis (process-taskable) - () - ) +(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 - ) - ) + ((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-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 *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-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) - ) +(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)) - ) + :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 + :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))) - ) + :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) - (set! v1-13 (= (-> self y-offset) (-> self height))) - ) - (set! (-> self raised?) #t) - (go periscope-wait-for-power-input) - ) - :post periscope-post - ) + :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) + (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 - ) + :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)) - ) + :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))) - (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 - ) - ) + 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) - ) +(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 - ) - ) + 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) - ) +(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) - ) - ) + ((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) - ) +(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) - ) + (none)) -(deftype jungle-water (water-anim) - () - ) +(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) - ) - ) - ) +(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) - ) - ) + :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 - ) - ) +(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) - ) - ) + :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 - ) - ) +(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) - ) + (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) - () - ) +(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 + :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) + +(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))) (ja-channel-push! 1 (seconds 0.25)) - (ja-no-eval :group! plant-boss-back-arms-die-ja :num! (seek!) :frame-num 0.0) + (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!)) - ) - ) - ) - (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 - ) - -(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) - ) - ) - (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!)) - ) - ) - ) - :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 - ) + :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))) + :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) - ) - (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)) - (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 - ) - ) + 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) - ) +(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) - ) - ) + (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) - () +(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)) - (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 - ) + :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 - (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 - ) + :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) (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) - ) + (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) - ) +(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) - ) + (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) - () +(deftype energylava (process-drawable) () (:states - energylava-idle - ) - ) + 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) - ) + (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) - ) +(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) - ) + (none)) -(deftype lavatube-lava (water-anim) - () - ) +(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) - ) - ) - ) +(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 - ) - ) + 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) -(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* (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)) -(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) - ) +(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 - ) - ) + 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-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) - ) +(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)) - (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) - ) - ) + :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)) - (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) - (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) - ) - ) - ) + :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) + (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)) + :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) - ) - (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 - ) - ) + 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 - ) +(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 - ) - -(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 - ) - -(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 :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 - ) + (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) + +(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) (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)) - (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))) - ) - ) - ) - ) + :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)) - (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-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) + (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!)) - ) - ) - ) - :post transform-post - ) + (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-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 - ) + :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) (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 - ) - -(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) - ) - ) - -(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) + :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) - (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)) + (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) - ) - ) - (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self mask) (process-mask actor-pause)) - (cleanup-for-death self) - ) - ) + (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))) + +(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))) (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) - ) - ) + :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) - () - ) +(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) - ) - ) - ) +(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)) - (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) + :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 :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!))) + (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) + (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 - ) - ) + 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) - ) +(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) - ) - ) + ((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-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 - ) - ) +(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 - ) - ) + 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-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) - ) +(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-conveyor-paddle 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 - ) - ) + 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-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-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 - ) +(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 - ) - ) + 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) - ) +(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) - ) + (none)) -(deftype breakaway-right (breakaway) - () - ) +(deftype breakaway-right (breakaway) ()) +(deftype breakaway-mid (breakaway) ()) -(deftype breakaway-mid (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)) -(deftype breakaway-left (breakaway) - () - ) +(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) - ) + (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" - ) - ) +(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) - ) + (none)) -(deftype mistycam (process-hidden) - () - ) +(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) - ) + (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) - ) - -(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) - ) + (none)) -(defun spawn-mistycannon-missile ((arg0 process-tree) - (arg1 vector) - (arg2 vector) - (arg3 float) - (arg4 float) - (arg5 float) - (arg6 float) - (arg7 entity) - ) +(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) - () - ) +(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-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) - ) - ) - ) +(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))) - (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) + :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 - ((!= *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) - ) - ) + (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))) -(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 - ) - ) + 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) - ) +(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) - ) - ) + ((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 *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-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 *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 *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) - ) +(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) - ) - ) + ((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 - ) - ) - ) +(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 - ) - ) + 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) - ) +(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))) + :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) - ) - (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 - (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!)) - ) - ) - ) - :post ja-post - ) + (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) + +(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 - ) - ) + (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 - ) +(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) - ) + (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-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-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-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-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-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-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) - ) +(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) - ) + (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) - () - ) +(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) - ) + (none)) -(deftype ogre-step-a (ogre-step) - () - ) +(deftype ogre-step-a (ogre-step) ()) +(deftype ogre-step-b (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) - ) + (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) - () - ) +(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) - ) + (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) - ) +(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) - ) - ) + :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) - ) - ) - ) +(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 - ) - ) + 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-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) - ) +(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)) - ) - ) + :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) - () - ) +(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-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-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-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-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-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-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-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 :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-move-far (seconds 2) (the-as float 1.0)) (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ogreboss-attack2-start-ja :num! (seek! max f30-0) :frame-num 0.0) + (ja-no-eval :group! ogreboss-victory-ja :num! (seek!) :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) - (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-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) + :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) + (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 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 - ) + (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 3f64edd6ca..6fcdf7a54d 100644 --- a/goal_src/jak1/levels/racer_common/racer.gc +++ b/goal_src/jak1/levels/racer_common/racer.gc @@ -1,393 +1,267 @@ ;;-*-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") (require "engine/game/task/task-control.gc") - -;; name: racer.gc -;; name in dgo: racer -;; dgos: L1, FIC, LAV, MIS, OGR, RACERP, ROL - (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 - :event (-> (method-of-type racer wait-for-start) event) - :enter (behavior () - (blocking-plane-destroy) - (blocking-plane-spawn (-> self path-target)) - ) - :exit (-> (method-of-type racer wait-for-start) exit) - :code (behavior () - (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)) - 0.0 - (let ((f30-0 (if (= (-> self condition) 4) - 61440.0 - 20480.0 - ) - ) - ) - (loop - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) - (go-virtual wait-for-return) - ) - (when (and (and *target* (>= f30-0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (and (not (movie?)) (not (level-hint-displayed?))) - ) - (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-24 gp-0)) - (set! (-> v1-24 width) (the float 440)) - ) - (let ((v1-25 gp-0)) - (set! (-> v1-25 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) - ) - (if (and (or (cpad-pressed? 0 circle) (= (-> self condition) 4)) (send-event *target* 'change-mode 'racing self)) - (go-virtual pickup (the-as (state collectable) (method-of-object self wait-for-return))) - ) - ) - ) - (racer-effect) - (suspend) - ) - ) - ) - :post ja-post - ) + :event + (-> (method-of-type racer wait-for-start) + event) + :enter + (behavior () + (blocking-plane-destroy) + (blocking-plane-spawn (-> self path-target))) + :exit + (-> (method-of-type racer wait-for-start) + exit) + :code + (behavior () + (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)) + 0.0 + (let ((f30-0 (if (= (-> self condition) 4) 61440.0 20480.0))) + (loop + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) + (go-virtual wait-for-return)) + (when (and (and *target* (>= f30-0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (and (not (movie?)) (not (level-hint-displayed?)))) + (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-24 gp-0)) (set! (-> v1-24 width) (the float 440))) + (let ((v1-25 gp-0)) (set! (-> v1-25 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)) + (if (and (or (cpad-pressed? 0 circle) (= (-> self condition) 4)) (send-event *target* 'change-mode 'racing self)) + (go-virtual pickup (the-as (state collectable) (method-of-object self wait-for-return)))))) + (racer-effect) + (suspend)))) + :post ja-post) (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 - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (if (and (or (= message 'touch) (= message 'attack)) - (and (!= (-> self condition) 4) (send-event *target* 'end-mode)) - ) - (go-virtual pickup (the-as (state collectable) (method-of-object self idle))) - ) - (cond - ((= message 'trans) - (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans)) - ) - ((= message 'shadow) - (cond - ((-> block param 0) - (let ((v0-3 (the-as structure (-> self shadow-backup)))) - (set! (-> self draw shadow) (the-as shadow-geo v0-3)) - v0-3 - ) - ) - (else - (set! (-> self draw shadow) #f) - #f - ) - ) - ) - ) - ) - :enter (behavior () - (blocking-plane-destroy) - (blocking-plane-spawn (the-as curve-control (-> self path-racer))) - ) - :code (behavior () - (ja-channel-set! 0) - (ja-post) - (loop - (if (not (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)))) - (go-virtual idle) - ) - (racer-effect) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (if (and (or (= message 'touch) (= message 'attack)) (and (!= (-> self condition) 4) (send-event *target* 'end-mode))) + (go-virtual pickup (the-as (state collectable) (method-of-object self idle)))) + (cond + ((= message 'trans) (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans))) + ((= message 'shadow) + (cond + ((-> block param 0) + (let ((v0-3 (the-as structure (-> self shadow-backup)))) (set! (-> self draw shadow) (the-as shadow-geo v0-3)) v0-3)) + (else (set! (-> self draw shadow) #f) #f))))) + :enter + (behavior () + (blocking-plane-destroy) + (blocking-plane-spawn (the-as curve-control (-> self path-racer)))) + :code + (behavior () + (ja-channel-set! 0) + (ja-post) + (loop + (if (not (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)))) + (go-virtual idle)) + (racer-effect) + (suspend)))) (defmethod init-from-entity! ((this racer) (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 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* '()) @@ -396,40 +270,24 @@ (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) (move-to-ground (-> this root) 40960.0 40960.0 #t (collide-kind background)) (set! (-> this cell) (the-as handle #f)) - (blocking-plane-spawn - (the-as - curve-control - (if (or (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) - (= (-> this condition) 3) - ) - (-> this path-racer) - (-> this path-target) - ) - ) - ) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "zoom-teleport" :fo-max 30) (-> this root trans)) - ) + (blocking-plane-spawn (the-as curve-control + (if (or (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) + (= (-> this condition) 3)) + (-> this path-racer) + (-> this path-target)))) + (set! (-> this sound) (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 - ) - ) + 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 - ) +(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 - ) + (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 - ) - ) +(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 - ) - ) + 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) - ) +(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) - ) + (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-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) - ) +(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 - ) + (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) + (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 - ) + :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) - ) - ((>= (- (-> *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 - ) + (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) + (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 - ) +(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 - ) - ) +(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 - ) - ) + 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-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-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 *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) - ) +(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 - ) + :post plat-post) -(deftype flutflut-plat-small (flutflut-plat) - () - ) +(deftype flutflut-plat-small (flutflut-plat) ()) +(deftype flutflut-plat-med (flutflut-plat) ()) -(deftype flutflut-plat-med (flutflut-plat) - () - ) - - -(deftype flutflut-plat-large (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 - ) - ) + 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) - ) +(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) - ) + (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) - () +(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 - ) - ) + 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) - ) +(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 - ) - ) + 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) - ) +(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)) - ) - ) + :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))) +(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 - ) - ) + (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)) -(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* (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 - ) - ) +(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) + :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) + +(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) - (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 - ) - -(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) - ) - ) + (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 - ) - ) + 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)) -(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 - ) - ) +(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)) + :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) - (ja-blend-eval) (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) + (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))) - (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! (loop! f30-0)) - ) - ) - ) - ) + :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! (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)) - ) - ) - (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) + :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 - ) - ) + 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-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) - ) +(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 - ) + (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) + (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 - (suspend) - (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 - ) - -(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)) + :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 - ) - ) + 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-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) -(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-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-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 - ) - ) +(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 - ) + :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)) - (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 - ) + :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) - ) - ) - :post plat-post - ) + (transform-post) + (suspend) + (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 - ) - ) + 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)) -(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-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)) - ) + ((>= (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)))) - ) + (let ((v1-14 (-> this draw shadow-ctrl))) (set! (-> v1-14 settings bot-plane w) (- (+ -12288.0 (-> s5-0 intersect y))))) 0 - (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) - ) + (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 - ) - ) + 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)) -(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 - ) - ) +(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 - ) - ) + 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)) -(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-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)) - ) - ) + :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) - ) +(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 - ) - ) + 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) - ) +(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 - ) - ) + 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) - ) +(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 - ) - ) + 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-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-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) - ) +(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) - ) - (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) - ) - ) - ) + :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)) - (let ((f30-0 0.0)) + (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 ((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) - ) + (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-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) - ) +(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))) - (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)) - ) - ) - ) + :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 - ((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 + ((< 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 + ((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 (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 - ) + (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 - ) - ) +(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 - ) + :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) - (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 - ) + :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) - ) + (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) - ) +(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" - ) - ) +(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) - ) + (none)) -(deftype swamp-barrel (barrel) - () - ) +(deftype swamp-barrel (barrel) ()) +(deftype swampcam (process-hidden) ()) -(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 - ) - ) + 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) ()) -(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-b (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) - ) + (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-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-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) - ) +(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) + :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) - (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 b2801c6cb8..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,34 +2,33 @@ (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 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) - ) + (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)) @@ -44,8 +43,7 @@ (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) - ) + (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)) @@ -57,17 +55,16 @@ ) (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)) @@ -75,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)) @@ -87,49 +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))))) - ; ) - #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 - ) \ 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) - () - ) +(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) - ) - ) - ) +(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) - ) + (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" - ) - ) +(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) - ) +(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) - ) + (none)) -(deftype tra-iris-door (eco-door) - () - ) +(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) - ) - ) + 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-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) - ) +(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) - ) + (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-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) - ) +(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) - (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) + :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!)) - ) - ) - ) - (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!))) + (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) + (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!)))))))) (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) + :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-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)) - ) - (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-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-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-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-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-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-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-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-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-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-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-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-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) - ) + (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) - ) +(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 - ) - ) + idle)) -(defmethod inspect evilplant ((obj evilplant)) - (let ((t9-0 (method-of-type process-drawable inspect))) - (t9-0 obj) - ) - obj - ) +(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) - ) +(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 - ) + :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)) +(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 - ) + :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 - ) - ) +(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) - ) + (none)) -(deftype villa-fisha (village-fish) - () - ) - - -(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) - ) + (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) - ) +(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) - ) + (none)) -(deftype villagea-water (water-anim) - () - ) +(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) - ) - ) - ) +(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) - ) - ) + ((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) - ) - ) +(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) - ) - ) + 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 - ) +(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-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!))) + (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! 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! 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 :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-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 *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 *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-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-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) - ) - ) + :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-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-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) - ) +(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) - ) + (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 *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" - ) - ) +(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 pontoonfive (pontoon) ()) +(deftype pontoonten (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 *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) - ) +(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 - ) - ) + ((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) - ) +(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) - ) + ((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) - () +(deftype ceilingflag (process-drawable) () (:states - ceilingflag-idle - ) - ) + 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) - ) + (none)) -(deftype villageb-ogreboss (ogreboss-village2) - () - ) +(deftype villageb-ogreboss (ogreboss-village2) ()) +(deftype villageb-water (water-anim) ()) -(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) - ) - ) - ) +(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) - ) - ) + ((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 *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 *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 - ) +(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-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-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-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-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-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-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) - () - ) +(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) - ) - ) - (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! (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) (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 6c0d4fdc82..70b0ea992a 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,9 +131,7 @@ (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 start-speedrun ((category speedrun-category)) ;; randomize game id so the autosplitter knows to restart @@ -138,296 +142,240 @@ (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))) - ) - ) + (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) ;; 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" @@ -439,8 +387,7 @@ ;;Disable any active cheats (set! (-> *pc-settings* cheats) (the-as pc-cheats #x0)) ;; Run after-blackout speedrun setup (if needed) - (setup-speedrun-post-blackout) - ) + (setup-speedrun-post-blackout)) (none)) (defun speedrun-start-full-game-run () @@ -450,14 +397,15 @@ (defun speedrun-draw-settings () "Draw speedrun related settings in the bottom left corner" - (when (and (-> *pc-settings* speedrunner-mode?) - (not (paused?)) - (-> *speedrun-info* should-display?)) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) - (bucket-id subtitle)) + (when (and (-> *pc-settings* speedrunner-mode?) (not (paused?)) (-> *speedrun-info* should-display?)) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) (bucket-id subtitle)) (draw-string-xy (string-format "Speedrunner Mode ~%OpenGOAL Version: ~S ~%Category: ~S ~%Cutscene Skips ~A" *pc-settings-built-sha* (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) - ) - ) + (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) - ) +(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) - ) - ) - ) - + (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) - ) + (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))) +(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)) + (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 ((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 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 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) + (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)))) - ,@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)) +(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 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) ;; 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-wireframe* #f) + +(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))) - ) - ) - ) + (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)) +(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)) + 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.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) - ) - ) - )) - )) + (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..c6f02b1c16 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)) + (current-carousell (array text-id)) + (selection int) + (direction symbol) + (transition symbol) + (x-offset int32))) - (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,988 @@ ;; 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-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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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 *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))) ;; 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 *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 *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) - ) - ) + (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-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 *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) - ) - ) + (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) - ) - ) +(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 +1110,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 +1136,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 +1164,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 +1204,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 *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 *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 +1275,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 +1286,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 +1312,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 +1361,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 +1395,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 +1481,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 +1489,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 +1509,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 +1606,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 +1634,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 +1692,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 +1717,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 +1762,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 +1802,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 +1917,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 +1926,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) - ) + (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)) +(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 +2162,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 +2171,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 +2234,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 +2267,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 +2323,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 +2444,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 +2573,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 +2689,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 +2699,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 +2711,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 +2737,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) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; 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) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; 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) - (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))) - (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))) - (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)) - + (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 - ((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)) - ) - )) - ) - )) - + ((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))) + (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))) + (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)))))))) (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) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; 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) - ) + (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) +(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,296 +18,243 @@ (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) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (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/scripts/gsrc/compare-compilation-outputs.py b/scripts/gsrc/compare-compilation-outputs.py new file mode 100644 index 0000000000..714a0507f4 --- /dev/null +++ b/scripts/gsrc/compare-compilation-outputs.py @@ -0,0 +1,53 @@ +# Simple script that compares every file in `out/game/obj` with a base directory +# This is useful for when you expect your compilation output to be identical, ie. when you've just made formatting only changes +# If every file matches...you should be able to be confident that you have broken nothing! + +import os +import hashlib + +def hash_file(filepath): + """Returns the MD5 hash of the file.""" + hasher = hashlib.md5() + with open(filepath, 'rb') as f: + buf = f.read() + hasher.update(buf) + return hasher.hexdigest() + +def compare_directories(base_dir, compare_dir): + """Compares files in two directories based on their MD5 hash.""" + mismatched_files = [] + missing_files = [] + + # Iterate through files in the base directory + for root, _, files in os.walk(base_dir): + for file in files: + base_file_path = os.path.join(root, file) + relative_path = os.path.relpath(base_file_path, base_dir) + compare_file_path = os.path.join(compare_dir, relative_path) + + if os.path.exists(compare_file_path): + base_file_hash = hash_file(base_file_path) + compare_file_hash = hash_file(compare_file_path) + if base_file_hash != compare_file_hash: + mismatched_files.append(relative_path) + else: + missing_files.append(relative_path) + + # Report results + if not mismatched_files and not missing_files: + print("All files matched successfully.") + else: + if mismatched_files: + print("Mismatched files:") + for file in mismatched_files: + print(f" - {file}") + if missing_files: + print("Missing files:") + for file in missing_files: + print(f" - {file}") + +# Usage example +base_directory = './out/jak1/obj' +compare_directory = './out/jak1/obj_master' +print(f'Comparing {base_directory} with {compare_directory}') +compare_directories(base_directory, compare_directory) diff --git a/scripts/gsrc/format-gsrc-file.py b/scripts/gsrc/format-gsrc-file.py new file mode 100644 index 0000000000..3a58c06b60 --- /dev/null +++ b/scripts/gsrc/format-gsrc-file.py @@ -0,0 +1,65 @@ +# import glob +# import json +# import os +# files = glob.glob("./goal_src/jak1/**/*.gc", recursive=True) +# json_data = [] +# for file in files: +# json_data.append({'path': os.path.abspath(file), 'status': 'not-formatted'}) + +# with open("./scripts/gsrc/format-jak1.json", "w") as f: +# f.write(json.dumps(json_data, indent=2)) + +import json +import math +import subprocess +from colorama import just_fix_windows_console, Fore, Back, Style + +just_fix_windows_console() + +def format_the_file(apply_status): + with open("./scripts/gsrc/format-jak1.json", "r") as f: + formatting_progress = json.load(f) + + # find the next file + curr_file = None + go_to_next = False + open_file_in_vscode = False + if apply_status == "next": + go_to_next = True + open_file_in_vscode = True + + for index, file in enumerate(formatting_progress): + if file['status'] == 'not-formatted': + if go_to_next: + print(f"Marking {file['path']} as formatted") + print(f"{Fore.GREEN} {(index / len(formatting_progress)) * 100:.3f}% {Fore.RESET} Completed") + formatting_progress[index]['status'] = 'formatted' + go_to_next = False + else: + curr_file = file['path'] + if open_file_in_vscode: + subprocess.run(["C:\\Users\\xtvas\\AppData\\Local\\Programs\\Microsoft VS Code\\bin\\code.cmd", file['path']]) + break + + # format it + print(f"Formatting {curr_file}") + subprocess.run(["./out/build/Debug/bin/formatter", "--write", "--file", curr_file]) + + # save status + if apply_status is not None and (apply_status == "skip" or apply_status == "next"): + # TODO - add skip support back if i ever want to use it + with open("./scripts/gsrc/format-jak1.json", "w") as f: + f.write(json.dumps(formatting_progress, indent=2)) + + subprocess.run(["git", "diff", "--shortstat", "origin/master"]) + +def main(): + while True: + user_input = input(Fore.CYAN + "Type 'n' to proceed to the next file or just hit enter to re-format the current file: " + Fore.RESET) + if user_input == 'n': + format_the_file("next") + else: + format_the_file(None) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/scripts/gsrc/format-gsrc-folder.py b/scripts/gsrc/format-gsrc-folder.py new file mode 100644 index 0000000000..6a4835f056 --- /dev/null +++ b/scripts/gsrc/format-gsrc-folder.py @@ -0,0 +1,20 @@ +import glob +from pathlib import Path +import subprocess +import time +from colorama import just_fix_windows_console, Fore, Back, Style + +just_fix_windows_console() + +files = glob.glob("./goal_src/jak1/**/*.gc", recursive=True) +total_ms = 0 +for file in files: + start_time = time.perf_counter() + subprocess.run(["./out/build/Release/bin/formatter", "--write", "--file", file]) + elapsed_ms = (time.perf_counter() - start_time) * 1000 + total_ms = total_ms + elapsed_ms + print(f"Formatted .../{Path(file).stem} in {Fore.CYAN} {elapsed_ms:.2f}ms {Fore.RESET}") + +print(f"In total that took {total_ms}ms for {len(files)} files!") + +subprocess.run(["git", "diff", "--shortstat", "origin/master"]) diff --git a/test/common/formatter/corpus/blank-lines.test.gc b/test/common/formatter/corpus/blank-lines.test.gc index 25ed606a80..57af46b6d7 100644 --- a/test/common/formatter/corpus/blank-lines.test.gc +++ b/test/common/formatter/corpus/blank-lines.test.gc @@ -11,4 +11,40 @@ Separate Top Level (println "test") -(println "test") \ No newline at end of file +(println "test") + +=== +Consolidate Top Level +=== + +(in-package goal) +(bundles "ENGINE.CGO" "GAME.CGO") +(require "engine/draw/drawable-h.gc") +(require "kernel/gstate.gc") + +--- + +(in-package goal) +(bundles "ENGINE.CGO" "GAME.CGO") +(require "engine/draw/drawable-h.gc") +(require "kernel/gstate.gc") + +=== +Consolidate Top Level - Ignore and space out comment +=== + +(in-package goal) +(bundles "ENGINE.CGO" "GAME.CGO") +(require "engine/draw/drawable-h.gc") +(require "kernel/gstate.gc") + +;; Some comment + +--- + +(in-package goal) +(bundles "ENGINE.CGO" "GAME.CGO") +(require "engine/draw/drawable-h.gc") +(require "kernel/gstate.gc") + +;; Some comment \ No newline at end of file diff --git a/test/common/formatter/corpus/comments.test.gc b/test/common/formatter/corpus/comments.test.gc index 54de0a0777..89a6c9bf91 100644 --- a/test/common/formatter/corpus/comments.test.gc +++ b/test/common/formatter/corpus/comments.test.gc @@ -62,9 +62,7 @@ Block Comment - Single Line --- -#| -block comment -|# +#| block comment |# === Block Comment - Don't Allow Content on Opening Brace @@ -85,6 +83,26 @@ Block Comment - Don't Allow Content on Opening Brace (println "test") +=== +Block Comment - Don't continually add indentation +=== + +(begin + #| + block comment + test + |# + (println "something")) + +--- + +(begin + #| + block comment + test + |# + (println "something")) + === Block Comment - Allow Annotations === @@ -105,7 +123,7 @@ Block Comment - Allow Annotations (println "test") === -Block Comment - In Form - TODO Improve +Block Comment - In Form === (println @@ -120,7 +138,7 @@ Block Comment - In Form - TODO Improve #| block comment test -|# + |# "test") === @@ -139,7 +157,7 @@ At the end of a form ) === -Block at the end of a form - TODO Improve +Block at the end of a form === (println @@ -150,13 +168,11 @@ Block at the end of a form - TODO Improve --- (println "hello world" - #| - wow look at that block comment -|# + #| wow look at that block comment |# ) === -Inline at the end of a form - TODO-A handle hanging in this instance better +Inline at the end of a single element form === (println @@ -165,7 +181,43 @@ Inline at the end of a form - TODO-A handle hanging in this instance better --- -(println - "hello world" ;; this is a comment +(println "hello world" ;; this is a comment ) +=== +TODO - Comments in arg lists +=== + +(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! + ) + (println "hello")) + +--- + +(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! + ) + (println "hello")) + +=== +Block comment - preserve @file +=== + +#|@file + Compiler Setup for Jak 1 +|# + +--- + +#|@file Compiler Setup for Jak 1 |# \ No newline at end of file diff --git a/test/common/formatter/corpus/conditions.test.gc b/test/common/formatter/corpus/conditions.test.gc index 31c462aaaa..da305ee98c 100644 --- a/test/common/formatter/corpus/conditions.test.gc +++ b/test/common/formatter/corpus/conditions.test.gc @@ -42,3 +42,49 @@ Multiline condition hang (or (and (-> 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/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": "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": "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": "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": "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 8543b2f3ff..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,7 @@ 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) @@ -819,246 +876,295 @@ 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_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) + : c <= 8233) + : (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); + if (lookahead == '0' || + lookahead == '1') ADVANCE(30); END_STATE(); case 15: - if (lookahead == '0' || - lookahead == '1') ADVANCE(28); - END_STATE(); - case 16: 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 (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(30); + if (lookahead == '0' || + lookahead == '1') ADVANCE(30); END_STATE(); case 31: - ACCEPT_TOKEN(sym_kwd_lit); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(31); + ACCEPT_TOKEN(aux_sym_num_lit_token1); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(31); END_STATE(); case 32: - ACCEPT_TOKEN(anon_sym_SQUOTE); + ACCEPT_TOKEN(aux_sym_num_lit_token1); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(32); END_STATE(); case 33: - ACCEPT_TOKEN(aux_sym__format_token_token1); + 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(anon_sym_v); + 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(anon_sym_V); + 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(anon_sym_POUND); - if (lookahead == 'b') ADVANCE(15); - if (lookahead == 'x') ADVANCE(16); + 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(anon_sym_COMMA); + ACCEPT_TOKEN(sym_kwd_lit); + if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(37); END_STATE(); case 38: - ACCEPT_TOKEN(anon_sym_COMMA); - if (lookahead == '@') ADVANCE(85); + ACCEPT_TOKEN(anon_sym_SQUOTE); END_STATE(); case 39: - ACCEPT_TOKEN(anon_sym_AT); - if (lookahead == ':') ADVANCE(40); + ACCEPT_TOKEN(aux_sym__format_token_token1); END_STATE(); case 40: - ACCEPT_TOKEN(anon_sym_AT_COLON); + ACCEPT_TOKEN(anon_sym_v); END_STATE(); case 41: - ACCEPT_TOKEN(anon_sym_COLON); - if (lookahead == '@') ADVANCE(42); + ACCEPT_TOKEN(anon_sym_V); END_STATE(); case 42: - ACCEPT_TOKEN(anon_sym_COLON_AT); + ACCEPT_TOKEN(anon_sym_POUND); + if (lookahead == 'b') ADVANCE(14); + if (lookahead == 'x') ADVANCE(15); END_STATE(); case 43: - ACCEPT_TOKEN(anon_sym_TILDE); + ACCEPT_TOKEN(anon_sym_COMMA); END_STATE(); case 44: - ACCEPT_TOKEN(anon_sym_PERCENT); + ACCEPT_TOKEN(anon_sym_COMMA); + if (lookahead == '@') ADVANCE(96); END_STATE(); case 45: - ACCEPT_TOKEN(anon_sym_AMP); + ACCEPT_TOKEN(anon_sym_AT); + if (lookahead == ':') ADVANCE(46); END_STATE(); case 46: - ACCEPT_TOKEN(anon_sym_PIPE); + ACCEPT_TOKEN(anon_sym_AT_COLON); END_STATE(); case 47: - ACCEPT_TOKEN(aux_sym_format_directive_type_token1); + ACCEPT_TOKEN(anon_sym_COLON); + if (lookahead == '@') ADVANCE(48); END_STATE(); case 48: - ACCEPT_TOKEN(aux_sym_format_directive_type_token2); + ACCEPT_TOKEN(anon_sym_COLON_AT); END_STATE(); case 49: - ACCEPT_TOKEN(anon_sym_LF); + ACCEPT_TOKEN(anon_sym_TILDE); END_STATE(); case 50: - ACCEPT_TOKEN(anon_sym_CR); + ACCEPT_TOKEN(anon_sym_PERCENT); END_STATE(); case 51: - ACCEPT_TOKEN(aux_sym_format_directive_type_token3); + ACCEPT_TOKEN(anon_sym_AMP); END_STATE(); case 52: - ACCEPT_TOKEN(aux_sym_format_directive_type_token4); + ACCEPT_TOKEN(anon_sym_PIPE); END_STATE(); case 53: - ACCEPT_TOKEN(aux_sym_format_directive_type_token5); + ACCEPT_TOKEN(aux_sym_format_directive_type_token1); END_STATE(); case 54: - ACCEPT_TOKEN(aux_sym_format_directive_type_token6); + ACCEPT_TOKEN(aux_sym_format_directive_type_token2); END_STATE(); case 55: - ACCEPT_TOKEN(anon_sym__); + ACCEPT_TOKEN(anon_sym_LF); END_STATE(); case 56: - ACCEPT_TOKEN(aux_sym_format_directive_type_token7); + ACCEPT_TOKEN(anon_sym_CR); END_STATE(); case 57: - ACCEPT_TOKEN(aux_sym_format_directive_type_token8); + ACCEPT_TOKEN(aux_sym_format_directive_type_token3); END_STATE(); case 58: - ACCEPT_TOKEN(aux_sym_format_directive_type_token9); + ACCEPT_TOKEN(aux_sym_format_directive_type_token4); END_STATE(); case 59: - ACCEPT_TOKEN(aux_sym_format_directive_type_token10); + ACCEPT_TOKEN(aux_sym_format_directive_type_token5); END_STATE(); case 60: - ACCEPT_TOKEN(anon_sym_SEMI); + ACCEPT_TOKEN(aux_sym_format_directive_type_token6); END_STATE(); case 61: - ACCEPT_TOKEN(anon_sym_BQUOTE); + ACCEPT_TOKEN(anon_sym__); END_STATE(); case 62: - ACCEPT_TOKEN(anon_sym_STAR); + ACCEPT_TOKEN(aux_sym_format_directive_type_token7); END_STATE(); case 63: - ACCEPT_TOKEN(anon_sym_QMARK); + ACCEPT_TOKEN(aux_sym_format_directive_type_token8); END_STATE(); case 64: - ACCEPT_TOKEN(anon_sym_Newline); + ACCEPT_TOKEN(aux_sym_format_directive_type_token9); END_STATE(); case 65: - ACCEPT_TOKEN(aux_sym_format_directive_type_token11); + ACCEPT_TOKEN(aux_sym_format_directive_type_token10); END_STATE(); case 66: - ACCEPT_TOKEN(aux_sym_format_directive_type_token11); - if (lookahead == 'e') ADVANCE(14); + ACCEPT_TOKEN(anon_sym_SEMI); END_STATE(); case 67: - ACCEPT_TOKEN(anon_sym_DQUOTE); + ACCEPT_TOKEN(anon_sym_BQUOTE); END_STATE(); case 68: + ACCEPT_TOKEN(anon_sym_STAR); + END_STATE(); + case 69: + ACCEPT_TOKEN(anon_sym_QMARK); + END_STATE(); + case 70: + ACCEPT_TOKEN(anon_sym_Newline); + END_STATE(); + case 71: + ACCEPT_TOKEN(aux_sym_format_directive_type_token11); + END_STATE(); + case 72: + ACCEPT_TOKEN(aux_sym_format_directive_type_token11); + if (lookahead == 'e') ADVANCE(13); + END_STATE(); + case 73: + ACCEPT_TOKEN(anon_sym_DQUOTE); + END_STATE(); + 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); - END_STATE(); - case 72: - ACCEPT_TOKEN(sym_null_lit); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(82); - END_STATE(); - case 73: - ACCEPT_TOKEN(sym_bool_lit); - END_STATE(); - case 74: - ACCEPT_TOKEN(anon_sym_SLASH); - END_STATE(); - case 75: - 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); - END_STATE(); - case 76: - 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); - END_STATE(); - case 77: - ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); - if (lookahead == 'e') ADVANCE(72); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(82); + lookahead == 't') ADVANCE(76); END_STATE(); case 78: - ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); - if (lookahead == 'n') ADVANCE(77); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(82); + ACCEPT_TOKEN(sym_null_lit); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(93); END_STATE(); case 79: - ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); - if (lookahead == 'o') ADVANCE(78); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(82); + ACCEPT_TOKEN(sym_bool_lit); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(93); END_STATE(); case 80: - ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); - if (lookahead == '0' || - lookahead == '1') ADVANCE(28); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(82); + 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(aux_sym__sym_unqualified_token1); - if (!aux_sym__sym_unqualified_token1_character_set_2(lookahead)) ADVANCE(82); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(30); + ACCEPT_TOKEN(anon_sym_SLASH); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(93); END_STATE(); case 82: ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(82); + 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 83: - ACCEPT_TOKEN(anon_sym_LPAREN); + ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); + 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 84: - ACCEPT_TOKEN(anon_sym_RPAREN); + ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); + 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 85: + ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); + 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 86: + ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); + 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 87: + ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); + if (lookahead == 'e') ADVANCE(78); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(93); + END_STATE(); + 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 (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(33); + END_STATE(); + case 92: + ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); + if (!aux_sym__sym_unqualified_token1_character_set_3(lookahead)) ADVANCE(93); + if (lookahead == '0' || + lookahead == '1') ADVANCE(36); + END_STATE(); + case 93: + ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(93); + END_STATE(); + case 94: + ACCEPT_TOKEN(anon_sym_LPAREN); + END_STATE(); + case 95: + ACCEPT_TOKEN(anon_sym_RPAREN); + END_STATE(); + 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,49 +1723,62 @@ 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(5), 1, + sym_format_prefix_parameters, + STATE(20), 1, + sym_format_modifiers, + STATE(44), 1, + sym__format_token, + STATE(47), 1, + aux_sym_format_modifiers_repeat1, + 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, + 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, + [66] = 11, ACTIONS(27), 1, aux_sym_num_lit_token1, ACTIONS(29), 1, @@ -1590,13 +1787,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, ACTIONS(43), 1, aux_sym_format_directive_type_token11, - STATE(18), 1, + STATE(21), 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(54), 1, sym_format_directive_type, ACTIONS(37), 2, anon_sym_AT, @@ -1626,163 +1823,47 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BQUOTE, anon_sym_QMARK, anon_sym_Newline, - [56] = 14, - ACTIONS(7), 1, - aux_sym_num_lit_token1, + [122] = 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(49), 1, - ts_builtin_sym_end, - ACTIONS(53), 1, - sym_null_lit, - STATE(33), 1, - sym__bare_list_lit, - ACTIONS(51), 6, - sym__ws, - sym_comment, + ACTIONS(51), 1, sym_block_comment, - sym_kwd_lit, - sym_char_lit, - sym_bool_lit, - STATE(7), 11, - sym__gap, - 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, - aux_sym_source_repeat1, - [114] = 14, - ACTIONS(55), 1, - ts_builtin_sym_end, - ACTIONS(60), 1, - aux_sym_num_lit_token1, - ACTIONS(63), 1, - anon_sym_SQUOTE, - ACTIONS(66), 1, - anon_sym_COMMA, - ACTIONS(69), 1, - anon_sym_BQUOTE, - ACTIONS(72), 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, - anon_sym_LPAREN, - ACTIONS(87), 1, - anon_sym_COMMA_AT, - STATE(33), 1, - sym__bare_list_lit, - ACTIONS(57), 6, - sym__ws, - sym_comment, - sym_block_comment, - sym_kwd_lit, - sym_char_lit, - sym_bool_lit, - STATE(7), 11, - sym__gap, - 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, - 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, - ACTIONS(9), 1, - anon_sym_SQUOTE, - ACTIONS(11), 1, - anon_sym_COMMA, - ACTIONS(13), 1, - 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(98), 1, - sym_null_lit, - ACTIONS(100), 1, + ACTIONS(57), 1, anon_sym_RPAREN, - STATE(33), 1, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, sym__bare_list_lit, - STATE(11), 2, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(49), 2, + sym__ws, + sym_comment, + ACTIONS(53), 2, + sym_kwd_lit, + sym_char_lit, + ACTIONS(55), 2, + sym_null_lit, + sym_bool_lit, + STATE(7), 2, sym__gap, aux_sym__bare_list_lit_repeat1, - ACTIONS(94), 3, - sym__ws, - sym_comment, - sym_block_comment, - ACTIONS(96), 3, - sym_kwd_lit, - sym_char_lit, - sym_bool_lit, - STATE(41), 9, + STATE(43), 9, sym__form, sym_num_lit, sym_str_lit, @@ -1792,43 +1873,97 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - [268] = 16, - ACTIONS(7), 1, + [190] = 18, + ACTIONS(62), 1, + sym_block_comment, + ACTIONS(65), 1, aux_sym_num_lit_token1, - ACTIONS(9), 1, + ACTIONS(71), 1, anon_sym_SQUOTE, - ACTIONS(11), 1, + ACTIONS(74), 1, anon_sym_COMMA, - ACTIONS(13), 1, + ACTIONS(77), 1, anon_sym_BQUOTE, + ACTIONS(80), 1, + anon_sym_DQUOTE, + ACTIONS(86), 1, + aux_sym__digit_sym_token1, + ACTIONS(92), 1, + anon_sym_LPAREN, + ACTIONS(95), 1, + anon_sym_RPAREN, + ACTIONS(97), 1, + anon_sym_COMMA_AT, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, + sym__bare_list_lit, + ACTIONS(59), 2, + sym__ws, + sym_comment, + ACTIONS(68), 2, + sym_kwd_lit, + sym_char_lit, + ACTIONS(83), 2, + sym_null_lit, + sym_bool_lit, + 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, + sym_sym_lit, + sym_list_lit, + sym_quoting_lit, + sym_quasi_quoting_lit, + sym_unquote_splicing_lit, + sym_unquoting_lit, + [258] = 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(98), 1, - sym_null_lit, + 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(9), 2, - sym__gap, - aux_sym__bare_list_lit_repeat1, - 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, - ACTIONS(102), 3, + ACTIONS(100), 2, sym__ws, sym_comment, - sym_block_comment, - STATE(41), 9, + STATE(6), 2, + sym__gap, + aux_sym__bare_list_lit_repeat1, + STATE(43), 9, sym__form, sym_num_lit, sym_str_lit, @@ -1838,168 +1973,90 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - [330] = 16, - ACTIONS(109), 1, + [326] = 15, + ACTIONS(9), 1, aux_sym_num_lit_token1, - ACTIONS(115), 1, + ACTIONS(11), 1, anon_sym_SQUOTE, - ACTIONS(118), 1, + ACTIONS(13), 1, anon_sym_COMMA, - ACTIONS(121), 1, + ACTIONS(15), 1, anon_sym_BQUOTE, - ACTIONS(124), 1, + ACTIONS(17), 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, + ACTIONS(19), 1, + aux_sym__digit_sym_token1, + ACTIONS(23), 1, anon_sym_LPAREN, - ACTIONS(139), 1, - anon_sym_RPAREN, + ACTIONS(25), 1, + anon_sym_COMMA_AT, + ACTIONS(106), 1, + ts_builtin_sym_end, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, + sym__bare_list_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(108), 4, + sym__ws, + sym_comment, + sym_kwd_lit, + sym_char_lit, + STATE(10), 11, + sym__gap, + 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, + aux_sym_source_repeat1, + [388] = 15, + ACTIONS(112), 1, + ts_builtin_sym_end, + ACTIONS(120), 1, + aux_sym_num_lit_token1, + ACTIONS(123), 1, + anon_sym_SQUOTE, + ACTIONS(126), 1, + anon_sym_COMMA, + ACTIONS(129), 1, + anon_sym_BQUOTE, + ACTIONS(132), 1, + anon_sym_DQUOTE, + ACTIONS(135), 1, + aux_sym__digit_sym_token1, ACTIONS(141), 1, - anon_sym_COMMA_AT, - STATE(33), 1, - sym__bare_list_lit, - STATE(11), 2, - sym__gap, - aux_sym__bare_list_lit_repeat1, - ACTIONS(106), 3, - sym__ws, - sym_comment, - sym_block_comment, - ACTIONS(112), 3, - sym_kwd_lit, - sym_char_lit, - sym_bool_lit, - STATE(41), 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, - [392] = 15, - ACTIONS(7), 1, - aux_sym_num_lit_token1, - ACTIONS(9), 1, - anon_sym_SQUOTE, - ACTIONS(11), 1, - anon_sym_COMMA, - ACTIONS(13), 1, - 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, + ACTIONS(144), 1, anon_sym_COMMA_AT, - ACTIONS(148), 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(146), 3, - sym_kwd_lit, - sym_char_lit, - sym_bool_lit, - STATE(31), 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, - [451] = 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(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, - ACTIONS(9), 1, - anon_sym_SQUOTE, - ACTIONS(11), 1, - anon_sym_COMMA, - ACTIONS(13), 1, - 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(154), 1, - sym_null_lit, - STATE(33), 1, sym__bare_list_lit, - STATE(29), 2, - sym__gap, - aux_sym_quoting_lit_repeat1, - ACTIONS(144), 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(152), 3, sym_kwd_lit, sym_char_lit, - sym_bool_lit, - STATE(28), 9, + STATE(10), 11, + sym__gap, sym__form, sym_num_lit, sym_str_lit, @@ -2009,253 +2066,141 @@ 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, + aux_sym_source_repeat1, + [450] = 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, - sym__bare_list_lit, - STATE(14), 2, - sym__gap, - aux_sym_quoting_lit_repeat1, - ACTIONS(156), 3, - sym__ws, - sym_comment, + ACTIONS(149), 1, sym_block_comment, - ACTIONS(158), 3, - sym_kwd_lit, - sym_char_lit, - sym_bool_lit, - STATE(38), 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, - [614] = 15, - ACTIONS(7), 1, - aux_sym_num_lit_token1, - ACTIONS(9), 1, - anon_sym_SQUOTE, - ACTIONS(11), 1, - anon_sym_COMMA, - ACTIONS(13), 1, - 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(164), 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(162), 3, - sym_kwd_lit, - sym_char_lit, - sym_bool_lit, - STATE(24), 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, - [673] = 15, - ACTIONS(7), 1, - aux_sym_num_lit_token1, - ACTIONS(9), 1, - anon_sym_SQUOTE, - ACTIONS(11), 1, - anon_sym_COMMA, - ACTIONS(13), 1, - 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(170), 1, - sym_null_lit, - STATE(33), 1, - sym__bare_list_lit, - STATE(21), 2, - sym__gap, - aux_sym_quoting_lit_repeat1, - ACTIONS(166), 3, - sym__ws, - sym_comment, - sym_block_comment, - ACTIONS(168), 3, - sym_kwd_lit, - sym_char_lit, - sym_bool_lit, - STATE(27), 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, - [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(39), 1, + sym__digit_sym, STATE(42), 1, - sym__format_token, - STATE(50), 1, - aux_sym_format_modifiers_repeat1, - STATE(57), 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, - [777] = 15, - ACTIONS(7), 1, - aux_sym_num_lit_token1, - ACTIONS(9), 1, - anon_sym_SQUOTE, - ACTIONS(11), 1, - anon_sym_COMMA, - ACTIONS(13), 1, - 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(176), 1, - sym_null_lit, - STATE(33), 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(147), 2, sym__ws, sym_comment, - sym_block_comment, - ACTIONS(174), 3, + ACTIONS(151), 2, sym_kwd_lit, sym_char_lit, - sym_bool_lit, - STATE(39), 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, - [836] = 15, - ACTIONS(7), 1, - aux_sym_num_lit_token1, - ACTIONS(9), 1, - anon_sym_SQUOTE, - ACTIONS(11), 1, - anon_sym_COMMA, - ACTIONS(13), 1, - 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(182), 1, + ACTIONS(153), 2, sym_null_lit, - STATE(33), 1, - sym__bare_list_lit, + sym_bool_lit, STATE(16), 2, sym__gap, aux_sym_quoting_lit_repeat1, - ACTIONS(178), 3, + STATE(41), 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, + [515] = 17, + 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, + 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__bare_list_lit, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(155), 2, sym__ws, sym_comment, - sym_block_comment, - ACTIONS(180), 3, + 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, + 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, + aux_sym__digit_sym_token1, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(25), 1, + anon_sym_COMMA_AT, + ACTIONS(165), 1, + sym_block_comment, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, + sym__bare_list_lit, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(163), 2, + sym__ws, + sym_comment, + ACTIONS(167), 2, + sym_kwd_lit, + sym_char_lit, + ACTIONS(169), 2, + sym_null_lit, + sym_bool_lit, + STATE(18), 2, + sym__gap, + aux_sym_quoting_lit_repeat1, STATE(40), 9, sym__form, sym_num_lit, @@ -2266,40 +2211,188 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - [895] = 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(186), 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(29), 2, - sym__gap, - aux_sym_quoting_lit_repeat1, - ACTIONS(144), 3, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(171), 2, sym__ws, sym_comment, - sym_block_comment, - ACTIONS(184), 3, + ACTIONS(175), 2, sym_kwd_lit, sym_char_lit, + ACTIONS(177), 2, + sym_null_lit, sym_bool_lit, + STATE(15), 2, + sym__gap, + aux_sym_quoting_lit_repeat1, + STATE(30), 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, + [710] = 17, + 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, + aux_sym__digit_sym_token1, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(25), 1, + anon_sym_COMMA_AT, + ACTIONS(181), 1, + sym_block_comment, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, + sym__bare_list_lit, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(179), 2, + sym__ws, + sym_comment, + ACTIONS(183), 2, + sym_kwd_lit, + sym_char_lit, + ACTIONS(185), 2, + sym_null_lit, + sym_bool_lit, + STATE(31), 2, + sym__gap, + aux_sym_quoting_lit_repeat1, + STATE(34), 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, + [775] = 17, + 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, + aux_sym__digit_sym_token1, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(25), 1, + anon_sym_COMMA_AT, + ACTIONS(181), 1, + sym_block_comment, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, + sym__bare_list_lit, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(179), 2, + sym__ws, + sym_comment, + ACTIONS(187), 2, + sym_kwd_lit, + sym_char_lit, + ACTIONS(189), 2, + sym_null_lit, + sym_bool_lit, + STATE(31), 2, + sym__gap, + aux_sym_quoting_lit_repeat1, + STATE(24), 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, + [840] = 17, + 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, + aux_sym__digit_sym_token1, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(25), 1, + anon_sym_COMMA_AT, + ACTIONS(181), 1, + sym_block_comment, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, + sym__bare_list_lit, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(179), 2, + sym__ws, + sym_comment, + ACTIONS(191), 2, + sym_kwd_lit, + sym_char_lit, + ACTIONS(193), 2, + sym_null_lit, + sym_bool_lit, + STATE(31), 2, + sym__gap, + aux_sym_quoting_lit_repeat1, STATE(32), 9, sym__form, sym_num_lit, @@ -2310,480 +2403,681 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - [954] = 2, - ACTIONS(190), 1, - aux_sym_format_directive_type_token11, - ACTIONS(188), 24, + [905] = 17, + ACTIONS(9), 1, aux_sym_num_lit_token1, + ACTIONS(11), 1, anon_sym_SQUOTE, + ACTIONS(13), 1, anon_sym_COMMA, - 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, + ACTIONS(15), 1, anon_sym_BQUOTE, - anon_sym_QMARK, - anon_sym_Newline, - [984] = 2, - ACTIONS(194), 1, - aux_sym_format_directive_type_token11, - ACTIONS(192), 24, - aux_sym_num_lit_token1, - anon_sym_SQUOTE, - anon_sym_COMMA, - 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, - [1014] = 2, - ACTIONS(198), 3, - anon_sym_COMMA, - sym_null_lit, + 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(181), 1, + sym_block_comment, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, + sym__bare_list_lit, + ACTIONS(21), 2, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(196), 15, - ts_builtin_sym_end, + ACTIONS(179), 2, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, + ACTIONS(195), 2, 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, - anon_sym_COMMA, + ACTIONS(197), 2, sym_null_lit, - aux_sym__sym_unqualified_token1, - ACTIONS(200), 15, - 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, - anon_sym_COMMA, - sym_null_lit, - aux_sym__sym_unqualified_token1, - ACTIONS(204), 15, - 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, - anon_sym_COMMA, - sym_null_lit, - aux_sym__sym_unqualified_token1, - ACTIONS(208), 15, - 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, - anon_sym_COMMA, - sym_null_lit, - aux_sym__sym_unqualified_token1, - ACTIONS(212), 15, - 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, - [1129] = 4, - STATE(29), 2, + STATE(31), 2, sym__gap, aux_sym_quoting_lit_repeat1, - ACTIONS(216), 3, - sym__ws, - sym_comment, - sym_block_comment, - ACTIONS(221), 3, - anon_sym_COMMA, - sym_null_lit, - aux_sym__sym_unqualified_token1, - ACTIONS(219), 10, + STATE(33), 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, + [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, - sym_kwd_lit, 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_DQUOTE, - sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, - anon_sym_LPAREN, - anon_sym_COMMA_AT, - [1156] = 2, - ACTIONS(225), 3, + 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, + anon_sym_QMARK, + anon_sym_Newline, + [1094] = 2, + ACTIONS(207), 1, + aux_sym_format_directive_type_token11, + ACTIONS(205), 24, + aux_sym_num_lit_token1, + anon_sym_SQUOTE, + anon_sym_COMMA, + 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, + [1124] = 2, + ACTIONS(211), 1, + aux_sym_format_directive_type_token11, + ACTIONS(209), 24, + aux_sym_num_lit_token1, + anon_sym_SQUOTE, + anon_sym_COMMA, + 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, + [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(223), 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, - [1179] = 2, - ACTIONS(229), 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(227), 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, [1202] = 2, - ACTIONS(233), 3, + 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(231), 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, - [1225] = 2, - ACTIONS(237), 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(235), 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, - [1248] = 2, - ACTIONS(241), 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(239), 15, + ACTIONS(229), 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, + [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(243), 15, + ACTIONS(233), 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, + [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(247), 15, + ACTIONS(237), 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, + [1322] = 5, + ACTIONS(244), 1, + sym_block_comment, + ACTIONS(241), 2, + sym__ws, + sym_comment, + 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(251), 15, + ACTIONS(249), 7, + sym_kwd_lit, + anon_sym_SQUOTE, + anon_sym_BQUOTE, + anon_sym_DQUOTE, + sym_char_lit, + anon_sym_LPAREN, + anon_sym_COMMA_AT, + [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(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, - [1340] = 2, - ACTIONS(257), 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(255), 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, - [1363] = 2, - ACTIONS(261), 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(259), 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, - [1386] = 2, - ACTIONS(265), 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(263), 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, - [1409] = 2, - ACTIONS(269), 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(267), 14, + 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, - [1431] = 4, - ACTIONS(277), 1, - anon_sym_STAR, - ACTIONS(273), 2, - anon_sym_AT, - anon_sym_COLON, - ACTIONS(275), 4, - anon_sym_TILDE, - anon_sym_PERCENT, - anon_sym_AMP, - anon_sym_PIPE, - ACTIONS(271), 6, + [1472] = 2, + ACTIONS(273), 8, + sym_block_comment, 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, - anon_sym_AT, - anon_sym_COLON, + sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(271), 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, + [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(275), 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, + [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(279), 11, - aux_sym_num_lit_token1, + 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, + [1544] = 2, + ACTIONS(285), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, - anon_sym_AT_COLON, - anon_sym_COLON_AT, - anon_sym_TILDE, - anon_sym_PERCENT, - anon_sym_AMP, - anon_sym_PIPE, - anon_sym_STAR, - aux_sym_format_directive_type_token11, - [1471] = 2, - ACTIONS(285), 2, - anon_sym_AT, - anon_sym_COLON, + sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, ACTIONS(283), 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, + [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(287), 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, + [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(291), 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, + [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(295), 10, + 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, + [1639] = 4, + ACTIONS(305), 1, + anon_sym_STAR, + ACTIONS(301), 2, + anon_sym_AT, + anon_sym_COLON, + ACTIONS(303), 4, + anon_sym_TILDE, + anon_sym_PERCENT, + anon_sym_AMP, + anon_sym_PIPE, + 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, + [1661] = 2, + ACTIONS(309), 2, + anon_sym_AT, + anon_sym_COLON, + ACTIONS(307), 11, aux_sym_num_lit_token1, anon_sym_SQUOTE, anon_sym_COMMA, @@ -2795,359 +3089,393 @@ 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, - aux_sym_num_lit_token1, - ACTIONS(290), 1, - anon_sym_SQUOTE, - ACTIONS(293), 1, - anon_sym_COMMA, - ACTIONS(296), 2, + [1679] = 2, + ACTIONS(313), 2, anon_sym_AT, anon_sym_COLON, - STATE(45), 2, - sym__format_token, - aux_sym_format_modifiers_repeat1, - ACTIONS(298), 3, + ACTIONS(311), 11, + 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, + anon_sym_STAR, aux_sym_format_directive_type_token11, - [1512] = 7, + [1697] = 7, 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, - ACTIONS(302), 2, + ACTIONS(317), 2, anon_sym_AT, anon_sym_COLON, - ACTIONS(304), 2, + ACTIONS(319), 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, + [1722] = 6, + ACTIONS(323), 1, + aux_sym_num_lit_token1, + ACTIONS(326), 1, + anon_sym_SQUOTE, + ACTIONS(329), 1, + anon_sym_COMMA, + ACTIONS(332), 2, + anon_sym_AT, + anon_sym_COLON, + STATE(48), 2, + sym__format_token, + aux_sym_format_modifiers_repeat1, + 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, + ACTIONS(339), 1, anon_sym_DQUOTE, - ACTIONS(313), 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, - [1552] = 4, + [1760] = 4, + ACTIONS(344), 1, + anon_sym_TILDE, + ACTIONS(346), 1, + anon_sym_DQUOTE, + ACTIONS(348), 2, + aux_sym_str_lit_token1, + aux_sym_str_lit_token2, + STATE(52), 2, + sym_format_specifier, + aux_sym_str_lit_repeat1, + [1775] = 5, + ACTIONS(27), 1, + aux_sym_num_lit_token1, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(315), 1, + anon_sym_COMMA, + ACTIONS(321), 1, + aux_sym_format_directive_type_token11, + STATE(48), 2, + sym__format_token, + aux_sym_format_modifiers_repeat1, + [1792] = 4, ACTIONS(45), 1, anon_sym_DQUOTE, - ACTIONS(316), 1, + ACTIONS(350), 1, anon_sym_TILDE, - ACTIONS(318), 2, + ACTIONS(352), 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, - anon_sym_TILDE, - ACTIONS(322), 1, - anon_sym_DQUOTE, - ACTIONS(324), 2, - aux_sym_str_lit_token1, - aux_sym_str_lit_token2, - STATE(48), 2, - sym_format_specifier, - aux_sym_str_lit_repeat1, - [1582] = 5, - ACTIONS(27), 1, - aux_sym_num_lit_token1, - ACTIONS(29), 1, - anon_sym_SQUOTE, - ACTIONS(300), 1, - anon_sym_COMMA, - ACTIONS(306), 1, - aux_sym_format_directive_type_token11, - STATE(45), 2, - sym__format_token, - aux_sym_format_modifiers_repeat1, - [1599] = 1, - ACTIONS(326), 4, + [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) \