decompiler: better automatic detection of art groups and joint-node-index macro detection (#3061)

This commit is contained in:
Hat Kid 2023-10-06 16:42:16 +02:00 committed by GitHub
parent 2d480a6df6
commit 3c27b3942b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
353 changed files with 26060 additions and 3814 deletions

View File

@ -91,6 +91,7 @@ Interpreter::Interpreter(const std::string& username) {
{"ash", &Interpreter::eval_ash},
{"symbol->string", &Interpreter::eval_symbol_to_string},
{"string->symbol", &Interpreter::eval_string_to_symbol},
{"int->string", &Interpreter::eval_int_to_string},
{"get-environment-variable", &Interpreter::eval_get_env},
{"make-string-hash-table", &Interpreter::eval_make_string_hash_table},
{"hash-table-set!", &Interpreter::eval_hash_table_set},
@ -1801,6 +1802,13 @@ Object Interpreter::eval_string_to_symbol(const Object& form,
return SymbolObject::make_new(reader.symbolTable, args.unnamed.at(0).as_string()->data);
}
Object Interpreter::eval_int_to_string(const Object& form,
Arguments& args,
const std::shared_ptr<EnvironmentObject>&) {
vararg_check(form, args, {ObjectType::INTEGER}, {});
return StringObject::make_new(std::to_string(args.unnamed.at(0).as_int()));
}
Object Interpreter::eval_get_env(const Object& form,
Arguments& args,
const std::shared_ptr<EnvironmentObject>&) {

View File

@ -226,6 +226,9 @@ class Interpreter {
Object eval_string_to_symbol(const Object& form,
Arguments& args,
const std::shared_ptr<EnvironmentObject>& env);
Object eval_int_to_string(const Object& form,
Arguments& args,
const std::shared_ptr<EnvironmentObject>& env);
Object eval_get_env(const Object& form,
Arguments& args,
const std::shared_ptr<EnvironmentObject>& env);

View File

@ -617,4 +617,20 @@ std::optional<std::string> Env::get_art_elt_name(int idx) const {
}
}
std::optional<std::string> Env::get_joint_node_name(int idx) const {
ASSERT(dts);
auto it = dts->jg_info.find(joint_geo());
if (it == dts->jg_info.end()) {
return {};
} else {
const auto& jg = it->second;
auto it2 = jg.find(idx);
if (it2 == jg.end()) {
return {};
} else {
return it2->second;
}
}
}
} // namespace decompiler

View File

@ -157,6 +157,15 @@ class Env {
void set_art_group(const std::string& art_group) { m_art_group = art_group; }
const std::string& art_group() const { return m_art_group; }
std::optional<std::string> get_art_elt_name(int idx) const;
void set_jg(const std::string& art_group) {
if (art_group.substr(art_group.size() - 3) == "-ag") {
m_joint_geo = art_group.substr(0, art_group.size() - 3) + "-lod0-jg";
} else {
m_joint_geo = art_group + "-lod0-jg";
}
}
const std::string& joint_geo() const { return m_joint_geo; }
std::optional<std::string> get_joint_node_name(int idx) const;
void set_remap_for_function(const Function& func);
void set_remap_for_method(const TypeSpec& ts);
@ -244,5 +253,6 @@ class Env {
StackSpillMap m_stack_spill_map;
std::string m_art_group;
std::string m_joint_geo;
};
} // namespace decompiler

View File

@ -1299,6 +1299,7 @@ class DerefElement : public FormElement {
private:
ConstantTokenElement* try_as_art_const(const Env& env, FormPool& pool);
GenericElement* try_as_joint_node_index(const Env& env, FormPool& pool);
GenericElement* try_as_curtime(const Env& env, FormPool& pool);
GenericElement* try_as_seconds_per_frame(const Env& env, FormPool& pool);

View File

@ -3977,6 +3977,33 @@ ConstantTokenElement* DerefElement::try_as_art_const(const Env& env, FormPool& p
return nullptr;
}
GenericElement* DerefElement::try_as_joint_node_index(const Env& env, FormPool& pool) {
auto mr =
match(Matcher::deref(Matcher::s6(), false,
{DerefTokenMatcher::string("node-list"),
DerefTokenMatcher::string("data"), DerefTokenMatcher::any_integer(0)}),
this);
if (mr.matched) {
// lg::print("func {} joint-geo: {}\n", env.func->name(), env.joint_geo());
auto info = env.dts->jg_info;
std::vector<Form*> args;
auto joint_name = env.get_joint_node_name(mr.maps.ints.at(0));
args.push_back(pool.form<ConstantTokenElement>(env.joint_geo()));
if (joint_name) {
args.push_back(pool.form<ConstantTokenElement>(joint_name.value()));
return pool.alloc_element<GenericElement>(
GenericOperator::make_function(pool.form<ConstantTokenElement>("joint-node-index")),
args);
} else {
lg::error("function `{}`: did not find joint node {} in {}", env.func->name(),
mr.maps.ints.at(0), env.joint_geo());
}
}
return nullptr;
}
GenericElement* DerefElement::try_as_curtime(const Env& env, FormPool& pool) {
if (env.version == GameVersion::Jak1) {
auto mr = match(Matcher::deref(Matcher::symbol("*display*"), false,
@ -4048,6 +4075,12 @@ void DerefElement::update_from_stack(const Env& env,
return;
}
auto as_jnode = try_as_joint_node_index(env, pool);
if (as_jnode) {
result->push_back(as_jnode);
return;
}
auto as_simple_expr = m_base->try_as_element<SimpleExpressionElement>();
if (env.version == GameVersion::Jak2 && as_simple_expr && as_simple_expr->expr().is_identity() &&
as_simple_expr->expr().get_arg(0).is_sym_val() &&

View File

@ -873,6 +873,24 @@ std::string ObjectFileDB::process_game_count_file() {
}
namespace {
struct JointGeo {
u32 offset{};
std::string name;
u32 length{};
};
void get_joint_info(ObjectFileDB& db, ObjectFileData& obj, JointGeo jg) {
const auto& words = obj.linked_data.words_by_seg.at(MAIN_SEGMENT);
for (size_t i = 0; i < jg.length; ++i) {
const auto& label = words.at((jg.offset / 4) + 7 + i).label_id();
const auto& joint = obj.linked_data.labels.at(label);
const auto& name =
obj.linked_data.get_goal_string_by_label(words.at(joint.offset / 4).label_id());
// lg::print("{} joint idx {}/{}: {}\n", jg.name, i + 1, jg.length, name);
db.dts.add_joint_node(jg.name, name, i + 1);
}
}
void get_art_info(ObjectFileDB& db, ObjectFileData& obj) {
if (obj.obj_version == 4) {
const auto& words = obj.linked_data.words_by_seg.at(MAIN_SEGMENT);
@ -908,6 +926,11 @@ void get_art_info(ObjectFileDB& db, ObjectFileData& obj) {
if (elt_type == "art-joint-geo") {
// the skeleton!
unique_name += "-jg";
JointGeo jg;
jg.offset = label.offset;
jg.name = unique_name;
jg.length = words.at(label.offset / 4 + 2).data;
get_joint_info(db, obj, jg);
} else if (elt_type == "merc-ctrl" || elt_type == "shadow-geo") {
// (maybe mesh-geo as well but that doesnt exist)
// the skin!
@ -953,7 +976,7 @@ void ObjectFileDB::dump_art_info(const fs::path& output_dir) {
lg::info("Writing art group info...");
Timer timer;
if (!dts.art_group_info.empty()) {
if (!dts.art_group_info.empty() || !dts.jg_info.empty()) {
file_util::create_dir_if_needed(output_dir / "import");
}
for (const auto& [ag_name, info] : dts.art_group_info) {
@ -970,6 +993,18 @@ void ObjectFileDB::dump_art_info(const fs::path& output_dir) {
file_util::write_text_file(filename, result);
}
auto jg_fpath = output_dir / "import" / "joint-nodes.gc";
std::string jg_result;
for (const auto& [jg_name, info] : dts.jg_info) {
for (const auto& [idx, joint] : info) {
jg_result += print_jg_for_dump(jg_name, joint, idx);
}
jg_result += "\n";
}
file_util::write_text_file(jg_fpath, jg_result);
lg::info("Written art group info: in {:.2f} ms", timer.getMs());
}
@ -988,4 +1023,7 @@ std::string print_art_elt_for_dump(const std::string& group_name,
int idx) {
return fmt::format("(def-art-elt {} {} {})\n", group_name, name, idx);
}
std::string print_jg_for_dump(const std::string& jg_name, const std::string& joint_name, int idx) {
return fmt::format("(def-joint-node {} \"{}\" {})\n", jg_name, joint_name, idx);
}
} // namespace decompiler

View File

@ -395,4 +395,5 @@ class ObjectFileDB {
};
std::string print_art_elt_for_dump(const std::string& group_name, const std::string& name, int idx);
std::string print_jg_for_dump(const std::string& jg_name, const std::string& joint_name, int idx);
} // namespace decompiler

View File

@ -548,14 +548,32 @@ void ObjectFileDB::ir2_type_analysis_pass(int seg, const Config& config, ObjectF
func.ir2.env.set_stack_structure_hints(
try_lookup(config.stack_structure_hints_by_function, func_name));
if (config.art_groups_by_function.find(func_name) != config.art_groups_by_function.end()) {
func.ir2.env.set_art_group(config.art_groups_by_function.at(func_name));
} else if (config.art_groups_by_file.find(obj_name) != config.art_groups_by_file.end()) {
func.ir2.env.set_art_group(config.art_groups_by_file.at(obj_name));
if (func.guessed_name.kind == FunctionName::FunctionKind::V_STATE) {
if (config.art_group_type_remap.find(func.guessed_name.type_name) !=
config.art_group_type_remap.end()) {
func.ir2.env.set_art_group(config.art_group_type_remap.at(func.guessed_name.type_name));
} else {
func.ir2.env.set_art_group(func.guessed_name.type_name + "-ag");
}
} else if (func.guessed_name.kind == FunctionName::FunctionKind::NV_STATE ||
func.type.try_get_tag("behavior").has_value()) {
std::string type = func.type.get_tag("behavior");
if (config.art_group_type_remap.find(type) != config.art_group_type_remap.end()) {
func.ir2.env.set_art_group(config.art_group_type_remap.at(type));
} else {
func.ir2.env.set_art_group(type + "-ag");
}
} else {
func.ir2.env.set_art_group(obj_name + "-ag");
}
func.ir2.env.set_jg(func.ir2.env.art_group());
if (config.joint_node_hacks.find(func.ir2.env.art_group()) !=
config.joint_node_hacks.end()) {
func.ir2.env.set_jg(config.joint_node_hacks.at(func.ir2.env.art_group()));
}
constexpr bool kForceNewTypes = false;
if (config.game_version == GameVersion::Jak2 || kForceNewTypes) {
// use new types for jak 2 always

View File

@ -56,6 +56,14 @@ Config make_config_via_json(nlohmann::json& json) {
config.art_group_info_dump = serialized;
}
if (json.contains("joint_node_dump_file")) {
auto json_data = file_util::read_text_file(
file_util::get_file_path({json.at("joint_node_dump_file").get<std::string>()}));
std::unordered_map<std::string, std::unordered_map<int, std::string>> serialized =
parse_commented_json(json_data, "joint_node_dump_file");
config.jg_info_dump = serialized;
}
if (json.contains("obj_file_name_map_file")) {
config.obj_file_name_map_file = json.at("obj_file_name_map_file").get<std::string>();
}
@ -75,6 +83,7 @@ Config make_config_via_json(nlohmann::json& json) {
config.process_subtitle_images = json.at("process_subtitle_images").get<bool>();
}
config.dump_art_group_info = json.at("dump_art_group_info").get<bool>();
config.dump_joint_geo_info = json.at("dump_joint_geo_info").get<bool>();
config.hexdump_code = json.at("hexdump_code").get<bool>();
config.hexdump_data = json.at("hexdump_data").get<bool>();
config.find_functions = json.at("find_functions").get<bool>();
@ -286,10 +295,10 @@ Config make_config_via_json(nlohmann::json& json) {
}
auto art_info_json = read_json_file_from_config(json, "art_info_file");
config.art_groups_by_file =
art_info_json.at("files").get<std::unordered_map<std::string, std::string>>();
config.art_groups_by_function =
art_info_json.at("functions").get<std::unordered_map<std::string, std::string>>();
config.art_group_type_remap =
art_info_json.at("type_remap").get<std::unordered_map<std::string, std::string>>();
config.joint_node_hacks =
art_info_json.at("joint_node_hacks").get<std::unordered_map<std::string, std::string>>();
auto import_deps = read_json_file_from_config(json, "import_deps_file");
config.import_deps_by_file =

View File

@ -116,6 +116,7 @@ struct Config {
bool process_subtitle_text = false;
bool process_subtitle_images = false;
bool dump_art_group_info = false;
bool dump_joint_geo_info = false;
bool rip_levels = false;
bool extract_collision = false;
bool find_functions = false;
@ -169,9 +170,10 @@ struct Config {
DecompileHacks hacks;
std::unordered_map<std::string, std::string> art_groups_by_file;
std::unordered_map<std::string, std::string> art_groups_by_function;
std::unordered_map<std::string, std::string> art_group_type_remap;
std::unordered_map<std::string, std::unordered_map<int, std::string>> art_group_info_dump;
std::unordered_map<std::string, std::unordered_map<int, std::string>> jg_info_dump;
std::unordered_map<std::string, std::string> joint_node_hacks;
std::unordered_map<std::string, std::vector<std::string>> import_deps_by_file;
};

View File

@ -42,6 +42,8 @@
"process_art_groups": false,
// write out a json file containing the art info mapping, run this with all objects allowed
"dump_art_group_info": false,
// write out a json file containing the joint node mapping, run this with all objects allowed
"dump_joint_geo_info": false,
///////////////////////////
// WEIRD OPTIONS
@ -88,6 +90,7 @@
"import_deps_file": "decompiler/config/jak1/ntsc_v1/import_deps.jsonc",
"all_types_file": "decompiler/config/jak1/all-types.gc",
"art_group_dump_file": "decompiler/config/jak1/ntsc_v1/art-group-info.min.json",
"joint_node_dump_file": "decompiler/config/jak1/ntsc_v1/joint-node-info.min.json",
// optional: a predetermined object file name map from a file.
// this will make decompilation naming consistent even if you only run on some objects.

View File

@ -4,24 +4,48 @@
//////////////////////
// defines what art group each file or function is using.
// by default, the decompiler assumes to be the name of the current file + -ag
// by default, the decompiler assumes this to be the name of the current type + -ag
// so you only need to specify it when that's not the case.
// NOTE: it's fine to have a function and its file both in here. the function takes priority.
"files": {
// remap names for states and behaviors
"type_remap": {
"target": "eichar-ag",
"target2": "eichar-ag",
"target-death": "eichar-ag",
"powerups": "eichar-ag",
"snow-ram": "ram-ag"
"aphid": "aphid-lurker-ag",
"mistycannon-missile": "sack-ag",
"beach-rock": "lrocklrg-ag",
"billy-snack": "farthy-snack-ag",
"billy-rat": "swamp-rat-ag",
"bully-broken-cage": "bully-ag",
"precurbridgecam": "junglecam-ag",
"assistant-bluehut": "assistant-village2-ag",
"assistant-levitator": "assistant-village2-ag",
"assistant-villagec": "assistant-village3-ag",
"balloonlurker-pilot": "balloonlurker-ag",
"flutflut": "flut-saddle-ag",
"gnawer-falling-segment": "gnawer-ag",
"babak-with-cannon": "babak-ag",
"springbox": "bounceytarp-ag",
"light-eco-mother": "light-eco-ag",
"light-eco-child": "light-eco-ag",
"bone-platform": "mis-bone-platform-ag",
"peeper": "lightning-mole-ag",
"mother-spider": "mother-spider-ag",
"mother-spider-leg": "mother-spider-ag",
"mother-spider-egg": "spider-egg-ag",
"ogreboss-super-boulder": "ogreboss-ag",
"ogreboss-bounce-boulder": "ogreboss-ag",
"plant-boss-arm": "plant-boss-ag",
"plant-boss-leaf": "plant-boss-ag",
"snow-ball-shadow": "snow-ball-ag",
"swamp-bat-slave": "swamp-bat-ag",
"swampgate": "swamp-spike-ag",
"starfish": "villa-starfish-ag",
"yeti-slave": "yeti-ag"
},
"functions": {
"(code target-warp-out)": "eichar-ag",
"(code mistycannon-missile-idle)": "sack-ag",
"(code billy-snack-eat)": "farthy-snack-ag",
"(code plunger-lurker-plunge)": "plunger-lurker-ag",
"(code plunger-lurker-flee)": "plunger-lurker-ag",
"(code plunger-lurker-idle)": "plunger-lurker-ag"
// some art groups (like robotboss-ag) have a name for their model that differs
// from the usual ag-name + "-lod0". you can add those exceptions here.
"joint_node_hacks": {
"robotboss-ag": "robotboss-basic"
}
}

File diff suppressed because one or more lines are too long

View File

@ -1567,9 +1567,7 @@
[58, "v1", "(state symbol none)"]
],
"(method 7 rigid-body-platform)": [
[5, "v1", "int"]
],
"(method 7 rigid-body-platform)": [[5, "v1", "int"]],
"(method 10 rigid-body)": [[50, "v1", "vector"]],

View File

@ -42,6 +42,8 @@
"process_art_groups": false,
// write out a json file containing the art info mapping, run this with all objects allowed
"dump_art_group_info": false,
// write out a json file containing the joint node mapping, run this with all objects allowed
"dump_joint_geo_info": false,
// set to false to skip adding .STR files to the decompiler database
"read_spools": false,
@ -98,6 +100,7 @@
"import_deps_file": "decompiler/config/jak2/ntsc_v1/import_deps.jsonc",
"all_types_file": "decompiler/config/jak2/all-types.gc",
"art_group_dump_file": "decompiler/config/jak2/ntsc_v1/art-group-info.min.json",
"joint_node_dump_file": "decompiler/config/jak2/ntsc_v1/joint-node-info.min.json",
// optional: a predetermined object file name map from a file.
// this will make decompilation naming consistent even if you only run on some objects.

View File

@ -4,26 +4,48 @@
//////////////////////
// defines what art group each file or function is using.
// by default, the decompiler assumes to be the name of the current file + -ag
// by default, the decompiler assumes this to be the name of the current type + -ag
// so you only need to specify it when that's not the case.
// NOTE: it's fine to have a function and its file both in here. the function takes priority.
"files": {
// remap names for states and behaviors of these types
"type_remap": {
"target": "jakb-ag",
"target2": "jakb-ag",
"target-death": "jakb-ag",
"target-gun": "jakb-ag",
"target-swim": "jakb-ag",
"target-tube": "jakb-ag",
"target-board": "jakb-ag",
"target-carry": "jakb-ag",
"target-darkjak": "jakb-ag",
"target-anim": "jakb-ag",
"powerups": "jakb-ag",
"sidekick": "daxter-ag"
"sidekick": "daxter-ag",
"crimson-guard-level": "crimson-guard-ag",
"roboguard-level": "roboguard-ag",
"krew-boss": "krew-lowres-ag",
"krew-boss-clone": "krew-clone-ag",
"dig-balloon-lurker-trapeze": "dig-ballon-lurker-ag",
"drill-barons-ship-explode": "drill-barons-ship-ag",
"drill-elevator-shaft": "drill-elevator-base-ag",
"drill-control-panel-a": "drill-control-panel-ag",
"forest-youngsamos": "youngsamos-highres-ag",
"stad-youngsamos": "youngsamos-highres-ag",
"fort-elec-belt-inst": "fort-elec-belt-ag",
"fort-robotank-reticle": "fort-robotank-sight-ag",
"fort-robotank-turret": "fort-robotank-top-ag",
"gungame-door": "fort-entry-gate-ag",
"base-turret": "drill-turret-ext",
"whack-a-metal": "daxter-highres-ag",
"city-lurker": "babak-ag",
"metalkor-spinner": "metalkor-ag",
"mincan-lighthouse-lens": "mincan-lighthouse-ag",
"gator": "amphibian-ag",
"grunt-mech": "grunt-ag",
"sig-under": "sig-ag",
"sew-scare-grunt": "grunt-ag",
"metalhead-grunt": "grunt-ag",
"metalhead-flitter": "flitter-ag",
"metalhead-predator": "predator-ag",
"hosehead-fake": "hosehead-ag",
"strip-chain-crate-slave": "strip-chain-crate-ag",
"tomb-simon-block": "tomb-plat-simon-ag",
"transport-level": "transport-ag"
},
"functions": {
// "(code target-warp-out)": "eichar-ag"
// some art groups (like robotboss-ag) have a name for their model that differs
// from the usual ag-name + "-lod0". you can add those exceptions here.
"joint_node_hacks": {
// "robotboss-ag": "robotboss-basic"
}
}

File diff suppressed because one or more lines are too long

View File

@ -1955,9 +1955,7 @@
[468, "a0", "editable-light"]
],
"(method 29 editable)": [[[4, 8], "a0", "editable"]],
"(method 27 editable-plane)": [
[10, "v0", "editable-plane"]
],
"(method 27 editable-plane)": [[10, "v0", "editable-plane"]],
"(method 29 editable-face)": [
[234, "a1", "editable-point"],
[241, "f0", "float"],
@ -1969,9 +1967,7 @@
[381, "a1", "(array editable-point)"],
[387, "a1", "(array editable-point)"]
],
"(method 27 editable-face)": [
[10, "v0", "editable-face"]
],
"(method 27 editable-face)": [[10, "v0", "editable-face"]],
"(method 25 editable)": [[[12, 17], "a0", "editable"]],
"merc-edge-stats": [[31, "v1", "merc-ctrl"]],
"(method 8 merc-ctrl)": [
@ -7703,9 +7699,7 @@
[27, "v1", "art-joint-anim"],
[417, "v1", "art-joint-anim"]
],
"(enter ambush roboguard-level)": [
[[72, 76], "a0", "process-focusable"]
],
"(enter ambush roboguard-level)": [[[72, 76], "a0", "process-focusable"]],
"(code roll-enter roboguard-level)": [[10, "v1", "art-joint-anim"]],
"(trans roll-hostile roboguard-level)": [
[120, "gp", "process-focusable"],
@ -7826,9 +7820,7 @@
[254, "v1", "mysql-nav-edge"]
],
"(method 11 city-level-info)": [[27, "a3", "(pointer int8)"]],
"(method 85 bike-base)": [
[[22, 26], "v1", "(pointer uint128)"]
],
"(method 85 bike-base)": [[[22, 26], "v1", "(pointer uint128)"]],
"target-pilot-exit": [[64, "gp", "vehicle"]],
"target-pilot-init": [
[[61, 68], "s4", "vehicle"],
@ -8407,9 +8399,7 @@
],
"(method 78 wasp)": [[11, "v1", "art-joint-anim"]],
"(trans hostile wasp)": [[36, "v1", "art-joint-anim"]],
"(method 52 wasp)": [
[21, "a1", "process-focusable"]
],
"(method 52 wasp)": [[21, "a1", "process-focusable"]],
"(method 115 crimson-guard-hover)": [
["_stack_", 16, "res-tag"],
["_stack_", 32, "res-tag"],
@ -8445,9 +8435,7 @@
[31, "a0", "process-focusable"],
[34, "a0", "process-focusable"]
],
"(method 52 crimson-guard-hover)": [
[21, "a1", "process-focusable"]
],
"(method 52 crimson-guard-hover)": [[21, "a1", "process-focusable"]],
"(method 77 crimson-guard-hover)": [
[19, "v1", "art-joint-anim"],
[49, "v1", "art-joint-anim"]

View File

@ -205,19 +205,31 @@ int main(int argc, char** argv) {
if (config.process_art_groups) {
db.extract_art_info();
// dumb art info to json if requested
// dump art info to json if requested
if (config.dump_art_group_info) {
auto file_name = out_folder / "dump" / "art-group-info.min.json";
nlohmann::json json = db.dts.art_group_info;
file_util::create_dir_if_needed_for_file(file_name);
file_util::write_text_file(file_name, json.dump(-1));
lg::info("[DUMP] Dumped art group info to {}", file_name.string());
auto ag_file_name = out_folder / "dump" / "art-group-info.min.json";
nlohmann::json ag_json = db.dts.art_group_info;
file_util::create_dir_if_needed_for_file(ag_file_name);
file_util::write_text_file(ag_file_name, ag_json.dump(-1));
lg::info("[DUMP] Dumped art group info to {}", ag_file_name.string());
}
} else if (!config.art_group_info_dump.empty()) {
if (config.dump_joint_geo_info) {
auto jg_file_name = out_folder / "dump" / "joint-node-info.min.json";
nlohmann::json jg_json = db.dts.jg_info;
file_util::create_dir_if_needed_for_file(jg_file_name);
file_util::write_text_file(jg_file_name, jg_json.dump(-1));
lg::info("[DUMP] Dumped joint node info to {}", jg_file_name.string());
}
} else if (!config.art_group_info_dump.empty() || !config.jg_info_dump.empty()) {
// process art groups (used in decompilation)
// - if the config has a path to the art info dump, just use that
// - otherwise (or if we want to dump it fresh) extract it
if (!config.art_group_info_dump.empty()) {
db.dts.art_group_info = config.art_group_info_dump;
}
if (!config.jg_info_dump.empty()) {
db.dts.jg_info = config.jg_info_dump;
}
} else {
lg::error("`process_art_groups` was false and no art-group-info dump was provided!");
return 1;

View File

@ -37,6 +37,7 @@ class DecompilerTypeSystem {
std::unordered_map<std::string, std::vector<std::vector<int>>>
format_ops_with_dynamic_string_by_func_name;
std::unordered_map<std::string, std::unordered_map<int, std::string>> art_group_info;
std::unordered_map<std::string, std::unordered_map<int, std::string>> jg_info;
void add_symbol(const std::string& name) {
if (symbols.find(name) == symbols.end()) {
@ -78,6 +79,15 @@ class DecompilerTypeSystem {
}
}
void add_joint_node(const std::string& jg_name, const std::string& joint_name, int joint_idx) {
if (jg_info.count(jg_name) == 0) {
jg_info[jg_name] = {};
}
if (jg_info.at(jg_name).count(joint_idx) == 0) {
jg_info.at(jg_name)[joint_idx] = joint_name;
}
}
// todo - totally eliminate this.
struct {
std::string current_method_type;

View File

@ -1066,6 +1066,38 @@
`(defconstant ,name (-> self draw art-group data ,idx))
)
(defmacro def-joint-node (jg name idx)
"define a new joint node for a joint geo. adds it to a global map stored in goos."
;; grab data about the joint geo
(let* ((jg-string (symbol->string jg))
(name-string name)
(jg-info-lookup (hash-table-try-ref *jg-info* jg-string))
(jg-info-exists (car jg-info-lookup))
(jg-info (cdr jg-info-lookup))
)
;; no joint geo was found, make a new one and add it.
(when (not jg-info-exists)
(set! jg-info (make-string-hash-table))
(hash-table-set! *jg-info* jg-string jg-info)
)
;; lookup name in our joint geo
(let* ((joint-name-lookup (hash-table-try-ref jg-info name-string))
(joint-name-exists (car joint-name-lookup))
(joint-new (list name idx))) ;; this is the format of the individual entries
;; found, check if valid
(if (and joint-name-exists (not (eq? (cdr joint-name-lookup) joint-new)))
(fmt #t "error redefining joint. data mismatch: {}\n" joint-new)
#f)
;; not found. add to the joint geo.
(when (not joint-name-exists)
(hash-table-set! jg-info name-string joint-new)
)
)
)
;; `(defconstant ,name (-> self node-list data ,idx))
`(empty)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; built-in type stuff
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

View File

@ -491,6 +491,9 @@
;; a map for art definitions used by art loading code.
(define *art-info* (make-string-hash-table))
;; a map for joint node names used by art loading code.
(define *jg-info* (make-string-hash-table))
;;;;;;;;;;;;;;;;;;;;;;;;
;; build system ;;

View File

@ -1454,7 +1454,7 @@
:code (behavior ()
0.5
(let ((f28-0 0.0))
(ja :group! (-> self draw art-group data 2))
(ja :group! fuel-cell-idle-ja)
(loop
(let ((f30-0 (vector-vector-distance (-> self base) (target-pos 0))))
(set! f28-0
@ -1622,7 +1622,7 @@
(auto-save-command 'auto-save 0 0 *default-pool*)
(ja-play-spooled-anim
(-> self victory-anim)
(the-as art-joint-anim (-> self draw art-group data 2))
(the-as art-joint-anim fuel-cell-idle-ja)
(the-as art-joint-anim #f)
(the-as (function process-drawable symbol) false-func)
)
@ -2015,7 +2015,7 @@
(set! (-> self root-override trans quad) (-> self draw origin quad))
(set! (-> self base quad) (-> self root-override trans quad))
(ja-channel-set! 1)
(ja :group! (-> self draw art-group data 2))
(ja :group! fuel-cell-idle-ja)
(logclear! (-> self draw status) (draw-status hidden))
(vector-reset! (-> self draw origin))
(go-virtual wait)

View File

@ -80,7 +80,7 @@
)
)
(process-entity-status! self (entity-perm-status complete) #f)
(ja :group! (-> self draw art-group data 3) :num! (identity (ja-aframe 0.0 0)))
(ja :group! orb-cache-top-idle-ja :num! (identity (ja-aframe 0.0 0)))
(transform-post)
(anim-loop)
)
@ -267,7 +267,7 @@
(if (not arg0)
(sound-play "close-orb-cash")
)
(ja :group! (-> self draw art-group data 3) :num! (identity (ja-aframe 0.0 0)))
(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)

View File

@ -404,6 +404,23 @@
)
)
(defmacro joint-name->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)))
)
)
)
)
(defmacro joint-node-index (jg name)
`(-> self node-list data (joint-name->index ,jg ,name))
)
(defmacro defskelgroup (name art-name joint-geom joint-anim lods
&key (shadow 0)
&key bounds
@ -445,3 +462,4 @@
(import "goal_src/jak1/engine/data/art-elts.gc")
(import "goal_src/jak1/engine/data/joint-nodes.gc")

File diff suppressed because it is too large Load Diff

View File

@ -520,7 +520,7 @@
(not (time-elapsed? (-> self control unknown-dword11) (seconds 0.05)))
)
)
(let ((gp-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 74))))
(let ((gp-0 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index 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))
@ -533,7 +533,7 @@
(launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2391) gp-0)
)
)
(let ((gp-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 70))))
(let ((gp-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index 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))

View File

@ -1399,7 +1399,7 @@
((and (= (-> self next-state name) 'target-clone-anim)
(not (logtest? (-> self draw status) (draw-status hidden)))
(begin
(vector<-cspace! gp-0 (-> self node-list data 3))
(vector<-cspace! gp-0 (joint-node-index eichar-lod0-jg main))
(+! (-> gp-0 y) -5896.192)
(< (fabs (- (-> gp-0 y) (-> self control trans y))) 8192.0)
)
@ -2007,10 +2007,10 @@
(set! (-> self draw lod-set max-lod) 0)
(logior! (-> self skel status) (janim-status inited eye))
(set! (-> self draw shadow-ctrl) *target-shadow-control*)
(set! (-> self control unknown-cspace00 parent) (-> self node-list data 42))
(set! (-> self control unknown-cspace00 joint) (the-as joint (-> self node-list data 54)))
(set! (-> self control unknown-cspace00 joint) (the-as joint (-> self node-list data 54)))
(set! (-> self control unknown-cspace10 parent) (-> self node-list data 64))
(set! (-> self control unknown-cspace00 parent) (joint-node-index eichar-lod0-jg lindA))
(set! (-> self control unknown-cspace00 joint) (the-as joint (joint-node-index eichar-lod0-jg rindA)))
(set! (-> self control unknown-cspace00 joint) (the-as joint (joint-node-index eichar-lod0-jg rindA)))
(set! (-> self control unknown-cspace10 parent) (joint-node-index eichar-lod0-jg LshoulderPad))
(set! (-> self neck) (new 'process 'joint-mod (joint-mod-handler-mode look-at) self 7))
(set! (-> self fact-info-target)
(new 'process 'fact-info-target self (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))

View File

@ -760,9 +760,9 @@
(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 (-> self draw art-group data 59))
(= v1-15 (-> self draw art-group data 60))
(= v1-15 (-> self draw art-group data 61))
(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))

View File

@ -2139,7 +2139,7 @@
(create-splash
(-> self water)
(the-as float 0.6)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 37))
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index eichar-lod0-jg mouth))
0
(-> self control transv)
)

View File

@ -1365,7 +1365,7 @@
gp-1
projectile-init-by-other
(-> self entity)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 23))
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index eichar-lod0-jg sk_rhand))
s5-2
(if (>= (-> self fact-info-target eco-level) (-> *FACT-bank* eco-level-max))
25
@ -1840,7 +1840,7 @@
(create-splash
(-> self water)
(the-as float 0.2)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 75))
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index eichar-lod0-jg Rtoes))
0
(vector-float*! (new 'stack-no-clear 'vector) (-> self control transv) 2.5)
)
@ -1850,7 +1850,7 @@
(create-splash
(-> self water)
(the-as float 0.2)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 71))
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index eichar-lod0-jg Ltoes))
0
(vector-float*! (new 'stack-no-clear 'vector) (-> self control transv) 2.5)
)
@ -2712,7 +2712,7 @@
:exit (behavior ()
(send-event (ppointer->process (-> self sidekick)) 'matrix 'normal)
(send-event (ppointer->process (-> self sidekick)) 'shadow #t)
(let ((gp-0 (-> self node-list data 3))
(let ((gp-0 (joint-node-index eichar-lod0-jg main))
(a1-2 (&-> (-> self control) unknown-qword00))
)
(cond

View File

@ -40,7 +40,7 @@
)
:trans (behavior ()
(rider-trans)
(let ((t2-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4))))
(let ((t2-0 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index 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))
)
@ -48,7 +48,7 @@
)
:code (behavior ()
(loop
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek! max 0.5) :frame-num 0.0)
(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))
@ -249,7 +249,7 @@
)
:code (behavior ()
(set-time! (-> self state-time))
(ja :group! (-> self draw art-group data 3) :num! min)
(ja :group! grottopole-idle-ja :num! min)
(transform-post)
(suspend)
(loop
@ -1216,13 +1216,13 @@
(suspend)
(update-transforms! (-> self root-override))
(when (not arg0)
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! flutflutegg-crack-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
)
)
(ja :group! (-> self draw art-group data 5) :num! max)
(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))
)
@ -1252,7 +1252,7 @@
(ja-channel-set! 1)
(set-vector! (-> self root-override trans) -231190.94 64559.105 -1164727.5 1.0)
(quaternion-axis-angle! (-> self root-override quat) 0.0 1.0 0.0 0.0)
(ja :group! (-> self draw art-group data 6) :num! max)
(ja :group! flutflutegg-broke-ja :num! max)
(loop
(logior! (-> self mask) (process-mask sleep))
(suspend)
@ -1349,7 +1349,7 @@
(if (and (-> self alt-actor) (logtest? (-> self alt-actor extra perm status) (entity-perm-status complete)))
(go harvester-inflate #t)
)
(ja :group! (-> self draw art-group data 5) :num! (identity (ja-aframe 1.0 0)))
(ja :group! harvester-inflate-ja :num! (identity (ja-aframe 1.0 0)))
(ja-post)
(loop
(logior! (-> self mask) (process-mask sleep))
@ -1361,14 +1361,14 @@
(defstate harvester-inflate (harvester)
:code (behavior ((arg0 symbol))
(when (not arg0)
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(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! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! harvester-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -321,19 +321,34 @@
)
)
(if (and (< 200.0 f30-0) (< f30-0 275.0))
(spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 3)))
(spawn
(-> self part-falling)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index 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) (-> self node-list data 4)))
(spawn
(-> self part-falling)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index 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) (-> self node-list data 4)))
(spawn
(-> self part-landing)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index 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) (-> self node-list data 5)))
(spawn
(-> self part-falling)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index 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) (-> self node-list data 6)))
(spawn
(-> self part-falling)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index lrocklrg-lod0-jg smlrock))
)
)
(set! (-> self prev-frame) f30-0)
)
@ -347,7 +362,7 @@
)
(logclear! (-> self draw status) (draw-status hidden))
(ja-channel-set! 1)
(ja :group! (-> self draw art-group data 2) :num! min)
(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
@ -369,8 +384,8 @@
:parts 4
:command-list '((-150 blackout 100) (-116 blackout 0))
)
(the-as art-joint-anim (-> self draw art-group data 2))
(the-as art-joint-anim (-> self draw art-group data 3))
(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)
@ -407,7 +422,7 @@
*entity-pool*
(game-task none)
)
(ja :group! (-> self draw art-group data 3))
(ja :group! lrocklrg-fallen-ja)
(compute-alignment! (-> self align))
(let ((v1-6 (first-transform (-> self align))))
(set! (-> self root-override trans quad) (-> self entity extra trans quad))

View File

@ -95,7 +95,7 @@
(loop
(when (!= (ja-group) (get-art-elem self))
(ja-channel-push! 1 (seconds 0.05))
(ja :group! (-> self draw art-group data 3))
(ja :group! assistant-lavatube-end-idle-ja)
)
(ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)

View File

@ -925,7 +925,7 @@
:code (behavior ()
(process-entity-status! self (entity-perm-status complete) #t)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! citb-coil-die-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -937,7 +937,7 @@
(defstate citb-coil-broken (citb-coil)
:code (behavior ()
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! citb-coil-dead-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1002,7 +1002,7 @@
:event citb-hose-event-handler
:code (behavior ()
(loop
(ja-no-eval :group! (-> self draw art-group data 3) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! citb-hose-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1016,7 +1016,7 @@
:event citb-hose-event-handler
:code (behavior ()
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! citb-hose-spit-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1031,7 +1031,7 @@
:code (behavior ()
(process-entity-status! self (entity-perm-status complete) #t)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! citb-hose-die-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -104,7 +104,7 @@
(('stop-cloning)
(set! (-> self cloning) #f)
(let ((v1-7 (-> self skel root-channel 0)))
(set! v0-3 (-> self draw art-group data 3))
(set! v0-3 citb-sagecage-idle-ja)
(set! (-> v1-7 frame-group) (the-as art-joint-anim v0-3))
)
v0-3

View File

@ -875,7 +875,7 @@
)
)
:code (behavior ()
(ja-no-eval :group! (-> self draw art-group data 3) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! citb-firehose-start-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -884,7 +884,7 @@
(restore-collide-with-as (-> self root-override))
(sound-play "eco-torch" :position (the-as symbol (-> self blast-pos)))
(dotimes (gp-1 2)
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(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)
@ -894,7 +894,7 @@
)
(clear-collide-with-as (-> self root-override))
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! citb-firehose-end-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -323,13 +323,13 @@
(rot->dir-targ! (-> self control))
(transform-post)
(ja-channel-push! 1 (seconds 0.2))
(ja-no-eval :group! (-> self draw art-group data 88) :num! (seek! (ja-aframe 18.0 0)) :frame-num 0.0)
(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) (-> self node-list data 7)))
(s3-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index eichar-lod0-jg neckB)))
)
(dotimes (s2-0 50)
(when (handle->process (the-as handle arg0))

View File

@ -436,7 +436,7 @@
(defbehavior robotboss-manipy-trans-hook robotboss ()
(let ((gp-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-0 (-> self node-list data 7))
(vector<-cspace! gp-0 (joint-node-index robotboss-basic-lod0-jg blue_eco_piece))
(spawn (-> self part) gp-0)
)
0

View File

@ -342,22 +342,22 @@
(if (>= (- (-> *display* game-frame-counter) (-> self state-time)) (the int (-> self countdown-time)))
(go darkecobomb-explode #f)
)
(when (ja-group? (-> self draw art-group data 5))
(when (ja-group? darkecobomb-spin-cycle-ja)
(let ((gp-2 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-2 (-> self node-list data 5))
(vector<-cspace! gp-2 (joint-node-index darkecobomb-lod0-jg particles))
(spawn (-> self part) gp-2)
)
)
)
:code (behavior ()
(sound-play "bomb-open")
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(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! (-> self draw art-group data 5) :num! (seek! max (-> self anim-speed)) :frame-num 0.0)
(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)
@ -387,7 +387,7 @@
(ja-eval)
)
(loop
(ja-no-eval :group! (-> self draw art-group data 2) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! darkecobomb-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -411,13 +411,13 @@
)
)
:code (behavior ()
(ja-no-eval :group! (-> self draw art-group data 3) :num! (seek!) :frame-num 0.0)
(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! (-> self draw art-group data 2) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! darkecobomb-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -57,7 +57,7 @@
(gp-1 (-> self node-list data 88 bone scale))
)
(let ((s4-1 (new 'stack-no-clear 'vector)))
(vector<-cspace! s4-1 (-> self node-list data 88))
(vector<-cspace! s4-1 (joint-node-index robotboss-basic-lod0-jg camera))
(set! (-> *camera-other-trans* quad) (-> s4-1 quad))
)
(vector-normalize-copy!
@ -88,21 +88,21 @@
(defbehavior robotboss-always-trans robotboss ((arg0 (state robotboss)))
(when (-> self blue-smoke)
(let ((s5-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! s5-0 (-> self node-list data 7))
(vector<-cspace! s5-0 (joint-node-index robotboss-basic-lod0-jg blue_eco_piece))
(spawn (-> self particle 2) s5-0)
)
)
(when (-> self red-smoke)
(let ((s5-1 (new 'stack-no-clear 'vector)))
(vector<-cspace! s5-1 (-> self node-list data 47))
(vector<-cspace! s5-1 (joint-node-index robotboss-basic-lod0-jg rArmTopWireC))
(spawn (-> self particle 3) s5-1)
(vector<-cspace! s5-1 (-> self node-list data 51))
(vector<-cspace! s5-1 (joint-node-index robotboss-basic-lod0-jg rArmBotWireC))
(spawn (-> self particle 3) s5-1)
)
)
(when (-> self yellow-smoke)
(let ((s5-2 (new 'stack-no-clear 'vector)))
(vector<-cspace! s5-2 (-> self node-list data 27))
(vector<-cspace! s5-2 (joint-node-index robotboss-basic-lod0-jg Lyellow_ecoTubeA))
(spawn (-> self particle 4) s5-2)
)
)
@ -206,7 +206,7 @@
)
((-> self use-interesting)
(let ((s5-10 (new 'stack-no-clear 'vector)))
(vector<-cspace! s5-10 (-> self node-list data 87))
(vector<-cspace! s5-10 (joint-node-index robotboss-basic-lod0-jg interesting))
(send-event *camera* 'point-of-interest s5-10)
)
)
@ -331,7 +331,7 @@
(+! (-> self children-spawned) 1)
(let ((gp-0 (new 'stack-no-clear 'vector)))
(let ((s4-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-0 (-> self node-list data 60))
(vector<-cspace! gp-0 (joint-node-index 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)
@ -844,7 +844,7 @@
(+! (-> self children-spawned) 1)
(let ((gp-0 (new 'stack-no-clear 'vector)))
(let ((s5-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-0 (-> self node-list data 21))
(vector<-cspace! gp-0 (joint-node-index robotboss-basic-lod0-jg Lyellow_ecoBarrell))
(set! (-> gp-0 y) 1972633.6)
(if *target*
(set! (-> s5-0 quad) (-> (target-pos 0) quad))
@ -989,7 +989,7 @@
(ja :group! robotboss-yellow-last-hit-ja)
(set! (-> self yellow-smoke) #t)
(let ((gp-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-0 (-> self node-list data 27))
(vector<-cspace! gp-0 (joint-node-index robotboss-basic-lod0-jg Lyellow_ecoTubeA))
(process-spawn
part-tracker
:init part-tracker-init
@ -1026,7 +1026,7 @@
)
(let ((gp-2 (new 'stack-no-clear 'vector)))
(update! (-> self looping-sound 3))
(vector<-cspace! gp-2 (-> self node-list data 21))
(vector<-cspace! gp-2 (joint-node-index robotboss-basic-lod0-jg Lyellow_ecoBarrell))
(spawn (-> self particle 6) gp-2)
)
)
@ -1380,7 +1380,7 @@
(let ((s5-0 arg1))
(+! (-> self children-spawned) 1)
(let ((gp-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-0 (-> self node-list data 40))
(vector<-cspace! gp-0 (joint-node-index 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)))
@ -1573,7 +1573,7 @@
(ja :group! robotboss-red-last-hit-ja)
(set! (-> self red-smoke) #t)
(let ((gp-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-0 (-> self node-list data 51))
(vector<-cspace! gp-0 (joint-node-index robotboss-basic-lod0-jg rArmBotWireC))
(process-spawn
part-tracker
:init part-tracker-init
@ -1641,7 +1641,7 @@
(until (ja-done? 0)
(update! (-> self looping-sound 2))
(let ((gp-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-0 (-> self node-list data 40))
(vector<-cspace! gp-0 (joint-node-index robotboss-basic-lod0-jg red_ecoTip))
(spawn (-> self particle 5) gp-0)
)
(if (robotboss-is-red-hit)
@ -1855,7 +1855,7 @@
(+! (-> self children-spawned) 1)
(let ((gp-0 (new 'stack-no-clear 'vector)))
(let ((s2-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-0 (-> self node-list data 68))
(vector<-cspace! gp-0 (joint-node-index robotboss-basic-lod0-jg green_eco))
(set! (-> s2-0 quad) (-> self entity extra trans quad))
(+! (-> s2-0 y) -40960.0)
(vector+! s2-0 s2-0 arg0)
@ -2519,7 +2519,7 @@
(sound-play "explod-eye")
(set! (-> self blue-smoke) #t)
(let ((gp-1 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-1 (-> self node-list data 7))
(vector<-cspace! gp-1 (joint-node-index robotboss-basic-lod0-jg blue_eco_piece))
(process-spawn
part-tracker
:init part-tracker-init

View File

@ -175,7 +175,7 @@
:exit (-> (method-of-type flutflut wait-for-start) exit)
:code (behavior ()
(ja-channel-set! 1)
(ja :group! (-> self draw art-group data 3))
(ja :group! flut-saddle-flut-idle-ja)
(set! (-> self root-override root-prim prim-core action) (collide-action solid attackable-unused))
(set! (-> self root-override root-prim prim-core offense) (collide-offense indestructible))
(loop
@ -228,7 +228,7 @@
(case message
(('draw)
(ja-channel-set! 1)
(ja :group! (-> self draw art-group data 3))
(ja :group! flut-saddle-flut-idle-ja)
(set! (-> self root-override root-prim prim-core action) (collide-action solid attackable-unused))
(set! (-> self root-override root-prim prim-core offense) (collide-offense indestructible))
(transform-post)

View File

@ -200,27 +200,23 @@
(defbehavior target-flut-falling-anim-trans target ()
(let ((v1-2 (ja-group)))
(b!
(or (= v1-2 (-> self draw art-group data 144)) (= v1-2 (-> self draw art-group data 145)))
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! (-> self draw art-group data 144))
(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? (-> self draw art-group data 145)))
(not (ja-group? eichar-flut-jump-land-ja))
)
(ja-channel-push! 1 (seconds 0.02))
(ja :group! (-> self draw art-group data 145))
(ja :group! eichar-flut-jump-land-ja)
)
((ja-group? (-> self draw art-group data 144))
((ja-group? eichar-flut-jump-loop-ja)
(ja :num! (loop!))
)
((ja-group? (-> self draw art-group data 145))
((ja-group? eichar-flut-jump-land-ja)
(ja :num! (seek!))
)
)
@ -231,13 +227,13 @@
(defbehavior target-flut-hit-ground-anim target ()
(cond
((ja-group? (-> self draw art-group data 144))
((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)
)
(ja :group! (-> self draw art-group data 145) :num! min)
(ja :chan 1 :group! (-> self draw art-group data 148) :num! min)
(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!))
@ -246,13 +242,13 @@
#f
)
((let ((v1-33 (ja-group)))
(or (= v1-33 (-> self draw art-group data 143)) (= v1-33 (-> self draw art-group data 145)))
(or (= v1-33 eichar-flut-jump-ja) (= v1-33 eichar-flut-jump-land-ja))
)
#f
)
((ja-group? (-> self draw art-group data 149))
((ja-group? eichar-flut-double-jump-ja)
(ja-channel-set! 1)
(ja-no-eval :group! (-> self draw art-group data 145) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! eichar-flut-jump-land-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -260,10 +256,10 @@
#f
)
((let ((v1-68 (ja-group)))
(or (= v1-68 (-> self draw art-group data 152)) (= v1-68 (-> self draw art-group data 153)))
(or (= v1-68 eichar-flut-air-attack-ja) (= v1-68 eichar-flut-air-attack-loop-ja))
)
(ja-channel-set! 1)
(ja-no-eval :group! (-> self draw art-group data 154) :num! (seek!) :frame-num 0.0)
(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))
@ -531,9 +527,9 @@
(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 (-> self draw art-group data 59))
(= v1-37 (-> self draw art-group data 60))
(= v1-37 (-> self draw art-group data 61))
(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))
@ -548,25 +544,25 @@
(let ((gp-0 22))
(let ((v1-2 (ja-group)))
(cond
((or (= v1-2 (-> self draw art-group data 141)) (= v1-2 (-> self draw art-group data 161)))
((or (= v1-2 eichar-flut-walk-ja) (= v1-2 eichar-flut-squash-run-ja))
(set! gp-0 60)
)
((ja-group? (-> self draw art-group data 155))
((ja-group? eichar-flut-get-on-ja)
(ja-no-eval :num! (seek!))
(while (not (ja-done? 0))
(suspend)
(ja-eval)
)
)
((ja-group? (-> self draw art-group data 158))
(ja-no-eval :group! (-> self draw art-group data 159) :num! (seek!) :frame-num 0.0)
((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? (-> self draw art-group data 150))
(ja-no-eval :group! (-> self draw art-group data 151) :num! (seek!) :frame-num 0.0)
((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!))
@ -574,11 +570,11 @@
)
)
)
(if (not (ja-group? (-> self draw art-group data 140)))
(if (not (ja-group? eichar-flut-idle-ja))
(ja-channel-push! 1 (the-as time-frame gp-0))
)
)
(ja :group! (-> self draw art-group data 140))
(ja :group! eichar-flut-idle-ja)
(loop
(suspend)
(ja :num! (loop!))
@ -622,9 +618,9 @@
(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 (-> self draw art-group data 59))
(= v1-37 (-> self draw art-group data 60))
(= v1-37 (-> self draw art-group data 61))
(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))
@ -663,18 +659,18 @@
)
(let ((gp-0 22))
(cond
((ja-group? (-> self draw art-group data 140))
((ja-group? eichar-flut-idle-ja)
(set! gp-0 60)
)
((let ((v1-9 (ja-group)))
(or (= v1-9 (-> self draw art-group data 143))
(= v1-9 (-> self draw art-group data 144))
(= v1-9 (-> self draw art-group data 152))
(= v1-9 (-> self draw art-group data 154))
(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! (-> self draw art-group data 161) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! eichar-flut-squash-run-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -682,11 +678,11 @@
)
)
(set! f30-0 (cond
((ja-group? (-> self draw art-group data 161))
((ja-group? eichar-flut-squash-run-ja)
(ja-channel-set! 2)
1.0
)
((ja-group? (-> self draw art-group data 141))
((ja-group? eichar-flut-walk-ja)
(set! f28-0 (ja-frame-num 0))
(-> self skel root-channel 1 frame-interp)
)
@ -697,9 +693,9 @@
)
)
)
(ja-no-eval :group! (-> self draw art-group data 141) :num! (loop!) :dist 49152.0 :frame-num f28-0)
(ja-no-eval :group! eichar-flut-walk-ja :num! (loop!) :dist 49152.0 :frame-num f28-0)
(ja-no-eval :chan 1
:group! (-> self draw art-group data 142)
:group! eichar-flut-run-ja
:num! (identity (* 0.5 f28-0))
:frame-interp f30-0
:dist 40960.0
@ -845,16 +841,16 @@
)
:code (behavior ((arg0 float) (arg1 float))
(ja-channel-push! 2 (seconds 0.12))
(ja :group! (-> self draw art-group data 143) :num! min)
(ja :group! eichar-flut-jump-ja :num! min)
(ja :chan 1
:group! (-> self draw art-group data 146)
:group! eichar-flut-jump-forward-ja
:num! (chan 0)
:frame-interp (-> self control unknown-float122)
)
(suspend)
(ja :group! (-> self draw art-group data 143) :num! (+!))
(ja :group! eichar-flut-jump-ja :num! (+!))
(ja :chan 1
:group! (-> self draw art-group data 146)
:group! eichar-flut-jump-forward-ja
:num! (chan 0)
:frame-interp (-> self control unknown-float122)
)
@ -881,17 +877,17 @@
(ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122))
(suspend)
)
(ja-no-eval :group! (-> self draw art-group data 144) :num! (loop!) :frame-num 0.0)
(ja-no-eval :group! eichar-flut-jump-loop-ja :num! (loop!) :frame-num 0.0)
(ja :chan 1
:group! (-> self draw art-group data 147)
:group! eichar-flut-jump-forward-loop-ja
:num! (chan 0)
:frame-interp (-> self control unknown-float122)
)
(loop
(suspend)
(ja :group! (-> self draw art-group data 144) :num! (loop!))
(ja :group! eichar-flut-jump-loop-ja :num! (loop!))
(ja :chan 1
:group! (-> self draw art-group data 147)
:group! eichar-flut-jump-forward-loop-ja
:num! (chan 0)
:frame-interp (-> self control unknown-float122)
)
@ -939,7 +935,7 @@
(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? (-> self draw art-group data 149))
(if (ja-group? eichar-flut-double-jump-ja)
(sound-play "flut-flap" :id (-> self flut flap-sound-id))
)
(seek!
@ -950,7 +946,7 @@
)
:code (behavior ((arg0 float) (arg1 float))
(ja-channel-push! 1 (seconds 0.05))
(ja-no-eval :group! (-> self draw art-group data 149) :num! (seek!) :frame-num 0.0)
(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)
@ -958,10 +954,7 @@
)
(set! (-> self control unknown-surface00) *flut-jump-mods*)
(dotimes (gp-0 1)
(ja-no-eval :group! (-> self draw art-group data 149)
:num! (seek!)
:frame-num (ja-aframe (the-as float 14.0) 0)
)
(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)
@ -988,9 +981,9 @@
)
(current-time)
(ja-channel-push! 2 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 144) :num! (loop!) :frame-num 0.0)
(ja-no-eval :group! eichar-flut-jump-loop-ja :num! (loop!) :frame-num 0.0)
(ja :chan 1
:group! (-> self draw art-group data 147)
:group! eichar-flut-jump-forward-loop-ja
:num! min
:frame-interp (-> self control unknown-float122)
)
@ -1044,9 +1037,9 @@
(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 (-> self draw art-group data 59))
(= v1-34 (-> self draw art-group data 60))
(= v1-34 (-> self draw art-group data 61))
(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))
@ -1094,18 +1087,18 @@
)
:code (behavior ((arg0 symbol))
(cond
((ja-group? (-> self draw art-group data 144))
((ja-group? eichar-flut-jump-loop-ja)
)
((ja-group? (-> self draw art-group data 149))
((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! (-> self draw art-group data 144) :num! (loop!) :frame-num 0.0)
(ja-no-eval :group! eichar-flut-jump-loop-ja :num! (loop!) :frame-num 0.0)
(ja :chan 1
:group! (-> self draw art-group data 147)
:group! eichar-flut-jump-forward-loop-ja
:num! min
:frame-interp (-> self control unknown-float122)
)
@ -1267,7 +1260,7 @@
(create-splash
(-> self water)
(the-as float 0.6)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 37))
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index eichar-lod0-jg mouth))
0
(-> self control transv)
)
@ -1277,7 +1270,7 @@
:code (behavior ()
(ja-channel-push! 1 (seconds 0.02))
(sound-play "flut-hit")
(ja :group! (-> self draw art-group data 150) :num! min)
(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)
@ -1297,9 +1290,9 @@
(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 (-> self draw art-group data 59))
(= v1-39 (-> self draw art-group data 60))
(= v1-39 (-> self draw art-group data 61))
(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))
@ -1346,9 +1339,9 @@
(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 (-> self draw art-group data 59))
(= v1-105 (-> self draw art-group data 60))
(= v1-105 (-> self draw art-group data 61))
(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))
@ -1362,7 +1355,7 @@
(if (not (ja-done? 0))
(ja-channel-push! 1 (seconds 0.05))
)
(ja-no-eval :group! (-> self draw art-group data 151) :num! (seek!) :frame-num 0.0)
(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)
@ -1473,10 +1466,7 @@
:code (behavior ((arg0 float))
(sound-play "flut-hit" :pitch -0.5)
(ja-channel-push! 1 (seconds 0.05))
(ja-no-eval :group! (-> self draw art-group data 152)
:num! (seek! (ja-aframe (the-as float 8.0) 0))
:frame-num 0.0
)
(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!
@ -1489,10 +1479,7 @@
(suspend)
(ja :num! (seek! (ja-aframe (the-as float 8.0) 0)))
)
(ja-no-eval :group! (-> self draw art-group data 152)
:num! (seek!)
:frame-num (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!
@ -1505,7 +1492,7 @@
(suspend)
(ja :num! (seek!))
)
(ja :group! (-> self draw art-group data 153) :num! min)
(ja :group! eichar-flut-air-attack-loop-ja :num! min)
(loop
(suspend)
)
@ -1542,7 +1529,7 @@
:trans (-> target-flut-hit-ground trans)
:code (behavior ()
(ja-channel-set! 1)
(ja-no-eval :group! (-> self draw art-group data 154)
(ja-no-eval :group! eichar-flut-air-attack-land-ja
:num! (seek! (ja-aframe (the-as float 22.0) 0))
:frame-num 0.0
)
@ -1553,10 +1540,7 @@
(ja :num! (seek! (ja-aframe (the-as float 22.0) 0)))
)
(target-danger-set! 'harmless #f)
(ja-no-eval :group! (-> self draw art-group data 154)
:num! (seek!)
:frame-num (ja-aframe (the-as float 22.0) 0)
)
(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))
@ -1696,17 +1680,17 @@
(let ((f30-0 1.0))
(case (-> gp-0 angle)
(('shove)
(when (not (ja-group? (-> self draw art-group data 158)))
(when (not (ja-group? eichar-flut-smack-surface-ja))
(ja-channel-set! 1)
(ja :group! (-> self draw art-group data 158) :num! min)
(ja :group! eichar-flut-smack-surface-ja :num! min)
)
(sound-play "smack-surface")
(sound-play "flut-hit" :pitch 1)
)
(else
(when (not (ja-group? (-> self draw art-group data 157)))
(when (not (ja-group? eichar-flut-hit-back-ja))
(ja-channel-push! 1 (seconds 0.075))
(ja :group! (-> self draw art-group data 157) :num! min)
(ja :group! eichar-flut-hit-back-ja :num! min)
)
)
)
@ -1801,7 +1785,7 @@
(else
(set! (-> self control unknown-surface00) *neutral-mods*)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 160) :num! (seek!) :frame-num 0.0)
(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)))
@ -1864,10 +1848,7 @@
(let ((gp-1 #f))
(sound-play "uppercut")
(ja-channel-push! 1 (seconds 0.05))
(ja-no-eval :group! (-> self draw art-group data 155)
:num! (seek! (ja-aframe (the-as float 24.0) 0))
:frame-num 0.0
)
(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)
@ -1966,7 +1947,7 @@
)
(sound-play "flut-coo" :vol 90 :pitch -0.5)
(ja-channel-push! 1 (seconds 0.05))
(ja-no-eval :group! (-> self draw art-group data 156) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! eichar-flut-get-off-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1978,7 +1959,7 @@
)
(rot->dir-targ! (-> self control))
(ja-post)
(vector<-cspace! gp-0 (-> self node-list data 3))
(vector<-cspace! gp-0 (joint-node-index eichar-lod0-jg main))
(+! (-> gp-0 y) -5896.192)
(move-to-point! (-> self control) gp-0)
)
@ -2023,10 +2004,7 @@
)
:code (behavior ((arg0 symbol))
(ja-channel-set! 1)
(ja-no-eval :group! (-> self draw art-group data 35)
:num! (seek!)
:frame-num (ja-aframe (the-as float 42.0) 0)
)
(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!))

View File

@ -55,7 +55,7 @@
)
)
:code (behavior ()
(ja :group! (-> self draw art-group data 2) :num! min)
(ja :group! bounceytarp-idle-ja :num! min)
(transform-post)
(loop
(logior! (-> self mask) (process-mask sleep))
@ -106,7 +106,7 @@
(defstate bouncer-fire (springbox)
:code (behavior ()
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 2) :num! (seek!) :frame-num (ja-aframe 6.0 0))
(ja-no-eval :group! bounceytarp-idle-ja :num! (seek!) :frame-num (ja-aframe 6.0 0))
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -1741,13 +1741,13 @@
:trans (behavior ()
(when (-> self training)
(let ((gp-0 (new-stack-vector0)))
(vector<-cspace! gp-0 (-> self node-list data 74))
(vector<-cspace! gp-0 (joint-node-index 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 (-> self node-list data 77))
(vector<-cspace! gp-0 (joint-node-index 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 (-> self node-list data 80))
(vector<-cspace! gp-0 (joint-node-index 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))))
@ -2059,11 +2059,11 @@
)
(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 (-> self node-list data 23)))
(set! (-> v1-35 0 param1) (the-as basic (joint-node-index eichar-lod0-jg sk_rhand)))
(set! (-> v1-35 0 param2) (the-as basic (-> self control quat)))
)
)
(ja :group! (-> self draw art-group data 99) :num! (identity (ja-aframe 15.0 0)))
(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)))
@ -2096,7 +2096,7 @@
(case (-> self control unknown-spoolanim00)
(('lose)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 100) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! eichar-fishing-lose-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -49,7 +49,7 @@
:code (behavior ()
(transform-post)
(loop
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(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
@ -122,7 +122,7 @@
(defstate towertop-idle (towertop)
:code (behavior ()
(loop
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek! max 0.4) :frame-num 0.0)
(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))
@ -178,7 +178,7 @@
: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)
(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-override quat)
@ -378,7 +378,7 @@
:trans rider-trans
:code (behavior ()
(loop
(ja-no-eval :group! (-> self draw art-group data 2) :num! (seek! max (-> self speed)) :frame-num 0.0)
(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))
@ -538,8 +538,8 @@
:virtual #t
:code (behavior ()
(ambient-hint-spawn "gamcam30" (the-as vector #f) *entity-pool* 'camera)
(ja :group! (-> self draw art-group data 8))
(ja-no-eval :group! (-> self draw art-group data 8) :num! (seek! (ja-aframe 0.0 0)) :frame-num 0.0)
(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)))
@ -596,7 +596,7 @@
)
)
:code (behavior ()
(ja :group! (-> self draw art-group data 3) :num! min)
(ja :group! precurbridge-idle-ja :num! min)
(transform-post)
(loop
(when (and *target*
@ -656,7 +656,7 @@
:code (behavior ()
(process-entity-status! self (entity-perm-status complete) #t)
(sound-play "blue-eco-on" :position (the-as symbol (-> self root-override trans)))
(ja-no-eval :group! (-> self draw art-group data 3) :num! (seek! max 0.25) :frame-num 0.0)
(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*)
@ -689,7 +689,7 @@
(set! (-> self draw bounds w) 81920.0)
(when arg0
(ja-channel-set! 1)
(ja :group! (-> self draw art-group data 4) :num! min)
(ja :group! precurbridge-float-ja :num! min)
)
(ja-post)
(update-transforms! (-> self root-override))
@ -700,15 +700,15 @@
)
(cond
((and *target* (>= 61440.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))))
(when (not (ja-group? (-> self draw art-group data 5)))
(when (not (ja-group? precurbridge-static-ja))
(ja-channel-push! 1 (seconds 0.2))
(ja :group! (-> self draw art-group data 5) :num! min)
(ja :group! precurbridge-static-ja :num! min)
)
)
(else
(when (not (ja-group? (-> self draw art-group data 4)))
(when (not (ja-group? precurbridge-float-ja))
(ja-channel-push! 1 (seconds 0.2))
(ja :group! (-> self draw art-group data 4) :num! min)
(ja :group! precurbridge-float-ja :num! min)
)
)
)

View File

@ -73,14 +73,14 @@
(loop
(ja-channel-push! 1 (seconds 0.05))
(sound-play "aphid-spike-out")
(ja-no-eval :group! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.0)
(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! (-> self draw art-group data 5))
(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))
@ -94,7 +94,7 @@
(aphid-vulnerable)
(ja-channel-push! 1 (seconds 0.05))
(sound-play "aphid-spike-in")
(ja-no-eval :group! (-> self draw art-group data 6) :num! (seek! 0.0) :frame-num max)
(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))
@ -125,7 +125,7 @@
(and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5))
)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 10) :num! (seek! max f30-0) :frame-num 0.0)
(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))
@ -136,7 +136,7 @@
(logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel))
(ja-no-eval :num! (loop!))
(ja-channel-push! 1 (seconds 0.2))
(ja :group! (-> self draw art-group data 4))
(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)
@ -146,10 +146,10 @@
(logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel))
)
(when (nav-enemy-rnd-percent? 0.3)
(if (not (ja-group? (-> self draw art-group data 10)))
(if (not (ja-group? aphid-lurker-win-ja))
(ja-channel-push! 1 (seconds 0.1))
)
(ja-no-eval :group! (-> self draw art-group data 10) :num! (seek! max f30-0) :frame-num 0.0)
(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))
@ -174,7 +174,7 @@
)
12743.111
)
(ja-no-eval :group! (-> self draw art-group data 7) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! aphid-lurker-give-up-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -183,7 +183,7 @@
)
(logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19))
(nav-enemy-get-new-patrol-point)
(ja-no-eval :group! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.0)
(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)

View File

@ -268,7 +268,7 @@
)
(save-reminder (get-task-control (-> self entity extra perm task)) 2 0)
(sound-play "jngb-eggtop-seq")
(ja-no-eval :group! (-> self draw art-group data 2) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! eggtop-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -280,7 +280,7 @@
(entity-task-complete-on a0-20)
)
)
(ja :group! (-> self draw art-group data 2) :num! max)
(ja :group! eggtop-idle-ja :num! max)
(suspend)
(logior! (-> self mask) (process-mask sleep))
(suspend)

View File

@ -114,7 +114,7 @@
(loop
(when (!= (ja-group) (get-art-elem self))
(ja-channel-push! 1 (seconds 0.05))
(ja :group! (-> self draw art-group data 3))
(ja :group! assistant-lavatube-start-idle-ja)
)
(let* ((f30-0 2.0)
(v1-7 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
@ -129,7 +129,7 @@
)
)
(ja-channel-push! 1 (seconds 0.05))
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! assistant-lavatube-start-idle-b-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -1000,9 +1000,18 @@
(energyarm-trans)
(cond
((handle->process (-> self ball))
(spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 6)))
(spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 5)))
(spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4)))
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index energyarm-lod0-jg zapa))
)
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index energyarm-lod0-jg zapb))
)
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index energyarm-lod0-jg zapc))
)
)
((!= (-> self ball) #f)
(set! (-> self ball) (the-as handle #f))

View File

@ -870,11 +870,11 @@
(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 (-> self node-list data 34))
(vector<-cspace! gp-3 (joint-node-index gnawer-lod0-jg nandibleR))
(spawn (-> self part2) gp-3)
)
(let ((gp-4 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-4 (-> self node-list data 33))
(vector<-cspace! gp-4 (joint-node-index gnawer-lod0-jg mandibleL))
(spawn (-> self part2) gp-4)
)
(suspend)
@ -887,11 +887,11 @@
(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 (-> self node-list data 34))
(vector<-cspace! s4-1 (joint-node-index gnawer-lod0-jg nandibleR))
(spawn (-> self part2) s4-1)
)
(let ((s4-2 (new 'stack-no-clear 'vector)))
(vector<-cspace! s4-2 (-> self node-list data 33))
(vector<-cspace! s4-2 (joint-node-index gnawer-lod0-jg mandibleL))
(spawn (-> self part2) s4-2)
)
(update! (-> self sound2))

View File

@ -144,7 +144,7 @@
)
:code (behavior ()
(loop
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! cavecrusher-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(update! (-> self sound))
(suspend)
@ -226,7 +226,7 @@
)
)
:code (behavior ()
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! cavetrapdoor-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(transform-post)
(suspend)
@ -245,13 +245,13 @@
(suspend)
)
)
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(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-override))
(ja-no-eval :group! (-> self draw art-group data 6) :num! (seek! (ja-aframe 290.0 0)) :frame-num 0.0)
(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)))
@ -272,14 +272,14 @@
(not (logtest? (-> *target* control root-prim prim-core action) (collide-action edgegrab-cam)))
)
)
(ja-no-eval :group! (-> self draw art-group data 7) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! cavetrapdoor-idle-down-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
)
(label cfg-14)
)
(ja-no-eval :group! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.0)
(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-override trans) (-> *target* control trans))))
(or (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump))

View File

@ -243,7 +243,7 @@
:code (behavior ()
(ja-channel-push! 1 0)
(loop
(ja-no-eval :group! (-> self draw art-group data 9) :num! (seek! max (-> self anim-speed)) :frame-num 0.0)
(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)))
@ -298,7 +298,7 @@
(quaternion-from-two-vectors! s5-0 s4-0 s3-0)
)
(quaternion*! s5-0 s5-0 gp-0)
(ja-no-eval :group! (-> self draw art-group data 11) :num! (seek! max 1.3) :frame-num 0.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))
@ -311,7 +311,7 @@
)
)
(loop
(ja-no-eval :group! (-> self draw art-group data 9) :num! (seek! max (-> self anim-speed)) :frame-num 0.0)
(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)))
@ -353,7 +353,7 @@
)
(lods-assign! (-> self draw) (-> self broken-look))
(ja-channel-push! 1 (seconds 0.2))
(ja-no-eval :group! (-> self draw art-group data 10) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! spider-egg-crack-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -388,7 +388,7 @@
(-> self root-override trans)
:to *entity-pool*
)
(ja-no-eval :group! (-> self draw art-group data 12) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! spider-egg-die-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -424,7 +424,7 @@
)
(lods-assign! (-> self draw) (-> self broken-look))
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 12) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! spider-egg-die-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -1016,7 +1016,7 @@
(go mother-spider-traveling (the-as uint 0))
)
(let ((gp-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-0 (-> self node-list data 6))
(vector<-cspace! gp-0 (joint-node-index mother-spider-lod0-jg bodA))
(if (or (logtest? (-> *target* state-flags)
(state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)
)
@ -1054,7 +1054,7 @@
(set! (-> gp-2 quad) (-> self root-override trans quad))
(set! (-> gp-2 w) 4096.0)
(when (sphere-in-view-frustum? (the-as sphere gp-2))
(vector<-cspace! gp-2 (-> self node-list data 21))
(vector<-cspace! gp-2 (joint-node-index mother-spider-lod0-jg jaw))
(set! (-> s5-2 quad) (-> (target-pos 0) quad))
(+! (-> s5-2 y) 4915.2)
(cond
@ -1154,7 +1154,7 @@
(s5-0 (new 'stack-no-clear 'vector))
(s2-0 (new 'stack-no-clear 'vector))
)
(vector<-cspace! s4-0 (-> self node-list data 21))
(vector<-cspace! s4-0 (joint-node-index 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))

View File

@ -103,7 +103,7 @@ nav-enemy-default-event-handler
:code (behavior ()
(ja-channel-push! 1 (seconds 0.075))
(loop
(ja-no-eval :group! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! babak-charge-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -221,7 +221,7 @@ nav-enemy-default-event-handler
)
)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 17) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! babak-look-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -241,7 +241,7 @@ nav-enemy-default-event-handler
(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! (-> self draw art-group data 17) :num! (seek! 0.0 2.0) :frame-num max)
(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))

View File

@ -1198,7 +1198,7 @@
:event mis-bone-bridge-event-handler
:trans rider-trans
:code (behavior ()
(ja-no-eval :group! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! mis-bone-bridge-bumped-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1216,7 +1216,7 @@
(if (zero? (-> self hit-points))
(go mis-bone-bridge-fall #f)
)
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! mis-bone-bridge-kicked-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1617,7 +1617,7 @@
)
:code (behavior ()
(ja-channel-push! 1 (seconds 0.1))
(ja :group! (-> self draw art-group data 2))
(ja :group! mis-bone-platform-idle-ja)
(ja :num-func num-func-identity :frame-num 0.0)
(loop
(suspend)

View File

@ -62,7 +62,7 @@
)
)
:code (behavior ()
(ja :group! (-> self draw art-group data 4) :num! min)
(ja :group! teetertotter-idle-ja :num! min)
(loop
(suspend)
)
@ -107,7 +107,7 @@
)
:code (behavior ()
(set! (-> self launched-player) #f)
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(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)))
@ -125,7 +125,7 @@
(defstate teetertotter-bend (teetertotter)
:code (behavior ()
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! teetertotter-landing-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -42,7 +42,7 @@
)
)
:code (behavior ()
(ja :group! (-> self draw art-group data 2) :num! min)
(ja :group! silostep-idle-ja :num! min)
(transform-post)
(loop
(suspend)
@ -105,7 +105,7 @@
:code (behavior ((arg0 symbol))
(process-entity-status! self (entity-perm-status complete) #t)
(when (not arg0)
(ja-no-eval :group! (-> self draw art-group data 2) :num! (seek! (-> self anim-limit)) :frame-num 0.0)
(ja-no-eval :group! silostep-idle-ja :num! (seek! (-> self anim-limit)) :frame-num 0.0)
(until (ja-done? 0)
(rider-trans)
(rider-post)
@ -113,7 +113,7 @@
(ja :num! (seek! (-> self anim-limit)))
)
)
(ja :group! (-> self draw art-group data 2) :num! (identity (-> self anim-limit)))
(ja :group! silostep-idle-ja :num! (identity (-> self anim-limit)))
(rider-post)
(loop
(ja-post)

View File

@ -695,7 +695,9 @@
(defbehavior quicksandlurker-spit quicksandlurker ()
(let ((gp-0 (new-stack-vector0)))
(let ((s5-0 (new-stack-vector0)))
(set! (-> gp-0 quad) (-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 9)) quad))
(set! (-> gp-0 quad)
(-> (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index 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)))

View File

@ -880,7 +880,7 @@
0
)
)
(ja-no-eval :group! (-> self draw art-group data 3) :num! (seek!) :frame-num 0.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*)
@ -910,7 +910,7 @@
)
)
:code (behavior ()
(ja :group! (-> self draw art-group data 3) :num! max)
(ja :group! ogre-bridge-assemble-ja :num! max)
(transform-post)
(loop
(suspend)
@ -946,7 +946,7 @@
)
)
:code (behavior ()
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! ogre-bridge-break-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -367,7 +367,7 @@
)
:code (behavior ()
(cond
((ja-group? (-> self draw art-group data 138))
((ja-group? eichar-racer-get-on-ja)
(ja-no-eval :num! (seek!))
(while (not (ja-done? 0))
(suspend)
@ -375,7 +375,7 @@
)
)
((let ((v1-16 (ja-group)))
(or (or (= v1-16 (-> self draw art-group data 130)) (= v1-16 (-> self draw art-group data 131)))
(or (or (= v1-16 eichar-racer-jump-small-ja) (= v1-16 eichar-racer-jump-small-loop-ja))
(> (-> self racer bounce) 0)
)
)
@ -444,12 +444,12 @@
(set! (-> self racer bounce) 0)
(loop
(let ((gp-3 (current-time)))
(when (not (ja-group? (-> self draw art-group data 123)))
(when (not (ja-group? eichar-racer-turn-ja))
(ja-channel-push! 4 (seconds 0.1))
(ja :group! (-> self draw art-group data 123) :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0)))
(ja :chan 1 :group! (-> self draw art-group data 124) :num! (chan 0))
(ja :chan 2 :group! (-> self draw art-group data 125) :num! (chan 0))
(ja :chan 3 :group! (-> self draw art-group data 126) :num! (chan 0))
(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)
@ -463,9 +463,9 @@
(suspend)
)
)
(when (not (ja-group? (-> self draw art-group data 133)))
(when (not (ja-group? eichar-racer-stance-ja))
(ja-channel-push! 1 (seconds 0.4))
(ja :group! (-> self draw art-group data 133) :num! min)
(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)
@ -655,12 +655,12 @@
)
:code (behavior ((arg0 float) (arg1 float) (arg2 symbol))
(target-racing-land-anim arg2)
(when (not (ja-group? (-> self draw art-group data 123)))
(when (not (ja-group? eichar-racer-turn-ja))
(ja-channel-push! 4 (seconds 0.1))
(ja :group! (-> self draw art-group data 123) :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0)))
(ja :chan 1 :group! (-> self draw art-group data 124) :num! (chan 0))
(ja :chan 2 :group! (-> self draw art-group data 125) :num! (chan 0))
(ja :chan 3 :group! (-> self draw art-group data 126) :num! (chan 0))
(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)
@ -700,9 +700,9 @@
:code (behavior ((arg0 float) (arg1 symbol))
(sound-play "zoomer-crash-2")
(ja-channel-push! 2 (seconds 0.05))
(ja-no-eval :group! (-> self draw art-group data 136) :num! (seek!))
(ja-no-eval :group! eichar-racer-smack-ja :num! (seek!))
(ja :chan 1
:group! (-> self draw art-group data 122)
: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)
)
@ -822,7 +822,7 @@
(else
(set! (-> self post-hook) target-racing-post)
(ja-channel-push! 1 (seconds 0.05))
(ja-no-eval :group! (-> self draw art-group data 136) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! eichar-racer-smack-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -925,7 +925,7 @@
(case (-> self attack-info mode)
(('balloonlurker)
(create-splash (-> self water) 2.0 (-> self control trans) 1 (-> self control transv))
(ja-no-eval :group! (-> self draw art-group data 139) :num! (seek! (ja-aframe 240.0 0)) :frame-num 0.0)
(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)))
@ -935,7 +935,7 @@
)
)
(else
(ja-no-eval :group! (-> self draw art-group data 139) :num! (seek!) :frame-num 0.0)
(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)
@ -1077,7 +1077,7 @@
(gp-1 #f)
)
(ja-channel-push! 1 (seconds 0.05))
(ja-no-eval :group! (-> self draw art-group data 138) :num! (seek! (ja-aframe 77.0 0)) :frame-num 0.0)
(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)
@ -1179,12 +1179,12 @@
(set! (-> a0-4 0 deactivate-when-hidden) #t)
)
)
(when (not (ja-group? (-> self draw art-group data 123)))
(when (not (ja-group? eichar-racer-turn-ja))
(ja-channel-push! 4 (seconds 0.1))
(ja :group! (-> self draw art-group data 123) :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0)))
(ja :chan 1 :group! (-> self draw art-group data 124) :num! (chan 0))
(ja :chan 2 :group! (-> self draw art-group data 125) :num! (chan 0))
(ja :chan 3 :group! (-> self draw art-group data 126) :num! (chan 0))
(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))
@ -1236,7 +1236,7 @@
(set! (-> self control unknown-vector103 quad) (-> s4-1 quad))
)
(ja-channel-push! 1 (seconds 0.05))
(ja-no-eval :group! (-> self draw art-group data 137) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! eichar-racer-get-off-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1248,7 +1248,7 @@
)
(rot->dir-targ! (-> self control))
(ja-post)
(vector<-cspace! gp-1 (-> self node-list data 3))
(vector<-cspace! gp-1 (joint-node-index eichar-lod0-jg main))
(+! (-> gp-1 y) -5896.192)
(move-to-point! (-> self control) gp-1)
)
@ -1320,7 +1320,7 @@
)
:code (behavior ((arg0 symbol))
(ja-channel-set! 1)
(ja-no-eval :group! (-> self draw art-group data 35) :num! (seek!) :frame-num (ja-aframe 42.0 0))
(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!))
@ -1367,12 +1367,12 @@
((-> target-racing-start exit))
)
:code (behavior ()
(when (not (ja-group? (-> self draw art-group data 123)))
(when (not (ja-group? eichar-racer-turn-ja))
(ja-channel-push! 4 (seconds 0.1))
(ja :group! (-> self draw art-group data 123) :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0)))
(ja :chan 1 :group! (-> self draw art-group data 124) :num! (chan 0))
(ja :chan 2 :group! (-> self draw art-group data 125) :num! (chan 0))
(ja :chan 3 :group! (-> self draw art-group data 126) :num! (chan 0))
(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)

View File

@ -1087,7 +1087,7 @@
(ja-channel-push! 1 arg1)
(ja-channel-push! 1 (seconds 0.125))
)
(ja-no-eval :group! (-> self draw art-group data 130) :num! (seek!) :frame-num f30-0)
(ja-no-eval :group! eichar-racer-jump-small-ja :num! (seek!) :frame-num f30-0)
(set! s4-0 s5-0)
)
)
@ -1103,8 +1103,8 @@
)
)
(ja-channel-set! 2)
(ja :group! (-> self draw art-group data 131) :num! min)
(ja :chan 1 :group! (-> self draw art-group data 132) :num! (identity (ja-aframe 44.0 0)))
(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)))
(let ((f30-1 0.0))
(loop
(suspend)
@ -1125,7 +1125,7 @@
(ja-channel-push! 1 (seconds 0.07))
(cond
((= arg0 'high-jump)
(ja-no-eval :group! (-> self draw art-group data 135) :num! (seek!) :frame-num 0.0)
(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)
@ -1135,7 +1135,7 @@
)
)
((= arg0 'jump)
(ja-no-eval :group! (-> self draw art-group data 129) :num! (seek!) :frame-num (ja-aframe 44.0 0))
(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)
@ -1145,7 +1145,7 @@
)
)
(else
(ja-no-eval :group! (-> self draw art-group data 132) :num! (seek!) :frame-num (ja-aframe 44.0 0))
(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)

View File

@ -574,9 +574,9 @@
)
(defbehavior lightning-mole-run-code lightning-mole ()
(when (!= (ja-group) (-> self draw art-group data 7))
(when (!= (ja-group) lightning-mole-run-ja)
(ja-channel-push! 1 (seconds 0.2))
(ja :group! (-> self draw art-group data 7))
(ja :group! lightning-mole-run-ja)
)
(loop
(ja :num! (loop! (-> self speed-adjust)))
@ -674,7 +674,7 @@
:trans (behavior ()
(when (task-closed? (-> self entity extra perm task) (task-status need-introduction))
(ja-channel-set! 1)
(ja :group! (-> self draw art-group data 5))
(ja :group! lightning-mole-idle-ja)
(restore-collide-with-as (-> self collide-info))
(go-virtual nav-enemy-idle)
)
@ -717,7 +717,7 @@
)
(ambient-hint-spawn "gamcam20" (the-as vector #f) *entity-pool* 'camera)
(ja-channel-push! 1 (seconds 0.2))
(ja-no-eval :group! (-> self draw art-group data 12) :num! (seek! max f30-0) :frame-num 0.0)
(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)
@ -783,7 +783,7 @@
: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! (-> self draw art-group data 10) :num! (seek! max f30-0) :frame-num 0.0)
(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))
@ -1284,7 +1284,7 @@
)
:code (behavior ()
(loop
(ja-no-eval :group! (-> self draw art-group data 13) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! lightning-mole-peep-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -266,7 +266,7 @@
(dark-plant-randomize self)
(logclear! (-> self draw status) (draw-status hidden))
(sound-play "darkvine-grow")
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! dark-plant-sprout-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -315,7 +315,7 @@
(spawn (-> self part) (-> self root trans))
(ja-channel-push! 1 (seconds 0.2))
(sound-play "darkvine-kill")
(ja-no-eval :group! (-> self draw art-group data 3) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! dark-plant-death-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -350,17 +350,15 @@
)
)
(let ((gp-1 (-> self skel root-channel 0)))
(set! (-> gp-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 2)))
(set! (-> gp-1 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 2)) data 0 length) -1))
)
(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 (-> self draw art-group data 2)) num-func-seek!)
(joint-control-channel-group! gp-1 (the-as art-joint-anim dark-plant-idle-ja) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
@ -383,13 +381,11 @@
:trans dark-plant-trans
:code (behavior ()
(let ((gp-0 (-> self skel root-channel 0)))
(set! (-> gp-0 frame-group) (the-as art-joint-anim (-> self draw art-group data 2)))
(set! (-> gp-0 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 2)) data 0 length) -1))
)
(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 (-> self draw art-group data 2)) num-func-seek!)
(joint-control-channel-group! gp-0 (the-as art-joint-anim dark-plant-idle-ja) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
@ -498,7 +494,7 @@
(defstate happy-plant-opened (happy-plant)
:code (behavior ()
(loop
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! happy-plant-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -553,11 +549,11 @@
: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 (-> self draw art-group data 4))
(the-as art-joint-anim happy-plant-idle-ja)
(the-as (function process-drawable symbol) false-func)
)
(ja-channel-set! 1)
(ja :group! (-> self draw art-group data 4))
(ja :group! happy-plant-idle-ja)
(if (handle->process (the-as int gp-2))
(deactivate (-> gp-2 process 0))
)
@ -565,7 +561,7 @@
(when gp-3
(send-event gp-3 'stop-cloning)
(let ((s5-4 (new-stack-vector0)))
(vector<-cspace! s5-4 (-> self node-list data 25))
(vector<-cspace! s5-4 (joint-node-index happy-plant-lod0-jg fuelcell))
(send-event gp-3 'trans s5-4)
)
)
@ -773,19 +769,19 @@
)
)
:code (behavior ((arg0 symbol))
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(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! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.0)
(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! (-> self draw art-group data 7) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! rolling-start-broken-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -813,7 +809,7 @@
:code (behavior ()
(lods-assign! (-> self draw) (-> self whole-look))
(loop
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! rolling-start-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -12,7 +12,7 @@
:trans hide-hud-quick
:code (behavior ((arg0 handle) (arg1 float) (arg2 float))
(logclear! (-> self mask) (process-mask actor-pause))
(ja :group! (-> self draw art-group data 2))
(ja :group! fuel-cell-idle-ja)
(if *target*
(process-grab? *target*)
)
@ -369,7 +369,7 @@
)
)
(when gp-0
(ja-no-eval :group! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.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)
@ -405,9 +405,9 @@
)
)
:code (behavior ()
(when (not (ja-group? (-> self draw art-group data 7)))
(when (not (ja-group? robber-fly-ja))
(ja-channel-push! 1 (seconds 0.2))
(ja :group! (-> self draw art-group data 7))
(ja :group! robber-fly-ja)
)
(loop
(ja :num! (loop! (robber-calc-anim-speed)))
@ -440,9 +440,9 @@
)
:code (behavior ()
(loop
(when (not (ja-group? (-> self draw art-group data 7)))
(when (not (ja-group? robber-fly-ja))
(ja-channel-push! 1 (seconds 0.2))
(ja :group! (-> self draw art-group data 7))
(ja :group! robber-fly-ja)
)
(ja :num! (loop! (robber-calc-anim-speed)))
(robber-calc-speed 32768.0 122880.0 122060.8 20480.0 #f)
@ -451,7 +451,7 @@
(suspend)
(when (time-elapsed? (-> self last-ambient-time) (-> self time-to-next-ambient))
(ja-channel-push! 1 (seconds 0.2))
(ja-no-eval :group! (-> self draw art-group data 11) :num! (seek!) :frame-num 0.0)
(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)
@ -507,9 +507,9 @@
)
:code (behavior ()
(loop
(when (not (ja-group? (-> self draw art-group data 7)))
(when (not (ja-group? robber-fly-ja))
(ja-channel-push! 1 (seconds 0.2))
(ja :group! (-> self draw art-group data 7))
(ja :group! robber-fly-ja)
)
(ja :num! (loop! (robber-calc-anim-speed)))
(robber-calc-speed 61440.0 122880.0 204800.0 16384.0 #t)
@ -518,7 +518,7 @@
(suspend)
(when (time-elapsed? (-> self last-ambient-time) (-> self time-to-next-ambient))
(ja-channel-push! 1 (seconds 0.2))
(ja-no-eval :group! (-> self draw art-group data 11) :num! (seek!) :frame-num 0.0)
(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)
@ -560,7 +560,7 @@
:code (behavior ()
(ja-channel-push! 1 (seconds 0.2))
(loop
(ja-no-eval :group! (-> self draw art-group data 10) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! robber-idle-hover-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -599,7 +599,7 @@
)
(ja-channel-push! 1 (seconds 0.2))
(loop
(ja-no-eval :group! (-> self draw art-group data 6) :num! (seek! max 2.0) :frame-num 0.0)
(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)
@ -628,7 +628,7 @@
:code (behavior ()
(ja-channel-push! 1 (seconds 0.2))
(loop
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! robber-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -814,9 +814,9 @@
:event ice-cube-default-event-handler
:code (behavior ()
(let ((gp-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-0 (-> self node-list data 29))
(vector<-cspace! gp-0 (joint-node-index ice-cube-lod0-jg Rball))
(spawn (-> self part4) gp-0)
(vector<-cspace! gp-0 (-> self node-list data 25))
(vector<-cspace! gp-0 (joint-node-index ice-cube-lod0-jg Lball))
(spawn (-> self part4) gp-0)
)
(ja-channel-push! 1 (seconds 0.1))
@ -958,9 +958,9 @@
)
(label cfg-26)
(let ((gp-1 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-1 (-> self node-list data 29))
(vector<-cspace! gp-1 (joint-node-index ice-cube-lod0-jg Rball))
(spawn (-> self part4) gp-1)
(vector<-cspace! gp-1 (-> self node-list data 25))
(vector<-cspace! gp-1 (joint-node-index 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)
@ -1091,9 +1091,9 @@
)
(label cfg-26)
(let ((gp-1 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-1 (-> self node-list data 29))
(vector<-cspace! gp-1 (joint-node-index ice-cube-lod0-jg Rball))
(spawn (-> self part4) gp-1)
(vector<-cspace! gp-1 (-> self node-list data 25))
(vector<-cspace! gp-1 (joint-node-index 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)
@ -1203,9 +1203,9 @@
)
(when (zero? (nav-enemy-rnd-int-count 45))
(let ((gp-3 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-3 (-> self node-list data 29))
(vector<-cspace! gp-3 (joint-node-index ice-cube-lod0-jg Rball))
(spawn (-> self part4) gp-3)
(vector<-cspace! gp-3 (-> self node-list data 25))
(vector<-cspace! gp-3 (joint-node-index ice-cube-lod0-jg Lball))
(spawn (-> self part4) gp-3)
)
)
@ -1338,7 +1338,7 @@
:code (behavior ()
(logclear! (-> self mask) (process-mask actor-pause))
(let ((gp-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-0 (-> self node-list data 3))
(vector<-cspace! gp-0 (joint-node-index ice-cube-lod0-jg main))
(spawn (-> self part3) gp-0)
)
(drop-pickup (-> self enemy-info) #t *entity-pool* (-> self enemy-info) 0)

View File

@ -245,7 +245,7 @@
)
)
:code (behavior ()
(ja :group! (-> self draw art-group data 2) :num! min)
(ja :group! snow-button-going-down-ja :num! min)
(transform-post)
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
@ -305,7 +305,7 @@
)
:code (behavior ()
(sound-play "prec-button1" :pitch -1)
(ja-no-eval :group! (-> self draw art-group data 2) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! snow-button-going-down-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -338,7 +338,7 @@
(until (time-elapsed? (-> self state-time) (seconds 0.6))
(suspend)
)
(ja-no-eval :group! (-> self draw art-group data 3) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! snow-button-going-up-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -33,17 +33,17 @@
(let ((v1-0 (-> self seq)))
(cond
((zero? v1-0)
(ja-no-eval :group! (-> self draw art-group data 2) :num! (seek! max 0.2) :frame-num 0.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! (-> self draw art-group data 3) :num! (seek! max 0.25) :frame-num 0.0)
(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! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! snowcam-gearend-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -85,13 +85,13 @@
)
)
((= v1-0 2)
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(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! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! snowcam-ecovent-activating-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -296,7 +296,7 @@
)
:code (behavior ()
(ja-channel-push! 1 0)
(ja :group! (-> self draw art-group data 2) :num! min)
(ja :group! snow-eggtop-idle-ja :num! min)
(transform-post)
(loop
(logior! (-> self mask) (process-mask sleep-code))
@ -368,7 +368,7 @@
)
(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! (-> self draw art-group data 2) :num! (seek!) :frame-num 0.0)
(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))
@ -416,7 +416,7 @@
)
)
(ja-channel-push! 1 0)
(ja :group! (-> self draw art-group data 2) :num! max)
(ja :group! snow-eggtop-idle-ja :num! max)
(transform-post)
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
@ -905,7 +905,7 @@
)
)
:code (behavior ()
(ja :group! (-> self draw art-group data 2) :num! min)
(ja :group! snow-fort-gate-idle-ja :num! min)
(set! (-> self root-override trans quad) (-> self closed-trans quad))
(transform-post)
(suspend)
@ -971,7 +971,7 @@
(defstate snow-fort-gate-idle-open (snow-fort-gate)
:code (behavior ()
(ja :group! (-> self draw art-group data 2) :num! min)
(ja :group! snow-fort-gate-idle-ja :num! min)
(set! (-> self root-override trans quad) (-> self open-trans quad))
(transform-post)
(suspend)
@ -1162,7 +1162,7 @@
)
)
:code (behavior ()
(ja :group! (-> self draw art-group data 2) :num! min)
(ja :group! snow-gears-idle-ja :num! min)
(ja-post)
(loop
(logior! (-> self mask) (process-mask sleep-code))
@ -1177,19 +1177,19 @@
)
:code (behavior ()
(sound-play "eng-start-up")
(ja-no-eval :group! (-> self draw art-group data 3) :num! (seek! max 0.85) :frame-num 0.0)
(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! (-> self draw art-group data 4) :num! (seek! max 0.35) :frame-num 0.0)
(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! (-> self draw art-group data 2) :num! min)
(ja :group! snow-gears-idle-ja :num! min)
(until (time-elapsed? (-> self state-time) (seconds 2))
(update! (-> self sound))
(suspend)
@ -1207,7 +1207,7 @@
(snow-gears-method-20 self)
)
:code (behavior ()
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek! max 0.35) :frame-num 0.0)
(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)
@ -1215,7 +1215,7 @@
)
(stop! (-> self sound))
(sound-play "eng-shut-down")
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek! max 0.85) :frame-num 0.0)
(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))
@ -1530,7 +1530,7 @@
)
:code (behavior ()
(ja-channel-push! 1 0)
(ja :group! (-> self draw art-group data 2) :num! min)
(ja :group! snow-log-activate-ja :num! min)
(transform-post)
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
@ -1553,7 +1553,7 @@
(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! (-> self draw art-group data 2) :num! (seek!) :frame-num 0.0)
(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)
@ -1580,7 +1580,7 @@
(s5-0 #t)
)
(loop
(ja-no-eval :group! (-> self draw art-group data 3) :num! (seek! max 0.25) :frame-num 0.0)
(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

View File

@ -1341,7 +1341,7 @@
)
:code (behavior ((arg0 basic))
(ja-channel-push! 1 (seconds 0.8))
(ja-no-eval :group! (-> self draw art-group data 16) :num! (seek!) :frame-num 0.0)
(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))
@ -1363,7 +1363,7 @@
: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! (-> self draw art-group data 17) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! ram-boss-dismount-hit-ground-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1614,31 +1614,31 @@
((< 5461.3335 (-> self last-turn-speed))
(cond
((-> self has-shield?)
(when (not (ja-group? (-> self draw art-group data 7)))
(when (not (ja-group? ram-boss-forward-defend-tracking-ja))
(ja-channel-push! 2 (seconds 0.2))
(ja :group! (-> self draw art-group data 7) :num! min)
(ja :chan 1 :group! (-> self draw art-group data 22) :num! (chan 0) :frame-interp f30-0)
(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? (-> self draw art-group data 20)))
(when (not (ja-group? ram-boss-forward-defend-tracking-no-shield-ja))
(ja-channel-push! 1 (seconds 0.2))
(ja :group! (-> self draw art-group data 20) :num! min)
(ja :group! ram-boss-forward-defend-tracking-no-shield-ja :num! min)
)
)
)
)
((-> self has-shield?)
(when (not (ja-group? (-> self draw art-group data 6)))
(when (not (ja-group? ram-boss-forward-defend-ja))
(ja-channel-push! 2 (seconds 0.2))
(ja :group! (-> self draw art-group data 6) :num! min)
(ja :chan 1 :group! (-> self draw art-group data 21) :num! (chan 0) :frame-interp f30-0)
(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? (-> self draw art-group data 24)))
(when (not (ja-group? ram-boss-forward-defend-no-shield-ja))
(ja-channel-push! 1 (seconds 0.2))
(ja :group! (-> self draw art-group data 24) :num! min)
(ja :group! ram-boss-forward-defend-no-shield-ja :num! min)
)
)
)
@ -1664,7 +1664,7 @@
)
:code (behavior ()
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! ram-boss-forward-defend-block-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1685,7 +1685,7 @@
)
:code (behavior ()
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 9) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! ram-boss-up-defend-block-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1755,14 +1755,14 @@
(ja-channel-push! 1 (seconds 0.075))
(cond
((-> self has-shield?)
(ja-no-eval :group! (-> self draw art-group data 10) :num! (seek!) :frame-num 0.0)
(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! (-> self draw art-group data 23) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! ram-boss-throw-no-shield-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1800,10 +1800,10 @@
(set! (-> self nav target-pos quad) (-> gp-0 quad))
)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 18) :num! (seek!) :frame-num 0.0)
(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 (-> self node-list data 32))
(vector<-cspace! gp-1 (joint-node-index ram-boss-lod0-jg shield))
(spawn (-> self part) gp-1)
)
(suspend)

View File

@ -58,27 +58,27 @@
(let ((gp-0 60))
(let ((v1-2 (ja-group)))
(cond
((or (= v1-2 (-> self draw art-group data 34)) (= v1-2 (-> self draw art-group data 38)))
((or (= v1-2 eichar-jump-ja) (= v1-2 eichar-jump-loop-ja))
(set! gp-0 21)
)
((ja-group? (-> self draw art-group data 71))
(ja-no-eval :group! (-> self draw art-group data 72) :num! (seek!) :frame-num 0.0)
((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? (-> self draw art-group data 51))
((ja-group? eichar-attack-from-stance-ja)
(cond
((rand-vu-percent? 0.3)
(ja-no-eval :group! (-> self draw art-group data 53) :num! (seek!) :frame-num 0.0)
(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! (-> self draw art-group data 52) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! eichar-attack-from-stance-end-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -86,27 +86,27 @@
)
)
)
((ja-group? (-> self draw art-group data 78))
(ja-no-eval :group! (-> self draw art-group data 79) :num! (seek!) :frame-num 0.0)
((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? (-> self draw art-group data 84))
(ja-no-eval :group! (-> self draw art-group data 85) :num! (seek!) :frame-num 0.0)
((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? (-> self draw art-group data 59))
((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)
(-> self draw art-group data 61)
(-> self draw art-group data 60)
eichar-attack-punch-alt-end-ja
eichar-attack-punch-end-ja
)
:num! (seek!)
:frame-num 0.0
@ -121,10 +121,10 @@
(rot->dir-targ! (-> self control))
)
((let ((v1-188 (ja-group)))
(or (= v1-188 (-> self draw art-group data 31)) (= v1-188 (-> self draw art-group data 32)))
(or (= v1-188 eichar-duck-stance-ja) (= v1-188 eichar-duck-walk-ja))
)
(ja-channel-push! 1 (seconds 0.04))
(ja-no-eval :group! (-> self draw art-group data 30) :num! (seek! 0.0 1.2) :frame-num max)
(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))
@ -135,20 +135,20 @@
)
(while (< 16384.0 (-> self control unknown-float01))
(cond
((ja-group? (-> self draw art-group data 103))
((ja-group? eichar-ice-slide-ja)
)
(else
(ja-channel-push! 1 (the-as time-frame gp-0))
(set! gp-0 150)
(ja :group! (-> self draw art-group data 103))
(ja :group! eichar-ice-slide-ja)
)
)
(suspend)
(ja :num! (loop!))
)
(when (not (ja-group? (-> self draw art-group data 104)))
(when (not (ja-group? eichar-ice-stance-ja))
(ja-channel-push! 1 (the-as time-frame gp-0))
(ja :group! (-> self draw art-group data 104))
(ja :group! eichar-ice-stance-ja)
)
)
(loop
@ -196,7 +196,7 @@
(when (and (not (move-legs?)) (let ((gp-0 (ja-group))
(f0-1 (ja-aframe-num 0))
)
(if (and (= gp-0 (-> self draw art-group data 102)) (>= f0-1 30.0) (>= 35.0 f0-1))
(if (and (= gp-0 eichar-ice-skate-ja) (>= f0-1 30.0) (>= 35.0 f0-1))
#t
)
)
@ -235,18 +235,18 @@
)
:code (behavior ()
(cond
((ja-group? (-> self draw art-group data 23))
((ja-group? eichar-walk-ja)
(let ((f30-0 (ja-aframe-num 0)))
(ja-channel-push! 1 (seconds 0.1))
(ja :group! (-> self draw art-group data 102) :num! (identity f30-0))
(ja :group! eichar-ice-skate-ja :num! (identity f30-0))
)
)
((ja-group? (-> self draw art-group data 102))
((ja-group? eichar-ice-skate-ja)
)
(else
(let ((v1-18 (ja-group)))
(cond
((or (= v1-18 (-> self draw art-group data 60)) (= v1-18 (-> self draw art-group data 61)))
((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)
@ -256,15 +256,15 @@
(set! (-> self control unknown-surface00) *walk-mods*)
(set! (-> self control unknown-float81) 0.0)
(ja-channel-push! 1 (seconds 0.1))
(ja :group! (-> self draw art-group data 102) :num! (identity (ja-aframe 34.0 0)))
(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? (-> self draw art-group data 59))
((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! (-> self draw art-group data 60) :num! (seek! (ja-aframe 42.0 0)) :frame-num 0.0)
(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)))
@ -272,14 +272,14 @@
(set! (-> self control unknown-surface00) *walk-mods*)
(set! (-> self control unknown-float81) 0.0)
(ja-channel-push! 1 (seconds 0.1))
(ja :group! (-> self draw art-group data 102) :num! (identity (ja-aframe 34.0 0)))
(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! (-> self draw art-group data 102))
(ja :group! eichar-ice-skate-ja)
)
)
)

View File

@ -105,7 +105,7 @@
(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! (-> self draw art-group data 5) :num! min)
(ja :group! eichar-stance-loop-ja :num! min)
(remove-exit)
(go target-snowball)
)

View File

@ -278,7 +278,7 @@
:code (behavior ()
(logclear! (-> self mask) (process-mask actor-pause))
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! double-lurker-bottom-take-hit-ja :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! double-lurker-top-on-shoulders-die-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -313,7 +313,7 @@
(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-both-break-apart-ja :num! (seek!) :frame-num 0.0)
(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)
@ -485,7 +485,7 @@
(cond
(arg2
(ja-channel-set! 1)
(ja :group! double-lurker-both-idle-ja :num! min)
(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))
@ -495,7 +495,7 @@
)
(else
(ja-channel-set! 1)
(ja :group! double-lurker-idle-ja :num! min)
(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)

View File

@ -154,7 +154,7 @@
(defstate helix-slide-door-close (helix-slide-door)
:code (behavior ()
(ja-no-eval :group! (-> self draw art-group data 2) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! helix-slide-door-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -255,7 +255,7 @@
(set! (-> self part2) (create-launch-control (-> *part-group-id-table* 107) self))
(initialize-skeleton self *orbit-plat-bottom-sg* '())
(ja-channel-set! 1)
(ja :group! orbit-plat-idle-ja :num! min)
(ja :group! orbit-plat-bottom-idle-ja :num! min)
(go orbit-plat-bottom-idle)
(none)
)

View File

@ -296,7 +296,7 @@
(set! (-> self rest-pos quad) (-> self root trans quad))
(initialize-skeleton self *blue-eco-charger-orb-sg* '())
(ja-channel-set! 1)
(ja :group! (-> self draw art-group data 2) :num! min)
(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)
@ -342,7 +342,7 @@
:code (behavior ()
(set! (-> self open-level) 0.0)
(ja-channel-set! 1)
(ja :group! (-> self draw art-group data 2) :num! min)
(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-override trans) (-> *target* control trans))))
@ -778,7 +778,7 @@
(suspend)
(set-time! (-> self state-time))
(let ((gp-1 #f))
(ja-no-eval :group! (-> self draw art-group data 3) :num! (seek!) :frame-num 0.0)
(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)
@ -789,13 +789,13 @@
)
)
(set! (-> self move-player?) #t)
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(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! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(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))
@ -807,7 +807,7 @@
(load-state-want-display-level 'village2 'display)
(load-state-want-display-level 'sunken 'special)
(let ((gp-2 #f))
(ja-no-eval :group! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.0)
(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))
@ -980,7 +980,7 @@
(let ((gp-1 #f)
(s5-0 #f)
)
(ja-no-eval :group! (-> self draw art-group data 7) :num! (seek!) :frame-num 0.0)
(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)
@ -1004,7 +1004,7 @@
)
(load-state-want-levels 'sunken 'sunkenb)
(kill-and-free-particles (-> self part))
(ja-no-eval :group! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.0)
(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))
@ -1015,7 +1015,7 @@
(stop! (-> self sound))
(load-state-want-display-level 'sunkenb 'display)
(load-state-want-vis 'sub)
(ja-no-eval :group! (-> self draw art-group data 9) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! exit-chamber-dive-end-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -199,7 +199,7 @@
)
:code (behavior ()
(loop
(ja-no-eval :group! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! sunkenfisha-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -165,12 +165,12 @@
(let ((v1-0 (-> self seq)))
(cond
((zero? v1-0)
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.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! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! sunkencam-start-in-room-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -180,14 +180,14 @@
(set! (-> v1-45 color) (new 'static 'rgba :g #x20 :b #x40 :a #x50))
)
(set-blackout-frames (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 7) :num! (seek!) :frame-num 0.0)
(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! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.0)
(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)
@ -200,7 +200,7 @@
(set-blackout-frames (seconds 0.1))
)
((= v1-0 1)
(ja-no-eval :group! (-> self draw art-group data 9) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! sunkencam-dive-start-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -210,14 +210,14 @@
(set! (-> v1-116 color) (new 'static 'rgba :g #x20 :b #x40 :a #x50))
)
(set-blackout-frames (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 10) :num! (seek!) :frame-num 0.0)
(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! (-> self draw art-group data 11) :num! (seek!) :frame-num 0.0)
(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)
@ -238,18 +238,18 @@
)
)
((= v1-0 2)
(ja-no-eval :group! (-> self draw art-group data 16) :num! (seek!) :frame-num 0.0)
(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! (-> self draw art-group data 17) :num! (seek! max 0.67) :frame-num 0.0)
(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 (-> self draw art-group data 18))
(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
)
@ -257,7 +257,7 @@
((= v1-0 3)
(ambient-hint-spawn "gamcam34" (the-as vector #f) *entity-pool* 'camera)
(pov-camera-play-and-reposition
(the-as art-joint-anim (-> self draw art-group data 12))
(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
)
@ -265,7 +265,7 @@
((= v1-0 4)
(ambient-hint-spawn "gamcam35" (the-as vector #f) *entity-pool* 'camera)
(pov-camera-play-and-reposition
(the-as art-joint-anim (-> self draw art-group data 13))
(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
)
@ -277,7 +277,7 @@
((= v1-0 5)
(ambient-hint-spawn "gamcam37" (the-as vector #f) *entity-pool* 'camera)
(pov-camera-play-and-reposition
(the-as art-joint-anim (-> self draw art-group data 14))
(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
)
@ -285,7 +285,7 @@
((= v1-0 6)
(ambient-hint-spawn "gamcam36" (the-as vector #f) *entity-pool* 'camera)
(pov-camera-play-and-reposition
(the-as art-joint-anim (-> self draw art-group data 15))
(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
)
@ -326,7 +326,7 @@
(ja-eval)
)
(loop
(ja-no-eval :group! (-> self draw art-group data 2) :num! (seek! max (-> self anim-speed)) :frame-num 0.0)
(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)))

View File

@ -585,7 +585,7 @@
)
(set-time-ratios *display* (the float gp-0))
)
(ja :group! (-> self draw art-group data 105) :num! (identity (ja-aframe (-> self tube turn-anim-frame) 0)))
(ja :group! eichar-tube-turn-ja :num! (identity (ja-aframe (-> self tube turn-anim-frame) 0)))
0
(none)
)
@ -612,9 +612,9 @@
)
:code (behavior ()
(case (ja-group)
(((-> self draw art-group data 41) (-> self draw art-group data 38))
((eichar-duck-high-jump-ja eichar-jump-loop-ja)
(ja-channel-push! 1 (seconds 0.04))
(ja-no-eval :group! (-> self draw art-group data 106) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! eichar-tube-jump-land-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -658,7 +658,7 @@
)
:code (behavior ((arg0 float) (arg1 float))
(ja-channel-push! 1 (seconds 0.05))
(ja :group! (-> self draw art-group data 41) :num! (identity (ja-aframe 16.0 0)))
(ja :group! eichar-duck-high-jump-ja :num! (identity (ja-aframe 16.0 0)))
(let ((f30-0 35.0)
(f28-0 1.0)
)
@ -681,10 +681,10 @@
(suspend)
)
)
(ja-no-eval :group! (-> self draw art-group data 38) :num! (loop!) :frame-num 0.0)
(ja-no-eval :group! eichar-jump-loop-ja :num! (loop!) :frame-num 0.0)
(loop
(suspend)
(ja :group! (-> self draw art-group data 38) :num! (loop!))
(ja :group! eichar-jump-loop-ja :num! (loop!))
)
)
:post (-> target-tube post)
@ -821,7 +821,7 @@
(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! (-> self draw art-group data 76) :num! (seek! (ja-aframe 134.0 0)) :frame-num 0.0)
(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)))

View File

@ -146,19 +146,13 @@
)
:trans plat-trans
:code (behavior ()
(ja-no-eval :group! (-> self draw art-group data 3)
:num! (seek! (ja-aframe 60.0 0))
:frame-num (ja-aframe 0.0 0)
)
(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! (-> self draw art-group data 3)
:num! (seek! (ja-aframe 100.0 0))
:frame-num (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)
@ -170,10 +164,7 @@
(wedge-plat-method-27 self)
(suspend)
)
(ja-no-eval :group! (-> self draw art-group data 3)
:num! (seek! (ja-aframe 153.0 0))
:frame-num (ja-aframe 100.0 0)
)
(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)
@ -305,19 +296,13 @@
)
:trans plat-trans
:code (behavior ()
(ja-no-eval :group! (-> self draw art-group data 3)
:num! (seek! (ja-aframe 60.0 0))
:frame-num (ja-aframe 0.0 0)
)
(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! (-> self draw art-group data 3)
:num! (seek! (ja-aframe 100.0 0))
:frame-num (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)
@ -329,10 +314,7 @@
(wedge-plat-method-27 self)
(suspend)
)
(ja-no-eval :group! (-> self draw art-group data 3)
:num! (seek! (ja-aframe 153.0 0))
:frame-num (ja-aframe 100.0 0)
)
(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)

View File

@ -162,7 +162,7 @@
(send-event (handle->process (-> self snack)) 'eat)
(sound-play "rat-gulp")
(ja-channel-push! 1 (seconds 0.05))
(ja :group! (-> self draw art-group data 12))
(ja :group! swamp-rat-eat-ja)
(ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)

View File

@ -188,7 +188,7 @@
(set! (-> gp-0 w) (- (vector-dot gp-0 (-> self root-override trans))))
(loop
(set-time! (-> self state-time))
(ja :group! (-> self draw art-group data 3))
(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)
@ -210,7 +210,7 @@
)
)
(else
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! swamp-spike-shake-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -229,7 +229,7 @@
)
)
(set! (-> self dangerous) #t)
(ja-no-eval :group! (-> self draw art-group data 3) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! swamp-spike-up-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -253,7 +253,7 @@
:to self
)
)
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! swamp-spike-down-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -280,7 +280,7 @@
)
:code (behavior ()
(set-time! (-> self state-time))
(ja :group! (-> self draw art-group data 4))
(ja :group! swamp-spike-down-ja)
(until (-> self open-gate)
(ja :num-func num-func-identity :frame-num 0.0)
(suspend)
@ -296,7 +296,7 @@
(-> self root-override trans)
:to self
)
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! swamp-spike-down-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -790,7 +790,7 @@
)
:code (behavior ()
(ja-channel-push! 1 (seconds 0.1))
(ja :group! (-> self draw art-group data 3))
(ja :group! tar-plat-idle-ja)
(ja :num-func num-func-identity :frame-num 0.0)
(loop
(suspend)

View File

@ -682,7 +682,7 @@
:code (behavior ()
(ja-channel-push! 1 (seconds 0.12))
(loop
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! scarecrow-a-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -700,21 +700,21 @@
(ja-channel-push! 1 (seconds 0.07))
(cond
((< (fabs arg0) 8192.0)
(ja-no-eval :group! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.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! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.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! (-> self draw art-group data 7) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! scarecrow-a-hit-right-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -818,7 +818,7 @@
:code (behavior ()
(ja-channel-push! 1 (seconds 0.12))
(loop
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! scarecrow-b-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -836,21 +836,21 @@
(ja-channel-push! 1 (seconds 0.07))
(cond
((< (fabs arg0) 8192.0)
(ja-no-eval :group! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.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! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.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! (-> self draw art-group data 7) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! scarecrow-b-hit-right-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -232,13 +232,19 @@
(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) (-> self node-list data 30)))
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index 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) (-> self node-list data 30)))
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index assistant-lod0-jg torchTIP))
)
(suspend)
(ja :num! (seek! 0.0))
)

View File

@ -721,7 +721,7 @@
(f28-0 (+ -1.0 (* 2.0 (-> self engine-sound-envelope))))
(gp-0 (new 'stack-no-clear 'vector))
)
(vector<-cspace! gp-0 (-> self node-list data 4))
(vector<-cspace! gp-0 (joint-node-index fishermans-boat-lod0-jg prop))
(sound-play
"boat-engine"
:id (-> self engine-sound-id)
@ -1415,7 +1415,7 @@
(send-event *target* 'blend-shape #f)
(ja-channel-set! 1)
(ja :group! fishermans-boat-idle-ja)
(vector<-cspace! (-> self root-overlay trans) (-> self node-list data 3))
(vector<-cspace! (-> self root-overlay trans) (joint-node-index fishermans-boat-lod0-jg main))
(matrix->quaternion (-> self root-overlay quat) (-> self node-list data 3 bone transform))
(fishermans-boat-reset-physics)
(transform-post)
@ -1533,7 +1533,7 @@
(send-event *target* 'blend-shape #f)
(ja-channel-set! 1)
(ja :group! fishermans-boat-idle-ja)
(vector<-cspace! (-> self root-overlay trans) (-> self node-list data 3))
(vector<-cspace! (-> self root-overlay trans) (joint-node-index fishermans-boat-lod0-jg main))
(matrix->quaternion (-> self root-overlay quat) (-> self node-list data 3 bone transform))
(fishermans-boat-reset-physics)
(transform-post)

View File

@ -684,7 +684,7 @@
(set! (-> self rotate-speed) 12743.111)
(set! (-> self turn-time) (seconds 0.5))
(loop
(ja-no-eval :group! (-> self draw art-group data 2) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! villa-starfish-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -541,13 +541,19 @@
(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) (-> self node-list data 30)))
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index 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) (-> self node-list data 30)))
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index assistant-village2-lod0-jg torchTIP))
)
(suspend)
(ja :num! (seek! 0.0))
)
@ -555,7 +561,10 @@
)
(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) (-> self node-list data 30)))
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index assistant-village2-lod0-jg torchTIP))
)
(suspend)
(ja :num! (seek!))
)

View File

@ -1190,7 +1190,7 @@
(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! (-> self draw art-group data 4) :num! (seek! max f30-3) :frame-num 0.0)
(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)
@ -1249,7 +1249,7 @@
(defstate swamp-rope-idle-rock (swamp-rope)
:trans swamp-rope-trans
:code (behavior ()
(ja :group! swamp-blimp-idle-ja)
(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))
@ -1278,7 +1278,7 @@
(defstate swamp-rope-idle-arm (swamp-rope)
:trans swamp-rope-trans
:code (behavior ()
(ja :group! swamp-blimp-idle-ja)
(ja :group! swamp-rope-slack-ja)
(loop
(let* ((a0-3 (-> self other-entity))
(v1-3 (if a0-3

View File

@ -34,14 +34,14 @@
(let ((v1-0 (-> self seq)))
(cond
((zero? v1-0)
(ja-no-eval :group! (-> self draw art-group data 2) :num! (seek!) :frame-num 0.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! (-> self draw art-group data 3) :num! (seek!) :frame-num 0.0)
(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!))
@ -49,7 +49,7 @@
)
((= v1-0 2)
(pov-camera-play-and-reposition
(the-as art-joint-anim (-> self draw art-group data 4))
(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
)
@ -491,12 +491,30 @@
)
:trans (behavior ()
(when (>= (ja-aframe-num 0) 500.0)
(spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 3)))
(spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4)))
(spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 5)))
(spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 6)))
(spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 7)))
(spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 9)))
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index allpontoons-lod0-jg 1))
)
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index allpontoons-lod0-jg 2))
)
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index allpontoons-lod0-jg 3))
)
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index allpontoons-lod0-jg 4))
)
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index allpontoons-lod0-jg 5))
)
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index allpontoons-lod0-jg 6))
)
)
)
:code (behavior ((arg0 handle))
@ -583,7 +601,7 @@
(defbehavior fireboulder-hover-stuff fireboulder ()
(local-vars (v0-1 object))
(let ((gp-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-0 (-> self node-list data 4))
(vector<-cspace! gp-0 (joint-node-index fireboulder-lod0-jg bouldercenter))
(cond
((handle->process (-> self tracker))
(let ((v1-6 (-> (the-as (pointer part-tracker) (-> self tracker process)) 0)))
@ -625,7 +643,7 @@
:enter (behavior ()
(fireboulder-disable-blocking-collision)
(ja-channel-set! 1)
(ja :group! (-> self draw art-group data 3))
(ja :group! fireboulder-hover-ja)
(logclear! (-> self draw status) (draw-status hidden))
(set! (-> self root-override trans quad) (-> self entity extra trans quad))
(vector-reset! (-> self draw origin))
@ -633,7 +651,7 @@
(ja-post)
(logclear! (-> self skel status) (janim-status inited))
(let ((gp-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-0 (-> self node-list data 4))
(vector<-cspace! gp-0 (joint-node-index fireboulder-lod0-jg bouldercenter))
(vector-! (-> self draw bounds) gp-0 (-> self root-override trans))
)
(set! (-> self draw bounds w) 24576.0)
@ -1375,7 +1393,7 @@
)
)
(ja-channel-push! 1 (seconds 0.2))
(ja-no-eval :group! (-> self draw art-group data 7) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! ogreboss-village2-pre-throw-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1401,7 +1419,7 @@
)
)
(ja-channel-push! 1 (seconds 0.2))
(ja-no-eval :group! (-> self draw art-group data 5) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! ogreboss-village2-throw-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1419,7 +1437,7 @@
(let ((v1-0 (rand-vu-int-range 0 2)))
(cond
((zero? v1-0)
(ja-no-eval :group! (-> self draw art-group data 2) :num! (seek! (ja-aframe 140.0 0)) :frame-num 0.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)))
@ -1429,7 +1447,7 @@
(suspend)
)
)
(ja-no-eval :group! (-> self draw art-group data 2)
(ja-no-eval :group! ogreboss-village2-idle-ja
:num! (seek! (ja-aframe 168.0 0))
:frame-num (ja-aframe 140.0 0)
)
@ -1442,14 +1460,14 @@
(suspend)
)
)
(ja-no-eval :group! (-> self draw art-group data 2) :num! (seek!) :frame-num (ja-aframe 168.0 0))
(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! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! ogreboss-village2-idle-alt-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1457,7 +1475,7 @@
)
(else
(dotimes (gp-7 4)
(ja-no-eval :group! (-> self draw art-group data 3) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! ogreboss-village2-idle-bored-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1470,7 +1488,7 @@
(cond
((< 0.6666667 f0-33)
(ja-channel-push! 1 (seconds 0.2))
(ja-no-eval :group! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! ogreboss-village2-victory-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -55,7 +55,7 @@
(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) (-> self node-list data 4))))
(let ((a1-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index minecartsteel-lod0-jg cart))))
(update-trans! (-> self sound) a1-1)
)
(update! (-> self sound))
@ -103,7 +103,7 @@
spool-anim
(cond
((zero? v1-33)
(-> self draw art-group data 5)
minecartsteel-rail0-ja
)
((= v1-33 1)
(let ((a0-17 (-> self sync))
@ -113,7 +113,7 @@
)
(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)
)
(-> self draw art-group data 6)
minecartsteel-rail1-ja
)
(else
(let ((a0-18 (-> self sync))
@ -123,7 +123,7 @@
)
(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)
)
(-> self draw art-group data 7)
minecartsteel-rail2-ja
)
)
)

View File

@ -257,7 +257,10 @@
)
(defbehavior minershort-trans-hook minershort ()
(spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 14)))
(spawn
(-> self part)
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index minershort-lod0-jg candle))
)
(none)
)

View File

@ -113,7 +113,7 @@
)
)
)
(ja :group! (-> self draw art-group data 4))
(ja :group! gondola-idle-up-ja)
)
(else
(set! (-> self anim) (new 'static 'spool-anim
@ -130,20 +130,21 @@
)
)
)
(ja :group! (-> self draw art-group data 3))
(ja :group! gondola-idle-down-ja)
)
)
(transform-post)
(loop
(when (and *target* (and (< (vector-vector-distance
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 3))
(when (and *target*
(and (< (vector-vector-distance
(vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index gondola-lod0-jg main))
(target-pos 0)
)
81920.0
)
(not (movie?))
(not (level-hint-displayed?))
(>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 3))
(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)
@ -157,7 +158,7 @@
)
(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) (-> self node-list data 3)))
(s5-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index gondola-lod0-jg main)))
)
(cond
((not (or s4-1 (task-closed? (game-task village3-button) (task-status need-hint))))
@ -255,8 +256,8 @@
(process-spawn othercam self 4 #f #t :to self)
(ja-play-spooled-anim
(-> self anim)
(the-as art-joint-anim (-> self draw art-group data 3))
(the-as art-joint-anim (-> self draw art-group data 4))
(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)
@ -296,8 +297,8 @@
(process-spawn othercam self 4 #f #t :to self)
(ja-play-spooled-anim
(-> self anim)
(the-as art-joint-anim (-> self draw art-group data 4))
(the-as art-joint-anim (-> self draw art-group data 3))
(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)

View File

@ -69,16 +69,13 @@
(ja-channel-set! 1)
(send-event self 'do-effect 'death-warp-in -1.0)
(sound-play "warpgate-tele")
(ja-no-eval :group! (-> self draw art-group data 41)
:num! (seek! (ja-aframe 50.0 0))
:frame-num (ja-aframe 40.0 0)
)
(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! (-> self draw art-group data 41) :num! (seek!) :frame-num (ja-aframe 50.0 0))
(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!))
@ -617,15 +614,11 @@
;; 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
;; table because they they write to some field of arg0, which is actually #t and not a
;; table because they write to some field of arg0, which is actually #t and not a
;; basebutton. The corruption is completely harmless but is annoying because it looks like
;; a more severe memory corruption problem. So we fix it.
(the-as int ((the-as (function basebutton symbol none) (find-parent-method warp-gate-switch 31))
;;(the-as basebutton arg0)
this
arg0
)
)
;; (call-parent-method (the-as warp-gate-switch arg0) arg0)
(call-parent-method this arg0)
)
)

View File

@ -451,7 +451,7 @@ This commonly includes things such as:
:virtual #t
:code (behavior ()
(until #f
(ja-no-eval :group! (-> self draw art-group data 3) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! lgconveyor-idle-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -821,7 +821,7 @@
(not (time-elapsed? (-> self control last-time-on-surface) (seconds 0.05)))
)
)
(let ((gp-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 38))))
(let ((gp-0 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index jakb-lod0-jg RbigToe))))
(if (and (< (fabs (vector-dot
(-> self control dynam gravity-normal)
(vector-! (new 'stack-no-clear 'vector) gp-0 (-> self control trans))
@ -834,7 +834,7 @@
(launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 165) gp-0)
)
)
(let ((gp-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 31))))
(let ((gp-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node-index jakb-lod0-jg LbigToe))))
(if (and (< (fabs (vector-dot
(-> self control dynam gravity-normal)
(vector-! (new 'stack-no-clear 'vector) gp-1 (-> self control trans))

View File

@ -421,6 +421,22 @@
)
)
(defmacro joint-name->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)))
)
)
)
)
(defmacro joint-node-index (jg name)
`(-> self node-list data (joint-name->index ,jg ,name))
)
(defmacro defskelgroup (name ag-name joint-geom joint-anim lods
&key (shadow 0)
@ -470,9 +486,5 @@
)
)
0
(import "goal_src/jak2/engine/data/art-elts.gc")
(import "goal_src/jak2/engine/data/joint-nodes.gc")

File diff suppressed because it is too large Load Diff

View File

@ -660,11 +660,11 @@
(let ((s5-0 30)
(v1-3 (ja-group))
)
(when (not (and (and v1-3 (= v1-3 (-> self draw art-group data 161))) (= (ja-group-size) 4)))
(when (not (and (and v1-3 (= v1-3 jakb-board-turn-left-ja)) (= (ja-group-size) 4)))
(let ((v1-10 (ja-group)))
(when (and v1-10 (= v1-10 (-> self draw art-group data 170)))
(when (and v1-10 (= v1-10 jakb-board-get-on-ja))
(ja-channel-set! 1)
(ja-no-eval :group! (-> self draw art-group data 190) :num! (seek! max 1.8) :frame-num 0.0)
(ja-no-eval :group! jakb-board-get-on-land-ja :num! (seek! max 1.8) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max 1.8))
@ -681,15 +681,15 @@
(ground-tween-initialize
gp-0
(the-as uint 0)
(the-as uint (-> self draw art-group data 153))
(the-as uint (-> self draw art-group data 163))
(the-as uint (-> self draw art-group data 164))
(the-as uint (-> self draw art-group data 162))
(the-as uint (-> self draw art-group data 161))
(the-as uint jakb-board-turn-ja)
(the-as uint jakb-board-turn-up-ja)
(the-as uint jakb-board-turn-down-ja)
(the-as uint jakb-board-turn-right-ja)
(the-as uint jakb-board-turn-left-ja)
f30-0
)
)
(ja :chan 3 :group! (-> self draw art-group data 152))
(ja :chan 3 :group! jakb-board-duck-turn-ja)
(until #f
(target-board-turn-anim 0)
(let ((f0-10 (* 1.6 (-> self control ctrl-slope-z)))
@ -715,13 +715,9 @@
(set! (-> a0-27 frame-interp 1) f0-14)
(set! (-> a0-27 frame-interp 0) f0-14)
)
(set! (-> a0-27 frame-group) (the-as art-joint-anim (-> self draw art-group data 152)))
(set! (-> a0-27 frame-group) (the-as art-joint-anim jakb-board-duck-turn-ja))
(set! (-> a0-27 param 0) 0.0)
(joint-control-channel-group-eval!
a0-27
(the-as art-joint-anim (-> self draw art-group data 152))
num-func-chan
)
(joint-control-channel-group-eval! a0-27 (the-as art-joint-anim jakb-board-duck-turn-ja) num-func-chan)
)
)
(else
@ -730,13 +726,9 @@
(set! (-> a0-28 frame-interp 1) f0-17)
(set! (-> a0-28 frame-interp 0) f0-17)
)
(set! (-> a0-28 frame-group) (the-as art-joint-anim (-> self draw art-group data 177)))
(set! (-> a0-28 frame-group) (the-as art-joint-anim jakb-board-air-turn-ja))
(set! (-> a0-28 param 0) 0.0)
(joint-control-channel-group-eval!
a0-28
(the-as art-joint-anim (-> self draw art-group data 177))
num-func-chan
)
(joint-control-channel-group-eval! a0-28 (the-as art-joint-anim jakb-board-air-turn-ja) num-func-chan)
)
)
)
@ -1022,7 +1014,7 @@
(case arg2
(('hit)
(ja-channel-push! 1 (seconds 0.05))
(ja-no-eval :group! (-> self draw art-group data 158) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! jakb-board-hit-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1031,7 +1023,7 @@
)
(else
(ja-channel-push! 1 (seconds 0.05))
(ja :group! (-> self draw art-group data 155) :num! min)
(ja :group! jakb-board-jump-ja :num! min)
(suspend)
(until (ja-done? 0)
(let ((f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))
@ -1061,7 +1053,7 @@
(ja-channel-push! 1 (seconds 0.05))
)
)
(ja :group! (-> self draw art-group data 156))
(ja :group! jakb-board-jump-loop-ja)
(until #f
(suspend)
(ja :num! (loop!))
@ -1296,23 +1288,17 @@
(cond
((not (time-elapsed? (-> self board halfpipe-jump-time) (seconds 0.5)))
(ja-channel-push! 1 (seconds 0.05))
(ja-no-eval :group! (-> self draw art-group data 155) :num! (seek! (ja-aframe 8.0 0) 0.5) :frame-num 0.0)
(ja-no-eval :group! jakb-board-jump-ja :num! (seek! (ja-aframe 8.0 0) 0.5) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! (ja-aframe 8.0 0) 0.5))
)
(ja-no-eval :group! (-> self draw art-group data 155)
:num! (seek! (ja-aframe 10.0 0) 0.2)
:frame-num (ja-aframe 8.0 0)
)
(ja-no-eval :group! jakb-board-jump-ja :num! (seek! (ja-aframe 10.0 0) 0.2) :frame-num (ja-aframe 8.0 0))
(until (ja-done? 0)
(suspend)
(ja :num! (seek! (ja-aframe 10.0 0) 0.2))
)
(ja-no-eval :group! (-> self draw art-group data 155)
:num! (seek! (ja-aframe 12.0 0) 0.1)
:frame-num (ja-aframe 10.0 0)
)
(ja-no-eval :group! jakb-board-jump-ja :num! (seek! (ja-aframe 12.0 0) 0.1) :frame-num (ja-aframe 10.0 0))
(until (ja-done? 0)
(suspend)
(ja :num! (seek! (ja-aframe 12.0 0) 0.1))
@ -1350,19 +1336,19 @@
:code (behavior ()
(let ((v1-2 (ja-group)))
(cond
((and v1-2 (= v1-2 (-> self draw art-group data 156)))
((and v1-2 (= v1-2 jakb-board-jump-loop-ja))
)
((let ((v1-8 (ja-group)))
(and v1-8 (= v1-8 (-> self draw art-group data 187)))
(and v1-8 (= v1-8 jakb-board-noseflip-ja))
)
(ja-no-eval :num! (seek!))
(ja-channel-push! 1 (seconds 0.5))
)
((let ((v1-22 (ja-group)))
(and v1-22 (or (= v1-22 (-> self draw art-group data 178))
(= v1-22 (-> self draw art-group data 182))
(= v1-22 (-> self draw art-group data 159))
(= v1-22 (-> self draw art-group data 181))
(and v1-22 (or (= v1-22 jakb-board-flip-backward-ja)
(= v1-22 jakb-board-flip-backward-loop-ja)
(= v1-22 jakb-board-flip-forward-ja)
(= v1-22 jakb-board-flip-forward-loop-ja)
)
)
)
@ -1372,7 +1358,7 @@
(else
(let ((v1-36 (ja-group)))
(cond
((and v1-36 (= v1-36 (-> self draw art-group data 176)))
((and v1-36 (= v1-36 jakb-board-spin-ja))
(ja-no-eval :num! (seek!))
(ja-channel-push! 1 (seconds 0.1))
)
@ -1386,14 +1372,14 @@
)
(cond
((focus-test? self halfpipe)
(ja :group! (-> self draw art-group data 152) :num! (identity (ja-aframe 0.0 0)))
(ja :group! jakb-board-duck-turn-ja :num! (identity (ja-aframe 0.0 0)))
(loop
(suspend)
(ja-blend-eval)
)
)
(else
(ja :group! (-> self draw art-group data 156))
(ja :group! jakb-board-jump-loop-ja)
(loop
(suspend)
(ja-blend-eval)
@ -1434,13 +1420,13 @@
)
:code (behavior ()
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 154) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! jakb-board-jump-kick-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
)
(ja-channel-push! 1 (seconds 2))
(ja :group! (-> self draw art-group data 156))
(ja :group! jakb-board-jump-loop-ja)
(until #f
(suspend)
(ja :num! (loop!))
@ -1473,7 +1459,7 @@
:exit target-board-exit
:trans target-board-jump-trans
:code (behavior ((arg0 vector) (arg1 float))
(ja-no-eval :group! (-> self draw art-group data 188) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! jakb-board-jump-kickoff-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(if (and (jump-hit-ground-stuck?) (< 31.0 (ja-aframe-num 0)))
(go target-board-hit-ground)
@ -1594,14 +1580,14 @@
(cond
((zero? s4-0)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 159) :num! (seek! (ja-aframe 15.0 0)) :frame-num 0.0)
(ja-no-eval :group! jakb-board-flip-forward-ja :num! (seek! (ja-aframe 15.0 0)) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! (ja-aframe 15.0 0)))
)
)
(else
(ja-no-eval :group! (-> self draw art-group data 181) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! jakb-board-flip-forward-loop-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1611,14 +1597,14 @@
)
((zero? s4-0)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 178) :num! (seek! (ja-aframe 10.0 0)) :frame-num 0.0)
(ja-no-eval :group! jakb-board-flip-backward-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)))
)
)
(else
(ja-no-eval :group! (-> self draw art-group data 182) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! jakb-board-flip-backward-loop-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1633,7 +1619,7 @@
)
(cond
(gp-0
(ja-no-eval :group! (-> self draw art-group data 159) :num! (seek!) :frame-num (ja-aframe 15.0 0))
(ja-no-eval :group! jakb-board-flip-forward-ja :num! (seek!) :frame-num (ja-aframe 15.0 0))
(until (ja-done? 0)
(if (jump-hit-ground-stuck?)
(go target-board-hit-ground)
@ -1643,7 +1629,7 @@
)
)
(else
(ja-no-eval :group! (-> self draw art-group data 178) :num! (seek!) :frame-num (ja-aframe 10.0 0))
(ja-no-eval :group! jakb-board-flip-backward-ja :num! (seek!) :frame-num (ja-aframe 10.0 0))
(until (ja-done? 0)
(if (jump-hit-ground-stuck?)
(go target-board-hit-ground)
@ -1701,7 +1687,7 @@
(-> v1-3 id)
)
(let ((v1-7 (ja-group)))
(if (and v1-7 (= v1-7 (-> self draw art-group data 187)))
(if (and v1-7 (= v1-7 jakb-board-noseflip-ja))
(sound-play "board-boots")
)
)
@ -1741,25 +1727,25 @@
((< f30-0 0.0)
(let ((v1-3 (ja-group)))
(cond
((and v1-3 (= v1-3 (-> self draw art-group data 183)))
((and v1-3 (= v1-3 jakb-board-method-loop-ja))
(ja :num! (loop!))
)
(else
(add-to-trick-list (-> self board) (board-tricks board-method) 500.0)
(set! (-> self board unknown-sound-id01) (sound-play "board-method"))
(ja-channel-push! 1 (seconds 0.08))
(ja-no-eval :group! (-> self draw art-group data 174) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! jakb-board-method-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
)
(ja :group! (-> self draw art-group data 183) :num! min)
(ja :group! jakb-board-method-loop-ja :num! min)
)
)
)
)
((let ((v1-45 (ja-group)))
(and v1-45 (= v1-45 (-> self draw art-group data 185)))
(and v1-45 (= v1-45 jakb-board-nosegrab-loop-ja))
)
(ja :num! (loop!))
)
@ -1767,18 +1753,18 @@
(add-to-trick-list (-> self board) (board-tricks board-nosegrab) 500.0)
(set! (-> self board unknown-sound-id01) (sound-play "board-nosegrab"))
(ja-channel-push! 1 (seconds 0.08))
(ja-no-eval :group! (-> self draw art-group data 173) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! jakb-board-nosegrab-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
)
(ja :group! (-> self draw art-group data 185) :num! min)
(ja :group! jakb-board-nosegrab-loop-ja :num! min)
)
(else
(add-to-trick-list (-> self board) (board-tricks board-noseflip) 500.0)
(set! (-> self board unknown-sound-id01) (sound-play "board-noseflip"))
(ja-channel-push! 1 (seconds 0.08))
(ja-no-eval :group! (-> self draw art-group data 187) :num! (seek! (ja-aframe 20.0 0)) :frame-num 0.0)
(ja-no-eval :group! jakb-board-noseflip-ja :num! (seek! (ja-aframe 20.0 0)) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! (ja-aframe 20.0 0)))
@ -1793,19 +1779,19 @@
(label cfg-36)
(let ((v1-121 (ja-group)))
(cond
((and v1-121 (= v1-121 (-> self draw art-group data 183)))
((and v1-121 (= v1-121 jakb-board-method-loop-ja))
(ja-channel-push! 1 (seconds 0.08))
(ja-no-eval :group! (-> self draw art-group data 184) :num! (seek! max 1.5) :frame-num 0.0)
(ja-no-eval :group! jakb-board-method-end-ja :num! (seek! max 1.5) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max 1.5))
)
)
((let ((v1-151 (ja-group)))
(and v1-151 (= v1-151 (-> self draw art-group data 185)))
(and v1-151 (= v1-151 jakb-board-nosegrab-loop-ja))
)
(ja-channel-push! 1 (seconds 0.08))
(ja-no-eval :group! (-> self draw art-group data 186) :num! (seek! max 1.5) :frame-num 0.0)
(ja-no-eval :group! jakb-board-nosegrab-end-ja :num! (seek! max 1.5) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max 1.5))
@ -1887,19 +1873,19 @@
(add-to-trick-list (-> self board) (board-tricks board-kickflip) 500.0)
(set! (-> self board unknown-sound-id01) (sound-play "board-kickflip"))
(ja-channel-push! 1 (seconds 0.07))
(ja-no-eval :group! (-> self draw art-group data 175) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! jakb-board-kickflip-a-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
)
(send-event (ppointer->process (-> self sidekick)) 'matrix #f)
(ja-no-eval :group! (-> self draw art-group data 192) :num! (seek! max 1.05) :frame-num 0.0)
(ja-no-eval :group! jakb-board-kickflip-b-ja :num! (seek! max 1.05) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max 1.05))
)
(send-event (ppointer->process (-> self sidekick)) 'matrix 'board)
(ja-no-eval :group! (-> self draw art-group data 193) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! jakb-board-kickflip-c-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -1909,7 +1895,7 @@
(add-to-trick-list (-> self board) (board-tricks board-board-spin) 500.0)
(set! (-> self board unknown-sound-id01) (sound-play "board-boardspin"))
(ja-channel-push! 1 (seconds 0.05))
(ja-no-eval :group! (-> self draw art-group data 176) :num! (seek! max 0.95) :frame-num 0.0)
(ja-no-eval :group! jakb-board-spin-ja :num! (seek! max 0.95) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max 0.95))
@ -1962,7 +1948,7 @@
(set! (-> self control mod-surface) *board-walk-mods*)
(let ((v1-3 (ja-group)))
(cond
((and v1-3 (or (= v1-3 (-> self draw art-group data 184)) (= v1-3 (-> self draw art-group data 186))))
((and v1-3 (or (= v1-3 jakb-board-method-end-ja) (= v1-3 jakb-board-nosegrab-end-ja)))
(ja-no-eval :num! (seek! max 1.5))
(while (not (ja-done? 0))
(suspend)
@ -1970,20 +1956,20 @@
)
)
((let ((v1-18 (ja-group)))
(and v1-18 (= v1-18 (-> self draw art-group data 183)))
(and v1-18 (= v1-18 jakb-board-method-loop-ja))
)
(ja-channel-push! 1 (seconds 0.08))
(ja-no-eval :group! (-> self draw art-group data 184) :num! (seek! max 1.5) :frame-num 0.0)
(ja-no-eval :group! jakb-board-method-end-ja :num! (seek! max 1.5) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max 1.5))
)
)
((let ((v1-48 (ja-group)))
(and v1-48 (= v1-48 (-> self draw art-group data 185)))
(and v1-48 (= v1-48 jakb-board-nosegrab-loop-ja))
)
(ja-channel-push! 1 (seconds 0.08))
(ja-no-eval :group! (-> self draw art-group data 186) :num! (seek! max 1.5) :frame-num 0.0)
(ja-no-eval :group! jakb-board-nosegrab-end-ja :num! (seek! max 1.5) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max 1.5))
@ -2261,16 +2247,16 @@
(let* ((v1-1 (-> self board ride-mode))
(gp-0 (cond
((zero? v1-1)
(-> self draw art-group data 167)
jakb-board-ride-turn-front-ja
)
((= v1-1 1)
(-> self draw art-group data 166)
jakb-board-ride-turn-back-ja
)
((= v1-1 2)
(-> self draw art-group data 169)
jakb-board-ride-turn-left-ja
)
((= v1-1 3)
(-> self draw art-group data 168)
jakb-board-ride-turn-right-ja
)
(else
(the-as art-element #f)
@ -2369,12 +2355,12 @@
)
:code (behavior ((arg0 handle))
(ja-channel-push! 1 (seconds 0.05))
(ja-no-eval :group! (-> self draw art-group data 172) :num! (seek! (ja-aframe 19.0 0)) :frame-num 0.0)
(ja-no-eval :group! jakb-board-grenade-ja :num! (seek! (ja-aframe 19.0 0)) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! (ja-aframe 19.0 0)))
)
(let ((a1-5 (-> self node-list data 41))
(let ((a1-5 (joint-node-index jakb-lod0-jg extra))
(s5-2 (new 'stack-no-clear 'projectile-init-by-other-params))
)
(let ((a0-7 (handle->process arg0)))
@ -2536,7 +2522,7 @@
)
)
)
(ja-no-eval :group! (-> self draw art-group data 170) :num! (seek! max f30-1) :frame-num 0.0)
(ja-no-eval :group! jakb-board-get-on-ja :num! (seek! max f30-1) :frame-num 0.0)
(until (ja-done? 0)
(when (logtest? (-> self control status) (collide-status on-surface))
(set! (-> self board turn-anim-duck-vel) 0.0)
@ -2577,7 +2563,7 @@
)
:exit target-board-exit
:code (behavior ((arg0 handle))
(let ((s4-0 (-> self draw art-group data 195))
(let ((s4-0 jakb-board-attack-pegasus-ja)
(f30-0 0.0)
(s5-0 #t)
)
@ -2750,7 +2736,7 @@
(cond
((= v1-1 'hit)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 194) :num! (seek! (ja-aframe 24.0 0) 2.5) :frame-num 0.0)
(ja-no-eval :group! jakb-board-hit-get-off-ja :num! (seek! (ja-aframe 24.0 0) 2.5) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! (ja-aframe 24.0 0) 2.5))
@ -2758,13 +2744,13 @@
)
((-> self control unknown-spool-anim00)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 191) :num! (seek! max f30-0) :frame-num 0.0)
(ja-no-eval :group! jakb-board-get-off-pre-ja :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 sidekick)) 'matrix 'normal)
(ja-no-eval :group! (-> self draw art-group data 171) :num! (seek! (ja-aframe 24.0 0) f30-0) :frame-num 0.0)
(ja-no-eval :group! jakb-board-get-off-ja :num! (seek! (ja-aframe 24.0 0) f30-0) :frame-num 0.0)
(until (ja-done? 0)
(if (and (jump-hit-ground-stuck?) (>= (ja-aframe-num 0) 14.0))
(go target-falling #f)
@ -2777,7 +2763,7 @@
(set! f30-0 (fmax 0.5 (fmin 2.0 (/ 150.0 (the float (target-time-to-ground))))))
(ja-channel-push! 1 (seconds 0.1))
(send-event (ppointer->process (-> self sidekick)) 'matrix 'normal)
(ja-no-eval :group! (-> self draw art-group data 171)
(ja-no-eval :group! jakb-board-get-off-ja
:num! (seek! (ja-aframe 24.0 0) f30-0)
:frame-num (ja-aframe 11.0 0)
)
@ -2883,9 +2869,9 @@
)
:code (behavior ((arg0 symbol))
(let ((v1-2 (ja-group)))
(when (not (and v1-2 (= v1-2 (-> self draw art-group data 151))))
(when (not (and v1-2 (= v1-2 jakb-board-stance-ja)))
(ja-channel-push! 1 (seconds 0.1))
(ja :group! (-> self draw art-group data 151) :num! (identity (ja-aframe 0.0 0)))
(ja :group! jakb-board-stance-ja :num! (identity (ja-aframe 0.0 0)))
)
)
(until #f
@ -3069,11 +3055,11 @@
)
(set! (-> self control mod-surface) *smack-mods*)
(let ((v1-92 (ja-group)))
(when (not (and v1-92 (or (= v1-92 (-> self draw art-group data 158)) (= v1-92 (-> self draw art-group data 165)))))
(when (not (and v1-92 (or (= v1-92 jakb-board-hit-ja) (= v1-92 jakb-board-hit-forward-ja))))
(ja-channel-push! 1 (seconds 0.075))
(if (or (= (-> gp-0 mode) 'shock) (= (-> gp-0 mode) 'shock-red) (= (-> gp-0 mode) 'shockup))
(ja :group! (-> self draw art-group data 189) :num! min)
(ja :group! (-> self draw art-group data 158) :num! min)
(ja :group! jakb-board-hit-elec-ja :num! min)
(ja :group! jakb-board-hit-ja :num! min)
)
)
)

View File

@ -116,10 +116,10 @@
(ja-channel-push! 1 (seconds 0.1))
(cond
(arg0
(ja :group! (-> self draw art-group data 4) :num! max)
(ja :group! board-close-ja :num! max)
)
(else
(ja-no-eval :group! (-> self draw art-group data 4) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! board-close-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -178,7 +178,7 @@
:code (behavior ()
(set! (-> self draw shadow) (-> self shadow-backup))
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 3) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! board-open-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))

View File

@ -18,18 +18,18 @@
(cond
((= gp-0 2)
(if (logtest? (-> self game features) (game-feature gun-upgrade-speed))
(set! (-> self control unknown-word04) (the-as uint (-> self draw art-group data 309)))
(set! (-> self control unknown-word04) (the-as uint (-> self draw art-group data 256)))
(set! (-> self control unknown-word04) (the-as uint jakb-gun-red-fire-fast-ja))
(set! (-> self control unknown-word04) (the-as uint jakb-gun-red-fire-ja))
)
)
((= gp-0 4)
(set! (-> self control unknown-word04) (the-as uint (-> self draw art-group data 259)))
(set! (-> self control unknown-word04) (the-as uint jakb-gun-dark-fire-ja))
)
((= gp-0 1)
(set! (-> self control unknown-word04) (the-as uint (-> self draw art-group data 246)))
(set! (-> self control unknown-word04) (the-as uint jakb-gun-yellow-fire-low-ja))
)
((= gp-0 3)
(set! (-> self control unknown-word04) (the-as uint (-> self draw art-group data 258)))
(set! (-> self control unknown-word04) (the-as uint jakb-gun-blue-fire-single-ja))
)
)
)
@ -118,10 +118,10 @@
:code (behavior ()
(local-vars (v1-232 object))
(let ((gp-0 (-> self skel top-anim frame-targ)))
(when (or (= gp-0 (-> self draw art-group data 263))
(= gp-0 (-> self draw art-group data 265))
(= gp-0 (-> self draw art-group data 266))
(= gp-0 (-> self draw art-group data 264))
(when (or (= gp-0 jakb-gun-red-takeout-ja)
(= gp-0 jakb-gun-yellow-takeout-ja)
(= gp-0 jakb-gun-blue-takeout-ja)
(= gp-0 jakb-gun-dark-takeout-ja)
)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! gp-0 :num! (seek!) :frame-num 0.0)
@ -135,16 +135,16 @@
(let* ((v1-33 (-> self gun gun-type))
(gp-1 (cond
((= v1-33 (pickup-type eco-blue))
(-> self draw art-group data 255)
jakb-gun-stance-blue-ja
)
((= v1-33 (pickup-type eco-yellow))
(-> self draw art-group data 254)
jakb-gun-stance-yellow-ja
)
((= v1-33 (pickup-type eco-dark))
(-> self draw art-group data 253)
jakb-gun-stance-dark-ja
)
(else
(-> self draw art-group data 244)
jakb-gun-stance-ja
)
)
)
@ -155,11 +155,11 @@
(else
(let ((v1-50 (ja-group)))
(cond
((and (and v1-50 (or (= v1-50 (-> self draw art-group data 244)) (= v1-50 (-> self draw art-group data 253))))
(or (= gp-1 (-> self draw art-group data 244)) (= gp-1 (-> self draw art-group data 253)))
((and (and v1-50 (or (= v1-50 jakb-gun-stance-ja) (= v1-50 jakb-gun-stance-dark-ja)))
(or (= gp-1 jakb-gun-stance-ja) (= gp-1 jakb-gun-stance-dark-ja))
)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 269) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! jakb-gun-transformation-twirl-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -168,12 +168,12 @@
(set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim gp-1))
)
((let ((v1-89 (ja-group)))
(and (and v1-89 (or (= v1-89 (-> self draw art-group data 244)) (= v1-89 (-> self draw art-group data 253))))
(or (= gp-1 (-> self draw art-group data 254)) (= gp-1 (-> self draw art-group data 255)))
(and (and v1-89 (or (= v1-89 jakb-gun-stance-ja) (= v1-89 jakb-gun-stance-dark-ja)))
(or (= gp-1 jakb-gun-stance-yellow-ja) (= gp-1 jakb-gun-stance-blue-ja))
)
)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 270) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! jakb-gun-front-to-side-hop-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -182,12 +182,12 @@
(set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim gp-1))
)
((let ((v1-129 (ja-group)))
(and (and v1-129 (or (= v1-129 (-> self draw art-group data 254)) (= v1-129 (-> self draw art-group data 255))))
(or (= gp-1 (-> self draw art-group data 244)) (= gp-1 (-> self draw art-group data 253)))
(and (and v1-129 (or (= v1-129 jakb-gun-stance-yellow-ja) (= v1-129 jakb-gun-stance-blue-ja)))
(or (= gp-1 jakb-gun-stance-ja) (= gp-1 jakb-gun-stance-dark-ja))
)
)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 268) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! jakb-gun-side-to-front-hop-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -196,12 +196,12 @@
(set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim gp-1))
)
((let ((v1-169 (ja-group)))
(and (and v1-169 (or (= v1-169 (-> self draw art-group data 254)) (= v1-169 (-> self draw art-group data 255))))
(or (= gp-1 (-> self draw art-group data 255)) (= gp-1 (-> self draw art-group data 254)))
(and (and v1-169 (or (= v1-169 jakb-gun-stance-yellow-ja) (= v1-169 jakb-gun-stance-blue-ja)))
(or (= gp-1 jakb-gun-stance-blue-ja) (= gp-1 jakb-gun-stance-yellow-ja))
)
)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! (-> self draw art-group data 252) :num! (seek!) :frame-num 0.0)
(ja-no-eval :group! jakb-gun-blue-to-yellow-ja :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
@ -227,7 +227,7 @@
(cond
((not (-> self control unknown-spool-anim00))
)
((= (-> self control unknown-spool-anim00) (-> self draw art-group data 259))
((= (-> self control unknown-spool-anim00) jakb-gun-dark-fire-ja)
(ja-channel-push! 1 0)
(ja :group! (-> self control unknown-spool-anim00))
(suspend)
@ -236,7 +236,7 @@
(until (not v1-232)
(let ((v1-231 (get-channel (-> self skel top-anim) 0)))
(b! (not v1-231) cfg-101 :likely-delay (set! v1-232 v1-231))
(let ((a1-30 (= (-> v1-231 frame-group) (-> self draw art-group data 259))))
(let ((a1-30 (= (-> v1-231 frame-group) jakb-gun-dark-fire-ja)))
(b! (not a1-30) cfg-101 :likely-delay (set! v1-232 a1-30))
)
(let ((a0-74 (-> self skel root-channel 0)))
@ -268,10 +268,7 @@
)
(let ((gp-2 (-> self skel top-anim frame-targ)))
(cond
((or (= gp-2 (-> self draw art-group data 263))
(= gp-2 (-> self draw art-group data 265))
(= gp-2 (-> self draw art-group data 264))
)
((or (= gp-2 jakb-gun-red-takeout-ja) (= gp-2 jakb-gun-yellow-takeout-ja) (= gp-2 jakb-gun-dark-takeout-ja))
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! gp-2 :num! (seek! 0.0) :frame-num max)
(until (ja-done? 0)
@ -279,7 +276,7 @@
(ja :num! (seek! 0.0))
)
)
((= gp-2 (-> self draw art-group data 266))
((= gp-2 jakb-gun-blue-takeout-ja)
(ja-channel-push! 1 (seconds 0.1))
(ja-no-eval :group! gp-2 :num! (seek! 0.0) :frame-num (ja-aframe -34.0 0))
(until (ja-done? 0)

Some files were not shown because too many files have changed in this diff Show More