mirror of
https://github.com/open-goal/jak-project
synced 2026-07-07 14:13:45 -04:00
[decompiler] new features + fixes, + other jak2 fixes (#2796)
Fixes empty boxed arrays of strings breaking some decomp (`ctywide-speech` and `race-info`). Adds `decomp-as` tag to decompiler types so that the static data decompiler can use macros like `meters` and `seconds` on fields that aren't of type `meters` or `time-frame`. Adds `override` tag to decompiler types which overrides the type of field with that name. The type must be a child type of the original field's type (or the same type, but why would you do this?). Fixes the camera being offset for `drillmtn` after loading `palout` once. This is a huge refactor sadly.
This commit is contained in:
@@ -913,6 +913,17 @@ bool StructureType::lookup_field(const std::string& name, Field* out) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void StructureType::override_field_type(const std::string& field_name, const TypeSpec& new_type) {
|
||||
int i = 0;
|
||||
for (auto& x : m_fields) {
|
||||
if (x.name() == field_name) {
|
||||
x.set_override_type(new_type);
|
||||
m_overriden_fields.push_back(i);
|
||||
}
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////
|
||||
// BasicType
|
||||
/////////////////
|
||||
@@ -1035,7 +1046,9 @@ BitFieldType::BitFieldType(std::string parent, std::string name, int size, bool
|
||||
bool BitFieldType::lookup_field(const std::string& name, BitField* out) const {
|
||||
for (auto& field : m_fields) {
|
||||
if (field.name() == name) {
|
||||
*out = field;
|
||||
if (out) {
|
||||
*out = field;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,9 +222,14 @@ class Field {
|
||||
void set_dynamic();
|
||||
void set_array(int size);
|
||||
void set_inline();
|
||||
void set_override_type(const TypeSpec& new_type) {
|
||||
m_type = new_type;
|
||||
m_override_type = true;
|
||||
}
|
||||
void mark_as_user_placed() { m_placed_by_user = true; }
|
||||
std::string print() const;
|
||||
const TypeSpec& type() const { return m_type; }
|
||||
const std::optional<TypeSpec> decomp_as_type() const { return m_decomp_as_ts; }
|
||||
TypeSpec& type() { return m_type; }
|
||||
bool is_inline() const { return m_inline; }
|
||||
bool is_array() const { return m_array; }
|
||||
@@ -249,6 +254,7 @@ class Field {
|
||||
|
||||
double field_score() const { return m_field_score; }
|
||||
void set_field_score(double value) { m_field_score = value; }
|
||||
void set_decomp_as_ts(const TypeSpec& ts) { m_decomp_as_ts = ts; }
|
||||
|
||||
private:
|
||||
friend class TypeSystem;
|
||||
@@ -258,6 +264,7 @@ class Field {
|
||||
|
||||
std::string m_name;
|
||||
TypeSpec m_type;
|
||||
bool m_override_type = false;
|
||||
int m_offset = -1;
|
||||
bool m_inline =
|
||||
false; // does not make sense if m_type is value, and not an array and not dynamic
|
||||
@@ -269,6 +276,8 @@ class Field {
|
||||
bool m_placed_by_user = false; // was this field placed manually by the user?
|
||||
|
||||
double m_field_score = 0.;
|
||||
|
||||
std::optional<TypeSpec> m_decomp_as_ts = std::nullopt;
|
||||
};
|
||||
|
||||
class StructureType : public ReferenceType {
|
||||
@@ -282,6 +291,7 @@ class StructureType : public ReferenceType {
|
||||
std::string print() const override;
|
||||
void inherit(StructureType* parent);
|
||||
const std::vector<Field>& fields() const { return m_fields; }
|
||||
const std::vector<int>& override_fields() const { return m_overriden_fields; }
|
||||
bool operator==(const Type& other) const override;
|
||||
std::string diff_impl(const Type& other) const override;
|
||||
std::string diff_structure_common(const StructureType& other) const;
|
||||
@@ -302,6 +312,7 @@ class StructureType : public ReferenceType {
|
||||
void set_allow_misalign(bool misalign) { m_allow_misalign = misalign; }
|
||||
void set_gen_inspect(bool gen_inspect) { m_generate_inspect = gen_inspect; }
|
||||
int size() const { return m_size_in_mem; }
|
||||
void override_field_type(const std::string& field_name, const TypeSpec& new_type);
|
||||
|
||||
protected:
|
||||
friend class TypeSystem;
|
||||
@@ -317,6 +328,7 @@ class StructureType : public ReferenceType {
|
||||
size_t first_unique_field_idx() const { return m_idx_of_first_unique_field; }
|
||||
|
||||
std::vector<Field> m_fields;
|
||||
std::vector<int> m_overriden_fields;
|
||||
bool m_dynamic = false;
|
||||
int m_size_in_mem = 0;
|
||||
bool m_pack = false;
|
||||
|
||||
@@ -951,7 +951,8 @@ int TypeSystem::add_field_to_type(StructureType* type,
|
||||
int array_size,
|
||||
int offset_override,
|
||||
bool skip_in_static_decomp,
|
||||
double score) {
|
||||
double score,
|
||||
const std::optional<TypeSpec> decomp_as_ts) {
|
||||
if (type->lookup_field(field_name, nullptr)) {
|
||||
throw_typesystem_error("Type {} already has a field named {}\n", type->get_name(), field_name);
|
||||
}
|
||||
@@ -993,6 +994,9 @@ int TypeSystem::add_field_to_type(StructureType* type,
|
||||
field.set_skip_in_static_decomp();
|
||||
}
|
||||
field.set_field_score(score);
|
||||
if (decomp_as_ts) {
|
||||
field.set_decomp_as_ts(*decomp_as_ts);
|
||||
}
|
||||
|
||||
int after_field = offset + get_size_in_type(field);
|
||||
if (type->get_size_in_memory() < after_field) {
|
||||
@@ -2006,9 +2010,18 @@ std::string TypeSystem::generate_deftype_for_structure(const StructureType* st)
|
||||
|
||||
const std::string inline_string = ":inline";
|
||||
const std::string dynamic_string = ":dynamic";
|
||||
const std::string user_offset_string = ":offset xxx";
|
||||
bool has_offset_assert = false;
|
||||
|
||||
// calculate longest strings needed, for basic linting
|
||||
|
||||
// override fields
|
||||
for (auto i : st->override_fields()) {
|
||||
const auto& field = st->fields().at(i);
|
||||
longest_field_name = std::max(longest_field_name, int(field.name().size()));
|
||||
longest_type_name = std::max(longest_type_name, int(field.type().print().size()));
|
||||
}
|
||||
|
||||
// normal fields
|
||||
for (size_t i = st->first_unique_field_idx(); i < st->fields().size(); i++) {
|
||||
const auto& field = st->fields().at(i);
|
||||
longest_field_name = std::max(longest_field_name, int(field.name().size()));
|
||||
@@ -2040,6 +2053,21 @@ std::string TypeSystem::generate_deftype_for_structure(const StructureType* st)
|
||||
longest_mods = std::max(longest_mods, mods);
|
||||
}
|
||||
|
||||
// now actually write out the fields
|
||||
|
||||
// override fields first
|
||||
for (auto i : st->override_fields()) {
|
||||
const auto& field = st->fields().at(i);
|
||||
result += "(";
|
||||
result += field.name();
|
||||
result.append(1 + (longest_field_name - int(field.name().size())), ' ');
|
||||
result += field.type().print();
|
||||
result.append(1 + (longest_type_name - int(field.type().print().size())), ' ');
|
||||
result.append(1 + longest_mods, ' ');
|
||||
result.append(":override)\n ");
|
||||
}
|
||||
|
||||
// now normal fields
|
||||
for (size_t i = st->first_unique_field_idx(); i < st->fields().size(); i++) {
|
||||
const auto& field = st->fields().at(i);
|
||||
result += "(";
|
||||
|
||||
@@ -216,7 +216,8 @@ class TypeSystem {
|
||||
int array_size = -1,
|
||||
int offset_override = -1,
|
||||
bool skip_in_static_decomp = false,
|
||||
double score = 0.0);
|
||||
double score = 0.0,
|
||||
const std::optional<TypeSpec> decomp_as_ts = std::nullopt);
|
||||
|
||||
void add_builtin_types(GameVersion version);
|
||||
|
||||
|
||||
@@ -103,6 +103,9 @@ void add_field(StructureType* structure,
|
||||
int offset_assert = -1;
|
||||
double score = 0;
|
||||
bool skip_in_decomp = false;
|
||||
std::optional<TypeSpec> decomp_as_ts = std::nullopt;
|
||||
Field override_field;
|
||||
bool override = false;
|
||||
|
||||
if (!rest->is_empty_list()) {
|
||||
if (car(rest).is_int()) {
|
||||
@@ -125,6 +128,11 @@ void add_field(StructureType* structure,
|
||||
} else if (opt_name == ":offset") {
|
||||
offset_override = get_int(car(rest));
|
||||
rest = cdr(rest);
|
||||
} else if (opt_name == ":override") {
|
||||
override = true;
|
||||
if (!structure->lookup_field(name, &override_field)) {
|
||||
throw std::runtime_error(fmt::format("Field {} not found to override", name));
|
||||
}
|
||||
} else if (opt_name == ":overlay-at") {
|
||||
auto field_name = symbol_string(car(rest));
|
||||
Field overlay_field;
|
||||
@@ -137,6 +145,9 @@ void add_field(StructureType* structure,
|
||||
} else if (opt_name == ":score") {
|
||||
score = get_float(car(rest));
|
||||
rest = cdr(rest);
|
||||
} else if (opt_name == ":decomp-as") {
|
||||
decomp_as_ts = TypeSpec(symbol_string(car(rest)));
|
||||
rest = cdr(rest);
|
||||
} else if (opt_name == ":offset-assert") {
|
||||
offset_assert = get_int(car(rest));
|
||||
if (offset_assert == -1) {
|
||||
@@ -151,11 +162,30 @@ void add_field(StructureType* structure,
|
||||
}
|
||||
}
|
||||
|
||||
int actual_offset = ts->add_field_to_type(structure, name, type, is_inline, is_dynamic,
|
||||
array_size, offset_override, skip_in_decomp, score);
|
||||
if (offset_assert != -1 && actual_offset != offset_assert) {
|
||||
throw std::runtime_error("Field " + name + " was placed at " + std::to_string(actual_offset) +
|
||||
" but offset-assert was set to " + std::to_string(offset_assert));
|
||||
if (override && name == override_field.name()) {
|
||||
// override field, e.g. (root collide-shape :overlay-at root)
|
||||
// does not add new field, merely rewrites inherited one
|
||||
if (!ts->tc(override_field.type(), type)) {
|
||||
throw std::runtime_error(
|
||||
fmt::format("Wanted to override field {}, but type {} isn't child of {}",
|
||||
override_field.name(), type.print(), override_field.type().print()));
|
||||
}
|
||||
if (override_field.is_inline() != is_inline || override_field.is_dynamic() != is_dynamic ||
|
||||
(array_size != -1 && override_field.array_size() != array_size)) {
|
||||
throw std::runtime_error(
|
||||
fmt::format("Wanted to override field {}, but some parameters were different",
|
||||
override_field.name()));
|
||||
}
|
||||
structure->override_field_type(override_field.name(), type);
|
||||
} else {
|
||||
// new unique field
|
||||
int actual_offset =
|
||||
ts->add_field_to_type(structure, name, type, is_inline, is_dynamic, array_size,
|
||||
offset_override, skip_in_decomp, score, decomp_as_ts);
|
||||
if (offset_assert != -1 && actual_offset != offset_assert) {
|
||||
throw std::runtime_error("Field " + name + " was placed at " + std::to_string(actual_offset) +
|
||||
" but offset-assert was set to " + std::to_string(offset_assert));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -739,7 +769,7 @@ DeftypeResult parse_deftype(const goos::Object& deftype,
|
||||
parent_type_name));
|
||||
}
|
||||
new_type->inherit(pto);
|
||||
ts->forward_declare_type_as(name, "basic");
|
||||
ts->forward_declare_type_as(name, pto->get_name());
|
||||
auto sr =
|
||||
parse_structure_def(new_type.get(), ts, field_list_obj, options_obj, constants_to_use);
|
||||
result.flags = sr.flags;
|
||||
@@ -769,7 +799,7 @@ DeftypeResult parse_deftype(const goos::Object& deftype,
|
||||
auto pto = dynamic_cast<StructureType*>(ts->lookup_type(parent_type));
|
||||
ASSERT(pto);
|
||||
new_type->inherit(pto);
|
||||
ts->forward_declare_type_as(name, "structure");
|
||||
ts->forward_declare_type_as(name, pto->get_name());
|
||||
auto sr =
|
||||
parse_structure_def(new_type.get(), ts, field_list_obj, options_obj, constants_to_use);
|
||||
result.flags = sr.flags;
|
||||
|
||||
@@ -914,8 +914,25 @@ bool LinkedObjectFile::is_string(int seg, int byte_idx) const {
|
||||
if (type_tag_ptr < 0 || size_t(type_tag_ptr) >= words_by_seg.at(seg).size() * 4) {
|
||||
return false;
|
||||
}
|
||||
auto& type_word = words_by_seg.at(seg).at(type_tag_ptr / 4);
|
||||
return type_word.kind() == LinkedWord::TYPE_PTR && type_word.symbol_name() == "string";
|
||||
int type_word_idx = type_tag_ptr / 4;
|
||||
auto& type_word = words_by_seg.at(seg).at(type_word_idx);
|
||||
if (type_word.kind() == LinkedWord::TYPE_PTR && type_word.symbol_name() == "string") {
|
||||
// could be a string basic
|
||||
// check if we're not right after a zero-length string array.
|
||||
if (type_word_idx >= 3) {
|
||||
auto& arr_type_word = words_by_seg.at(seg).at(type_word_idx - 3);
|
||||
auto& arr_len_word = words_by_seg.at(seg).at(type_word_idx - 2);
|
||||
auto& arr_alen_word = words_by_seg.at(seg).at(type_word_idx - 1);
|
||||
if (arr_type_word.kind() == LinkedWord::TYPE_PTR && arr_type_word.symbol_name() == "array" &&
|
||||
arr_len_word.kind() == LinkedWord::PLAIN_DATA && arr_len_word.data == 0 &&
|
||||
arr_alen_word.kind() == LinkedWord::PLAIN_DATA && arr_alen_word.data == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// seems good.
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
||||
+255
-139
File diff suppressed because it is too large
Load Diff
@@ -655,7 +655,7 @@
|
||||
"target-mech": [
|
||||
[7, "(function none :behavior target)"],
|
||||
[8, "(function none :behavior mech)"],
|
||||
[9, "(function none :behavior target)"],
|
||||
[9, "(function none :behavior manipy)"],
|
||||
[18, "(function surface object surface int none :behavior target)"],
|
||||
[19, "(function surface object surface int none :behavior target)"]
|
||||
],
|
||||
|
||||
@@ -2503,14 +2503,6 @@
|
||||
[66, "v1", "(pointer int32)"]
|
||||
],
|
||||
"(code othercam-running)": [[[2, 65], "s2", "process-drawable"]],
|
||||
"hud-ring-cell-init-by-other": [
|
||||
[36, "a0", "progress"],
|
||||
[45, "v1", "progress"],
|
||||
[56, "a0", "progress"],
|
||||
[132, "a1", "progress"],
|
||||
[159, "a1", "progress"],
|
||||
[178, "a1", "progress"]
|
||||
],
|
||||
"(enter othercam-running)": [[[50, 60], "gp", "process-drawable"]],
|
||||
"(post idle hud-ring-cell)": [
|
||||
[8, "a1", "progress"],
|
||||
@@ -2595,31 +2587,7 @@
|
||||
"target-board-real-post": [[346, "v0", "sound-rpc-set-param"]],
|
||||
"target-board-effect": [[334, "v0", "sound-rpc-set-param"]],
|
||||
"target-board-handler": [[123, "a0", "process"]],
|
||||
"(trans target-flop-hit-ground)": [
|
||||
[52, "v1", "fact-info-target"],
|
||||
[58, "v1", "fact-info-target"]
|
||||
],
|
||||
"(code target-flop)": [[32, "v1", "art-joint-anim"]],
|
||||
"(trans target-flop)": [
|
||||
[73, "v1", "fact-info-target"],
|
||||
[79, "v1", "fact-info-target"],
|
||||
[108, "v1", "fact-info-target"],
|
||||
[114, "v1", "fact-info-target"],
|
||||
[187, "v1", "fact-info-target"],
|
||||
[193, "v1", "fact-info-target"]
|
||||
],
|
||||
"(enter target-flop)": [
|
||||
[2, "v1", "fact-info-target"],
|
||||
[8, "v1", "fact-info-target"]
|
||||
],
|
||||
"(trans target-attack-uppercut-jump)": [
|
||||
[183, "v1", "fact-info-target"],
|
||||
[189, "v1", "fact-info-target"]
|
||||
],
|
||||
"(trans target-attack-air)": [
|
||||
[83, "v1", "fact-info-target"],
|
||||
[89, "v1", "fact-info-target"]
|
||||
],
|
||||
"(code target-running-attack)": [
|
||||
[115, "gp", "art-joint-anim"],
|
||||
[398, "v1", "art-joint-anim"],
|
||||
@@ -2652,16 +2620,8 @@
|
||||
"(enter target-double-jump)": [[15, "v1", "vector"]],
|
||||
"(enter target-jump)": [[42, "v1", "vector"]],
|
||||
"(enter target-high-jump)": [[21, "v1", "vector"]],
|
||||
"(code target-attack)": [
|
||||
[145, "gp", "art-joint-anim"],
|
||||
[177, "v1", "fact-info-target"],
|
||||
[183, "v1", "fact-info-target"]
|
||||
],
|
||||
"(code target-attack)": [[145, "gp", "art-joint-anim"]],
|
||||
"(event target-running-attack)": [[48, "v1", "target"]],
|
||||
"(trans target-running-attack)": [
|
||||
[211, "v1", "fact-info-target"],
|
||||
[217, "v1", "fact-info-target"]
|
||||
],
|
||||
"target-gun-end-mode": [[58, "v0", "sound-rpc-set-param"]],
|
||||
"target-board-physics": [[167, "v0", "sound-rpc-set-param"]],
|
||||
"clone-anim-once": [
|
||||
@@ -3008,29 +2968,7 @@
|
||||
[46, "a0", "fact-info-target"]
|
||||
],
|
||||
"want-to-darkjak?": [[53, "a0", "fact-info-target"]],
|
||||
"target-powerup-process": [
|
||||
[235, "v0", "sound-rpc-set-param"],
|
||||
[253, "v1", "fact-info-target"],
|
||||
[259, "a0", "fact-info-target"],
|
||||
[262, "a0", "fact-info-target"],
|
||||
[268, "v1", "fact-info-target"],
|
||||
[283, "v1", "fact-info-target"],
|
||||
[313, "a0", "fact-info-target"],
|
||||
[366, "v1", "fact-info-target"],
|
||||
[390, "v1", "fact-info-target"],
|
||||
[407, "v1", "fact-info-target"]
|
||||
],
|
||||
"target-eco-process": [
|
||||
[1, "v1", "fact-info-target"],
|
||||
[11, "a0", "fact-info-target"],
|
||||
[19, "v1", "fact-info-target"],
|
||||
[21, "v1", "fact-info-target"],
|
||||
[14, "a0", "fact-info-target"],
|
||||
[54, "v1", "fact-info-target"],
|
||||
[77, "v1", "fact-info-target"],
|
||||
[82, "a3", "fact-info-target"],
|
||||
[97, "v1", "fact-info-target"]
|
||||
],
|
||||
"target-powerup-process": [[235, "v0", "sound-rpc-set-param"]],
|
||||
"cloud-track": [
|
||||
[[19, 83], "s1", "handle"],
|
||||
[[29, 116], "s2", "handle"]
|
||||
@@ -3089,7 +3027,6 @@
|
||||
[231, "a0", "region-prim-area"],
|
||||
[238, "v1", "region-prim-area"]
|
||||
],
|
||||
"target-danger-set!": [[823, "v1", "fact-info-target"]],
|
||||
"(method 26 target)": [[23, "v0", "float"]],
|
||||
"(method 11 attack-info)": [
|
||||
[[118, 130], "v1", "process-drawable"],
|
||||
@@ -3097,10 +3034,6 @@
|
||||
],
|
||||
"(method 10 attack-info)": [[13, "a1", "collide-shape"]],
|
||||
"target-log-attack": [[47, "a3", "attack-info"]],
|
||||
"can-hands?": [
|
||||
[39, "a0", "fact-info-target"],
|
||||
[45, "a0", "fact-info-target"]
|
||||
],
|
||||
"target-attacked": [
|
||||
[56, "v1", "fact-info-target"],
|
||||
[66, "v1", "fact-info-target"],
|
||||
@@ -4904,7 +4837,9 @@
|
||||
"(method 10 gem)": [[12, "t9", "(function gem none)"]],
|
||||
"(method 9 fact-info)": [
|
||||
[245, "a0", "process-drawable"],
|
||||
[293, "a0", "process-drawable"]
|
||||
[293, "a0", "process-drawable"],
|
||||
[187, "v1", "pickup-type"],
|
||||
[[174, 309], "s2", "pickup-type"]
|
||||
],
|
||||
"(method 179 fodder)": [[[16, 20], "a0", "process-focusable"]],
|
||||
"(code notice fodder)": [
|
||||
|
||||
@@ -4331,5 +4331,15 @@
|
||||
},
|
||||
"cloud-texture-anim-layer-func": {
|
||||
"args": ["dma-buf", "fbp-to-draw", "width", "height", "layer", "time"]
|
||||
},
|
||||
"(anon-function 9 target-mech)": {
|
||||
"vars": {
|
||||
"a0-0": ["a0-0", "(pointer target)"]
|
||||
}
|
||||
},
|
||||
"(method 9 fact-info)": {
|
||||
"vars": {
|
||||
"s2-0": ["s2-0", "pickup-type"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1235,8 +1235,8 @@ goos::Object decompile_structure(const TypeSpec& type,
|
||||
fmt::format("Failed to decompile: looking at field {} (from {}) with type {}",
|
||||
field.name(), type_info->get_name(), field.type().print()));
|
||||
}
|
||||
field_defs_out.emplace_back(field.name(),
|
||||
decompile_value(field.type(), bytes_out, ts));
|
||||
field_defs_out.emplace_back(field.name(), decompile_value(field.type(), bytes_out, ts,
|
||||
field.decomp_as_type()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1517,7 +1517,8 @@ goos::Object bitfield_defs_print(const TypeSpec& type,
|
||||
|
||||
goos::Object decompile_value(const TypeSpec& type,
|
||||
const std::vector<u8>& bytes,
|
||||
const TypeSystem& ts) {
|
||||
const TypeSystem& ts,
|
||||
const std::optional<TypeSpec> decomp_as_type) {
|
||||
auto as_enum = ts.try_enum_lookup(type);
|
||||
if (as_enum) {
|
||||
ASSERT((int)bytes.size() == as_enum->get_load_size());
|
||||
@@ -1566,93 +1567,107 @@ goos::Object decompile_value(const TypeSpec& type,
|
||||
}
|
||||
}
|
||||
|
||||
const auto& output_type = decomp_as_type ? *decomp_as_type : type;
|
||||
// try as common integer types:
|
||||
auto print_int = [](s64 val, bool is_signed, const TypeSpec& ts, s64 hex_cutoff = 100) {
|
||||
if (ts == TypeSpec("seconds") || ts == TypeSpec("time-frame")) {
|
||||
return pretty_print::to_symbol(
|
||||
fmt::format("(seconds {})", fixed_point_to_string(val, TICKS_PER_SECOND)));
|
||||
} else if (!is_signed || val > hex_cutoff) {
|
||||
return pretty_print::to_symbol(fmt::format("#x{:x}", u64(val)));
|
||||
} else {
|
||||
return pretty_print::to_symbol(fmt::format("{}", val));
|
||||
}
|
||||
};
|
||||
auto print_float = [](double val, const TypeSpec& ts) {
|
||||
if (ts == TypeSpec("meters")) {
|
||||
double meters = val / METER_LENGTH;
|
||||
auto rep = pretty_print::float_representation(meters);
|
||||
if (rep.print().find("the-as") != std::string::npos) {
|
||||
return rep;
|
||||
} else {
|
||||
return pretty_print::to_symbol(fmt::format("(meters {})", meters_to_string(val)));
|
||||
}
|
||||
} else if (ts == TypeSpec("degrees")) {
|
||||
double degrees = val / DEGREES_LENGTH;
|
||||
auto rep = pretty_print::float_representation(degrees);
|
||||
if (rep.print().find("the-as") != std::string::npos) {
|
||||
return rep;
|
||||
} else {
|
||||
return pretty_print::to_symbol(fmt::format("(degrees {})", degrees_to_string(val)));
|
||||
}
|
||||
} else if (ts == TypeSpec("fsec")) {
|
||||
double seconds = val / TICKS_PER_SECOND;
|
||||
auto rep = pretty_print::float_representation(seconds);
|
||||
if (rep.print().find("the-as") != std::string::npos) {
|
||||
return rep;
|
||||
} else {
|
||||
return pretty_print::to_symbol(fmt::format("(fsec {})", float_to_string(seconds, false)));
|
||||
}
|
||||
} else {
|
||||
return pretty_print::float_representation(val);
|
||||
}
|
||||
};
|
||||
if (ts.tc(TypeSpec("uint32"), type)) {
|
||||
ASSERT(bytes.size() == 4);
|
||||
u32 value;
|
||||
memcpy(&value, bytes.data(), 4);
|
||||
return pretty_print::to_symbol(fmt::format("#x{:x}", u64(value)));
|
||||
return print_int(value, false, output_type);
|
||||
} else if (ts.tc(TypeSpec("int32"), type)) {
|
||||
ASSERT(bytes.size() == 4);
|
||||
s32 value;
|
||||
memcpy(&value, bytes.data(), 4);
|
||||
if (value > 100) {
|
||||
return pretty_print::to_symbol(fmt::format("#x{:x}", value));
|
||||
} else {
|
||||
return pretty_print::to_symbol(fmt::format("{}", value));
|
||||
}
|
||||
return print_int(value, true, output_type);
|
||||
} else if (ts.tc(TypeSpec("uint16"), type)) {
|
||||
ASSERT(bytes.size() == 2);
|
||||
u16 value;
|
||||
memcpy(&value, bytes.data(), 2);
|
||||
return pretty_print::to_symbol(fmt::format("#x{:x}", u64(value)));
|
||||
return print_int(value, false, output_type);
|
||||
} else if (ts.tc(TypeSpec("int16"), type)) {
|
||||
ASSERT(bytes.size() == 2);
|
||||
s16 value;
|
||||
memcpy(&value, bytes.data(), 2);
|
||||
if (value > 100) {
|
||||
return pretty_print::to_symbol(fmt::format("#x{:x}", value));
|
||||
} else {
|
||||
return pretty_print::to_symbol(fmt::format("{}", value));
|
||||
}
|
||||
} else if (ts.tc(TypeSpec("int8"), type)) {
|
||||
ASSERT(bytes.size() == 1);
|
||||
s8 value;
|
||||
memcpy(&value, bytes.data(), 1);
|
||||
if (value > 5) {
|
||||
return pretty_print::to_symbol(fmt::format("#x{:x}", value));
|
||||
} else {
|
||||
return pretty_print::to_symbol(fmt::format("{}", value));
|
||||
}
|
||||
} else if (type == TypeSpec("seconds") || type == TypeSpec("time-frame")) {
|
||||
ASSERT(bytes.size() == 8);
|
||||
s64 value;
|
||||
memcpy(&value, bytes.data(), 8);
|
||||
|
||||
return pretty_print::to_symbol(
|
||||
fmt::format("(seconds {})", fixed_point_to_string(value, TICKS_PER_SECOND)));
|
||||
} else if (ts.tc(TypeSpec("uint64"), type)) {
|
||||
ASSERT(bytes.size() == 8);
|
||||
u64 value;
|
||||
memcpy(&value, bytes.data(), 8);
|
||||
return pretty_print::to_symbol(fmt::format("#x{:x}", value));
|
||||
} else if (ts.tc(TypeSpec("int64"), type)) {
|
||||
ASSERT(bytes.size() == 8);
|
||||
s64 value;
|
||||
memcpy(&value, bytes.data(), 8);
|
||||
if (value > 100) {
|
||||
return pretty_print::to_symbol(fmt::format("#x{:x}", value));
|
||||
} else {
|
||||
return pretty_print::to_symbol(fmt::format("{}", value));
|
||||
}
|
||||
} else if (type == TypeSpec("meters")) {
|
||||
ASSERT(bytes.size() == 4);
|
||||
float value;
|
||||
memcpy(&value, bytes.data(), 4);
|
||||
double meters = (double)value / METER_LENGTH;
|
||||
auto rep = pretty_print::float_representation(meters);
|
||||
if (rep.print().find("the-as") != std::string::npos) {
|
||||
return rep;
|
||||
// return pretty_print::build_list("the-as", "meters", rep);
|
||||
} else {
|
||||
return pretty_print::to_symbol(fmt::format("(meters {})", meters_to_string(value)));
|
||||
}
|
||||
} else if (type == TypeSpec("degrees")) {
|
||||
ASSERT(bytes.size() == 4);
|
||||
float value;
|
||||
memcpy(&value, bytes.data(), 4);
|
||||
double degrees = (double)value / DEGREES_LENGTH;
|
||||
return pretty_print::build_list("degrees", pretty_print::float_representation(degrees));
|
||||
} else if (ts.tc(TypeSpec("float"), type)) {
|
||||
ASSERT(bytes.size() == 4);
|
||||
float value;
|
||||
memcpy(&value, bytes.data(), 4);
|
||||
return pretty_print::float_representation(value);
|
||||
return print_int(value, true, output_type);
|
||||
} else if (ts.tc(TypeSpec("uint8"), type)) {
|
||||
ASSERT(bytes.size() == 1);
|
||||
u8 value;
|
||||
memcpy(&value, bytes.data(), 1);
|
||||
return pretty_print::to_symbol(fmt::format("#x{:x}", value));
|
||||
return print_int(value, false, output_type);
|
||||
} else if (ts.tc(TypeSpec("int8"), type)) {
|
||||
ASSERT(bytes.size() == 1);
|
||||
s8 value;
|
||||
memcpy(&value, bytes.data(), 1);
|
||||
return print_int(value, true, output_type);
|
||||
} else if (type == TypeSpec("seconds") || type == TypeSpec("time-frame")) {
|
||||
ASSERT(bytes.size() == 8);
|
||||
s64 value;
|
||||
memcpy(&value, bytes.data(), 8);
|
||||
return print_int(value, false, output_type);
|
||||
} else if (ts.tc(TypeSpec("uint64"), type)) {
|
||||
ASSERT(bytes.size() == 8);
|
||||
u64 value;
|
||||
memcpy(&value, bytes.data(), 8);
|
||||
return print_int(value, false, output_type);
|
||||
} else if (ts.tc(TypeSpec("int64"), type)) {
|
||||
ASSERT(bytes.size() == 8);
|
||||
s64 value;
|
||||
memcpy(&value, bytes.data(), 8);
|
||||
return print_int(value, true, output_type);
|
||||
} else if (type == TypeSpec("meters")) {
|
||||
ASSERT(bytes.size() == 4);
|
||||
float value;
|
||||
memcpy(&value, bytes.data(), 4);
|
||||
return print_float(value, output_type);
|
||||
} else if (type == TypeSpec("degrees")) {
|
||||
ASSERT(bytes.size() == 4);
|
||||
float value;
|
||||
memcpy(&value, bytes.data(), 4);
|
||||
return print_float(value, output_type);
|
||||
} else if (ts.tc(TypeSpec("float"), type)) {
|
||||
ASSERT(bytes.size() == 4);
|
||||
float value;
|
||||
memcpy(&value, bytes.data(), 4);
|
||||
return print_float(value, output_type);
|
||||
} else {
|
||||
throw std::runtime_error(fmt::format("decompile_value failed on a {}", type.print()));
|
||||
}
|
||||
|
||||
@@ -66,7 +66,8 @@ goos::Object decompile_boxed_array(const TypeSpec& type,
|
||||
GameVersion version);
|
||||
goos::Object decompile_value(const TypeSpec& type,
|
||||
const std::vector<u8>& bytes,
|
||||
const TypeSystem& ts);
|
||||
const TypeSystem& ts,
|
||||
const std::optional<TypeSpec> decomp_as_type = std::nullopt);
|
||||
goos::Object decompile_value_array(const TypeSpec& elt_type,
|
||||
const Type* elt_type_info,
|
||||
int length,
|
||||
|
||||
@@ -272,7 +272,7 @@
|
||||
(vf7 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let* ((v1-1 (-> obj root-override trans))
|
||||
(let* ((v1-1 (-> obj root trans))
|
||||
(a1-0 (-> obj tail-pos))
|
||||
(s5-1 (vector-! (new 'stack-no-clear 'vector) v1-1 a1-0))
|
||||
(gp-0 (new 'stack-no-clear 'vector))
|
||||
@@ -353,7 +353,7 @@
|
||||
(t2-0 #f)
|
||||
(t3-0 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-0 trans quad) (-> obj root-override trans quad))
|
||||
(set! (-> t3-0 trans quad) (-> obj root trans quad))
|
||||
((the-as (function object object object object object object object object none) t9-2)
|
||||
a0-3
|
||||
a1-2
|
||||
@@ -391,7 +391,7 @@
|
||||
|
||||
(defmethod made-impact? ashelin-shot ((obj ashelin-shot))
|
||||
"TODO - queries the collision cache, return true/false"
|
||||
(let ((v1-0 (-> obj root-override))
|
||||
(let ((v1-0 (-> obj root))
|
||||
(t1-0 (new 'stack-no-clear 'collide-query))
|
||||
)
|
||||
(let ((a1-0 t1-0))
|
||||
@@ -408,7 +408,7 @@
|
||||
|
||||
(defun ashelin-shot-move ((arg0 ashelin-shot))
|
||||
(projectile-move-fill-line-sphere arg0)
|
||||
(let ((s5-0 (-> arg0 root-override)))
|
||||
(let ((s5-0 (-> arg0 root)))
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector)))
|
||||
(vector-! s4-0 (-> arg0 tail-pos) (-> s5-0 trans))
|
||||
(let ((f0-0 (vector-length s4-0)))
|
||||
@@ -424,7 +424,7 @@
|
||||
)
|
||||
(set! (-> a1-5 quad) (-> s5-0 trans quad))
|
||||
(vector+! a1-5 a1-5 v1-9)
|
||||
(move-to-point! (-> arg0 root-override) a1-5)
|
||||
(move-to-point! (-> arg0 root) a1-5)
|
||||
)
|
||||
(go (the-as (state ashelin) (method-of-object arg0 impact)))
|
||||
)
|
||||
@@ -477,9 +477,9 @@
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 1))
|
||||
(set! (-> s5-0 event-self) 'touched)
|
||||
(set! (-> obj root-override) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(set! (-> obj root-override pat-ignore-mask)
|
||||
(set! (-> obj root pat-ignore-mask)
|
||||
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noproj #x1 :noendlessfall #x1)
|
||||
)
|
||||
(let ((v1-23 (-> obj parent)))
|
||||
@@ -492,7 +492,7 @@
|
||||
(bot-flags attacked)
|
||||
)
|
||||
)
|
||||
(let* ((a0-17 (-> obj root-override))
|
||||
(let* ((a0-17 (-> obj root))
|
||||
(v1-27 (-> a0-17 root-prim))
|
||||
)
|
||||
(countdown (a0-18 (-> a0-17 total-prims))
|
||||
@@ -507,7 +507,7 @@
|
||||
|
||||
(defmethod init-proj-settings! ashelin-shot ((obj ashelin-shot))
|
||||
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc"
|
||||
(set! (-> obj tail-pos quad) (-> obj root-override trans quad))
|
||||
(set! (-> obj tail-pos quad) (-> obj root trans quad))
|
||||
(set! (-> obj attack-mode) 'eco-yellow)
|
||||
(set! (-> obj max-speed) 307200.0)
|
||||
(set! (-> obj move) ashelin-shot-move)
|
||||
|
||||
@@ -323,11 +323,11 @@
|
||||
(cond
|
||||
((< f0-6 f28-0)
|
||||
(if (>= f0-6 f30-0)
|
||||
(quaternion-slerp! (-> self root-override2 quat) (-> gp-0 src-quat) s5-1 (/ (- f0-6 f30-0) (- f28-0 f30-0)))
|
||||
(quaternion-slerp! (-> self root quat) (-> gp-0 src-quat) s5-1 (/ (- f0-6 f30-0) (- f28-0 f30-0)))
|
||||
)
|
||||
)
|
||||
(else
|
||||
(quaternion-copy! (-> self root-override2 quat) s5-1)
|
||||
(quaternion-copy! (-> self root quat) s5-1)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -353,7 +353,7 @@
|
||||
(set! (-> v1-2 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag38) (-> v1-2 enemy-flags))))
|
||||
)
|
||||
(set! (-> v1-2 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag36) (-> v1-2 enemy-flags))))
|
||||
(set! (-> v1-2 nav callback-info) (-> v1-2 enemy-info-override callback-info))
|
||||
(set! (-> v1-2 nav callback-info) (-> v1-2 enemy-info callback-info))
|
||||
)
|
||||
0
|
||||
(let ((v1-5 self))
|
||||
@@ -563,8 +563,8 @@
|
||||
)
|
||||
(let ((gp-0 (-> self nav)))
|
||||
(set! (-> gp-0 target-speed) (lerp-scale
|
||||
(-> self enemy-info-override walk-travel-speed)
|
||||
(-> self enemy-info-override run-travel-speed)
|
||||
(-> self enemy-info walk-travel-speed)
|
||||
(-> self enemy-info run-travel-speed)
|
||||
(-> self focus-info bullseye-xz-dist)
|
||||
81920.0
|
||||
92160.0
|
||||
@@ -625,18 +625,18 @@
|
||||
)
|
||||
:code (behavior ()
|
||||
(ja-channel-push! 1 (seconds 0.2))
|
||||
(let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root-override2 trans) (-> self move-dest))))
|
||||
(let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root trans) (-> self move-dest))))
|
||||
(let ((s5-0 (new 'stack-no-clear 'quaternion))
|
||||
(s4-0 (new 'stack-no-clear 'quaternion))
|
||||
)
|
||||
(quaternion-copy! s5-0 (-> self root-override2 quat))
|
||||
(quaternion-copy! s5-0 (-> self root quat))
|
||||
(quaternion<-rotate-y-vector s4-0 gp-1)
|
||||
(ja-no-eval :group! (-> self draw art-group data 33)
|
||||
:num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 33)) frames num-frames) -1)))
|
||||
:frame-num 0.0
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(quaternion-slerp! (-> self root-override2 quat) s5-0 s4-0 (/ (ja-frame-num 0) (the float (ja-num-frames 0))))
|
||||
(quaternion-slerp! (-> self root quat) s5-0 s4-0 (/ (ja-frame-num 0) (the float (ja-num-frames 0))))
|
||||
(suspend)
|
||||
(ja :num! (seek!))
|
||||
)
|
||||
@@ -649,7 +649,7 @@
|
||||
(set! (-> self attack-id) a0-11)
|
||||
)
|
||||
(countdown (s5-1 2)
|
||||
(vector-! gp-1 (-> self move-dest) (-> self root-override2 trans))
|
||||
(vector-! gp-1 (-> self move-dest) (-> self root trans))
|
||||
(let ((a0-14 (-> self nav state))
|
||||
(v1-33 gp-1)
|
||||
)
|
||||
@@ -669,7 +669,7 @@
|
||||
(set! (-> v1-40 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag38) (-> v1-40 enemy-flags))))
|
||||
)
|
||||
(set! (-> v1-40 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag36) (-> v1-40 enemy-flags))))
|
||||
(set! (-> v1-40 nav callback-info) (-> v1-40 enemy-info-override callback-info))
|
||||
(set! (-> v1-40 nav callback-info) (-> v1-40 enemy-info callback-info))
|
||||
)
|
||||
0
|
||||
(let ((f0-13 (* 1.6153771 (vector-length gp-1))))
|
||||
@@ -691,8 +691,8 @@
|
||||
(set! (-> gp-1 y) 0.0)
|
||||
(vector-normalize! gp-1 1.0)
|
||||
(vector-negate! gp-1 gp-1)
|
||||
(quaternion-set! (-> self root-override2 quat) 0.0 (-> gp-1 x) 0.0 (+ 1.0 (-> gp-1 z)))
|
||||
(quaternion-normalize! (-> self root-override2 quat))
|
||||
(quaternion-set! (-> self root quat) 0.0 (-> gp-1 x) 0.0 (+ 1.0 (-> gp-1 z)))
|
||||
(quaternion-normalize! (-> self root quat))
|
||||
(suspend)
|
||||
(ja :num! (seek! max 1.4))
|
||||
)
|
||||
@@ -767,11 +767,11 @@
|
||||
)
|
||||
:code (behavior ()
|
||||
(ja-channel-push! 1 (seconds 0.2))
|
||||
(let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self move-dest) (-> self root-override2 trans))))
|
||||
(let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self move-dest) (-> self root trans))))
|
||||
(let ((s5-0 (new 'stack-no-clear 'quaternion))
|
||||
(s4-0 (new 'stack-no-clear 'quaternion))
|
||||
)
|
||||
(quaternion-copy! s5-0 (-> self root-override2 quat))
|
||||
(quaternion-copy! s5-0 (-> self root quat))
|
||||
(quaternion<-rotate-y-vector s4-0 gp-1)
|
||||
(quaternion-rotate-y! s4-0 s4-0 -16384.0)
|
||||
(ja-no-eval :group! (-> self draw art-group data 36)
|
||||
@@ -779,7 +779,7 @@
|
||||
:frame-num 0.0
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(quaternion-slerp! (-> self root-override2 quat) s5-0 s4-0 (/ (ja-frame-num 0) (the float (ja-num-frames 0))))
|
||||
(quaternion-slerp! (-> self root quat) s5-0 s4-0 (/ (ja-frame-num 0) (the float (ja-num-frames 0))))
|
||||
(suspend)
|
||||
(ja :num! (seek!))
|
||||
)
|
||||
@@ -810,7 +810,7 @@
|
||||
(set! (-> v1-38 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag38) (-> v1-38 enemy-flags))))
|
||||
)
|
||||
(set! (-> v1-38 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag36) (-> v1-38 enemy-flags))))
|
||||
(set! (-> v1-38 nav callback-info) (-> v1-38 enemy-info-override callback-info))
|
||||
(set! (-> v1-38 nav callback-info) (-> v1-38 enemy-info callback-info))
|
||||
)
|
||||
0
|
||||
(let ((f0-13 (* 1.0714335 (vector-length gp-1))))
|
||||
@@ -832,8 +832,8 @@
|
||||
(set! (-> gp-1 y) 0.0)
|
||||
(vector-normalize! gp-1 1.0)
|
||||
(vector-rotate-around-y! gp-1 gp-1 -16384.0)
|
||||
(quaternion-set! (-> self root-override2 quat) 0.0 (-> gp-1 x) 0.0 (+ 1.0 (-> gp-1 z)))
|
||||
(quaternion-normalize! (-> self root-override2 quat))
|
||||
(quaternion-set! (-> self root quat) 0.0 (-> gp-1 x) 0.0 (+ 1.0 (-> gp-1 z)))
|
||||
(quaternion-normalize! (-> self root quat))
|
||||
(suspend)
|
||||
(ja :num! (seek!))
|
||||
)
|
||||
@@ -902,11 +902,11 @@
|
||||
)
|
||||
:code (behavior ()
|
||||
(ja-channel-push! 1 (seconds 0.2))
|
||||
(let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self move-dest) (-> self root-override2 trans))))
|
||||
(let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self move-dest) (-> self root trans))))
|
||||
(let ((s5-0 (new 'stack-no-clear 'quaternion))
|
||||
(s4-0 (new 'stack-no-clear 'quaternion))
|
||||
)
|
||||
(quaternion-copy! s5-0 (-> self root-override2 quat))
|
||||
(quaternion-copy! s5-0 (-> self root quat))
|
||||
(quaternion<-rotate-y-vector s4-0 gp-1)
|
||||
(quaternion-rotate-y! s4-0 s4-0 16384.0)
|
||||
(ja-no-eval :group! (-> self draw art-group data 39)
|
||||
@@ -914,7 +914,7 @@
|
||||
:frame-num 0.0
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(quaternion-slerp! (-> self root-override2 quat) s5-0 s4-0 (/ (ja-frame-num 0) (the float (ja-num-frames 0))))
|
||||
(quaternion-slerp! (-> self root quat) s5-0 s4-0 (/ (ja-frame-num 0) (the float (ja-num-frames 0))))
|
||||
(suspend)
|
||||
(ja :num! (seek!))
|
||||
)
|
||||
@@ -945,7 +945,7 @@
|
||||
(set! (-> v1-38 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag38) (-> v1-38 enemy-flags))))
|
||||
)
|
||||
(set! (-> v1-38 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag36) (-> v1-38 enemy-flags))))
|
||||
(set! (-> v1-38 nav callback-info) (-> v1-38 enemy-info-override callback-info))
|
||||
(set! (-> v1-38 nav callback-info) (-> v1-38 enemy-info callback-info))
|
||||
)
|
||||
0
|
||||
(let ((f0-13 (* 1.8749386 (vector-length gp-1))))
|
||||
@@ -967,8 +967,8 @@
|
||||
(set! (-> gp-1 y) 0.0)
|
||||
(vector-normalize! gp-1 1.0)
|
||||
(vector-rotate-around-y! gp-1 gp-1 16384.0)
|
||||
(quaternion-set! (-> self root-override2 quat) 0.0 (-> gp-1 x) 0.0 (+ 1.0 (-> gp-1 z)))
|
||||
(quaternion-normalize! (-> self root-override2 quat))
|
||||
(quaternion-set! (-> self root quat) 0.0 (-> gp-1 x) 0.0 (+ 1.0 (-> gp-1 z)))
|
||||
(quaternion-normalize! (-> self root quat))
|
||||
(suspend)
|
||||
(ja :num! (seek!))
|
||||
)
|
||||
@@ -1122,8 +1122,8 @@
|
||||
(else
|
||||
(ja-channel-push! 1 (seconds 0.1))
|
||||
(let ((gp-0 (-> self draw art-group data (if (enemy-method-133 self)
|
||||
(-> self enemy-info-override die-falling-anim)
|
||||
(-> self enemy-info-override die-anim)
|
||||
(-> self enemy-info die-falling-anim)
|
||||
(-> self enemy-info die-anim)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
:walk-travel-speed (meters 3)
|
||||
:walk-acceleration (meters 5)
|
||||
:walk-turning-acceleration (meters 6)
|
||||
:maximum-rotation-rate (degrees 360.0)
|
||||
:maximum-rotation-rate (degrees 360)
|
||||
:notice-nav-radius (meters 20)
|
||||
:frustration-distance (meters 8)
|
||||
:frustration-time (seconds 4)
|
||||
@@ -228,7 +228,7 @@
|
||||
(set! (-> obj bot-flags) (logior (bot-flags bf22) (-> obj bot-flags)))
|
||||
(logclear! (-> obj bot-flags) (bot-flags bf22))
|
||||
)
|
||||
(set! (-> obj root-override2 penetrated-by) (get-penetrate-info obj))
|
||||
(set! (-> obj root penetrated-by) (get-penetrate-info obj))
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -428,7 +428,7 @@
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 3))
|
||||
(set! (-> s5-0 event-priority) (the-as uint 7))
|
||||
(set! (-> obj root-override2) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -498,19 +498,19 @@
|
||||
(when (>= 16384.0 (fabs f30-0))
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector)))
|
||||
(when (ashelin-method-236 obj s5-0 (+ 32768.0 arg0) 8192.0 40707.93 34563.93)
|
||||
(vector+! (-> obj move-dest) s5-0 (-> obj root-override2 trans))
|
||||
(vector+! (-> obj move-dest) s5-0 (-> obj root trans))
|
||||
(return 1)
|
||||
)
|
||||
(cond
|
||||
((< 0.0 f30-0)
|
||||
(when (ashelin-method-236 obj s5-0 (+ -16384.0 arg0) 8192.0 40707.93 34563.93)
|
||||
(vector+! (-> obj move-dest) s5-0 (-> obj root-override2 trans))
|
||||
(vector+! (-> obj move-dest) s5-0 (-> obj root trans))
|
||||
(return 2)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(when (ashelin-method-236 obj s5-0 (+ 16384.0 arg0) 8192.0 40707.93 34563.93)
|
||||
(vector+! (-> obj move-dest) s5-0 (-> obj root-override2 trans))
|
||||
(vector+! (-> obj move-dest) s5-0 (-> obj root trans))
|
||||
(return 3)
|
||||
)
|
||||
)
|
||||
@@ -528,8 +528,8 @@
|
||||
)
|
||||
)
|
||||
(when (logtest? (bot-flags bf20) (-> obj bot-flags))
|
||||
(set! (-> obj root-override2 trans w) 1.0)
|
||||
(when (>= (vector4-dot (the-as vector (-> obj frontline)) (-> obj root-override2 trans)) 12288.0)
|
||||
(set! (-> obj root trans w) 1.0)
|
||||
(when (>= (vector4-dot (the-as vector (-> obj frontline)) (-> obj root trans)) 12288.0)
|
||||
(let ((f0-7 (atan (-> obj frontline x) (-> obj frontline z))))
|
||||
(return (ashelin-method-243 obj f0-7))
|
||||
)
|
||||
@@ -540,7 +540,7 @@
|
||||
|
||||
(defmethod ashelin-method-241 ashelin ((obj ashelin))
|
||||
(let* ((v1-0 (target-pos 0))
|
||||
(a1-0 (-> obj root-override2 trans))
|
||||
(a1-0 (-> obj root trans))
|
||||
(f30-0 (atan (- (-> a1-0 x) (-> v1-0 x)) (- (-> a1-0 z) (-> v1-0 z))))
|
||||
(f0-5 (deg- f30-0 (-> obj focus-info my-facing-ry)))
|
||||
(s5-0 0)
|
||||
@@ -554,14 +554,14 @@
|
||||
(cond
|
||||
(s3-1
|
||||
(when (ashelin-method-236 obj s4-0 (+ 16384.0 f30-0) 8192.0 40707.93 34563.93)
|
||||
(vector+! (-> obj move-dest) s4-0 (-> obj root-override2 trans))
|
||||
(vector+! (-> obj move-dest) s4-0 (-> obj root trans))
|
||||
(set! s5-0 3)
|
||||
(goto cfg-20)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(when (ashelin-method-236 obj s4-0 (+ -16384.0 f30-0) 8192.0 40707.93 34563.93)
|
||||
(vector+! (-> obj move-dest) s4-0 (-> obj root-override2 trans))
|
||||
(vector+! (-> obj move-dest) s4-0 (-> obj root trans))
|
||||
(set! s5-0 2)
|
||||
(goto cfg-20)
|
||||
)
|
||||
@@ -575,7 +575,7 @@
|
||||
(else
|
||||
(let ((s4-1 (new 'stack-no-clear 'vector)))
|
||||
(when (ashelin-method-236 obj s4-1 (+ 32768.0 f30-0) 8192.0 40707.93 34563.93)
|
||||
(vector+! (-> obj move-dest) s4-1 (-> obj root-override2 trans))
|
||||
(vector+! (-> obj move-dest) s4-1 (-> obj root trans))
|
||||
(set! s5-0 1)
|
||||
)
|
||||
)
|
||||
@@ -592,7 +592,7 @@
|
||||
(when (>= 16384.0 (fabs (-> obj focus-info ry-diff)))
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector)))
|
||||
(when (ashelin-method-236 obj s4-0 (+ 16384.0 (-> obj focus-info bullseye-ry)) 8192.0 40707.93 34563.93)
|
||||
(vector+! (-> obj move-dest) s4-0 (-> obj root-override2 trans))
|
||||
(vector+! (-> obj move-dest) s4-0 (-> obj root trans))
|
||||
(set! s5-0 3)
|
||||
)
|
||||
)
|
||||
@@ -602,7 +602,7 @@
|
||||
(when (>= 16384.0 (fabs (-> obj focus-info ry-diff)))
|
||||
(let ((s4-1 (new 'stack-no-clear 'vector)))
|
||||
(when (ashelin-method-236 obj s4-1 (+ -16384.0 (-> obj focus-info bullseye-ry)) 8192.0 40707.93 34563.93)
|
||||
(vector+! (-> obj move-dest) s4-1 (-> obj root-override2 trans))
|
||||
(vector+! (-> obj move-dest) s4-1 (-> obj root trans))
|
||||
(set! s5-0 2)
|
||||
)
|
||||
)
|
||||
@@ -632,16 +632,16 @@
|
||||
(defmethod ashelin-method-247 ashelin ((obj ashelin))
|
||||
(cond
|
||||
((logtest? (bot-flags bf20) (-> obj bot-flags))
|
||||
(set! (-> obj root-override2 trans w) 1.0)
|
||||
(set! (-> obj root trans w) 1.0)
|
||||
(set! (-> obj focus-info bullseye w) 1.0)
|
||||
(let ((f30-0 (vector4-dot (the-as vector (-> obj frontline)) (-> obj root-override2 trans))))
|
||||
(let ((f30-0 (vector4-dot (the-as vector (-> obj frontline)) (-> obj root trans))))
|
||||
(let ((f0-4 (vector4-dot (the-as vector (-> obj frontline)) (-> obj focus-info bullseye))))
|
||||
(if (or (>= 0.0 f0-4) (>= -8192.0 f30-0))
|
||||
(return #t)
|
||||
)
|
||||
)
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector)))
|
||||
(vector-! s5-0 (-> obj focus-info bullseye) (-> obj root-override2 trans))
|
||||
(vector-! s5-0 (-> obj focus-info bullseye) (-> obj root trans))
|
||||
(set! (-> s5-0 y) 0.0)
|
||||
(vector-normalize! s5-0 1.0)
|
||||
(if (>= -0.342 (vector-dot s5-0 (the-as vector (-> obj frontline))))
|
||||
@@ -654,7 +654,7 @@
|
||||
(a0-8 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(vector-float*! a2-0 (the-as vector (-> obj frontline)) (- (-> obj frontline w)))
|
||||
(set! (-> a0-8 quad) (-> obj root-override2 trans quad))
|
||||
(set! (-> a0-8 quad) (-> obj root trans quad))
|
||||
(set! (-> a0-8 y) 0.0)
|
||||
(>= (intersect-ray-plane a0-8 s5-0 a2-0 (-> obj frontline)) 8192.0)
|
||||
)
|
||||
@@ -669,14 +669,14 @@
|
||||
|
||||
(defmethod ashelin-method-248 ashelin ((obj ashelin))
|
||||
(when (logtest? (bot-flags bf20) (-> obj bot-flags))
|
||||
(set! (-> obj root-override2 trans w) 1.0)
|
||||
(set! (-> obj root trans w) 1.0)
|
||||
(set! (-> obj focus-info bullseye w) 1.0)
|
||||
(let ((f0-3 (vector4-dot (the-as vector (-> obj frontline)) (-> obj root-override2 trans)))
|
||||
(let ((f0-3 (vector4-dot (the-as vector (-> obj frontline)) (-> obj root trans)))
|
||||
(f1-1 (vector4-dot (the-as vector (-> obj frontline)) (-> obj focus-info bullseye)))
|
||||
)
|
||||
(when (and (< 0.0 f1-1) (< 0.0 f0-3))
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector)))
|
||||
(vector-! s5-0 (-> obj focus-info bullseye) (-> obj root-override2 trans))
|
||||
(vector-! s5-0 (-> obj focus-info bullseye) (-> obj root trans))
|
||||
(set! (-> s5-0 y) 0.0)
|
||||
(vector-normalize! s5-0 1.0)
|
||||
(>= (vector-dot s5-0 (the-as vector (-> obj frontline))) 0.0)
|
||||
@@ -822,7 +822,7 @@
|
||||
)
|
||||
)
|
||||
(let* ((f28-1 (current-cycle-distance (-> obj skel)))
|
||||
(f0-8 (quaternion-y-angle (-> obj root-override2 quat)))
|
||||
(f0-8 (quaternion-y-angle (-> obj root quat)))
|
||||
(f1-10 (deg- f0-8 (-> obj travel-prev-ry)))
|
||||
(f0-11 (fmin 40960.0 (* 0.35342914 (-> pp clock frames-per-second) (fabs f1-10))))
|
||||
(f0-14 (/ (* 16.0 (fmax f30-0 f0-11)) (* 15.0 f28-1)))
|
||||
@@ -884,18 +884,15 @@
|
||||
|
||||
(defmethod enemy-method-51 ashelin ((obj ashelin))
|
||||
(local-vars (v1-36 art-element))
|
||||
(let ((f28-0 (quaternion-y-angle (-> obj root-override2 quat))))
|
||||
(let ((f28-0 (quaternion-y-angle (-> obj root quat))))
|
||||
(case (-> obj incoming knocked-type)
|
||||
(((knocked-type knocked-type-6))
|
||||
(let ((a0-4 (handle->process (-> obj focus handle))))
|
||||
(when a0-4
|
||||
(get-trans (the-as process-focusable a0-4) 0)
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> s5-0 quad) (-> obj root-override2 transv quad))
|
||||
(if (< (vector-dot
|
||||
(-> obj root-override2 transv)
|
||||
(vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override2 quat))
|
||||
)
|
||||
(set! (-> s5-0 quad) (-> obj root transv quad))
|
||||
(if (< (vector-dot (-> obj root transv) (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root quat)))
|
||||
0.0
|
||||
)
|
||||
(vector-negate-in-place! s5-0)
|
||||
@@ -909,7 +906,7 @@
|
||||
(let ((s5-1 (new 'stack-no-clear 'vector)))
|
||||
0.0
|
||||
0.0
|
||||
(vector-z-quaternion! s5-1 (-> obj root-override2 quat))
|
||||
(vector-z-quaternion! s5-1 (-> obj root quat))
|
||||
(let ((f28-1 (atan (-> s5-1 x) (-> s5-1 z))))
|
||||
(enemy-method-50 obj s5-1)
|
||||
(let* ((f30-0 (atan (-> s5-1 x) (-> s5-1 z)))
|
||||
@@ -955,7 +952,7 @@
|
||||
)
|
||||
0.0
|
||||
0.0
|
||||
(vector-z-quaternion! s4-0 (-> obj root-override2 quat))
|
||||
(vector-z-quaternion! s4-0 (-> obj root quat))
|
||||
(let ((f30-0 (atan (-> s4-0 x) (-> s4-0 z))))
|
||||
(enemy-method-50 obj s4-0)
|
||||
(let* ((f0-6 (atan (-> s4-0 x) (-> s4-0 z)))
|
||||
@@ -1238,7 +1235,7 @@
|
||||
)
|
||||
0
|
||||
(let ((s0-0 (new 'stack-no-clear 'nav-avoid-spheres-params)))
|
||||
(vector-! (-> s0-0 current-pos) (-> obj root-override2 trans) (-> obj nav state mesh bounds))
|
||||
(vector-! (-> s0-0 current-pos) (-> obj root trans) (-> obj nav state mesh bounds))
|
||||
(set! sv-272 (-> s0-0 travel))
|
||||
(set! (-> sv-272 x) (sin arg1))
|
||||
(set! (-> sv-272 y) 0.0)
|
||||
@@ -1252,13 +1249,7 @@
|
||||
0
|
||||
(when (>= arg2 (fabs (deg- arg1 (atan (-> arg0 x) (-> arg0 z)))))
|
||||
(let ((t0-2 (new 'stack-no-clear 'clamp-travel-vector-to-mesh-return-info)))
|
||||
(clamp-vector-to-mesh-no-gaps
|
||||
(-> obj nav)
|
||||
(-> obj root-override2 trans)
|
||||
(-> obj nav state current-poly)
|
||||
arg0
|
||||
t0-2
|
||||
)
|
||||
(clamp-vector-to-mesh-no-gaps (-> obj nav) (-> obj root trans) (-> obj nav state current-poly) arg0 t0-2)
|
||||
)
|
||||
(.lvf vf1 (&-> arg0 quad))
|
||||
(.add.w.vf vf2 vf0 vf0 :mask #b1)
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
:end-st-scale (new 'static 'vector2 :data (new 'static 'array float 2 1.0 1.0))
|
||||
:end-st-offset (new 'static 'vector2 :data (new 'static 'array float 2 0.5 0.5))
|
||||
:end-qs (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
|
||||
:end-st-rot (degrees 3932160.0)
|
||||
:end-st-rot (degrees 3932160)
|
||||
)
|
||||
(new 'static 'texture-anim-layer
|
||||
:func-id 'default-texture-anim-layer-func
|
||||
@@ -86,7 +86,7 @@
|
||||
:end-st-scale (new 'static 'vector2 :data (new 'static 'array float 2 1.0 1.0))
|
||||
:end-st-offset (new 'static 'vector2 :data (new 'static 'array float 2 0.5 0.5))
|
||||
:end-qs (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
|
||||
:end-st-rot (degrees 65536.0)
|
||||
:end-st-rot (degrees 65536)
|
||||
)
|
||||
(new 'static 'texture-anim-layer
|
||||
:func-id 'default-texture-anim-layer-func
|
||||
@@ -108,7 +108,7 @@
|
||||
:end-st-scale (new 'static 'vector2 :data (new 'static 'array float 2 1.0 1.0))
|
||||
:end-st-offset (new 'static 'vector2 :data (new 'static 'array float 2 0.5 0.5))
|
||||
:end-qs (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
|
||||
:end-st-rot (degrees 65536.0)
|
||||
:end-st-rot (degrees 65536)
|
||||
)
|
||||
(new 'static 'texture-anim-layer
|
||||
:func-id 'default-texture-anim-layer-func
|
||||
|
||||
@@ -183,7 +183,7 @@
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let ((s4-0 (-> arg0 root-override trans)))
|
||||
(let ((s4-0 (-> arg0 root trans)))
|
||||
(if (movie?)
|
||||
(set! s4-0 (camera-pos))
|
||||
)
|
||||
|
||||
@@ -272,7 +272,7 @@
|
||||
(vf7 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let* ((v1-1 (-> obj root-override trans))
|
||||
(let* ((v1-1 (-> obj root trans))
|
||||
(a1-0 (-> obj tail-pos))
|
||||
(s5-1 (vector-! (new 'stack-no-clear 'vector) v1-1 a1-0))
|
||||
(gp-0 (new 'stack-no-clear 'vector))
|
||||
@@ -353,7 +353,7 @@
|
||||
(t2-0 #f)
|
||||
(t3-0 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-0 trans quad) (-> obj root-override trans quad))
|
||||
(set! (-> t3-0 trans quad) (-> obj root trans quad))
|
||||
((the-as (function object object object object object object object object none) t9-2)
|
||||
a0-3
|
||||
a1-2
|
||||
@@ -389,7 +389,7 @@
|
||||
|
||||
(defmethod made-impact? sig-shot ((obj sig-shot))
|
||||
"TODO - queries the collision cache, return true/false"
|
||||
(let ((v1-0 (-> obj root-override))
|
||||
(let ((v1-0 (-> obj root))
|
||||
(t1-0 (new 'stack-no-clear 'collide-query))
|
||||
)
|
||||
(let ((a1-0 t1-0))
|
||||
@@ -406,7 +406,7 @@
|
||||
|
||||
(defun sig-shot-move ((arg0 sig-shot))
|
||||
(projectile-move-fill-line-sphere arg0)
|
||||
(let ((s5-0 (-> arg0 root-override)))
|
||||
(let ((s5-0 (-> arg0 root)))
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector)))
|
||||
(vector-! s4-0 (-> arg0 tail-pos) (-> s5-0 trans))
|
||||
(let ((f0-0 (vector-length s4-0)))
|
||||
@@ -422,7 +422,7 @@
|
||||
)
|
||||
(set! (-> a1-5 quad) (-> s5-0 trans quad))
|
||||
(vector+! a1-5 a1-5 v1-9)
|
||||
(move-to-point! (-> arg0 root-override) a1-5)
|
||||
(move-to-point! (-> arg0 root) a1-5)
|
||||
)
|
||||
(go (method-of-object arg0 impact))
|
||||
)
|
||||
@@ -474,7 +474,7 @@
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 1))
|
||||
(set! (-> s5-0 event-self) 'touched)
|
||||
(set! (-> obj root-override) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(let ((v1-22 (-> obj parent)))
|
||||
(when (not (logtest? (-> (the-as sig (if v1-22
|
||||
@@ -486,7 +486,7 @@
|
||||
(bot-flags attacked)
|
||||
)
|
||||
)
|
||||
(let* ((a0-16 (-> obj root-override))
|
||||
(let* ((a0-16 (-> obj root))
|
||||
(v1-27 (-> a0-16 root-prim))
|
||||
)
|
||||
(countdown (a0-17 (-> a0-16 total-prims))
|
||||
@@ -496,7 +496,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> obj root-override pat-ignore-mask)
|
||||
(set! (-> obj root pat-ignore-mask)
|
||||
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noproj #x1 :noendlessfall #x1)
|
||||
)
|
||||
(none)
|
||||
@@ -504,7 +504,7 @@
|
||||
|
||||
(defmethod init-proj-settings! sig-shot ((obj sig-shot))
|
||||
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc"
|
||||
(set! (-> obj tail-pos quad) (-> obj root-override trans quad))
|
||||
(set! (-> obj tail-pos quad) (-> obj root trans quad))
|
||||
(set! (-> obj attack-mode) 'eco-yellow)
|
||||
(set! (-> obj max-speed) 307200.0)
|
||||
(set! (-> obj move) sig-shot-move)
|
||||
|
||||
@@ -472,11 +472,11 @@
|
||||
(cond
|
||||
((< f0-24 f28-0)
|
||||
(if (>= f0-24 f30-0)
|
||||
(quaternion-slerp! (-> self root-override2 quat) (-> gp-0 src-quat) s5-1 (/ (- f0-24 f30-0) (- f28-0 f30-0)))
|
||||
(quaternion-slerp! (-> self root quat) (-> gp-0 src-quat) s5-1 (/ (- f0-24 f30-0) (- f28-0 f30-0)))
|
||||
)
|
||||
)
|
||||
(else
|
||||
(quaternion-copy! (-> self root-override2 quat) s5-1)
|
||||
(quaternion-copy! (-> self root quat) s5-1)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -945,7 +945,7 @@
|
||||
(set! (-> v1-2 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag38) (-> v1-2 enemy-flags))))
|
||||
)
|
||||
(set! (-> v1-2 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag36) (-> v1-2 enemy-flags))))
|
||||
(set! (-> v1-2 nav callback-info) (-> v1-2 enemy-info-override callback-info))
|
||||
(set! (-> v1-2 nav callback-info) (-> v1-2 enemy-info callback-info))
|
||||
)
|
||||
0
|
||||
(let ((v1-5 self))
|
||||
@@ -1259,12 +1259,7 @@
|
||||
(none)
|
||||
)
|
||||
:post (behavior ()
|
||||
(seek-toward-heading-vec!
|
||||
(-> self root-override2)
|
||||
(-> self focus-info bullseye-xz-dir)
|
||||
131072.0
|
||||
(seconds 0.05)
|
||||
)
|
||||
(seek-toward-heading-vec! (-> self root) (-> self focus-info bullseye-xz-dir) 131072.0 (seconds 0.05))
|
||||
(nav-enemy-simple-post)
|
||||
(none)
|
||||
)
|
||||
@@ -1313,12 +1308,7 @@
|
||||
(let ((f30-1 (ja-aframe f30-0 0)))
|
||||
(ja-no-eval :group! gp-0 :num! (seek! f30-1) :frame-num 0.0)
|
||||
(until (ja-done? 0)
|
||||
(seek-toward-heading-vec!
|
||||
(-> self root-override2)
|
||||
(-> self focus-info bullseye-xz-dir)
|
||||
131072.0
|
||||
(seconds 0.05)
|
||||
)
|
||||
(seek-toward-heading-vec! (-> self root) (-> self focus-info bullseye-xz-dir) 131072.0 (seconds 0.05))
|
||||
(bot-method-223 self #t)
|
||||
(if (and (>= (- (current-time) (-> self state-time)) (seconds 0.1))
|
||||
(or (not (bot-method-214 self)) (not (sig-method-245 self)))
|
||||
@@ -1663,7 +1653,7 @@
|
||||
(if (logtest? (-> gp-0 flags) 2)
|
||||
(go-virtual sig-path-shoot-jump)
|
||||
)
|
||||
(let ((v1-14 (-> self root-override2)))
|
||||
(let ((v1-14 (-> self root)))
|
||||
(set! (-> v1-14 trans quad) (-> gp-0 pos quad))
|
||||
(set! (-> v1-14 trans w) 1.0)
|
||||
(quaternion-copy! (-> v1-14 quat) (-> gp-0 quat))
|
||||
@@ -1684,7 +1674,7 @@
|
||||
(ja-no-eval :group! (-> self draw art-group data 56) :num! (loop!))
|
||||
(until #f
|
||||
(suspend)
|
||||
(let* ((f0-1 (vector-length (-> self root-override2 transv)))
|
||||
(let* ((f0-1 (vector-length (-> self root transv)))
|
||||
(f0-3 (fmax 0.1 (* 0.000020345053 f0-1)))
|
||||
)
|
||||
(ja :num! (loop! f0-3))
|
||||
@@ -1734,7 +1724,7 @@
|
||||
(go-virtual sig-path-jump-land)
|
||||
)
|
||||
)
|
||||
(let ((v1-27 (-> self root-override2)))
|
||||
(let ((v1-27 (-> self root)))
|
||||
(set! (-> v1-27 trans quad) (-> gp-0 pos quad))
|
||||
(set! (-> v1-27 trans w) 1.0)
|
||||
(quaternion-copy! (-> v1-27 quat) (-> gp-0 quat))
|
||||
@@ -1802,7 +1792,7 @@
|
||||
(go-virtual sig-path-shoot-jump)
|
||||
)
|
||||
)
|
||||
(let ((v1-18 (-> self root-override2)))
|
||||
(let ((v1-18 (-> self root)))
|
||||
(set! (-> v1-18 trans quad) (-> gp-0 pos quad))
|
||||
(set! (-> v1-18 trans w) 1.0)
|
||||
(quaternion-copy! (-> v1-18 quat) (-> gp-0 quat))
|
||||
@@ -1812,7 +1802,7 @@
|
||||
)
|
||||
:code (behavior ()
|
||||
(ja-channel-push! 1 (seconds 0.15))
|
||||
(let* ((f0-0 (vector-length (-> self root-override2 transv)))
|
||||
(let* ((f0-0 (vector-length (-> self root transv)))
|
||||
(f0-2 (fmax 0.1 (* 0.000020345053 f0-0)))
|
||||
)
|
||||
(ja-no-eval :group! (-> self draw art-group data 58)
|
||||
@@ -1825,7 +1815,7 @@
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let* ((f0-4 (vector-length (-> self root-override2 transv)))
|
||||
(let* ((f0-4 (vector-length (-> self root transv)))
|
||||
(f0-6 (fmax 0.1 (* 0.000020345053 f0-4)))
|
||||
)
|
||||
(ja :num! (seek! max f0-6))
|
||||
@@ -1876,7 +1866,7 @@
|
||||
(go-virtual sig-path-shoot-jump-land)
|
||||
)
|
||||
)
|
||||
(let ((v1-29 (-> self root-override2)))
|
||||
(let ((v1-29 (-> self root)))
|
||||
(set! (-> v1-29 trans quad) (-> gp-0 pos quad))
|
||||
(set! (-> v1-29 trans w) 1.0)
|
||||
(quaternion-copy! (-> v1-29 quat) (-> gp-0 quat))
|
||||
@@ -1949,7 +1939,7 @@
|
||||
(go-virtual sig-path-jump)
|
||||
)
|
||||
)
|
||||
(let ((v1-18 (-> self root-override2)))
|
||||
(let ((v1-18 (-> self root)))
|
||||
(set! (-> v1-18 trans quad) (-> gp-0 pos quad))
|
||||
(set! (-> v1-18 trans w) 1.0)
|
||||
(quaternion-copy! (-> v1-18 quat) (-> gp-0 quat))
|
||||
@@ -1959,7 +1949,7 @@
|
||||
)
|
||||
:code (behavior ()
|
||||
(ja-channel-push! 1 (seconds 0.15))
|
||||
(let* ((f0-0 (vector-length (-> self root-override2 transv)))
|
||||
(let* ((f0-0 (vector-length (-> self root transv)))
|
||||
(f0-2 (fmax 0.1 (* 0.000020345053 f0-0)))
|
||||
)
|
||||
(ja-no-eval :group! (-> self draw art-group data 60)
|
||||
@@ -1972,7 +1962,7 @@
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let* ((f0-4 (vector-length (-> self root-override2 transv)))
|
||||
(let* ((f0-4 (vector-length (-> self root transv)))
|
||||
(f0-6 (fmax 0.1 (* 0.000020345053 f0-4)))
|
||||
)
|
||||
(ja :num! (seek! max f0-6))
|
||||
@@ -2002,7 +1992,7 @@
|
||||
(look-at-target! self (enemy-flag lock-focus))
|
||||
(set! (-> self skel top-anim interp) 0.0)
|
||||
(set! (-> self travel-anim-interp) 0.0)
|
||||
(vector-reset! (-> self root-override2 transv))
|
||||
(vector-reset! (-> self root transv))
|
||||
(none)
|
||||
)
|
||||
:code (behavior ()
|
||||
|
||||
@@ -111,9 +111,7 @@
|
||||
)
|
||||
(or (player-blocking-spot? arg0 v1-2)
|
||||
(or (not gp-0)
|
||||
(>= 14336.0
|
||||
(vector-vector-xz-distance (target-pos 0) (-> (the-as process-focusable gp-0) root-override trans))
|
||||
)
|
||||
(>= 14336.0 (vector-vector-xz-distance (target-pos 0) (-> (the-as process-focusable gp-0) root trans)))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -122,7 +120,7 @@
|
||||
(defmethod sigt-choose-piston-method-13 sigt-choose-piston ((obj sigt-choose-piston) (arg0 sig))
|
||||
(let ((s4-0 0))
|
||||
(let ((f30-0 -1.0)
|
||||
(s3-0 (-> arg0 root-override2 trans))
|
||||
(s3-0 (-> arg0 root trans))
|
||||
)
|
||||
(countdown (s2-0 (-> obj num-spots))
|
||||
(let* ((v1-3 (-> obj spot-indexes s2-0))
|
||||
@@ -178,8 +176,8 @@
|
||||
)
|
||||
)
|
||||
(when (and (< v1-19 (seconds 0.5)) (< (seconds 0.2) v1-19))
|
||||
(let ((v1-22 (-> (the-as process-focusable s5-1) root-override))
|
||||
(s4-0 (-> arg0 root-override2))
|
||||
(let ((v1-22 (-> (the-as process-focusable s5-1) root))
|
||||
(s4-0 (-> arg0 root))
|
||||
)
|
||||
(when (>= 10012.445
|
||||
(fabs (deg-
|
||||
@@ -189,8 +187,8 @@
|
||||
)
|
||||
)
|
||||
(set! (-> arg0 enemy-flags) (the-as enemy-flag (logclear (-> arg0 enemy-flags) (enemy-flag vulnerable))))
|
||||
(when (send-event arg0 'jump 4 (-> (the-as process-focusable s5-1) root-override trans))
|
||||
(set! (-> arg0 spot center quad) (-> (the-as process-focusable s5-1) root-override trans quad))
|
||||
(when (send-event arg0 'jump 4 (-> (the-as process-focusable s5-1) root trans))
|
||||
(set! (-> arg0 spot center quad) (-> (the-as process-focusable s5-1) root trans quad))
|
||||
(set! (-> arg0 spot center w) 10240.0)
|
||||
(return #t)
|
||||
)
|
||||
|
||||
@@ -199,7 +199,7 @@
|
||||
:walk-travel-speed (meters 4)
|
||||
:walk-acceleration (meters 8)
|
||||
:walk-turning-acceleration (meters 6)
|
||||
:maximum-rotation-rate (degrees 360.0)
|
||||
:maximum-rotation-rate (degrees 360)
|
||||
:notice-nav-radius (meters 20)
|
||||
:frustration-distance (meters 8)
|
||||
:frustration-time (seconds 4)
|
||||
@@ -270,9 +270,7 @@
|
||||
(cond
|
||||
(s4-0
|
||||
(if (or (not (logtest? (bot-flags bf19) (-> obj bot-flags)))
|
||||
(>= 16384.0
|
||||
(vector-vector-xz-distance (-> obj root-override2 trans) (get-trans (the-as process-focusable s4-0) 3))
|
||||
)
|
||||
(>= 16384.0 (vector-vector-xz-distance (-> obj root trans) (get-trans (the-as process-focusable s4-0) 3)))
|
||||
)
|
||||
(set! s5-1 s4-0)
|
||||
)
|
||||
@@ -305,9 +303,7 @@
|
||||
(cond
|
||||
(s4-0
|
||||
(if (or (not (logtest? (bot-flags bf19) (-> obj bot-flags)))
|
||||
(>= 16384.0
|
||||
(vector-vector-xz-distance (-> obj root-override2 trans) (get-trans (the-as process-focusable s4-0) 3))
|
||||
)
|
||||
(>= 16384.0 (vector-vector-xz-distance (-> obj root trans) (get-trans (the-as process-focusable s4-0) 3)))
|
||||
)
|
||||
(set! s5-1 s4-0)
|
||||
)
|
||||
@@ -435,7 +431,7 @@
|
||||
(t9-2 obj)
|
||||
)
|
||||
(when (logtest? (-> obj bot-flags) (bot-flags too-far-fail))
|
||||
(let ((f0-0 (vector-vector-distance (-> obj root-override2 trans) (target-pos 0))))
|
||||
(let ((f0-0 (vector-vector-distance (-> obj root trans) (target-pos 0))))
|
||||
(when (or (>= f0-0 491520.0) (and (>= f0-0 102400.0) (>= (- (current-time) (-> obj last-draw-time)) (seconds 10))))
|
||||
(process-entity-status! obj (entity-perm-status no-kill) #f)
|
||||
(cleanup-for-death obj)
|
||||
@@ -482,7 +478,7 @@
|
||||
(let ((v1-0 arg0))
|
||||
(cond
|
||||
((zero? v1-0)
|
||||
(let ((v1-2 (-> obj root-override2 root-prim)))
|
||||
(let ((v1-2 (-> obj root root-prim)))
|
||||
(dotimes (a0-1 4)
|
||||
(let ((a1-3 (-> (the-as collide-shape-prim-group v1-2) child (+ a0-1 3))))
|
||||
(set! (-> a1-3 prim-core collide-with) (collide-spec))
|
||||
@@ -493,7 +489,7 @@
|
||||
)
|
||||
)
|
||||
((= v1-0 3)
|
||||
(let ((v1-5 (the-as collide-shape-prim-group (-> obj root-override2 root-prim))))
|
||||
(let ((v1-5 (the-as collide-shape-prim-group (-> obj root root-prim))))
|
||||
(let ((a0-3 (-> v1-5 child 3)))
|
||||
(set! (-> a0-3 prim-core collide-as) (collide-spec bot bot-targetable))
|
||||
(set! (-> a0-3 prim-core collide-with)
|
||||
@@ -616,7 +612,7 @@
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 3))
|
||||
(set! (-> s5-0 event-priority) (the-as uint 8))
|
||||
(set! (-> obj root-override2) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(enemy-method-46 obj 0)
|
||||
0
|
||||
@@ -803,7 +799,7 @@
|
||||
(set! (-> v1-12 frame-interp 0) f28-0)
|
||||
)
|
||||
(let* ((f28-1 (current-cycle-distance (-> obj skel)))
|
||||
(f0-5 (quaternion-y-angle (-> obj root-override2 quat)))
|
||||
(f0-5 (quaternion-y-angle (-> obj root quat)))
|
||||
(f1-2 (deg- f0-5 (-> obj travel-prev-ry)))
|
||||
(f0-8 (fmin 28672.0 (* 0.35342914 (-> pp clock frames-per-second) (fabs f1-2))))
|
||||
(f0-11 (/ (* 24.0 (fmax f30-0 f0-8)) (* 30.0 f28-1)))
|
||||
@@ -885,7 +881,7 @@
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector)))
|
||||
0.0
|
||||
0.0
|
||||
(vector-z-quaternion! s4-0 (-> obj root-override2 quat))
|
||||
(vector-z-quaternion! s4-0 (-> obj root quat))
|
||||
(let ((f30-0 (atan (-> s4-0 x) (-> s4-0 z))))
|
||||
(enemy-method-50 obj s4-0)
|
||||
(let* ((f0-14 (atan (-> s4-0 x) (-> s4-0 z)))
|
||||
@@ -998,7 +994,7 @@
|
||||
(v0-0 (t9-0 obj))
|
||||
)
|
||||
(when (and (= (-> obj jump-why) 4) (not v0-0))
|
||||
(when (< (-> obj root-override2 transv y) 0.0)
|
||||
(when (< (-> obj root transv y) 0.0)
|
||||
(let* ((v1-11 (-> obj actor-group 0 data (-> obj platform-index) actor))
|
||||
(a0-5 (if v1-11
|
||||
(-> v1-11 extra process)
|
||||
@@ -1006,11 +1002,11 @@
|
||||
)
|
||||
)
|
||||
(when a0-5
|
||||
(let ((s4-0 (-> (the-as process-focusable a0-5) root-override trans))
|
||||
(s5-0 (-> obj root-override2 trans))
|
||||
(let ((s4-0 (-> (the-as process-focusable a0-5) root trans))
|
||||
(s5-0 (-> obj root trans))
|
||||
)
|
||||
(when (< 2048.0 (- (-> s4-0 y) (-> s5-0 y)))
|
||||
(vector-reset! (-> obj root-override2 transv))
|
||||
(vector-reset! (-> obj root transv))
|
||||
(let ((f30-0 9420.8))
|
||||
(when (< f30-0 (vector-vector-xz-distance s4-0 s5-0))
|
||||
(vector-! s5-0 s5-0 s4-0)
|
||||
@@ -1020,9 +1016,9 @@
|
||||
)
|
||||
)
|
||||
(let ((a1-4 (new 'stack-no-clear 'collide-query)))
|
||||
(find-ground (-> obj root-override2) a1-4 (the-as collide-spec (-> obj gnd-collide)) 8192.0 81920.0 1024.0)
|
||||
(find-ground (-> obj root) a1-4 (the-as collide-spec (-> obj gnd-collide)) 8192.0 81920.0 1024.0)
|
||||
)
|
||||
(set! (-> s5-0 y) (-> obj root-override2 gspot-pos y))
|
||||
(set! (-> s5-0 y) (-> obj root gspot-pos y))
|
||||
(set! v0-0 #t)
|
||||
)
|
||||
)
|
||||
@@ -1042,14 +1038,14 @@
|
||||
(t9-0 obj)
|
||||
)
|
||||
(let ((s5-0 (static-sound-spec "sig-jland" :mask (reg0))))
|
||||
(set! (-> s5-0 reg 0) (the-as uint (-> obj root-override2 ground-pat material)))
|
||||
(set! (-> s5-0 reg 0) (the-as uint (-> obj root ground-pat material)))
|
||||
(sound-play-by-spec s5-0 (new-sound-id) (the-as vector #t))
|
||||
)
|
||||
(the-as
|
||||
float
|
||||
(cond
|
||||
((logtest? (bot-flags bf23) (-> obj bot-flags))
|
||||
(let ((v0-3 (the-as object (-> obj root-override2 transv))))
|
||||
(let ((v0-3 (the-as object (-> obj root transv))))
|
||||
(.svf (&-> (the-as vector v0-3) quad) vf0)
|
||||
v0-3
|
||||
)
|
||||
@@ -1064,11 +1060,11 @@
|
||||
(set! (-> v1-11 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag38) (-> v1-11 enemy-flags))))
|
||||
)
|
||||
(set! (-> v1-11 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag36) (-> v1-11 enemy-flags))))
|
||||
(set! (-> v1-11 nav callback-info) (-> v1-11 enemy-info-override callback-info))
|
||||
(set! (-> v1-11 nav callback-info) (-> v1-11 enemy-info callback-info))
|
||||
)
|
||||
0
|
||||
(let ((s5-1 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> s5-1 quad) (-> obj root-override2 transv quad))
|
||||
(set! (-> s5-1 quad) (-> obj root transv quad))
|
||||
(set! (-> s5-1 y) 0.0)
|
||||
(let ((v1-18 (-> obj nav state)))
|
||||
(set! (-> v1-18 speed) (fmin (vector-length s5-1) (-> obj nav target-speed)))
|
||||
@@ -1097,7 +1093,7 @@
|
||||
(joint-control-channel-group! a0-2 (the-as art-joint-anim #f) num-func-loop!)
|
||||
)
|
||||
(ja-channel-push! 1 (seconds 0.1))
|
||||
(let ((a1-3 (-> obj draw art-group data (-> obj enemy-info-override jump-wind-up-anim)))
|
||||
(let ((a1-3 (-> obj draw art-group data (-> obj enemy-info jump-wind-up-anim)))
|
||||
(a0-6 (-> obj skel root-channel 0))
|
||||
)
|
||||
(set! (-> a0-6 frame-group) (the-as art-joint-anim a1-3))
|
||||
@@ -1120,7 +1116,7 @@
|
||||
(joint-control-channel-group! a0-2 (the-as art-joint-anim #f) num-func-loop!)
|
||||
)
|
||||
(ja-channel-push! 1 (seconds 0.1))
|
||||
(let ((a1-3 (-> obj draw art-group data (-> obj enemy-info-override jump-land-anim)))
|
||||
(let ((a1-3 (-> obj draw art-group data (-> obj enemy-info jump-land-anim)))
|
||||
(a0-6 (-> obj skel root-channel 0))
|
||||
)
|
||||
(set! (-> a0-6 frame-group) (the-as art-joint-anim a1-3))
|
||||
@@ -1185,7 +1181,7 @@
|
||||
(when (!= (-> obj sig-path-cur-time) a0-1)
|
||||
(set! (-> obj sig-path-prev-time) (-> obj sig-path-cur-time))
|
||||
(set! (-> obj sig-path-cur-time) a0-1)
|
||||
(set! (-> obj event-param-point quad) (-> obj root-override2 trans quad))
|
||||
(set! (-> obj event-param-point quad) (-> obj root trans quad))
|
||||
)
|
||||
)
|
||||
(let ((s3-0 (+ (-> obj sig-path sample-count) -1))
|
||||
@@ -1225,9 +1221,9 @@
|
||||
(quaternion-slerp! (-> arg0 quat) (-> s3-1 quat) (-> s4-1 quat) f30-0)
|
||||
(set! (-> arg0 flags) s2-1)
|
||||
)
|
||||
(vector-! (-> obj root-override2 transv) (-> arg0 pos) (-> obj event-param-point))
|
||||
(let ((v0-5 (-> obj root-override2 transv)))
|
||||
(.lvf vf1 (&-> (-> obj root-override2 transv) quad))
|
||||
(vector-! (-> obj root transv) (-> arg0 pos) (-> obj event-param-point))
|
||||
(let ((v0-5 (-> obj root transv)))
|
||||
(.lvf vf1 (&-> (-> obj root transv) quad))
|
||||
(let ((f0-7 (-> pp clock frames-per-second)))
|
||||
(.mov at-0 f0-7)
|
||||
)
|
||||
|
||||
@@ -233,7 +233,7 @@
|
||||
:walk-travel-speed (meters 3)
|
||||
:walk-acceleration (meters 2)
|
||||
:walk-turning-acceleration (meters 8)
|
||||
:maximum-rotation-rate (degrees 720.0)
|
||||
:maximum-rotation-rate (degrees 720)
|
||||
:notice-nav-radius (meters 10)
|
||||
:frustration-distance (meters 8)
|
||||
:frustration-time (seconds 4)
|
||||
@@ -342,7 +342,7 @@
|
||||
(defstate knocked (citizen-rebel)
|
||||
:virtual #t
|
||||
:enter (behavior ()
|
||||
(let ((gp-0 (find-nearest-nav-mesh (-> self root-override2 trans) (the-as float #x7f800000))))
|
||||
(let ((gp-0 (find-nearest-nav-mesh (-> self root trans) (the-as float #x7f800000))))
|
||||
(change-to gp-0 self)
|
||||
(if (not (-> self nav))
|
||||
(go-inactive self)
|
||||
@@ -353,15 +353,15 @@
|
||||
(set! (-> v1-10 current-poly) (the-as nav-poly #f))
|
||||
)
|
||||
0
|
||||
(do-navigation-to-destination (-> self nav state) (-> self root-override2 trans))
|
||||
(set! (-> self gnd-height) (-> self root-override2 gspot-pos y))
|
||||
(do-navigation-to-destination (-> self nav state) (-> self root trans))
|
||||
(set! (-> self gnd-height) (-> self root gspot-pos y))
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector))
|
||||
(gp-1 (new 'stack-no-clear 'quaternion))
|
||||
)
|
||||
(vector-y-quaternion! s5-0 (-> self root-override2 quat))
|
||||
(vector-y-quaternion! s5-0 (-> self root quat))
|
||||
(vector-normalize! s5-0 1.0)
|
||||
(quaternion-from-two-vectors! gp-1 s5-0 *up-vector*)
|
||||
(quaternion*! (-> self root-override2 quat) gp-1 (-> self root-override2 quat))
|
||||
(quaternion*! (-> self root quat) gp-1 (-> self root quat))
|
||||
)
|
||||
(let ((t9-8 (-> (method-of-type civilian knocked) enter)))
|
||||
(if t9-8
|
||||
@@ -376,7 +376,7 @@
|
||||
:virtual #t
|
||||
:event (the-as (function process int symbol event-message-block object :behavior citizen-rebel) enemy-event-handler)
|
||||
:enter (behavior ((arg0 object) (arg1 object) (arg2 int) (arg3 symbol) (arg4 event-message-block))
|
||||
(let ((a0-2 (find-nearest-nav-mesh (-> self root-override2 trans) (the-as float #x7f800000))))
|
||||
(let ((a0-2 (find-nearest-nav-mesh (-> self root trans) (the-as float #x7f800000))))
|
||||
(if a0-2
|
||||
(set! (-> self nav-mesh-aid) (the-as actor-id (-> a0-2 entity aid)))
|
||||
)
|
||||
@@ -392,7 +392,7 @@
|
||||
0
|
||||
(citizen-method-195
|
||||
self
|
||||
(vector-negate-in-place! (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self root-override2 quat)))
|
||||
(vector-negate-in-place! (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self root quat)))
|
||||
)
|
||||
(let ((a0-9 (-> self nav state))
|
||||
(v1-17 (-> self controller turn-exit-point))
|
||||
@@ -403,11 +403,11 @@
|
||||
)
|
||||
0
|
||||
(citizen-nav-init! self)
|
||||
(set! (-> self gnd-height) (-> self root-override2 gspot-pos y))
|
||||
(set! (-> self gnd-height) (-> self root gspot-pos y))
|
||||
(logior! (-> self flags) (citizen-flag persistent))
|
||||
(set! (-> self focus-status) (logior (focus-status pilot-riding pilot) (-> self focus-status)))
|
||||
(set! (-> self state-time) (current-time))
|
||||
(let ((v1-31 (-> self root-override2 root-prim)))
|
||||
(let ((v1-31 (-> self root root-prim)))
|
||||
(set! (-> v1-31 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-31 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -443,9 +443,9 @@
|
||||
(let ((s4-0 (handle->process (-> self vehicle)))
|
||||
(s3-0 (new 'stack-no-clear 'quaternion))
|
||||
)
|
||||
(quaternion-copy! s3-0 (-> (the-as vehicle s4-0) root-override-2 quat))
|
||||
(compute-seat-position (the-as vehicle s4-0) (-> self root-override2 trans) (-> self seat))
|
||||
(quaternion-copy! (-> self root-override2 quat) s3-0)
|
||||
(quaternion-copy! s3-0 (-> (the-as vehicle s4-0) root quat))
|
||||
(compute-seat-position (the-as vehicle s4-0) (-> self root trans) (-> self seat))
|
||||
(quaternion-copy! (-> self root quat) s3-0)
|
||||
)
|
||||
(when (>= (- (current-time) (-> self state-time)) (seconds 2))
|
||||
(put-rider-in-seat (the-as vehicle (handle->process (-> self vehicle))) (-> self seat) self)
|
||||
@@ -462,8 +462,8 @@
|
||||
(let ((s3-1 (handle->process (-> self vehicle)))
|
||||
(s4-2 (new 'stack-no-clear 'quaternion))
|
||||
)
|
||||
(quaternion-copy! s4-2 (-> (the-as vehicle s3-1) root-override-2 quat))
|
||||
(compute-seat-position (the-as vehicle s3-1) (-> self root-override2 trans) (-> self seat))
|
||||
(quaternion-copy! s4-2 (-> (the-as vehicle s3-1) root quat))
|
||||
(compute-seat-position (the-as vehicle s3-1) (-> self root trans) (-> self seat))
|
||||
(let ((s3-2 lerp-scale)
|
||||
(s2-0 0.0)
|
||||
(s1-0 1.0)
|
||||
@@ -473,11 +473,11 @@
|
||||
(let* ((t0-1 (ja-aframe 7.0 0))
|
||||
(f0-4 (s3-2 s2-0 s1-0 s0-0 sv-176 t0-1))
|
||||
)
|
||||
(quaternion-rotate-local-y! (-> self root-override2 quat) s4-2 (* f0-4 (if (zero? (-> self seat))
|
||||
-16384.0
|
||||
16384.0
|
||||
)
|
||||
)
|
||||
(quaternion-rotate-local-y! (-> self root quat) s4-2 (* f0-4 (if (zero? (-> self seat))
|
||||
-16384.0
|
||||
16384.0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -487,19 +487,19 @@
|
||||
)
|
||||
(let ((s4-4 (handle->process (-> self vehicle))))
|
||||
(let ((s3-3 (new 'stack-no-clear 'quaternion)))
|
||||
(quaternion-copy! s3-3 (-> (the-as vehicle s4-4) root-override-2 quat))
|
||||
(compute-seat-position (the-as vehicle s4-4) (-> self root-override2 trans) (-> self seat))
|
||||
(quaternion-rotate-local-y! (-> self root-override2 quat) s3-3 (if (zero? (-> self seat))
|
||||
-16384.0
|
||||
16384.0
|
||||
)
|
||||
(quaternion-copy! s3-3 (-> (the-as vehicle s4-4) root quat))
|
||||
(compute-seat-position (the-as vehicle s4-4) (-> self root trans) (-> self seat))
|
||||
(quaternion-rotate-local-y! (-> self root quat) s3-3 (if (zero? (-> self seat))
|
||||
-16384.0
|
||||
16384.0
|
||||
)
|
||||
)
|
||||
)
|
||||
(remove-rider (the-as vehicle s4-4) self)
|
||||
)
|
||||
(logclear! (-> self focus-status) (focus-status pilot-riding pilot))
|
||||
(let ((v1-65 (handle->process (-> self vehicle))))
|
||||
(quaternion-copy! s5-0 (-> (the-as vehicle v1-65) root-override-2 quat))
|
||||
(quaternion-copy! s5-0 (-> (the-as vehicle v1-65) root quat))
|
||||
)
|
||||
(ja-no-eval :group! (-> self draw art-group data (-> self info get-in-car-anim))
|
||||
:num! (seek! (ja-aframe 1.0 0) 0.5)
|
||||
@@ -534,8 +534,8 @@
|
||||
(quaternion-from-two-vectors! s2-3 a1-40 *up-vector*)
|
||||
(quaternion*! s3-4 s2-3 s3-4)
|
||||
)
|
||||
(quaternion-copy! (-> self root-override2 quat) s3-4)
|
||||
(vector+float*! (-> self root-override2 trans) gp-0 s4-6 f30-0)
|
||||
(quaternion-copy! (-> self root quat) s3-4)
|
||||
(vector+float*! (-> self root trans) gp-0 s4-6 f30-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -543,9 +543,9 @@
|
||||
(ja :num! (seek! (ja-aframe 1.0 0) 0.5))
|
||||
)
|
||||
)
|
||||
(let ((v1-96 (-> self root-override2 root-prim)))
|
||||
(set! (-> v1-96 prim-core collide-as) (-> self root-override2 backup-collide-as))
|
||||
(set! (-> v1-96 prim-core collide-with) (-> self root-override2 backup-collide-with))
|
||||
(let ((v1-96 (-> self root root-prim)))
|
||||
(set! (-> v1-96 prim-core collide-as) (-> self root backup-collide-as))
|
||||
(set! (-> v1-96 prim-core collide-with) (-> self root backup-collide-with))
|
||||
)
|
||||
(go-virtual wait-for-ride)
|
||||
(none)
|
||||
@@ -556,13 +556,13 @@
|
||||
:virtual #t
|
||||
:trans (behavior ()
|
||||
(when (-> self vehicle)
|
||||
(case (-> (the-as vehicle (handle->process (-> self vehicle))) info-override object-type)
|
||||
(case (-> (the-as vehicle (handle->process (-> self vehicle))) info object-type)
|
||||
((14 15 16)
|
||||
(go-virtual move-to-vehicle)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (< (vector-vector-xz-distance (-> self root-override2 trans) (-> self end-pos)) 122880.0)
|
||||
(when (< (vector-vector-xz-distance (-> self root trans) (-> self end-pos)) 122880.0)
|
||||
(when (not (-> self done?))
|
||||
(set! (-> self done?) #t)
|
||||
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
|
||||
@@ -882,7 +882,7 @@
|
||||
(let ((f30-0 (get-rand-float-range obj 1.0 1.25))
|
||||
(f0-10 (get-rand-float-range obj 1.0 1.25))
|
||||
)
|
||||
(set-vector! (-> obj root-override2 scale) f0-10 f30-0 f0-10 1.0)
|
||||
(set-vector! (-> obj root scale) f0-10 f30-0 f0-10 1.0)
|
||||
)
|
||||
(let ((f0-12 (get-rand-float-range obj 0.9 1.0)))
|
||||
(set-vector! (-> obj draw color-mult) f0-12 f0-12 f0-12 1.0)
|
||||
@@ -954,7 +954,7 @@
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-17 prim-core collide-with))
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 3))
|
||||
(set! (-> obj root-override2) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -1264,8 +1264,8 @@
|
||||
(set! (-> s1-1 flags) (traffic-spawn-flags))
|
||||
(set! (-> s1-1 guard-type) (the-as uint 7))
|
||||
(vector-reset! (-> s1-1 velocity))
|
||||
(set! (-> s1-1 position quad) (-> (the-as citizen-rebel s2-0) root-override2 trans quad))
|
||||
(quaternion-copy! (-> s1-1 rotation) (-> (the-as citizen-rebel s2-0) root-override2 quat))
|
||||
(set! (-> s1-1 position quad) (-> (the-as citizen-rebel s2-0) root trans quad))
|
||||
(quaternion-copy! (-> s1-1 rotation) (-> (the-as citizen-rebel s2-0) root quat))
|
||||
(set! (-> s1-1 nav-mesh) (-> s4-1 nav-mesh))
|
||||
(activate-by-handle *traffic-engine* s1-1)
|
||||
)
|
||||
@@ -1285,14 +1285,14 @@
|
||||
(else
|
||||
(let ((v1-260 (get-best-seat-for-vehicle
|
||||
(the-as vehicle s4-2)
|
||||
(-> (the-as vehicle s4-2) root-override-2 trans)
|
||||
(-> (the-as vehicle s4-2) root trans)
|
||||
(the-as int (-> (the-as citizen-rebel s2-0) info seat-flag))
|
||||
1
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (!= v1-260 -1)
|
||||
(.lvf vf1 (&-> (-> (the-as vehicle s4-2) root-override-2 transv) quad))
|
||||
(.lvf vf1 (&-> (-> (the-as vehicle s4-2) root transv) quad))
|
||||
(.add.w.vf vf2 vf0 vf0 :mask #b1)
|
||||
(.mul.vf vf1 vf1 vf1)
|
||||
(.mul.x.vf acc vf2 vf1 :mask #b1)
|
||||
@@ -1303,8 +1303,8 @@
|
||||
(f1-1 32768.0)
|
||||
)
|
||||
(if (and (< f0-1 (* f1-1 f1-1)) (let ((f0-2 (vector-vector-distance-squared
|
||||
(-> (the-as vehicle s4-2) root-override-2 trans)
|
||||
(-> (the-as citizen-rebel s2-0) root-override2 trans)
|
||||
(-> (the-as vehicle s4-2) root trans)
|
||||
(-> (the-as citizen-rebel s2-0) root trans)
|
||||
)
|
||||
)
|
||||
(f1-4 65536.0)
|
||||
@@ -1332,11 +1332,7 @@
|
||||
)
|
||||
)
|
||||
(if (and (-> s2-0 next-state) (= (-> s2-0 next-state name) 'wait-for-ride))
|
||||
(send-event
|
||||
(handle->process (-> arg0 arrow))
|
||||
'set-position
|
||||
(-> (the-as citizen-rebel s2-0) root-override2 trans)
|
||||
)
|
||||
(send-event (handle->process (-> arg0 arrow)) 'set-position (-> (the-as citizen-rebel s2-0) root trans))
|
||||
)
|
||||
)
|
||||
(else
|
||||
|
||||
@@ -264,8 +264,8 @@
|
||||
|
||||
|
||||
(deftype enemy (process-focusable)
|
||||
((root-override2 collide-shape-moving :offset 128)
|
||||
(fact-info-override fact-info-enemy :offset 160)
|
||||
((root collide-shape-moving :override)
|
||||
(fact fact-info-enemy :override)
|
||||
(enemy-flags enemy-flag :offset-assert 208)
|
||||
(enemy-info enemy-info :offset-assert 216)
|
||||
(hit-points int32 :offset-assert 220)
|
||||
|
||||
+121
-126
@@ -129,8 +129,8 @@
|
||||
((logtest? (-> obj mask) (process-mask actor-pause))
|
||||
(let ((draw (-> obj draw)))
|
||||
(or (and (nonzero? draw)
|
||||
(>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root-override2 pause-adjust-distance))
|
||||
(vector-vector-distance (-> obj root-override2 trans) (camera-pos))
|
||||
(>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root pause-adjust-distance))
|
||||
(vector-vector-distance (-> obj root trans) (camera-pos))
|
||||
)
|
||||
(or (logtest? (-> draw status) (draw-control-status on-screen))
|
||||
(not (and (-> obj next-state) (= (-> obj next-state name) 'idle)))
|
||||
@@ -155,7 +155,7 @@
|
||||
|
||||
(defmethod get-trans enemy ((obj enemy) (arg0 int))
|
||||
"@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]])"
|
||||
(let ((s4-0 (-> obj root-override2)))
|
||||
(let ((s4-0 (-> obj root)))
|
||||
(cond
|
||||
((zero? arg0)
|
||||
(-> s4-0 trans)
|
||||
@@ -168,7 +168,7 @@
|
||||
)
|
||||
((= arg0 3)
|
||||
(let ((v0-0 (vector<-cspace! (new 'static 'vector) (-> obj node-list data (-> obj enemy-info bullseye-joint)))))
|
||||
(set! (-> v0-0 w) (-> obj root-override2 root-prim prim-core world-sphere w))
|
||||
(set! (-> v0-0 w) (-> obj root root-prim prim-core world-sphere w))
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
@@ -204,7 +204,7 @@
|
||||
)
|
||||
|
||||
(defmethod enemy-method-54 enemy ((obj enemy))
|
||||
(let ((s4-0 (-> obj root-override2)))
|
||||
(let ((s4-0 (-> obj root)))
|
||||
(when (>= (-> obj water-max-height) (-> s4-0 trans y))
|
||||
(let ((s5-0 (new 'stack-no-clear 'water-info)))
|
||||
(water-info-init! s4-0 s5-0 (collide-action solid semi-solid))
|
||||
@@ -214,7 +214,7 @@
|
||||
(set! (-> obj water-surface-height) (-> s5-0 trans y))
|
||||
(when (not (focus-test? obj touch-water under-water))
|
||||
(let ((s2-0 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> s2-0 quad) (-> obj root-override2 trans quad))
|
||||
(set! (-> s2-0 quad) (-> obj root trans quad))
|
||||
(set! (-> s2-0 y) (+ 409.6 (-> s5-0 trans y)))
|
||||
(let ((s1-0 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when s1-0
|
||||
@@ -302,7 +302,7 @@
|
||||
(enemy-method-100 self)
|
||||
)
|
||||
(when *target*
|
||||
(target-look-at-me! :trans (the-as vector (-> self root-override2 root-prim prim-core))
|
||||
(target-look-at-me! :trans (the-as vector (-> self root root-prim prim-core))
|
||||
:message (if (logtest? (-> self enemy-flags) (enemy-flag use-notice-distance))
|
||||
'attacking
|
||||
))
|
||||
@@ -320,12 +320,12 @@
|
||||
(>= (- (current-time) (-> self auto-reset-penetrate-time)) (seconds 0.1))
|
||||
)
|
||||
(logclear! (-> self enemy-flags) (enemy-flag attackable-backup))
|
||||
(set! (-> self root-override2 penetrated-by) (get-penetrate-info self))
|
||||
(set! (-> self root penetrated-by) (get-penetrate-info self))
|
||||
(let ((v1-48 0))
|
||||
(if (logtest? (penetrate knocked) (-> self root-override2 penetrate-using))
|
||||
(if (logtest? (penetrate knocked) (-> self root penetrate-using))
|
||||
(set! v1-48 (logior (shl 1 32) v1-48))
|
||||
)
|
||||
(set! (-> self root-override2 penetrate-using) (the-as penetrate v1-48))
|
||||
(set! (-> self root penetrate-using) (the-as penetrate v1-48))
|
||||
)
|
||||
)
|
||||
(if (logtest? (-> self enemy-flags) (enemy-flag look-at-focus))
|
||||
@@ -435,8 +435,8 @@
|
||||
(begin
|
||||
(let ((s3-0 (-> s4-0 head)))
|
||||
(while s3-0
|
||||
(let ((s2-0 (get-touched-prim s3-0 (-> arg0 root-override2) s4-0)))
|
||||
(get-touched-prim s3-0 (-> obj root-override2) s4-0)
|
||||
(let ((s2-0 (get-touched-prim s3-0 (-> arg0 root) s4-0)))
|
||||
(get-touched-prim s3-0 (-> obj root) s4-0)
|
||||
(when (logtest? (-> s2-0 prim-core action) (collide-action solid semi-solid deadly))
|
||||
(let* ((a0-5 obj)
|
||||
(t9-2 (method-of-object a0-5 enemy-method-104))
|
||||
@@ -465,7 +465,7 @@
|
||||
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defmethod enemy-method-64 enemy ((obj enemy))
|
||||
(let ((v1-1 (-> obj root-override2 root-prim)))
|
||||
(let ((v1-1 (-> obj root root-prim)))
|
||||
(set! (-> v1-1 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-1 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -478,7 +478,7 @@
|
||||
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defmethod enemy-method-65 enemy ((obj enemy))
|
||||
(let ((v1-1 (-> obj root-override2 root-prim)))
|
||||
(let ((v1-1 (-> obj root root-prim)))
|
||||
(set! (-> v1-1 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-1 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -584,7 +584,7 @@
|
||||
)
|
||||
|
||||
(defmethod enemy-method-94 enemy ((obj enemy) (arg0 vector) (arg1 float))
|
||||
(let ((s4-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override2 quat)))
|
||||
(let ((s4-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root quat)))
|
||||
(s5-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set! (-> s5-0 quad) (-> arg0 quad))
|
||||
@@ -597,7 +597,7 @@
|
||||
)
|
||||
|
||||
(defmethod enemy-method-95 enemy ((obj enemy) (arg0 vector) (arg1 float))
|
||||
(let ((v1-1 (vector-! (new 'stack-no-clear 'vector) arg0 (-> obj root-override2 trans))))
|
||||
(let ((v1-1 (vector-! (new 'stack-no-clear 'vector) arg0 (-> obj root trans))))
|
||||
(enemy-method-94 obj v1-1 arg1)
|
||||
)
|
||||
)
|
||||
@@ -606,12 +606,9 @@
|
||||
(let ((a0-2 (handle->process (-> obj focus handle))))
|
||||
(cond
|
||||
(a0-2
|
||||
(let ((s4-1 (vector-!
|
||||
(new 'stack-no-clear 'vector)
|
||||
(get-trans (the-as process-focusable a0-2) 0)
|
||||
(-> obj root-override2 trans)
|
||||
)
|
||||
)
|
||||
(let ((s4-1
|
||||
(vector-! (new 'stack-no-clear 'vector) (get-trans (the-as process-focusable a0-2) 0) (-> obj root trans))
|
||||
)
|
||||
)
|
||||
(enemy-method-94 obj s4-1 arg0)
|
||||
)
|
||||
@@ -652,7 +649,7 @@
|
||||
|
||||
(defmethod enemy-method-105 enemy ((obj enemy) (arg0 process))
|
||||
(when (logtest? (process-mask target bot) (-> arg0 mask))
|
||||
(set! (-> obj root-override2 penetrated-by) (the-as penetrate -1))
|
||||
(set! (-> obj root penetrated-by) (the-as penetrate -1))
|
||||
(enemy-method-49 obj)
|
||||
)
|
||||
(let ((s5-0 (if (type? arg0 process-focusable)
|
||||
@@ -690,7 +687,7 @@
|
||||
(set! (-> arg0 quad) (-> obj incoming attack-direction quad))
|
||||
(let ((v1-1 arg0))
|
||||
(when (= (+ (* (-> v1-1 x) (-> v1-1 x)) (* (-> v1-1 z) (-> v1-1 z))) 0.0)
|
||||
(vector-z-quaternion! arg0 (-> obj root-override2 quat))
|
||||
(vector-z-quaternion! arg0 (-> obj root quat))
|
||||
(vector-negate-in-place! arg0)
|
||||
)
|
||||
)
|
||||
@@ -803,9 +800,9 @@
|
||||
)
|
||||
|
||||
(defmethod enemy-method-125 enemy ((obj enemy) (arg0 collide-query) (arg1 collide-spec) (arg2 float) (arg3 float) (arg4 float))
|
||||
(when (find-ground (-> obj root-override2) arg0 arg1 arg2 arg3 arg4)
|
||||
(when (find-ground (-> obj root) arg0 arg1 arg2 arg3 arg4)
|
||||
(let ((v0-1 (-> arg0 best-other-tri pat)))
|
||||
(set! (-> obj root-override2 ground-pat) v0-1)
|
||||
(set! (-> obj root ground-pat) v0-1)
|
||||
v0-1
|
||||
)
|
||||
)
|
||||
@@ -814,16 +811,16 @@
|
||||
(defmethod enemy-above-ground? enemy ((obj enemy) (arg0 collide-query) (arg1 vector) (arg2 collide-spec) (arg3 float) (arg4 float) (arg5 float))
|
||||
"@returns if the enemy is above the ground or not
|
||||
@see [[above-ground?]]"
|
||||
(above-ground? (-> obj root-override2) arg0 arg1 arg2 arg3 arg4 arg5)
|
||||
(above-ground? (-> obj root) arg0 arg1 arg2 arg3 arg4 arg5)
|
||||
)
|
||||
|
||||
(defmethod enemy-method-127 enemy ((obj enemy) (arg0 float) (arg1 float) (arg2 symbol) (arg3 collide-spec))
|
||||
(let ((s4-0 (new 'stack-no-clear 'collide-query)))
|
||||
(cond
|
||||
((enemy-method-125 obj s4-0 arg3 arg0 arg1 1024.0)
|
||||
(let ((s5-1 (-> obj root-override2)))
|
||||
(let ((s5-1 (-> obj root)))
|
||||
(let ((s3-0 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> s3-0 quad) (-> obj root-override2 trans quad))
|
||||
(set! (-> s3-0 quad) (-> obj root trans quad))
|
||||
(set! (-> s3-0 y) (-> s4-0 best-other-tri intersect y))
|
||||
(move-to-point! s5-1 s3-0)
|
||||
(let ((a0-3 (-> s4-0 best-other-tri normal))
|
||||
@@ -844,7 +841,7 @@
|
||||
#t
|
||||
)
|
||||
(else
|
||||
(let ((v1-11 (-> obj root-override2)))
|
||||
(let ((v1-11 (-> obj root)))
|
||||
(logclear! (-> v1-11 status) (collide-status
|
||||
on-surface
|
||||
on-ground
|
||||
@@ -882,7 +879,7 @@
|
||||
)
|
||||
|
||||
(defmethod enemy-method-128 enemy ((obj enemy) (arg0 vector) (arg1 move-above-ground-params))
|
||||
(let ((gp-0 (-> obj root-override2)))
|
||||
(let ((gp-0 (-> obj root)))
|
||||
(set! (-> arg1 on-ground?) #f)
|
||||
(set! (-> arg1 do-move?) #t)
|
||||
(set! (-> arg1 old-gspot-pos quad) (-> gp-0 gspot-pos quad))
|
||||
@@ -981,7 +978,7 @@
|
||||
)
|
||||
|
||||
(defmethod enemy-method-111 enemy ((obj enemy))
|
||||
(let ((v1-0 (-> obj root-override2)))
|
||||
(let ((v1-0 (-> obj root)))
|
||||
(when (logtest? (-> v1-0 status) (collide-status touch-surface))
|
||||
(let ((f0-1 (fmax 0.0 (+ 1.0 (* 60.0 (-> self clock seconds-per-frame) (+ -1.0 (-> obj enemy-info friction)))))))
|
||||
(vector-float*! (-> v1-0 transv) (-> v1-0 transv) f0-1)
|
||||
@@ -1080,16 +1077,16 @@
|
||||
)
|
||||
(set! (-> obj incoming attacker-handle) (the-as handle #f))
|
||||
(enemy-method-124 obj)
|
||||
(set! (-> obj fact-info-override) (new
|
||||
'process
|
||||
'fact-info-enemy
|
||||
obj
|
||||
(the-as (pointer float) (-> arg0 fact-defaults))
|
||||
(pickup-type eco-pill-random)
|
||||
(-> *FACT-bank* default-eco-pill-green-inc)
|
||||
)
|
||||
(set! (-> obj fact) (new
|
||||
'process
|
||||
'fact-info-enemy
|
||||
obj
|
||||
(the-as (pointer float) (-> arg0 fact-defaults))
|
||||
(pickup-type eco-pill-random)
|
||||
(-> *FACT-bank* default-eco-pill-green-inc)
|
||||
)
|
||||
)
|
||||
(let ((a1-5 (if (logtest? (enemy-option multi-focus) (-> obj fact-info-override enemy-options))
|
||||
(let ((a1-5 (if (logtest? (enemy-option multi-focus) (-> obj fact enemy-options))
|
||||
#x400406
|
||||
#x400402
|
||||
)
|
||||
@@ -1124,7 +1121,7 @@
|
||||
(if (-> obj on-hostile)
|
||||
(logior! (-> obj enemy-flags) (enemy-flag drawn-mirrored))
|
||||
)
|
||||
(let ((s4-0 (-> obj root-override2)))
|
||||
(let ((s4-0 (-> obj root)))
|
||||
(set! (-> obj penetrated-by-all) (-> s4-0 penetrated-by))
|
||||
(set! (-> s4-0 penetrated-by) (get-penetrate-info obj))
|
||||
(set! (-> s4-0 event-self) 'touched)
|
||||
@@ -1133,7 +1130,7 @@
|
||||
(set! (-> obj penetrated-knocked) (-> arg0 penetrate-knocked))
|
||||
(set! (-> obj reaction-time) (the-as time-frame (get-rand-int-range obj 30 180)))
|
||||
(let* ((v1-79 (-> obj enemy-flags))
|
||||
(a0-28 (-> obj fact-info-override enemy-options))
|
||||
(a0-28 (-> obj fact enemy-options))
|
||||
(v1-80 (logior (enemy-flag
|
||||
enable-on-active
|
||||
checking-water
|
||||
@@ -1157,7 +1154,7 @@
|
||||
(set! (-> obj mask) (logior (process-mask collectable) (-> obj mask)))
|
||||
(if (and (-> obj enemy-info move-to-ground)
|
||||
(not (logtest? (enemy-flag vulnerable-backup) (-> obj enemy-flags)))
|
||||
(not (logtest? (enemy-option ambush) (-> obj fact-info-override enemy-options)))
|
||||
(not (logtest? (enemy-option ambush) (-> obj fact enemy-options)))
|
||||
)
|
||||
(enemy-method-127 obj 40960.0 40960.0 #t (the-as collide-spec (-> obj gnd-collide)))
|
||||
)
|
||||
@@ -1181,9 +1178,9 @@
|
||||
(set! (-> self enemy-flags) (the-as enemy-flag (logior (enemy-flag vulnerable-backup) (-> self enemy-flags))))
|
||||
)
|
||||
(init-enemy-collision! self)
|
||||
(set! (-> self root-override2 trans quad) (-> arg1 trans quad))
|
||||
(quaternion-copy! (-> self root-override2 quat) (-> arg1 quat))
|
||||
(vector-identity! (-> self root-override2 scale))
|
||||
(set! (-> self root trans quad) (-> arg1 trans quad))
|
||||
(quaternion-copy! (-> self root quat) (-> arg1 quat))
|
||||
(vector-identity! (-> self root scale))
|
||||
(init-enemy! self)
|
||||
(when (> (-> self enemy-info gem-joint) 0)
|
||||
(cond
|
||||
@@ -1211,7 +1208,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-43 (-> self fact-info-override enemy-options)))
|
||||
(let ((v1-43 (-> self fact enemy-options)))
|
||||
(cond
|
||||
(*debug-view-anims*
|
||||
(go-virtual view-anims)
|
||||
@@ -1225,7 +1222,7 @@
|
||||
((logtest? (enemy-option dormant-aware) v1-43)
|
||||
(enemy-method-65 self)
|
||||
)
|
||||
((logtest? (enemy-option ambush) (-> self fact-info-override enemy-options))
|
||||
((logtest? (enemy-option ambush) (-> self fact enemy-options))
|
||||
(go-ambush self)
|
||||
)
|
||||
(else
|
||||
@@ -1272,7 +1269,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-28 (-> obj fact-info-override enemy-options)))
|
||||
(let ((v1-28 (-> obj fact enemy-options)))
|
||||
(cond
|
||||
((logtest? (enemy-option spawner) v1-28)
|
||||
(process-entity-status! obj (entity-perm-status dead) #t)
|
||||
@@ -1469,7 +1466,7 @@ This commonly includes things such as:
|
||||
"Checks a variety of criteria to determine the level of awareness the enemy is of the target. Sets `aware` and related fields as well!
|
||||
@TODO - flesh out docs
|
||||
@returns the value that sets `aware`"
|
||||
(let ((f30-0 (vector-vector-distance (get-trans arg0 0) (-> obj root-override2 trans)))
|
||||
(let ((f30-0 (vector-vector-distance (get-trans arg0 0) (-> obj root trans)))
|
||||
(s3-1 #f)
|
||||
(s2-0 #f)
|
||||
)
|
||||
@@ -1506,7 +1503,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
)
|
||||
((< f30-0 (-> obj fact-info-override idle-distance))
|
||||
((< f30-0 (-> obj fact idle-distance))
|
||||
1
|
||||
)
|
||||
(else
|
||||
@@ -1517,7 +1514,7 @@ This commonly includes things such as:
|
||||
)
|
||||
(when (and (> s3-2 0) (logtest? (enemy-flag called-dying) (-> obj enemy-flags)))
|
||||
(cond
|
||||
((logtest? (enemy-option idle-til-trigger) (-> obj fact-info-override enemy-options))
|
||||
((logtest? (enemy-option idle-til-trigger) (-> obj fact enemy-options))
|
||||
(if (not (enemy-method-130 obj f30-0))
|
||||
(set! s3-2 0)
|
||||
)
|
||||
@@ -1542,7 +1539,7 @@ This commonly includes things such as:
|
||||
)
|
||||
|
||||
(defmethod enemy-method-130 enemy ((obj enemy) (arg0 float))
|
||||
(let* ((v1-0 (-> obj fact-info-override))
|
||||
(let* ((v1-0 (-> obj fact))
|
||||
(a2-0 (-> v1-0 trig-mask-count))
|
||||
(a3-0 (-> v1-0 trig-mask))
|
||||
)
|
||||
@@ -1675,7 +1672,7 @@ This commonly includes things such as:
|
||||
)
|
||||
((method-of-type touching-shapes-entry prims-touching-action?)
|
||||
(the-as touching-shapes-entry s3-3)
|
||||
(-> obj root-override2)
|
||||
(-> obj root)
|
||||
(collide-action solid)
|
||||
(collide-action)
|
||||
)
|
||||
@@ -1691,7 +1688,7 @@ This commonly includes things such as:
|
||||
((= arg2 'attack-invinc)
|
||||
(case (-> (the-as attack-info (-> arg3 param 1)) mode)
|
||||
(('endlessfall)
|
||||
(let ((v1-31 (-> obj root-override2 root-prim)))
|
||||
(let ((v1-31 (-> obj root root-prim)))
|
||||
(set! (-> v1-31 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-31 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -1821,7 +1818,7 @@ This commonly includes things such as:
|
||||
(logclear! (-> obj mask) (process-mask actor-pause))
|
||||
(cond
|
||||
(v1-162
|
||||
(if (logtest? (enemy-option ambush) (-> obj fact-info-override enemy-options))
|
||||
(if (logtest? (enemy-option ambush) (-> obj fact enemy-options))
|
||||
(go-ambush obj)
|
||||
(go-hostile obj)
|
||||
)
|
||||
@@ -1830,7 +1827,7 @@ This commonly includes things such as:
|
||||
(or (= v1-173 'dormant) (= v1-173 'dormant-aware))
|
||||
)
|
||||
)
|
||||
(if (logtest? (enemy-option ambush) (-> obj fact-info-override enemy-options))
|
||||
(if (logtest? (enemy-option ambush) (-> obj fact enemy-options))
|
||||
(go-ambush obj)
|
||||
(go (method-of-object obj notice))
|
||||
)
|
||||
@@ -1846,7 +1843,7 @@ This commonly includes things such as:
|
||||
(not (logtest? (-> obj focus-status) (focus-status grabbed)))
|
||||
)
|
||||
(logclear! (-> obj enemy-flags) (enemy-flag alert victory called-dying))
|
||||
(if (logtest? (enemy-option ambush) (-> obj fact-info-override enemy-options))
|
||||
(if (logtest? (enemy-option ambush) (-> obj fact enemy-options))
|
||||
(go-ambush obj)
|
||||
(react-to-focus obj)
|
||||
)
|
||||
@@ -1867,10 +1864,10 @@ This commonly includes things such as:
|
||||
((= arg2 'death-start)
|
||||
(set! (-> obj enemy-flags) (the-as enemy-flag (logior (enemy-flag recover) (-> obj enemy-flags))))
|
||||
(send-event (ppointer->process (-> obj parent)) 'child-die)
|
||||
(drop-pickup (-> obj fact-info-override) #t *entity-pool* (-> obj fact-info-override) 0)
|
||||
(drop-pickup (-> obj fact) #t *entity-pool* (-> obj fact) 0)
|
||||
(let ((s5-1 (-> obj on-death)))
|
||||
(if s5-1
|
||||
(script-eval (the-as pair s5-1) :vector (-> obj root-override2 trans))
|
||||
(script-eval (the-as pair s5-1) :vector (-> obj root trans))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -1886,9 +1883,9 @@ This commonly includes things such as:
|
||||
((= arg2 'instant-death)
|
||||
(when (and (> (-> obj hit-points) 0) (zero? (-> obj fated-time)))
|
||||
(set! (-> obj hit-points) 0)
|
||||
(set! (-> obj root-override2 penetrated-by) (get-penetrate-info obj))
|
||||
(set! (-> obj root penetrated-by) (get-penetrate-info obj))
|
||||
(let ((s5-2 (enemy-method-50 obj (new 'stack-no-clear 'vector))))
|
||||
(vector-z-quaternion! s5-2 (-> obj root-override2 quat))
|
||||
(vector-z-quaternion! s5-2 (-> obj root quat))
|
||||
(vector-float*! s5-2 s5-2 -1.0)
|
||||
(vector-normalize! s5-2 1.0)
|
||||
)
|
||||
@@ -1912,7 +1909,7 @@ This commonly includes things such as:
|
||||
(send-event (ppointer->process (-> obj parent)) 'child-die)
|
||||
(let ((s5-3 (-> obj on-death)))
|
||||
(if s5-3
|
||||
(script-eval (the-as pair s5-3) :vector (-> obj root-override2 trans))
|
||||
(script-eval (the-as pair s5-3) :vector (-> obj root trans))
|
||||
)
|
||||
)
|
||||
(cleanup-for-death obj)
|
||||
@@ -1934,10 +1931,10 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
((= arg2 'push-trans)
|
||||
(move-by-vector! (-> obj root-override2) (the-as vector (-> arg3 param 0)))
|
||||
(move-by-vector! (-> obj root) (the-as vector (-> arg3 param 0)))
|
||||
)
|
||||
((= arg2 'move-trans)
|
||||
(move-to-point! (-> obj root-override2) (the-as vector (-> arg3 param 0)))
|
||||
(move-to-point! (-> obj root) (the-as vector (-> arg3 param 0)))
|
||||
)
|
||||
((= arg2 'shadow)
|
||||
(cond
|
||||
@@ -2026,7 +2023,7 @@ This commonly includes things such as:
|
||||
)
|
||||
(set! (-> obj hit-points) s4-1)
|
||||
(if (not (logtest? (-> obj enemy-flags) (enemy-flag attackable-backup)))
|
||||
(set! (-> obj root-override2 penetrated-by) (get-penetrate-info obj))
|
||||
(set! (-> obj root penetrated-by) (get-penetrate-info obj))
|
||||
)
|
||||
(- s5-0 s4-1)
|
||||
)
|
||||
@@ -2050,14 +2047,14 @@ This commonly includes things such as:
|
||||
(and s3-0 (not (logtest? (-> s3-0 focus-status) (focus-status disable dead ignore grabbed))))
|
||||
((method-of-type touching-shapes-entry prims-touching-action?)
|
||||
touch-entry
|
||||
(-> obj root-override2)
|
||||
(-> obj root)
|
||||
(collide-action deadly)
|
||||
(collide-action)
|
||||
)
|
||||
)
|
||||
(let ((a3-2 (if ((method-of-type touching-shapes-entry prims-touching-action?)
|
||||
touch-entry
|
||||
(-> obj root-override2)
|
||||
(-> obj root)
|
||||
(collide-action persistent-attack)
|
||||
(collide-action)
|
||||
)
|
||||
@@ -2071,13 +2068,13 @@ This commonly includes things such as:
|
||||
)
|
||||
((and ((method-of-type touching-shapes-entry prims-touching-action?)
|
||||
touch-entry
|
||||
(-> obj root-override2)
|
||||
(-> obj root)
|
||||
(collide-action no-standon)
|
||||
(collide-action)
|
||||
)
|
||||
(not (logtest? (-> obj root-override2 penetrated-by) (-> s3-0 root-override penetrate-using)))
|
||||
(not (logtest? (-> obj root penetrated-by) (-> s3-0 root penetrate-using)))
|
||||
)
|
||||
(if (send-shoves (-> obj root-override2) arg0 touch-entry 0.7 6144.0 16384.0)
|
||||
(if (send-shoves (-> obj root) arg0 touch-entry 0.7 6144.0 16384.0)
|
||||
(send-event obj 'bouncing-off arg0)
|
||||
)
|
||||
)
|
||||
@@ -2098,13 +2095,13 @@ This commonly includes things such as:
|
||||
)
|
||||
(when ((method-of-type touching-shapes-entry prims-touching-action?)
|
||||
(the-as touching-shapes-entry s4-0)
|
||||
(-> obj root-override2)
|
||||
(-> obj root)
|
||||
(collide-action solid semi-solid deadly)
|
||||
(collide-action)
|
||||
)
|
||||
(let ((a3-2 (if ((method-of-type touching-shapes-entry prims-touching-action?)
|
||||
(the-as touching-shapes-entry s4-0)
|
||||
(-> obj root-override2)
|
||||
(-> obj root)
|
||||
(collide-action persistent-attack)
|
||||
(collide-action)
|
||||
)
|
||||
@@ -2127,14 +2124,14 @@ This commonly includes things such as:
|
||||
|
||||
(defbehavior enemy-simple-post enemy ()
|
||||
(track-target! self)
|
||||
(update-transforms (-> self root-override2))
|
||||
(update-transforms (-> self root))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defbehavior enemy-falling-post enemy ()
|
||||
(set! (-> self enemy-flags) (logior (enemy-flag directed) (-> self enemy-flags)))
|
||||
(let ((gp-0 (-> self root-override2)))
|
||||
(let ((gp-0 (-> self root)))
|
||||
(cond
|
||||
((focus-test? self under-water)
|
||||
(enemy-method-47 self (-> gp-0 transv))
|
||||
@@ -2172,7 +2169,7 @@ This commonly includes things such as:
|
||||
|
||||
(defbehavior enemy-die-falling-post enemy ()
|
||||
(set! (-> self enemy-flags) (logior (enemy-flag directed) (-> self enemy-flags)))
|
||||
(let ((gp-0 (-> self root-override2)))
|
||||
(let ((gp-0 (-> self root)))
|
||||
(if (focus-test? self under-water)
|
||||
(enemy-method-47 self (-> gp-0 transv))
|
||||
(vector-v++! (-> gp-0 transv) (compute-acc-due-to-gravity gp-0 (new-stack-vector0) 0.0))
|
||||
@@ -2251,14 +2248,14 @@ This commonly includes things such as:
|
||||
:event enemy-event-handler
|
||||
:enter (behavior ()
|
||||
((-> (method-of-type enemy idle) enter))
|
||||
(set! (-> self root-override2 nav-flags) (nav-flags))
|
||||
(let ((v1-4 (-> self root-override2 root-prim)))
|
||||
(set! (-> self root nav-flags) (nav-flags))
|
||||
(let ((v1-4 (-> self root root-prim)))
|
||||
(set! (-> v1-4 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-4 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
0
|
||||
(logior! (-> self draw status) (draw-control-status no-draw))
|
||||
(set! (-> self draw origin quad) (-> self root-override2 trans quad))
|
||||
(set! (-> self draw origin quad) (-> self root trans quad))
|
||||
(if (logtest? (enemy-flag alert) (-> self enemy-flags))
|
||||
(set! (-> self enemy-flags) (logior (enemy-flag victory) (-> self enemy-flags)))
|
||||
)
|
||||
@@ -2267,13 +2264,13 @@ This commonly includes things such as:
|
||||
)
|
||||
:exit (behavior ()
|
||||
(logclear! (-> self focus-status) (focus-status disable))
|
||||
(let ((v1-3 (-> self root-override2 root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (-> self root-override2 backup-collide-as))
|
||||
(set! (-> v1-3 prim-core collide-with) (-> self root-override2 backup-collide-with))
|
||||
(let ((v1-3 (-> self root root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (-> self root backup-collide-as))
|
||||
(set! (-> v1-3 prim-core collide-with) (-> self root backup-collide-with))
|
||||
)
|
||||
(logclear! (-> self draw status) (draw-control-status no-draw))
|
||||
(logclear! (-> self enemy-flags) (enemy-flag victory))
|
||||
(logior! (-> self root-override2 nav-flags) (nav-flags has-root-sphere))
|
||||
(logior! (-> self root nav-flags) (nav-flags has-root-sphere))
|
||||
(none)
|
||||
)
|
||||
:code (the-as (function none :behavior enemy) sleep-code)
|
||||
@@ -2288,7 +2285,7 @@ This commonly includes things such as:
|
||||
(when (and (>= (- (current-time) (-> self state-time)) (-> self state-timeout))
|
||||
(> (the-as int (-> self focus aware)) 0)
|
||||
)
|
||||
(if (logtest? (enemy-option ambush) (-> self fact-info-override enemy-options))
|
||||
(if (logtest? (enemy-option ambush) (-> self fact enemy-options))
|
||||
(go-ambush self)
|
||||
(go-virtual active)
|
||||
)
|
||||
@@ -2328,7 +2325,7 @@ This commonly includes things such as:
|
||||
(logclear! (-> self enemy-flags) (enemy-flag jump-check-blocked))
|
||||
(let ((gp-0 (-> self on-active)))
|
||||
(if gp-0
|
||||
(script-eval (the-as pair gp-0) :vector (-> self root-override2 trans))
|
||||
(script-eval (the-as pair gp-0) :vector (-> self root trans))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -2381,7 +2378,7 @@ This commonly includes things such as:
|
||||
(logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate))
|
||||
(let ((gp-0 (-> self on-notice)))
|
||||
(if gp-0
|
||||
(script-eval (the-as pair gp-0) :vector (-> self root-override2 trans))
|
||||
(script-eval (the-as pair gp-0) :vector (-> self root trans))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -2420,8 +2417,8 @@ This commonly includes things such as:
|
||||
:frame-num 0.0
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(vector-! gp-0 (target-pos 0) (-> self root-override2 trans))
|
||||
(seek-toward-heading-vec! (-> self root-override2) gp-0 131072.0 (seconds 0.05))
|
||||
(vector-! gp-0 (target-pos 0) (-> self root trans))
|
||||
(seek-toward-heading-vec! (-> self root) gp-0 131072.0 (seconds 0.05))
|
||||
(suspend)
|
||||
(ja :num! (seek! max f30-0))
|
||||
)
|
||||
@@ -2445,7 +2442,7 @@ This commonly includes things such as:
|
||||
(logclear! (-> self enemy-flags) (enemy-flag drawn-mirrored))
|
||||
(let ((gp-0 (-> self on-hostile)))
|
||||
(if gp-0
|
||||
(script-eval (the-as pair gp-0) :vector (-> self root-override2 trans))
|
||||
(script-eval (the-as pair gp-0) :vector (-> self root trans))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -2611,7 +2608,7 @@ This commonly includes things such as:
|
||||
(set! (-> arg0 anim-speed) (get-rand-float-range obj 0.9 1.1))
|
||||
(set! (-> arg0 hang-time) 0)
|
||||
(set! (-> arg0 dest-pos quad) (-> obj event-param-point quad))
|
||||
(set! (-> arg0 start-pos quad) (-> obj root-override2 trans quad))
|
||||
(set! (-> arg0 start-pos quad) (-> obj root trans quad))
|
||||
(let ((s4-0 (new 'stack-no-clear 'collide-query)))
|
||||
(if (enemy-above-ground?
|
||||
obj
|
||||
@@ -2639,10 +2636,10 @@ This commonly includes things such as:
|
||||
)
|
||||
|
||||
(defmethod enemy-method-86 enemy ((obj enemy))
|
||||
(let ((gp-0 (-> obj root-override2)))
|
||||
(let ((gp-0 (-> obj root)))
|
||||
(when (< (-> gp-0 transv y) 0.0)
|
||||
(let ((a1-0 (new 'stack-no-clear 'collide-query)))
|
||||
(find-ground (-> obj root-override2) a1-0 (the-as collide-spec (-> obj gnd-collide)) 8192.0 81920.0 1024.0)
|
||||
(find-ground (-> obj root) a1-0 (the-as collide-spec (-> obj gnd-collide)) 8192.0 81920.0 1024.0)
|
||||
)
|
||||
(>= (-> gp-0 gspot-pos y) (-> gp-0 trans y))
|
||||
)
|
||||
@@ -2650,14 +2647,14 @@ This commonly includes things such as:
|
||||
)
|
||||
|
||||
(defmethod enemy-method-85 enemy ((obj enemy))
|
||||
(let* ((v1-0 (-> obj root-override2))
|
||||
(let* ((v1-0 (-> obj root))
|
||||
(f0-0 (-> v1-0 gspot-pos y))
|
||||
)
|
||||
(if (< (-> v1-0 trans y) f0-0)
|
||||
(set! (-> v1-0 trans y) f0-0)
|
||||
)
|
||||
)
|
||||
(set! (-> obj root-override2 transv y) 0.0)
|
||||
(set! (-> obj root transv y) 0.0)
|
||||
)
|
||||
|
||||
(defmethod enemy-method-92 enemy ((obj enemy) (arg0 int) (arg1 nav-poly))
|
||||
@@ -2673,9 +2670,9 @@ This commonly includes things such as:
|
||||
(set! (-> obj enemy-flags) (logior (enemy-flag directed) (-> obj enemy-flags)))
|
||||
(let ((f30-0 (the float (-> arg1 hang-time))))
|
||||
(let ((a1-3 (compute-trans-at-time (-> arg1 traj) f30-0 (new 'stack-no-clear 'vector))))
|
||||
(move-to-point! (-> obj root-override2) a1-3)
|
||||
(move-to-point! (-> obj root) a1-3)
|
||||
)
|
||||
(let ((s5-1 (-> obj root-override2 transv)))
|
||||
(let ((s5-1 (-> obj root transv)))
|
||||
(compute-transv-at-time (-> arg1 traj) f30-0 s5-1)
|
||||
(vector-float*! s5-1 s5-1 300.0)
|
||||
)
|
||||
@@ -2851,7 +2848,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
(label cfg-12)
|
||||
(logclear! (-> self root-override2 status) (collide-status on-surface on-ground touch-surface))
|
||||
(logclear! (-> self root status) (collide-status on-surface on-ground touch-surface))
|
||||
(let ((s5-1 2))
|
||||
(logior! (-> self focus-status) (focus-status in-air))
|
||||
(until (enemy-method-86 self)
|
||||
@@ -2896,7 +2893,7 @@ This commonly includes things such as:
|
||||
(set! (-> a1-0 options) (overlaps-others-options))
|
||||
(set! (-> a1-0 collide-with-filter) (-> self enemy-info overlaps-others-collide-with-filter))
|
||||
(set! (-> a1-0 tlist) *touching-list*)
|
||||
(find-overlapping-shapes (-> self root-override2) a1-0)
|
||||
(find-overlapping-shapes (-> self root) a1-0)
|
||||
)
|
||||
(enemy-simple-post)
|
||||
(none)
|
||||
@@ -3030,7 +3027,7 @@ This commonly includes things such as:
|
||||
(return (the-as symbol #f))
|
||||
)
|
||||
(when (not (logtest? (enemy-flag directed) (-> obj enemy-flags)))
|
||||
(let ((s5-0 (-> obj root-override2)))
|
||||
(let ((s5-0 (-> obj root)))
|
||||
(if (focus-test? obj under-water)
|
||||
(enemy-method-47 obj (-> s5-0 transv))
|
||||
(+! (-> s5-0 transv y) (* (-> obj enemy-info movement-gravity) (-> pp clock seconds-per-frame)))
|
||||
@@ -3054,7 +3051,7 @@ This commonly includes things such as:
|
||||
(if (and (enemy-method-102 obj) (not (logtest? (-> obj focus-status) (focus-status dead))))
|
||||
(kill-prefer-falling obj)
|
||||
)
|
||||
(let ((s5-1 (-> obj root-override2))
|
||||
(let ((s5-1 (-> obj root))
|
||||
(a1-2 (new 'stack-no-clear 'collide-query))
|
||||
(s3-0 (new 'stack-no-clear 'vector))
|
||||
(s4-0 (new 'stack-no-clear 'vector))
|
||||
@@ -3115,7 +3112,7 @@ This commonly includes things such as:
|
||||
(((knocked-type knocked-type-4))
|
||||
(vector-rotate90-around-y! arg0 arg0)
|
||||
(let ((v1-9 (new 'stack-no-clear 'vector)))
|
||||
(vector-! v1-9 (-> obj incoming attacker-pos) (-> obj root-override2 trans))
|
||||
(vector-! v1-9 (-> obj incoming attacker-pos) (-> obj root trans))
|
||||
(set! (-> v1-9 y) 0.0)
|
||||
(if (< 0.0 (vector-dot v1-9 arg0))
|
||||
(vector-negate! arg0 arg0)
|
||||
@@ -3127,7 +3124,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
(((knocked-type knocked-type-5))
|
||||
(let* ((f1-2 (vector-vector-xz-distance-squared (target-pos 0) (-> obj root-override2 trans)))
|
||||
(let* ((f1-2 (vector-vector-xz-distance-squared (target-pos 0) (-> obj root trans)))
|
||||
(f0-26 1.0)
|
||||
(f2-0 61440.0)
|
||||
(f1-3 (fmin f1-2 (* f2-0 f2-0)))
|
||||
@@ -3139,7 +3136,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
(((knocked-type knocked-type-6))
|
||||
(let* ((f1-5 (vector-vector-xz-distance-squared (target-pos 0) (-> obj root-override2 trans)))
|
||||
(let* ((f1-5 (vector-vector-xz-distance-squared (target-pos 0) (-> obj root trans)))
|
||||
(f0-34 1.0)
|
||||
(f2-6 122880.0)
|
||||
(f1-6 (fmin f1-5 (* f2-6 f2-6)))
|
||||
@@ -3174,21 +3171,19 @@ This commonly includes things such as:
|
||||
)
|
||||
|
||||
(defmethod enemy-method-51 enemy ((obj enemy))
|
||||
(let ((f30-0 (quaternion-y-angle (-> obj root-override2 quat))))
|
||||
(let ((f30-0 (quaternion-y-angle (-> obj root quat))))
|
||||
(case (-> obj incoming knocked-type)
|
||||
(((knocked-type knocked-type-4) (knocked-type knocked-type-6))
|
||||
(let ((a0-5 (handle->process (-> obj focus handle))))
|
||||
(when a0-5
|
||||
(let ((v1-9 (get-trans (the-as process-focusable a0-5) 0)))
|
||||
(set! f30-0
|
||||
(atan (- (-> v1-9 x) (-> obj root-override2 trans x)) (- (-> v1-9 z) (-> obj root-override2 trans z)))
|
||||
)
|
||||
(set! f30-0 (atan (- (-> v1-9 x) (-> obj root trans x)) (- (-> v1-9 z) (-> obj root trans z))))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let* ((v1-13 (-> obj root-override2 transv))
|
||||
(let* ((v1-13 (-> obj root transv))
|
||||
(f28-0 (atan (-> v1-13 x) (-> v1-13 z)))
|
||||
(f1-2 (deg- f30-0 f28-0))
|
||||
(f2-0 (fabs f1-2))
|
||||
@@ -3251,7 +3246,7 @@ This commonly includes things such as:
|
||||
)
|
||||
|
||||
(defmethod enemy-method-80 enemy ((obj enemy) (arg0 enemy-knocked-info))
|
||||
(let ((gp-0 (-> obj root-override2)))
|
||||
(let ((gp-0 (-> obj root)))
|
||||
(or (>= (-> arg0 on-surface-count) 3)
|
||||
(and (logtest? (-> gp-0 status) (collide-status on-ground)) (>= 16384.0 (-> gp-0 transv y)))
|
||||
(and (>= (-> arg0 move-count) 3)
|
||||
@@ -3267,7 +3262,7 @@ This commonly includes things such as:
|
||||
)
|
||||
|
||||
(defmethod enemy-method-81 enemy ((obj enemy))
|
||||
(let ((s5-0 (-> obj root-override2))
|
||||
(let ((s5-0 (-> obj root))
|
||||
(a1-0 (new 'stack-no-clear 'collide-query))
|
||||
(gp-0 #t)
|
||||
)
|
||||
@@ -3311,7 +3306,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
((= v1-0 4)
|
||||
(vector-reset! (-> obj root-override2 transv))
|
||||
(vector-reset! (-> obj root transv))
|
||||
(set! s5-0 #t)
|
||||
)
|
||||
(else
|
||||
@@ -3337,10 +3332,10 @@ This commonly includes things such as:
|
||||
(set! (-> self attack-id) a0-4)
|
||||
)
|
||||
(enemy-method-103 self)
|
||||
(if (logtest? (enemy-option knocked-into-water) (-> self fact-info-override enemy-options))
|
||||
(if (logtest? (enemy-option knocked-into-water) (-> self fact enemy-options))
|
||||
(set! (-> self enemy-flags) (logior (enemy-flag trackable-backup) (-> self enemy-flags)))
|
||||
)
|
||||
(let ((v1-16 (-> self root-override2)))
|
||||
(let ((v1-16 (-> self root)))
|
||||
(logclear! (-> v1-16 status) (collide-status
|
||||
on-surface
|
||||
on-ground
|
||||
@@ -3380,7 +3375,7 @@ This commonly includes things such as:
|
||||
(if (= (-> self incoming knocked-type) (knocked-type knocked-type-4))
|
||||
(logclear! (-> self enemy-flags) (enemy-flag check-water-backup))
|
||||
)
|
||||
(set! (-> self root-override2 penetrate-using) (penetrate lunge vehicle knocked))
|
||||
(set! (-> self root penetrate-using) (penetrate lunge vehicle knocked))
|
||||
(enemy-method-49 self)
|
||||
(enemy-method-46 self 1)
|
||||
(none)
|
||||
@@ -3395,8 +3390,8 @@ This commonly includes things such as:
|
||||
)
|
||||
(set! (-> self enemy-flags) v1-1)
|
||||
(when (nonzero? (-> self hit-points))
|
||||
(set! (-> self root-override2 penetrate-using)
|
||||
(the-as penetrate (logclear (-> self root-override2 penetrate-using) (penetrate knocked)))
|
||||
(set! (-> self root penetrate-using)
|
||||
(the-as penetrate (logclear (-> self root penetrate-using) (penetrate knocked)))
|
||||
)
|
||||
(enemy-method-46 self 2)
|
||||
(if (logtest? (-> self enemy-flags) (enemy-flag check-water))
|
||||
@@ -3428,7 +3423,7 @@ This commonly includes things such as:
|
||||
)
|
||||
:trans (behavior ()
|
||||
(if (>= (-> self enemy-info knocked-seek-ry-clamp) 0.0)
|
||||
(seek-toward-yaw-angle! (-> self root-override2) (-> self desired-angle) 138353.78 (seconds 0.1))
|
||||
(seek-toward-yaw-angle! (-> self root) (-> self desired-angle) 138353.78 (seconds 0.1))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
@@ -3442,7 +3437,7 @@ This commonly includes things such as:
|
||||
(if (>= (- (current-time) (-> self state-time)) (seconds 2))
|
||||
(kill-prefer-falling self)
|
||||
)
|
||||
(if (logtest? (-> self root-override2 status) (collide-status on-surface))
|
||||
(if (logtest? (-> self root status) (collide-status on-surface))
|
||||
(+! (-> gp-0 on-surface-count) 1)
|
||||
)
|
||||
(enemy-method-79 self s5-0 gp-0)
|
||||
@@ -3454,7 +3449,7 @@ This commonly includes things such as:
|
||||
(let ((s5-1 2))
|
||||
(set! (-> gp-0 land-can-land-time) (current-time))
|
||||
(until #f
|
||||
(if (logtest? (-> self root-override2 status) (collide-status on-surface))
|
||||
(if (logtest? (-> self root status) (collide-status on-surface))
|
||||
(+! (-> gp-0 on-surface-count) 1)
|
||||
)
|
||||
(if (enemy-method-79 self s5-1 gp-0)
|
||||
@@ -3488,7 +3483,7 @@ This commonly includes things such as:
|
||||
(cond
|
||||
((logtest? (enemy-flag recover) (-> self enemy-flags))
|
||||
(set! (-> self hit-points) 0)
|
||||
(let ((v1-67 (-> self root-override2 root-prim)))
|
||||
(let ((v1-67 (-> self root root-prim)))
|
||||
(set! (-> v1-67 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-67 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -3539,7 +3534,7 @@ This commonly includes things such as:
|
||||
)
|
||||
(let ((a0-18 (vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data (-> obj enemy-info gem-joint))))
|
||||
)
|
||||
(birth-pickup-at-point a0-18 (pickup-type gem) 1.0 #t *entity-pool* (-> obj fact-info-override))
|
||||
(birth-pickup-at-point a0-18 (pickup-type gem) 1.0 #t *entity-pool* (-> obj fact))
|
||||
)
|
||||
)
|
||||
(logclear! (-> obj enemy-flags) (enemy-flag enable-on-active checking-water))
|
||||
@@ -3563,7 +3558,7 @@ This commonly includes things such as:
|
||||
:event enemy-event-handler
|
||||
:enter (behavior ()
|
||||
(dispose! self)
|
||||
(let ((v1-3 (-> self root-override2 root-prim)))
|
||||
(let ((v1-3 (-> self root root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-3 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -3603,7 +3598,7 @@ This commonly includes things such as:
|
||||
)
|
||||
|
||||
(defmethod enemy-method-133 enemy ((obj enemy))
|
||||
(let ((s5-0 (-> obj root-override2))
|
||||
(let ((s5-0 (-> obj root))
|
||||
(a1-0 (new 'stack-no-clear 'collide-query))
|
||||
(gp-0 #t)
|
||||
)
|
||||
@@ -3621,13 +3616,13 @@ This commonly includes things such as:
|
||||
:event enemy-event-handler
|
||||
:enter (behavior ()
|
||||
(dispose! self)
|
||||
(let ((v1-3 (-> self root-override2 root-prim)))
|
||||
(let ((v1-3 (-> self root root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-3 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
0
|
||||
(set! (-> self hit-points) 0)
|
||||
(if (logtest? (enemy-option knocked-into-water) (-> self fact-info-override enemy-options))
|
||||
(if (logtest? (enemy-option knocked-into-water) (-> self fact enemy-options))
|
||||
(set! (-> self enemy-flags) (logior (enemy-flag trackable-backup) (-> self enemy-flags)))
|
||||
)
|
||||
(enemy-method-103 self)
|
||||
|
||||
@@ -497,7 +497,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x7
|
||||
:speech #x34
|
||||
:delay #x258
|
||||
:delay (seconds 2)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -614,7 +614,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x3
|
||||
:speech #x42
|
||||
:delay #x4b0
|
||||
:delay (seconds 4)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -623,7 +623,7 @@
|
||||
:channel (gui-channel daxter)
|
||||
:flags #x3
|
||||
:speech #x43
|
||||
:delay #xbb8
|
||||
:delay (seconds 10)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -664,7 +664,7 @@
|
||||
:channel (gui-channel daxter)
|
||||
:flags #x3
|
||||
:speech #x48
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -681,7 +681,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x3
|
||||
:speech #x4a
|
||||
:delay #x258
|
||||
:delay (seconds 2)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -748,7 +748,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x3
|
||||
:speech #x51
|
||||
:delay #x1770
|
||||
:delay (seconds 20)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -823,7 +823,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x7
|
||||
:speech #x5a
|
||||
:delay #x708
|
||||
:delay (seconds 6)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -858,7 +858,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x7
|
||||
:speech #x5e
|
||||
:delay #x258
|
||||
:delay (seconds 2)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -883,7 +883,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x7
|
||||
:speech #x61
|
||||
:delay #x708
|
||||
:delay (seconds 6)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -892,7 +892,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x7
|
||||
:speech #x62
|
||||
:delay #x708
|
||||
:delay (seconds 6)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -901,7 +901,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x7
|
||||
:speech #x63
|
||||
:delay #x708
|
||||
:delay (seconds 6)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -910,7 +910,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x3
|
||||
:speech #x64
|
||||
:delay #x708
|
||||
:delay (seconds 6)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -919,7 +919,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x7
|
||||
:speech #x65
|
||||
:delay #x708
|
||||
:delay (seconds 6)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -928,7 +928,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x7
|
||||
:speech #x66
|
||||
:delay #x708
|
||||
:delay (seconds 6)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -954,7 +954,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x7
|
||||
:speech #x69
|
||||
:delay #x5dc
|
||||
:delay (seconds 5)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -995,7 +995,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x3
|
||||
:speech #x6e
|
||||
:delay #x5dc
|
||||
:delay (seconds 5)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1021,7 +1021,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x3
|
||||
:speech #x71
|
||||
:delay #x708
|
||||
:delay (seconds 6)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1137,7 +1137,7 @@
|
||||
:speech #x7d
|
||||
:text-message (text-id gun-upgrade-acquired)
|
||||
:text-duration #x5dc
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1147,7 +1147,7 @@
|
||||
:flags #x40
|
||||
:speech #x7e
|
||||
:text-message (text-id gun-upgrade-speed)
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1158,7 +1158,7 @@
|
||||
:speech #x7f
|
||||
:text-message (text-id gun-upgrade-ammo)
|
||||
:text-duration #x5dc
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1169,7 +1169,7 @@
|
||||
:speech #x80
|
||||
:text-message (text-id gun-upgrade-damage)
|
||||
:text-duration #x5dc
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1180,7 +1180,7 @@
|
||||
:speech #x81
|
||||
:text-message (text-id mission-complete)
|
||||
:text-duration #x5dc
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1190,7 +1190,7 @@
|
||||
:flags #x40
|
||||
:speech #x82
|
||||
:text-message (text-id pass-red-acquired)
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1201,7 +1201,7 @@
|
||||
:speech #x83
|
||||
:text-message (text-id pass-green-acquired)
|
||||
:text-duration #x5dc
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1212,7 +1212,7 @@
|
||||
:speech #x84
|
||||
:text-message (text-id pass-yellow-acquired)
|
||||
:text-duration #x5dc
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1223,7 +1223,7 @@
|
||||
:speech #x85
|
||||
:text-message (text-id pass-palace-acquired)
|
||||
:text-duration #x5dc
|
||||
:delay #xbb8
|
||||
:delay (seconds 10)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1234,7 +1234,7 @@
|
||||
:speech #x86
|
||||
:text-message (text-id pass-black-acquired)
|
||||
:text-duration #x5dc
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1245,7 +1245,7 @@
|
||||
:speech #x87
|
||||
:text-message (text-id red-gun-acquired)
|
||||
:text-duration #x5dc
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1256,7 +1256,7 @@
|
||||
:speech #x88
|
||||
:text-message (text-id yellow-gun-acquired)
|
||||
:text-duration #x5dc
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1267,7 +1267,7 @@
|
||||
:speech #x89
|
||||
:text-message (text-id blue-gun-acquired)
|
||||
:text-duration #x5dc
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1278,7 +1278,7 @@
|
||||
:speech #x8a
|
||||
:text-message (text-id dark-gun-acquired)
|
||||
:text-duration #x5dc
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1287,7 +1287,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x3
|
||||
:speech #x8b
|
||||
:delay #x708
|
||||
:delay (seconds 6)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1527,7 +1527,7 @@
|
||||
:speech #xaa
|
||||
:text-message (text-id oracle-gem-grind-200)
|
||||
:text-duration #x5dc
|
||||
:delay #x258
|
||||
:delay (seconds 2)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1537,7 +1537,7 @@
|
||||
:speech #xab
|
||||
:text-message (text-id oracle-gem-grind-200)
|
||||
:text-duration #x5dc
|
||||
:delay #x258
|
||||
:delay (seconds 2)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -1547,7 +1547,7 @@
|
||||
:speech #xac
|
||||
:text-message (text-id oracle-gem-grind-200)
|
||||
:text-duration #x5dc
|
||||
:delay #x258
|
||||
:delay (seconds 2)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -2823,7 +2823,7 @@
|
||||
:name "cityv175"
|
||||
:channel (gui-channel alert)
|
||||
:speech #x173
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -2831,7 +2831,7 @@
|
||||
:name "cityv176"
|
||||
:channel (gui-channel alert)
|
||||
:speech #x174
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -2839,7 +2839,7 @@
|
||||
:name "cityv177"
|
||||
:channel (gui-channel alert)
|
||||
:speech #x175
|
||||
:delay #x384
|
||||
:delay (seconds 3)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -3519,7 +3519,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x2
|
||||
:speech #x1ce
|
||||
:delay #x258
|
||||
:delay (seconds 2)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -3528,7 +3528,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x2
|
||||
:speech #x1cf
|
||||
:delay #x258
|
||||
:delay (seconds 2)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
@@ -3537,7 +3537,7 @@
|
||||
:channel (gui-channel voicebox)
|
||||
:flags #x2
|
||||
:speech #x1d0
|
||||
:delay #x258
|
||||
:delay (seconds 2)
|
||||
:neg #x1
|
||||
:on-close #f
|
||||
)
|
||||
|
||||
@@ -20,15 +20,15 @@
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype fma-sphere (process-drawable)
|
||||
((root-override collide-shape :offset 128)
|
||||
(first-time? symbol :offset-assert 200)
|
||||
(mode fma-sphere-mode :offset-assert 204)
|
||||
(track-handle handle :offset-assert 208)
|
||||
(track-joint int32 :offset-assert 216)
|
||||
(attack-id uint32 :offset-assert 220)
|
||||
(duration time-frame :offset-assert 224)
|
||||
(sphere sphere :inline :offset-assert 240)
|
||||
(danger traffic-danger-info :inline :offset-assert 256)
|
||||
((root collide-shape :override)
|
||||
(first-time? symbol :offset-assert 200)
|
||||
(mode fma-sphere-mode :offset-assert 204)
|
||||
(track-handle handle :offset-assert 208)
|
||||
(track-joint int32 :offset-assert 216)
|
||||
(attack-id uint32 :offset-assert 220)
|
||||
(duration time-frame :offset-assert 224)
|
||||
(sphere sphere :inline :offset-assert 240)
|
||||
(danger traffic-danger-info :inline :offset-assert 256)
|
||||
)
|
||||
:heap-base #xc0
|
||||
:method-count-assert 21
|
||||
@@ -64,7 +64,7 @@
|
||||
(let ((v1-2 (new 'static 'attack-info :mask (attack-info-mask mode id attacker-velocity damage knock))))
|
||||
(set! (-> v1-2 id) (-> self attack-id))
|
||||
(set! (-> v1-2 mode) 'eco-red)
|
||||
(set! (-> v1-2 attacker-velocity quad) (-> self root-override transv quad))
|
||||
(set! (-> v1-2 attacker-velocity quad) (-> self root transv quad))
|
||||
(set! (-> v1-2 damage) 2.0)
|
||||
(set! (-> v1-2 knock) (the-as uint 2))
|
||||
(set! (-> a1-2 param 1) (the-as uint v1-2))
|
||||
@@ -105,7 +105,7 @@
|
||||
(set! (-> gp-0 quad) (-> self sphere quad))
|
||||
(set! (-> gp-0 w) 1.0)
|
||||
(vector-matrix*! gp-0 gp-0 (-> (the-as process-drawable a2-0) node-list data v1-5 bone transform))
|
||||
(let ((v1-9 (-> self root-override)))
|
||||
(let ((v1-9 (-> self root)))
|
||||
(vector-! (-> v1-9 transv) gp-0 (-> v1-9 trans))
|
||||
(let ((a0-12 (-> v1-9 transv)))
|
||||
(.lvf vf1 (&-> (-> v1-9 transv) quad))
|
||||
@@ -118,7 +118,7 @@
|
||||
(.svf (&-> a0-12 quad) vf1)
|
||||
)
|
||||
)
|
||||
(move-to-point! (-> self root-override) gp-0)
|
||||
(move-to-point! (-> self root) gp-0)
|
||||
(set! (-> self danger sphere x) (-> gp-0 x))
|
||||
(set! (-> self danger sphere y) (-> gp-0 y))
|
||||
(set! (-> self danger sphere z) (-> gp-0 z))
|
||||
@@ -134,7 +134,7 @@
|
||||
(set! (-> a1-10 options) (overlaps-others-options))
|
||||
(set! (-> a1-10 collide-with-filter) (the-as collide-spec -1))
|
||||
(set! (-> a1-10 tlist) *touching-list*)
|
||||
(find-overlapping-shapes (-> self root-override) a1-10)
|
||||
(find-overlapping-shapes (-> self root) a1-10)
|
||||
)
|
||||
)
|
||||
(if (or (logtest? *display-scene-control* (scene-controls display-controls))
|
||||
@@ -143,7 +143,7 @@
|
||||
(add-debug-sphere
|
||||
#t
|
||||
(bucket-id debug2)
|
||||
(-> self root-override trans)
|
||||
(-> self root trans)
|
||||
(-> self sphere r)
|
||||
(new 'static 'rgba :r #x80 :g #x40 :a #x80)
|
||||
)
|
||||
@@ -211,9 +211,9 @@
|
||||
(set! (-> gp-1 backup-collide-as) (-> v1-27 prim-core collide-as))
|
||||
(set! (-> gp-1 backup-collide-with) (-> v1-27 prim-core collide-with))
|
||||
)
|
||||
(set! (-> self root-override) gp-1)
|
||||
(set! (-> self root) gp-1)
|
||||
)
|
||||
(let ((gp-2 (-> self root-override)))
|
||||
(let ((gp-2 (-> self root)))
|
||||
(set! (-> gp-2 nav-radius) (-> self sphere r))
|
||||
(set! (-> gp-2 root-prim local-sphere w) (-> self sphere r))
|
||||
(set! (-> gp-2 trans quad) (-> self sphere quad))
|
||||
@@ -240,7 +240,7 @@
|
||||
)
|
||||
(logclear! (-> self mask) (process-mask actor-pause enemy))
|
||||
(when (logtest? (-> self mode) (fma-sphere-mode nav))
|
||||
(let ((a0-32 (find-nearest-nav-mesh (-> self root-override trans) (the-as float #x7f800000))))
|
||||
(let ((a0-32 (find-nearest-nav-mesh (-> self root trans) (the-as float #x7f800000))))
|
||||
(cond
|
||||
(a0-32
|
||||
(add-process-drawable-to-navmesh a0-32 self #f)
|
||||
|
||||
@@ -3139,8 +3139,6 @@ it returns a triangle and normal direction to push in.
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 50 of type collide-shape
|
||||
;; INFO: Used lq/sq
|
||||
(defmethod send-shoves collide-shape ((obj collide-shape) (arg0 process) (arg1 touching-shapes-entry) (arg2 float) (arg3 float) (arg4 float))
|
||||
(local-vars (sv-144 process) (sv-160 collide-shape-prim) (sv-176 vector))
|
||||
(with-pp
|
||||
@@ -3161,7 +3159,7 @@ it returns a triangle and normal direction to push in.
|
||||
(when (and s0-0 gp-0)
|
||||
(while s0-0
|
||||
(set! sv-160 (get-touched-prim s0-0 obj arg1))
|
||||
(get-touched-prim s0-0 (-> (the-as process-focusable gp-0) root-override) arg1)
|
||||
(get-touched-prim s0-0 (-> (the-as process-focusable gp-0) root) arg1)
|
||||
(when (logtest? (-> sv-160 prim-core action) (collide-action no-standon))
|
||||
(let ((v1-12 (get-middle-of-bsphere-overlap s0-0 (new 'stack-no-clear 'vector))))
|
||||
(set! sv-176 (new 'stack-no-clear 'vector))
|
||||
@@ -3175,18 +3173,16 @@ it returns a triangle and normal direction to push in.
|
||||
(.svf (&-> sv-176 quad) vf6)
|
||||
(vector-normalize! sv-176 1.0)
|
||||
(when (and (< arg2 (-> sv-176 y)) (and (not (focus-test? (the-as process-focusable gp-0) dead hit board mech))
|
||||
(< (-> (the-as process-focusable gp-0) root-override transv y) 4.096)
|
||||
(< (-> (the-as process-focusable gp-0) root transv y) 4.096)
|
||||
)
|
||||
)
|
||||
(let ((s2-1 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> s2-1 quad) (-> (the-as process-focusable gp-0) root-override transv quad))
|
||||
(let* ((v1-26 (-> (the-as process-focusable gp-0) root-override transv))
|
||||
(set! (-> s2-1 quad) (-> (the-as process-focusable gp-0) root transv quad))
|
||||
(let* ((v1-26 (-> (the-as process-focusable gp-0) root transv))
|
||||
(f30-0 (sqrtf (+ (* (-> v1-26 x) (-> v1-26 x)) (* (-> v1-26 z) (-> v1-26 z)))))
|
||||
)
|
||||
(if (= f30-0 0.0)
|
||||
(set! (-> s2-1 quad)
|
||||
(-> (vector-z-quaternion! s2-1 (-> (the-as process-focusable gp-0) root-override quat)) quad)
|
||||
)
|
||||
(set! (-> s2-1 quad) (-> (vector-z-quaternion! s2-1 (-> (the-as process-focusable gp-0) root quat)) quad))
|
||||
)
|
||||
(vector-xz-normalize! s2-1 (fmax f30-0 arg4))
|
||||
)
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
(set! (-> query collide-with) (-> obj collide-with))
|
||||
(set! (-> query ignore-process0) process-focus)
|
||||
(set! (-> query ignore-process1) process)
|
||||
(set! (-> query ignore-pat) (-> process-focus root-override pat-ignore-mask))
|
||||
(set! (-> query ignore-pat) (-> process-focus root pat-ignore-mask))
|
||||
(set! (-> query action-mask) (collide-action solid))
|
||||
)
|
||||
(fill-using-line-sphere *collide-cache* cquery)
|
||||
|
||||
@@ -20,12 +20,12 @@
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype base-plat (process-focusable)
|
||||
((root-override-2 collide-shape-moving :offset 128)
|
||||
(smush smush-control :inline :offset-assert 208)
|
||||
(basetrans vector :inline :offset-assert 240)
|
||||
(bounce-time time-frame :offset-assert 256)
|
||||
(bouncing symbol :offset-assert 264)
|
||||
(bounce-scale meters :offset-assert 268)
|
||||
((root collide-shape-moving :override)
|
||||
(smush smush-control :inline :offset-assert 208)
|
||||
(basetrans vector :inline :offset-assert 240)
|
||||
(bounce-time time-frame :offset-assert 256)
|
||||
(bouncing symbol :offset-assert 264)
|
||||
(bounce-scale meters :offset-assert 268)
|
||||
)
|
||||
:heap-base #x90
|
||||
:method-count-assert 34
|
||||
@@ -52,7 +52,7 @@ For example for an elevator pre-compute the distance between the first and last
|
||||
|
||||
(defmethod stop-bouncing! base-plat ((obj base-plat))
|
||||
"Sets `bouncing` to false and resets related settings to their defaults"
|
||||
(set! (-> obj basetrans quad) (-> obj root-override trans quad))
|
||||
(set! (-> obj basetrans quad) (-> obj root trans quad))
|
||||
(set! (-> obj bouncing) #f)
|
||||
(set! (-> obj bounce-scale) 819.2)
|
||||
0
|
||||
@@ -66,7 +66,7 @@ and translate the platform via the `smush`
|
||||
(activate! (-> obj smush) -1.0 60 150 1.0 1.0 (-> self clock))
|
||||
(set! (-> obj bounce-time) (current-time))
|
||||
(set! (-> obj bouncing) #t)
|
||||
(sound-play "plat-bounce" :position (-> obj root-override trans))
|
||||
(sound-play "plat-bounce" :position (-> obj root trans))
|
||||
(logclear! (-> obj mask) (process-mask sleep))
|
||||
(logclear! (-> obj mask) (process-mask sleep-code))
|
||||
0
|
||||
@@ -108,14 +108,14 @@ If we aren't bouncing however, TODO - CSHAPE"
|
||||
(let ((trans (new 'stack-no-clear 'vector)))
|
||||
(set! (-> trans quad) (-> self basetrans quad))
|
||||
(+! (-> trans y) (* (-> self bounce-scale) (update! (-> self smush))))
|
||||
(move-to-point! (-> self root-override) trans)
|
||||
(move-to-point! (-> self root) trans)
|
||||
)
|
||||
(if (not (!= (-> self smush amp) 0.0))
|
||||
(set! (-> self bouncing) #f)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(move-to-point! (-> self root-override) (-> self basetrans))
|
||||
(move-to-point! (-> self root) (-> self basetrans))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
@@ -135,10 +135,10 @@ If we aren't bouncing however, TODO - CSHAPE"
|
||||
(defmethod execute-effects base-plat ((obj base-plat))
|
||||
"Executes various ancillary tasks with the platform, such as spawning particles or playing the associated sound"
|
||||
(if (nonzero? (-> obj part))
|
||||
(spawn (-> obj part) (-> obj root-override trans))
|
||||
(spawn (-> obj part) (-> obj root trans))
|
||||
)
|
||||
(when (nonzero? (-> obj sound))
|
||||
(set! (-> obj sound trans quad) (-> obj root-override trans quad))
|
||||
(set! (-> obj sound trans quad) (-> obj root trans quad))
|
||||
(update! (-> obj sound))
|
||||
)
|
||||
(none)
|
||||
@@ -158,7 +158,7 @@ If we aren't bouncing however, TODO - CSHAPE"
|
||||
|
||||
(deftype eco-door (process-drawable)
|
||||
"@unused - Likely a left-over from Jak 1"
|
||||
((root-override collide-shape :offset 128)
|
||||
((root collide-shape :override)
|
||||
(speed float :offset-assert 200)
|
||||
(open-distance float :offset-assert 204)
|
||||
(close-distance float :offset-assert 208)
|
||||
@@ -220,14 +220,13 @@ eco-door-event-handler
|
||||
:code (behavior ()
|
||||
(ja :num-func num-func-identity :frame-num 0.0)
|
||||
(suspend)
|
||||
(update-transforms (-> self root-override))
|
||||
(update-transforms (-> self root))
|
||||
(ja-post)
|
||||
(until #f
|
||||
(when (and *target* (and (>= (-> self open-distance)
|
||||
(vector-vector-distance (-> self root-override trans) (-> *target* control trans))
|
||||
)
|
||||
(not (logtest? (focus-status teleporting) (-> *target* focus-status)))
|
||||
)
|
||||
(when (and *target*
|
||||
(and (>= (-> self open-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))
|
||||
(not (logtest? (focus-status teleporting) (-> *target* focus-status)))
|
||||
)
|
||||
)
|
||||
(lock-according-to-task! self)
|
||||
(if (and (not (-> self locked))
|
||||
@@ -254,10 +253,10 @@ eco-door-event-handler
|
||||
)
|
||||
(send-event *target* 'query 'powerup (pickup-type eco-blue))
|
||||
)
|
||||
(sound-play "blue-eco-on" :position (-> self root-override trans))
|
||||
(sound-play "blue-eco-on" :position (-> self root trans))
|
||||
)
|
||||
(sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t)
|
||||
(let ((prim (-> self root-override root-prim)))
|
||||
(let ((prim (-> self root root-prim)))
|
||||
(set! (-> prim prim-core collide-as) (collide-spec))
|
||||
(set! (-> prim prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -278,7 +277,7 @@ eco-door-event-handler
|
||||
:code (behavior ()
|
||||
(set! (-> self state-time) (current-time))
|
||||
(process-entity-status! self (entity-perm-status subtask-complete) #t)
|
||||
(let ((prim (-> self root-override root-prim)))
|
||||
(let ((prim (-> self root root-prim)))
|
||||
(set! (-> prim prim-core collide-as) (collide-spec))
|
||||
(set! (-> prim prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -286,18 +285,17 @@ eco-door-event-handler
|
||||
(ja :num-func num-func-identity :frame-num max)
|
||||
(logior! (-> self draw status) (draw-control-status no-draw))
|
||||
(suspend)
|
||||
(update-transforms (-> self root-override))
|
||||
(update-transforms (-> self root))
|
||||
(ja-post)
|
||||
(until #f
|
||||
(let ((dist-from-target (vector4-dot (-> self out-dir) (target-pos 0)))
|
||||
(dist-from-camera (vector4-dot (-> self out-dir) (camera-pos)))
|
||||
)
|
||||
(when (and (-> self auto-close)
|
||||
(or (not *target*) (or (< (-> self close-distance)
|
||||
(vector-vector-distance (-> self root-override trans) (-> *target* control trans))
|
||||
)
|
||||
(focus-test? *target* teleporting)
|
||||
)
|
||||
(or (not *target*)
|
||||
(or (< (-> self close-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))
|
||||
(focus-test? *target* teleporting)
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (and (>= (* dist-from-target dist-from-camera) 0.0) (< 16384.0 (fabs dist-from-camera)))
|
||||
@@ -316,15 +314,15 @@ eco-door-event-handler
|
||||
:virtual #t
|
||||
:event eco-door-event-handler
|
||||
:code (behavior ()
|
||||
(let ((v1-1 (-> self root-override root-prim)))
|
||||
(set! (-> v1-1 prim-core collide-as) (-> self root-override backup-collide-as))
|
||||
(set! (-> v1-1 prim-core collide-with) (-> self root-override backup-collide-with))
|
||||
(let ((v1-1 (-> self root root-prim)))
|
||||
(set! (-> v1-1 prim-core collide-as) (-> self root backup-collide-as))
|
||||
(set! (-> v1-1 prim-core collide-with) (-> self root backup-collide-with))
|
||||
)
|
||||
(logclear! (-> self draw status) (draw-control-status no-draw))
|
||||
(let ((params (new 'stack 'overlaps-others-params)))
|
||||
(set! (-> params options) (overlaps-others-options oo0))
|
||||
(set! (-> params tlist) #f)
|
||||
(while (find-overlapping-shapes (-> self root-override) params)
|
||||
(while (find-overlapping-shapes (-> self root) params)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
@@ -371,7 +369,7 @@ otherwise, lock it if [[eco-door-flags:0]] is set"
|
||||
(set! (-> collision-shape backup-collide-as) (-> prim prim-core collide-as))
|
||||
(set! (-> collision-shape backup-collide-with) (-> prim prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override) collision-shape)
|
||||
(set! (-> obj root) collision-shape)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -394,7 +392,7 @@ This commonly includes things such as:
|
||||
(eco-door-method-25 obj)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(let ((door-scale (res-lump-float (-> obj entity) 'scale :default 1.0)))
|
||||
(set-vector! (-> obj root-override scale) door-scale door-scale door-scale 1.0)
|
||||
(set-vector! (-> obj root scale) door-scale door-scale door-scale 1.0)
|
||||
)
|
||||
(set! (-> obj open-distance) 32768.0)
|
||||
(set! (-> obj close-distance) 49152.0)
|
||||
@@ -410,9 +408,9 @@ This commonly includes things such as:
|
||||
(lock-according-to-task! obj)
|
||||
(set! (-> obj auto-close) (logtest? (-> obj flags) (eco-door-flags auto-close)))
|
||||
(set! (-> obj one-way) (logtest? (-> obj flags) (eco-door-flags one-way)))
|
||||
(vector-z-quaternion! (-> obj out-dir) (-> obj root-override quat))
|
||||
(set! (-> obj out-dir w) (- (vector-dot (-> obj out-dir) (-> obj root-override trans))))
|
||||
(update-transforms (-> obj root-override))
|
||||
(vector-z-quaternion! (-> obj out-dir) (-> obj root quat))
|
||||
(set! (-> obj out-dir w) (- (vector-dot (-> obj out-dir) (-> obj root trans))))
|
||||
(update-transforms (-> obj root))
|
||||
(stub obj)
|
||||
(if (and (not (-> obj auto-close))
|
||||
(-> obj entity)
|
||||
|
||||
@@ -64,11 +64,11 @@
|
||||
(logclear! (-> obj button-status) (button-status button-status-2))
|
||||
(if vec
|
||||
(set! (-> obj move-to-pos quad) (-> vec quad))
|
||||
(set! (-> obj move-to-pos quad) (-> obj root-override trans quad))
|
||||
(set! (-> obj move-to-pos quad) (-> obj root trans quad))
|
||||
)
|
||||
(if quat
|
||||
(quaternion-copy! (-> obj move-to-quat) quat)
|
||||
(quaternion-copy! (-> obj move-to-quat) (-> obj root-override quat))
|
||||
(quaternion-copy! (-> obj move-to-quat) (-> obj root quat))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -132,8 +132,8 @@
|
||||
:post (behavior ()
|
||||
(when (logtest? (-> self button-status) (button-status button-status-2))
|
||||
(logclear! (-> self button-status) (button-status button-status-2))
|
||||
(set! (-> self root-override trans quad) (-> self move-to-pos quad))
|
||||
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
|
||||
(set! (-> self root trans quad) (-> self move-to-pos quad))
|
||||
(quaternion-copy! (-> self root quat) (-> self move-to-quat))
|
||||
(rider-post)
|
||||
)
|
||||
(none)
|
||||
@@ -178,8 +178,8 @@
|
||||
:post (behavior ()
|
||||
(when (logtest? (-> self button-status) (button-status button-status-2))
|
||||
(logclear! (-> self button-status) (button-status button-status-2))
|
||||
(set! (-> self root-override trans quad) (-> self move-to-pos quad))
|
||||
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
|
||||
(set! (-> self root trans quad) (-> self move-to-pos quad))
|
||||
(quaternion-copy! (-> self root quat) (-> self move-to-quat))
|
||||
)
|
||||
(rider-post)
|
||||
(none)
|
||||
@@ -231,8 +231,8 @@
|
||||
:post (behavior ()
|
||||
(when (logtest? (-> self button-status) (button-status button-status-2))
|
||||
(logclear! (-> self button-status) (button-status button-status-2))
|
||||
(set! (-> self root-override trans quad) (-> self move-to-pos quad))
|
||||
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
|
||||
(set! (-> self root trans quad) (-> self move-to-pos quad))
|
||||
(quaternion-copy! (-> self root quat) (-> self move-to-quat))
|
||||
(rider-post)
|
||||
)
|
||||
(none)
|
||||
@@ -272,8 +272,8 @@
|
||||
:post (behavior ()
|
||||
(when (logtest? (-> self button-status) (button-status button-status-2))
|
||||
(logclear! (-> self button-status) (button-status button-status-2))
|
||||
(set! (-> self root-override trans quad) (-> self move-to-pos quad))
|
||||
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
|
||||
(set! (-> self root trans quad) (-> self move-to-pos quad))
|
||||
(quaternion-copy! (-> self root quat) (-> self move-to-quat))
|
||||
)
|
||||
(rider-post)
|
||||
(none)
|
||||
@@ -412,7 +412,7 @@
|
||||
(set! (-> collision-shape backup-collide-as) (-> prim prim-core collide-as))
|
||||
(set! (-> collision-shape backup-collide-with) (-> prim prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override) collision-shape)
|
||||
(set! (-> obj root) collision-shape)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -487,9 +487,9 @@ This commonly includes things such as:
|
||||
(set! (-> self actor-group) (the-as (pointer actor-group) #f))
|
||||
(set! (-> self actor-group-count) 0)
|
||||
(basebutton-method-34 self)
|
||||
(set! (-> self root-override trans quad) (-> vec quad))
|
||||
(quaternion-copy! (-> self root-override quat) quat)
|
||||
(set-vector! (-> self root-override scale) 1.0 1.0 1.0 1.0)
|
||||
(set! (-> self root trans quad) (-> vec quad))
|
||||
(quaternion-copy! (-> self root quat) quat)
|
||||
(set-vector! (-> self root scale) 1.0 1.0 1.0 1.0)
|
||||
(prepare-trigger-event! self)
|
||||
(basebutton-method-33 self)
|
||||
(idle-state-transition self)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype blocking-plane (process-drawable)
|
||||
((root-override collide-shape :offset 128)
|
||||
((root collide-shape :override)
|
||||
)
|
||||
:heap-base #x50
|
||||
:method-count-assert 22
|
||||
@@ -33,10 +33,10 @@
|
||||
(the-as object (case event-type
|
||||
(('on)
|
||||
(cond
|
||||
((nonzero? (-> self root-override))
|
||||
(let ((prim (-> self root-override root-prim)))
|
||||
(set! (-> prim prim-core collide-as) (-> self root-override backup-collide-as))
|
||||
(let ((v0-0 (the-as int (-> self root-override backup-collide-with))))
|
||||
((nonzero? (-> self root))
|
||||
(let ((prim (-> self root root-prim)))
|
||||
(set! (-> prim prim-core collide-as) (-> self root backup-collide-as))
|
||||
(let ((v0-0 (the-as int (-> self root backup-collide-with))))
|
||||
(set! (-> prim prim-core collide-with) (the-as collide-spec v0-0))
|
||||
v0-0
|
||||
)
|
||||
@@ -59,8 +59,8 @@
|
||||
)
|
||||
(('off)
|
||||
(cond
|
||||
((nonzero? (-> self root-override))
|
||||
(let ((v1-13 (-> self root-override root-prim)))
|
||||
((nonzero? (-> self root))
|
||||
(let ((v1-13 (-> self root root-prim)))
|
||||
(set! (-> v1-13 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-13 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -108,10 +108,10 @@
|
||||
(set! (-> s2-0 backup-collide-as) (-> v1-6 prim-core collide-as))
|
||||
(set! (-> s2-0 backup-collide-with) (-> v1-6 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override) s2-0)
|
||||
(set! (-> obj root) s2-0)
|
||||
)
|
||||
(let ((s1-0 (new 'stack-no-clear 'matrix))
|
||||
(s2-1 (-> obj root-override))
|
||||
(s2-1 (-> obj root))
|
||||
)
|
||||
(vector+! (-> s2-1 trans) s3-0 s4-0)
|
||||
(vector-float*! (-> s2-1 trans) (-> s2-1 trans) 0.5)
|
||||
@@ -125,7 +125,7 @@
|
||||
(vector-cross! (-> s1-0 vector 2) (the-as vector (-> s1-0 vector)) (-> s1-0 vector 1))
|
||||
(vector-normalize! (-> s1-0 vector 2) 1.0)
|
||||
(matrix->quaternion (-> s2-1 quat) s1-0)
|
||||
(let ((v1-20 (-> obj root-override root-prim local-sphere)))
|
||||
(let ((v1-20 (-> obj root root-prim local-sphere)))
|
||||
(set! (-> v1-20 x) 0.0)
|
||||
(set! (-> v1-20 y) (* 0.00024414062 (* 0.5 height)))
|
||||
(set! (-> v1-20 z) 0.0)
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
)
|
||||
|
||||
(deftype collectable (process-drawable)
|
||||
((root-override2 collide-shape-moving :offset 128)
|
||||
((root collide-shape-moving :override)
|
||||
(pickup-type pickup-type :offset-assert 200)
|
||||
(pickup-amount float :offset-assert 204)
|
||||
(notify handle :offset-assert 208)
|
||||
@@ -130,17 +130,15 @@
|
||||
(set! (-> obj mask) (logior (process-mask bit18) (-> obj mask)))
|
||||
(set! (-> obj flags) (collectable-flag pickup no-eco-blue))
|
||||
(set! (-> obj bob-amount) arg1)
|
||||
(set! (-> obj bob-offset) (the-as seconds (+ (the-as int (-> obj root-override2 trans x))
|
||||
(the-as int (-> obj root-override2 trans y))
|
||||
(the-as int (-> obj root-override2 trans z))
|
||||
)
|
||||
)
|
||||
(set! (-> obj bob-offset)
|
||||
(the-as
|
||||
seconds
|
||||
(+ (the-as int (-> obj root trans x)) (the-as int (-> obj root trans y)) (the-as int (-> obj root trans z)))
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((or (= (vector-length (-> obj root-override2 transv)) 0.0)
|
||||
(logtest? (-> obj fact options) (actor-option auto-pickup))
|
||||
)
|
||||
(vector-reset! (-> obj root-override2 transv))
|
||||
((or (= (vector-length (-> obj root transv)) 0.0) (logtest? (-> obj fact options) (actor-option auto-pickup)))
|
||||
(vector-reset! (-> obj root transv))
|
||||
)
|
||||
(else
|
||||
(logior! (-> obj flags) (collectable-flag bounce))
|
||||
@@ -158,8 +156,8 @@
|
||||
)
|
||||
(set! (-> obj collect-timeout) (the-as seconds 99))
|
||||
(set! (-> obj birth-time) (current-time))
|
||||
(set! (-> obj base quad) (-> obj root-override2 trans quad))
|
||||
(set! (-> obj old-base quad) (-> obj root-override2 trans quad))
|
||||
(set! (-> obj base quad) (-> obj root trans quad))
|
||||
(set! (-> obj old-base quad) (-> obj root trans quad))
|
||||
(set! (-> obj pickup-handle) (the-as handle #f))
|
||||
(case (-> obj fact pickup-type)
|
||||
(((pickup-type eco-pill-green)
|
||||
@@ -176,9 +174,7 @@
|
||||
)
|
||||
)
|
||||
(if (logtest? (-> obj fact options) (actor-option big-collision))
|
||||
(set! (-> obj root-override2 root-prim local-sphere w)
|
||||
(* 2.5 (-> obj root-override2 root-prim local-sphere w))
|
||||
)
|
||||
(set! (-> obj root root-prim local-sphere w) (* 2.5 (-> obj root root-prim local-sphere w)))
|
||||
)
|
||||
(when (and arg2 (nonzero? (-> obj draw)))
|
||||
(let* ((s5-0 (-> arg2 process))
|
||||
@@ -218,7 +214,7 @@
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-14 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-14 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override2) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(set! (-> obj fact) (new 'process 'fact-info obj (-> obj pickup-type) (-> obj pickup-amount)))
|
||||
0
|
||||
@@ -274,7 +270,7 @@
|
||||
(the-as skeleton-group (art-group-get-by-name *level* "skel-health" (the-as (pointer uint32) #f)))
|
||||
(the-as pair 0)
|
||||
)
|
||||
(let ((v1-37 (-> (the-as collide-shape (-> obj root-override2)) root-prim local-sphere)))
|
||||
(let ((v1-37 (-> (the-as collide-shape (-> obj root)) root-prim local-sphere)))
|
||||
(set! (-> v1-37 y) 2457.6)
|
||||
(set! (-> v1-37 w) 4096.0)
|
||||
)
|
||||
@@ -295,7 +291,7 @@
|
||||
(set! (-> obj part) (create-launch-control s5-0 obj))
|
||||
)
|
||||
(if s4-0
|
||||
(set! (-> obj sound) (new 'process 'ambient-sound s4-0 (-> obj root-override2 trans)))
|
||||
(set! (-> obj sound) (new 'process 'ambient-sound s4-0 (-> obj root trans)))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
@@ -312,8 +308,8 @@
|
||||
(set! (-> self fact pickup-amount) f30-0)
|
||||
)
|
||||
(set! (-> self fact options) (-> arg2 options))
|
||||
(set! (-> self root-override2 trans quad) (-> arg0 quad))
|
||||
(set! (-> self root-override2 transv quad) (-> arg1 quad))
|
||||
(set! (-> self root trans quad) (-> arg0 quad))
|
||||
(set! (-> self root transv quad) (-> arg1 quad))
|
||||
(initialize-effects self (-> self fact pickup-type))
|
||||
(set! (-> self notify) (the-as handle #f))
|
||||
(case (-> self fact pickup-type)
|
||||
@@ -340,7 +336,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(update-transforms (-> self root-override2))
|
||||
(update-transforms (-> self root))
|
||||
(set! (-> self event-hook) (-> (method-of-object self wait) event))
|
||||
(go-to-initial-state self)
|
||||
(none)
|
||||
@@ -350,10 +346,10 @@
|
||||
(set! (-> obj pickup-amount) arg2)
|
||||
(set! (-> obj pickup-type) arg1)
|
||||
(initialize-allocations obj)
|
||||
(set! (-> obj root-override2 trans quad) (-> arg0 extra trans quad))
|
||||
(set! (-> obj root trans quad) (-> arg0 extra trans quad))
|
||||
(initialize-effects obj (-> obj fact pickup-type))
|
||||
(initialize-options obj 0 1024.0 (the-as fact-info #f))
|
||||
(update-transforms (-> obj root-override2))
|
||||
(update-transforms (-> obj root))
|
||||
(if (logtest? (-> obj fact options) (actor-option wait-for-task-complete))
|
||||
(go (method-of-object obj blocked))
|
||||
)
|
||||
@@ -363,7 +359,7 @@
|
||||
|
||||
(defmethod common-post collectable ((obj collectable))
|
||||
(let ((s5-0 (-> obj part))
|
||||
(s4-0 (-> obj root-override2 root-prim prim-core))
|
||||
(s4-0 (-> obj root root-prim prim-core))
|
||||
)
|
||||
(if (nonzero? (-> obj draw))
|
||||
(ja-post)
|
||||
@@ -382,7 +378,7 @@
|
||||
(defmethod do-pickup collectable ((obj collectable) (arg0 handle))
|
||||
(set! (-> obj pickup-handle) arg0)
|
||||
(logclear! (-> obj mask) (process-mask actor-pause))
|
||||
(let ((v1-3 (-> obj root-override2 root-prim)))
|
||||
(let ((v1-3 (-> obj root root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-3 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -456,7 +452,7 @@
|
||||
(t2-8 #f)
|
||||
(t3-0 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-0 trans quad) (-> obj root-override2 root-prim prim-core world-sphere quad))
|
||||
(set! (-> t3-0 trans quad) (-> obj root root-prim prim-core world-sphere quad))
|
||||
((the-as (function object object object object object object object object none) t9-22)
|
||||
a0-60
|
||||
a1-26
|
||||
@@ -514,7 +510,7 @@
|
||||
(t2-9 #f)
|
||||
(t3-1 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-1 trans quad) (-> obj root-override2 root-prim prim-core world-sphere quad))
|
||||
(set! (-> t3-1 trans quad) (-> obj root root-prim prim-core world-sphere quad))
|
||||
((the-as (function object object object object object object object object none) t9-25)
|
||||
a0-63
|
||||
a1-29
|
||||
@@ -560,7 +556,7 @@
|
||||
)
|
||||
)
|
||||
(when v1-1
|
||||
(let ((a0-5 (-> self root-override2 root-prim prim-core))
|
||||
(let ((a0-5 (-> self root root-prim prim-core))
|
||||
(a1-2 (-> (the-as collide-shape v1-1) root-prim prim-core))
|
||||
)
|
||||
(when (< (vector-vector-distance (the-as vector a0-5) (the-as vector a1-2)) (-> *FACT-bank* suck-suck-dist))
|
||||
@@ -588,7 +584,7 @@
|
||||
)
|
||||
)
|
||||
(when a0-6
|
||||
(let ((s2-1 (-> self root-override2 root-prim prim-core))
|
||||
(let ((s2-1 (-> self root root-prim prim-core))
|
||||
(gp-1 (get-trans a0-6 3))
|
||||
)
|
||||
(if (and arg1 (rand-vu-percent? 0.25))
|
||||
@@ -647,7 +643,7 @@
|
||||
(go-virtual wait)
|
||||
)
|
||||
(arg1
|
||||
(add-blue-shake (-> self root-override2 trans) (the-as vector s2-1) gp-1)
|
||||
(add-blue-shake (-> self root trans) (the-as vector s2-1) gp-1)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -684,8 +680,8 @@
|
||||
)
|
||||
(the-as object (cond
|
||||
((= arg2 'trans)
|
||||
(set! (-> self root-override2 trans quad) (-> (the-as vector (-> arg3 param 0)) quad))
|
||||
(update-transforms (-> self root-override2))
|
||||
(set! (-> self root trans quad) (-> (the-as vector (-> arg3 param 0)) quad))
|
||||
(update-transforms (-> self root))
|
||||
(ja-post)
|
||||
)
|
||||
((= arg2 'jump)
|
||||
@@ -696,7 +692,7 @@
|
||||
((= arg2 'pickup)
|
||||
(when (not (and (-> self next-state) (= (-> self next-state name) 'pickup)))
|
||||
(if (and (> arg1 0) (-> arg3 param 0))
|
||||
(move-to-point! (-> self root-override2) (the-as vector (-> arg3 param 0)))
|
||||
(move-to-point! (-> self root) (the-as vector (-> arg3 param 0)))
|
||||
)
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(process-contact-action arg0)
|
||||
@@ -760,15 +756,15 @@
|
||||
((= arg2 'collide-shape)
|
||||
(cond
|
||||
((-> arg3 param 0)
|
||||
(let ((v1-97 (-> self root-override2 root-prim)))
|
||||
(set! (-> v1-97 prim-core collide-as) (-> self root-override2 backup-collide-as))
|
||||
(set! v0-4 (the-as none (-> self root-override2 backup-collide-with)))
|
||||
(let ((v1-97 (-> self root root-prim)))
|
||||
(set! (-> v1-97 prim-core collide-as) (-> self root backup-collide-as))
|
||||
(set! v0-4 (the-as none (-> self root backup-collide-with)))
|
||||
(set! (-> v1-97 prim-core collide-with) (the-as collide-spec v0-4))
|
||||
)
|
||||
v0-4
|
||||
)
|
||||
(else
|
||||
(let ((v1-99 (-> self root-override2 root-prim)))
|
||||
(let ((v1-99 (-> self root root-prim)))
|
||||
(set! (-> v1-99 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-99 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -832,11 +828,11 @@
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(let ((gp-0 (new 'stack 'trajectory)))
|
||||
(set! (-> self base y) (-> self jump-pos y))
|
||||
(setup-from-to-duration! gp-0 (-> self root-override2 trans) (-> self jump-pos) 300.0 -2.2755556)
|
||||
(setup-from-to-duration! gp-0 (-> self root trans) (-> self jump-pos) 300.0 -2.2755556)
|
||||
(set! (-> self state-time) (current-time))
|
||||
(until (>= (- (current-time) (-> self state-time)) (seconds 1))
|
||||
(let ((f0-2 (the float (- (current-time) (-> self state-time)))))
|
||||
(compute-trans-at-time gp-0 f0-2 (-> self root-override2 trans))
|
||||
(compute-trans-at-time gp-0 f0-2 (-> self root trans))
|
||||
)
|
||||
(transform-post)
|
||||
(common-post self)
|
||||
@@ -846,10 +842,10 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> self root-override2 trans quad) (-> self jump-pos quad))
|
||||
(set! (-> self base quad) (-> self root-override2 trans quad))
|
||||
(vector-reset! (-> self root-override2 transv))
|
||||
(update-transforms (-> self root-override2))
|
||||
(set! (-> self root trans quad) (-> self jump-pos quad))
|
||||
(set! (-> self base quad) (-> self root trans quad))
|
||||
(vector-reset! (-> self root transv))
|
||||
(update-transforms (-> self root))
|
||||
(logclear! (-> self flags) (collectable-flag bounce))
|
||||
(logior! (-> self flags) (collectable-flag pickup))
|
||||
(if (-> self actor-pause)
|
||||
@@ -883,31 +879,26 @@
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(vector-reset! (-> self root-override2 transv))
|
||||
(vector-reset! (-> self root transv))
|
||||
(logclear! (-> self flags) (collectable-flag bounce))
|
||||
(logior! (-> self flags) (collectable-flag pickup))
|
||||
(if (-> self actor-pause)
|
||||
(logior! (-> self mask) (process-mask actor-pause))
|
||||
)
|
||||
(set! (-> self base quad) (-> self root-override2 trans quad))
|
||||
(logclear! (-> self root-override2 root-prim prim-core action) (collide-action solid))
|
||||
(set! (-> self root-override2 root-prim prim-core collide-with) (collide-spec jak player-list tobot))
|
||||
(set! (-> self root-override2 root-prim prim-core collide-as)
|
||||
(collide-spec collectable notice-blue-eco-powerup)
|
||||
)
|
||||
(set! (-> self base quad) (-> self root trans quad))
|
||||
(logclear! (-> self root root-prim prim-core action) (collide-action solid))
|
||||
(set! (-> self root root-prim prim-core collide-with) (collide-spec jak player-list tobot))
|
||||
(set! (-> self root root-prim prim-core collide-as) (collide-spec collectable notice-blue-eco-powerup))
|
||||
(none)
|
||||
)
|
||||
:trans (behavior ()
|
||||
(vector-v++!
|
||||
(-> self root-override2 transv)
|
||||
(compute-acc-due-to-gravity (-> self root-override2) (new-stack-vector0) 0.0)
|
||||
)
|
||||
(integrate-no-collide! (-> self root-override2) (-> self root-override2 transv))
|
||||
(when (and (>= 0.0 (-> self root-override2 transv y)) (>= (-> self base y) (-> self root-override2 trans y)))
|
||||
(set! (-> self root-override2 trans y) (-> self base y))
|
||||
(vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 0.0))
|
||||
(integrate-no-collide! (-> self root) (-> self root transv))
|
||||
(when (and (>= 0.0 (-> self root transv y)) (>= (-> self base y) (-> self root trans y)))
|
||||
(set! (-> self root trans y) (-> self base y))
|
||||
(cond
|
||||
((< (-> self root-override2 transv y) -8192.0)
|
||||
(set! (-> self root-override2 transv y) (* -0.5 (-> self root-override2 transv y)))
|
||||
((< (-> self root transv y) -8192.0)
|
||||
(set! (-> self root transv y) (* -0.5 (-> self root transv y)))
|
||||
)
|
||||
(else
|
||||
(if (and (logtest? (-> self fact options) (actor-option suck-in))
|
||||
@@ -957,9 +948,9 @@
|
||||
)
|
||||
:code (behavior ((arg0 handle))
|
||||
(until #f
|
||||
(set! (-> self root-override2 trans quad) (-> self base quad))
|
||||
(set! (-> self root trans quad) (-> self base quad))
|
||||
(add-blue-motion #t #f #f #f)
|
||||
(update-transforms (-> self root-override2))
|
||||
(update-transforms (-> self root))
|
||||
(common-post self)
|
||||
(suspend)
|
||||
)
|
||||
@@ -1011,10 +1002,9 @@
|
||||
)
|
||||
(>= (- (current-time) (the-as int (-> self birth-time))) (the-as time-frame (-> self fadeout-timeout)))
|
||||
)
|
||||
(or (or (not *target*)
|
||||
(or (< 204800.0 (vector-vector-distance (-> self root-override2 trans) (-> *target* control trans)))
|
||||
(focus-test? *target* teleporting)
|
||||
)
|
||||
(or (or (not *target*) (or (< 204800.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))
|
||||
(focus-test? *target* teleporting)
|
||||
)
|
||||
)
|
||||
(logtest? (-> self flags) (collectable-flag no-distance-check-fadeout))
|
||||
)
|
||||
@@ -1113,9 +1103,9 @@
|
||||
)
|
||||
:code (behavior ((arg0 handle))
|
||||
(until #f
|
||||
(set! (-> self root-override2 trans quad) (-> self base quad))
|
||||
(set! (-> self root trans quad) (-> self base quad))
|
||||
(add-blue-motion #t #f #t #f)
|
||||
(update-transforms (-> self root-override2))
|
||||
(update-transforms (-> self root))
|
||||
(common-post self)
|
||||
(suspend)
|
||||
)
|
||||
@@ -1255,10 +1245,10 @@
|
||||
)
|
||||
)
|
||||
(set! (-> self base quad) (-> self old-base quad))
|
||||
(set! (-> self root-override2 trans quad) (-> self base quad))
|
||||
(let ((v1-26 (-> self root-override2 root-prim)))
|
||||
(set! (-> v1-26 prim-core collide-as) (-> self root-override2 backup-collide-as))
|
||||
(set! (-> v1-26 prim-core collide-with) (-> self root-override2 backup-collide-with))
|
||||
(set! (-> self root trans quad) (-> self base quad))
|
||||
(let ((v1-26 (-> self root root-prim)))
|
||||
(set! (-> v1-26 prim-core collide-as) (-> self root backup-collide-as))
|
||||
(set! (-> v1-26 prim-core collide-with) (-> self root backup-collide-with))
|
||||
)
|
||||
(set! (-> self clock) (-> *display* entity-clock))
|
||||
(if (nonzero? (-> self draw))
|
||||
@@ -1397,7 +1387,7 @@ This commonly includes things such as:
|
||||
:virtual #t
|
||||
:trans (behavior ()
|
||||
(if (and (and *target*
|
||||
(and (>= 32768.0 (vector-vector-distance (-> self root-override2 trans) (-> *target* control trans)))
|
||||
(and (>= 32768.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))
|
||||
(not (logtest? (focus-status teleporting) (-> *target* focus-status)))
|
||||
)
|
||||
)
|
||||
@@ -1459,7 +1449,7 @@ This commonly includes things such as:
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-16 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-16 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override2) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(set! (-> obj fact) (new 'process 'fact-info obj (-> obj pickup-type) (-> obj pickup-amount)))
|
||||
0
|
||||
@@ -1479,8 +1469,8 @@ This commonly includes things such as:
|
||||
(or (not (logtest? (-> obj mask) (process-mask actor-pause)))
|
||||
(or (and (nonzero? (-> obj draw))
|
||||
(logtest? (-> obj draw status) (draw-control-status on-screen))
|
||||
(>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root-override2 pause-adjust-distance))
|
||||
(vector-vector-distance (-> obj root-override2 trans) (math-camera-pos))
|
||||
(>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root pause-adjust-distance))
|
||||
(vector-vector-distance (-> obj root trans) (math-camera-pos))
|
||||
)
|
||||
)
|
||||
(and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel)))
|
||||
@@ -1511,14 +1501,10 @@ This commonly includes things such as:
|
||||
|
||||
(defmethod common-post money ((obj money))
|
||||
(with-pp
|
||||
(quaternion-rotate-y!
|
||||
(-> obj root-override2 quat)
|
||||
(-> obj root-override2 quat)
|
||||
(* 40049.777 (-> pp clock seconds-per-frame))
|
||||
)
|
||||
(quaternion-rotate-y! (-> obj root quat) (-> obj root quat) (* 40049.777 (-> pp clock seconds-per-frame)))
|
||||
(let ((f30-0 (-> obj bob-amount)))
|
||||
(when (< 0.0 f30-0)
|
||||
(set! (-> obj root-override2 trans y)
|
||||
(set! (-> obj root trans y)
|
||||
(+ (-> obj base y)
|
||||
(-> obj suck-y-offset)
|
||||
(* f30-0
|
||||
@@ -1532,7 +1518,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
)
|
||||
(update-transforms (-> obj root-override2))
|
||||
(update-transforms (-> obj root))
|
||||
)
|
||||
)
|
||||
(ja-post)
|
||||
@@ -1544,16 +1530,12 @@ This commonly includes things such as:
|
||||
:virtual #t
|
||||
:code (behavior ((arg0 handle))
|
||||
(until #f
|
||||
(quaternion-rotate-y!
|
||||
(-> self root-override2 quat)
|
||||
(-> self root-override2 quat)
|
||||
(* 91022.22 (-> self clock seconds-per-frame))
|
||||
)
|
||||
(set! (-> self root-override2 trans quad) (-> self base quad))
|
||||
(quaternion-rotate-y! (-> self root quat) (-> self root quat) (* 91022.22 (-> self clock seconds-per-frame)))
|
||||
(set! (-> self root trans quad) (-> self base quad))
|
||||
(add-blue-motion #t #t #t #f)
|
||||
(let ((f30-0 (-> self bob-amount)))
|
||||
(if (< 0.0 f30-0)
|
||||
(set! (-> self root-override2 trans y)
|
||||
(set! (-> self root trans y)
|
||||
(+ (-> self base y)
|
||||
(-> self suck-y-offset)
|
||||
(* f30-0
|
||||
@@ -1605,7 +1587,7 @@ This commonly includes things such as:
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-11 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-11 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override2) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(logior! (-> obj mask) (process-mask actor-pause))
|
||||
(set! (-> obj actor-pause) #t)
|
||||
@@ -1646,7 +1628,7 @@ This commonly includes things such as:
|
||||
(initialize-allocations obj)
|
||||
(process-drawable-from-entity! obj (-> obj entity))
|
||||
(initialize-options obj 0 1024.0 (the-as fact-info #f))
|
||||
(update-transforms (-> obj root-override2))
|
||||
(update-transforms (-> obj root))
|
||||
(go-to-initial-state obj)
|
||||
(none)
|
||||
)
|
||||
@@ -1670,9 +1652,9 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> self root-override2 trans quad) (-> arg0 quad))
|
||||
(quaternion-identity! (-> self root-override2 quat))
|
||||
(set! (-> self root-override2 transv quad) (-> arg1 quad))
|
||||
(set! (-> self root trans quad) (-> arg0 quad))
|
||||
(quaternion-identity! (-> self root quat))
|
||||
(set! (-> self root transv quad) (-> arg1 quad))
|
||||
(initialize-options
|
||||
self
|
||||
(if (and arg2 (logtest? (-> arg2 options) (actor-option fade-out)))
|
||||
@@ -1682,7 +1664,7 @@ This commonly includes things such as:
|
||||
1024.0
|
||||
arg2
|
||||
)
|
||||
(update-transforms (-> self root-override2))
|
||||
(update-transforms (-> self root))
|
||||
(set! (-> self event-hook) (-> (method-of-object self wait) event))
|
||||
(go-to-initial-state self)
|
||||
(none)
|
||||
@@ -1702,12 +1684,12 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> self root-override2 trans quad) (-> arg0 quad))
|
||||
(quaternion-identity! (-> self root-override2 quat))
|
||||
(set! (-> self root-override2 transv quad) (-> arg1 quad))
|
||||
(set! (-> self root trans quad) (-> arg0 quad))
|
||||
(quaternion-identity! (-> self root quat))
|
||||
(set! (-> self root transv quad) (-> arg1 quad))
|
||||
(initialize-options self 4500 0.0 (the-as fact-info #f))
|
||||
(logior! (-> self flags) (collectable-flag no-eco-blue))
|
||||
(update-transforms (-> self root-override2))
|
||||
(update-transforms (-> self root))
|
||||
(set! (-> self event-hook) (-> (method-of-object self wait) event))
|
||||
(go-to-initial-state self)
|
||||
(none)
|
||||
@@ -1734,8 +1716,8 @@ This commonly includes things such as:
|
||||
(with-pp
|
||||
(seek! (-> obj roty-speed) 20024.889 (* 65536.0 (-> pp clock seconds-per-frame)))
|
||||
(quaternion-rotate-y!
|
||||
(-> obj root-override2 quat)
|
||||
(-> obj root-override2 quat)
|
||||
(-> obj root quat)
|
||||
(-> obj root quat)
|
||||
(* (-> obj roty-speed) (-> pp clock seconds-per-frame))
|
||||
)
|
||||
(logclear! (-> obj draw status) (draw-control-status no-draw-temp uninited))
|
||||
@@ -1761,30 +1743,30 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
(set-vector!
|
||||
(-> self root-override2 transv)
|
||||
(-> self root transv)
|
||||
(rand-vu-float-range -20480.0 20480.0)
|
||||
81920.0
|
||||
(rand-vu-float-range -20480.0 20480.0)
|
||||
1.0
|
||||
)
|
||||
(set-gravity-length (-> self root-override2 dynam) 122880.0)
|
||||
(set-gravity-length (-> self root dynam) 122880.0)
|
||||
(set! (-> self roty-speed) 186413.52)
|
||||
(logior! (-> self flags) (collectable-flag pickup))
|
||||
(set! (-> self root-override2 root-prim prim-core collide-with)
|
||||
(set! (-> self root root-prim prim-core collide-with)
|
||||
(collide-spec backgnd bot crate civilian enemy obstacle vehicle-sphere hit-by-others-list player-list pusher)
|
||||
)
|
||||
(set! (-> self root-override2 root-prim prim-core collide-as) (collide-spec collectable))
|
||||
(set! (-> self root-override2 max-iteration-count) (the-as uint 2))
|
||||
(logior! (-> self root-override2 root-prim prim-core action) (collide-action solid))
|
||||
(set! (-> self root-override2 reaction) projectile-bounce-reaction)
|
||||
(set! (-> self root-override2 penetrated-by) (the-as penetrate -1))
|
||||
(set! (-> self root root-prim prim-core collide-as) (collide-spec collectable))
|
||||
(set! (-> self root max-iteration-count) (the-as uint 2))
|
||||
(logior! (-> self root root-prim prim-core action) (collide-action solid))
|
||||
(set! (-> self root reaction) projectile-bounce-reaction)
|
||||
(set! (-> self root penetrated-by) (the-as penetrate -1))
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(set! (-> self roty-speed) (fmin 262144.0 (-> self roty-speed)))
|
||||
(set-gravity-length (-> self root-override2 dynam) 245760.0)
|
||||
(set! (-> self root-override2 root-prim local-sphere w) 6144.0)
|
||||
(update-transforms (-> self root-override2))
|
||||
(set-gravity-length (-> self root dynam) 245760.0)
|
||||
(set! (-> self root root-prim local-sphere w) 6144.0)
|
||||
(update-transforms (-> self root))
|
||||
(let ((t9-2 (-> (method-of-type collectable deploy) exit)))
|
||||
(if t9-2
|
||||
(t9-2)
|
||||
@@ -1796,37 +1778,27 @@ This commonly includes things such as:
|
||||
:code (the-as (function none :behavior gem) sleep-code)
|
||||
:post (behavior ()
|
||||
(let ((gp-0 #t))
|
||||
(vector-v++!
|
||||
(-> self root-override2 transv)
|
||||
(compute-acc-due-to-gravity (-> self root-override2) (new-stack-vector0) 0.0)
|
||||
)
|
||||
(vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 0.0))
|
||||
(when (-> self entity)
|
||||
(when (get-simple-travel-vector
|
||||
(-> self entity)
|
||||
(-> self root-override2 transv)
|
||||
(-> self root-override2 trans)
|
||||
(-> self root-override2 transv)
|
||||
(* 1.5 (-> self root-override2 root-prim prim-core world-sphere w))
|
||||
(-> self root transv)
|
||||
(-> self root trans)
|
||||
(-> self root transv)
|
||||
(* 1.5 (-> self root root-prim prim-core world-sphere w))
|
||||
0.8
|
||||
)
|
||||
(let ((s5-1 (new 'stack-no-clear 'vector))
|
||||
(f30-0 (-> self root-override2 transv y))
|
||||
(f30-0 (-> self root transv y))
|
||||
)
|
||||
(project-point-to-nav-mesh
|
||||
(-> self entity)
|
||||
s5-1
|
||||
(-> self root-override2 trans)
|
||||
(the-as nav-poly #f)
|
||||
40960000.0
|
||||
)
|
||||
(when (>= (vector-vector-xz-distance s5-1 (-> self root-override2 trans)) 204.8)
|
||||
(vector-! (-> self root-override2 transv) s5-1 (-> self root-override2 trans))
|
||||
(vector-normalize! (-> self root-override2 transv) 40960.0)
|
||||
(set! (-> self root-override2 transv y)
|
||||
(if (< 0.0 (-> self root-override2 transv y))
|
||||
(+ f30-0 (* 4.0 (-> self clock seconds-per-frame) (-> self root-override2 transv y)))
|
||||
f30-0
|
||||
)
|
||||
(project-point-to-nav-mesh (-> self entity) s5-1 (-> self root trans) (the-as nav-poly #f) 40960000.0)
|
||||
(when (>= (vector-vector-xz-distance s5-1 (-> self root trans)) 204.8)
|
||||
(vector-! (-> self root transv) s5-1 (-> self root trans))
|
||||
(vector-normalize! (-> self root transv) 40960.0)
|
||||
(set! (-> self root transv y) (if (< 0.0 (-> self root transv y))
|
||||
(+ f30-0 (* 4.0 (-> self clock seconds-per-frame) (-> self root transv y)))
|
||||
f30-0
|
||||
)
|
||||
)
|
||||
(set! gp-0 #f)
|
||||
)
|
||||
@@ -1835,7 +1807,7 @@ This commonly includes things such as:
|
||||
)
|
||||
(cond
|
||||
(gp-0
|
||||
(let ((v1-31 (-> self root-override2))
|
||||
(let ((v1-31 (-> self root))
|
||||
(a2-3 (new 'stack-no-clear 'collide-query))
|
||||
)
|
||||
(set! (-> a2-3 collide-with) (-> v1-31 root-prim prim-core collide-with))
|
||||
@@ -1847,11 +1819,11 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
(else
|
||||
(integrate-no-collide! (-> self root-override2) (-> self root-override2 transv))
|
||||
(integrate-no-collide! (-> self root) (-> self root transv))
|
||||
)
|
||||
)
|
||||
)
|
||||
(let* ((gp-1 (-> self root-override2))
|
||||
(let* ((gp-1 (-> self root))
|
||||
(s5-2 (-> gp-1 status))
|
||||
)
|
||||
(cond
|
||||
@@ -1862,7 +1834,7 @@ This commonly includes things such as:
|
||||
(set! (-> self roty-speed)
|
||||
(fmin
|
||||
131072.0
|
||||
(+ (-> self roty-speed) (lerp-scale 0.0 131072.0 (-> self root-override2 ground-impact-vel) 0.0 122880.0))
|
||||
(+ (-> self roty-speed) (lerp-scale 0.0 131072.0 (-> self root ground-impact-vel) 0.0 122880.0))
|
||||
)
|
||||
)
|
||||
(if (or (and (logtest? s5-2 (collide-status on-surface)) (< (vector-length (-> gp-1 transv)) 1228.8))
|
||||
@@ -1875,7 +1847,7 @@ This commonly includes things such as:
|
||||
(sound-play-by-name
|
||||
(static-sound-name "gem-bounce")
|
||||
(new-sound-id)
|
||||
(the int (* 1024.0 (lerp-scale 0.5 1.0 (-> self root-override2 ground-impact-vel) 0.0 40960.0)))
|
||||
(the int (* 1024.0 (lerp-scale 0.5 1.0 (-> self root ground-impact-vel) 0.0 40960.0)))
|
||||
0
|
||||
0
|
||||
(sound-group sfx)
|
||||
@@ -1915,14 +1887,10 @@ This commonly includes things such as:
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-14 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-14 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override2) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(set! (-> obj roty-speed) 40049.777)
|
||||
(quaternion-rotate-y!
|
||||
(-> obj root-override2 quat)
|
||||
(-> obj root-override2 quat)
|
||||
(rand-vu-float-range 0.0 65536.0)
|
||||
)
|
||||
(quaternion-rotate-y! (-> obj root quat) (-> obj root quat) (rand-vu-float-range 0.0 65536.0))
|
||||
(logclear! (-> obj mask) (process-mask actor-pause))
|
||||
(set! (-> obj actor-pause) #f)
|
||||
(set! (-> obj notify) (the-as handle #f))
|
||||
@@ -1941,7 +1909,7 @@ This commonly includes things such as:
|
||||
(the-as skeleton-group (art-group-get-by-name *level* "skel-gem" (the-as (pointer uint32) #f)))
|
||||
(the-as pair 0)
|
||||
)
|
||||
(set-vector! (-> obj root-override2 scale) 1.5 1.5 1.5 1.0)
|
||||
(set-vector! (-> obj root scale) 1.5 1.5 1.5 1.0)
|
||||
(if (-> obj entity)
|
||||
(nav-mesh-connect-from-ent obj)
|
||||
)
|
||||
@@ -2014,7 +1982,7 @@ This commonly includes things such as:
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-11 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-11 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override2) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(logior! (-> obj mask) (process-mask actor-pause))
|
||||
(set! (-> obj actor-pause) #t)
|
||||
@@ -2100,12 +2068,12 @@ This commonly includes things such as:
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-11 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-11 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override2) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(logior! (-> obj mask) (process-mask actor-pause))
|
||||
(set! (-> obj actor-pause) #t)
|
||||
(set! (-> obj notify) (the-as handle #f))
|
||||
(set! (-> obj root-override2 pause-adjust-distance) 204800.0)
|
||||
(set! (-> obj root pause-adjust-distance) 204800.0)
|
||||
(set! (-> obj fact) (new 'process 'fact-info obj (pickup-type trick-point) 100.0))
|
||||
(set! (-> obj part) (create-launch-control (-> *part-group-id-table* 94) obj))
|
||||
(set! (-> obj collect-effect) (-> *part-group-id-table* 95))
|
||||
@@ -2123,7 +2091,7 @@ This commonly includes things such as:
|
||||
(initialize-allocations obj)
|
||||
(process-drawable-from-entity! obj (-> obj entity))
|
||||
(initialize-options obj 0 1024.0 (the-as fact-info #f))
|
||||
(update-transforms (-> obj root-override2))
|
||||
(update-transforms (-> obj root))
|
||||
(go-to-initial-state obj)
|
||||
(none)
|
||||
)
|
||||
@@ -2161,13 +2129,9 @@ This commonly includes things such as:
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override2) s5-0)
|
||||
)
|
||||
(quaternion-rotate-y!
|
||||
(-> obj root-override2 quat)
|
||||
(-> obj root-override2 quat)
|
||||
(rand-vu-float-range 0.0 65536.0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(quaternion-rotate-y! (-> obj root quat) (-> obj root quat) (rand-vu-float-range 0.0 65536.0))
|
||||
(set! (-> obj fact) (new 'process 'fact-info obj (-> obj pickup-type) (-> obj pickup-amount)))
|
||||
(case (-> obj pickup-type)
|
||||
(((pickup-type ammo-yellow))
|
||||
@@ -2197,7 +2161,7 @@ This commonly includes things such as:
|
||||
(the-as skeleton-group (art-group-get-by-name *level* "skel-ammo-yellow" (the-as (pointer uint32) #f)))
|
||||
(the-as pair 0)
|
||||
)
|
||||
(set-vector! (-> obj root-override2 scale) 2.5 2.5 2.5 1.0)
|
||||
(set-vector! (-> obj root scale) 2.5 2.5 2.5 1.0)
|
||||
(set! (-> obj ammo-effect) (-> *part-group-id-table* 108))
|
||||
)
|
||||
(((pickup-type ammo-red))
|
||||
@@ -2206,7 +2170,7 @@ This commonly includes things such as:
|
||||
(the-as skeleton-group (art-group-get-by-name *level* "skel-ammo-red" (the-as (pointer uint32) #f)))
|
||||
(the-as pair 0)
|
||||
)
|
||||
(set-vector! (-> obj root-override2 scale) 4.0 4.0 4.0 1.0)
|
||||
(set-vector! (-> obj root scale) 4.0 4.0 4.0 1.0)
|
||||
(set! (-> obj ammo-effect) (-> *part-group-id-table* 102))
|
||||
)
|
||||
(((pickup-type ammo-blue))
|
||||
@@ -2215,7 +2179,7 @@ This commonly includes things such as:
|
||||
(the-as skeleton-group (art-group-get-by-name *level* "skel-ammo-blue" (the-as (pointer uint32) #f)))
|
||||
(the-as pair 0)
|
||||
)
|
||||
(set-vector! (-> obj root-override2 scale) 4.0 4.0 4.0 1.0)
|
||||
(set-vector! (-> obj root scale) 4.0 4.0 4.0 1.0)
|
||||
(set! (-> obj ammo-effect) (-> *part-group-id-table* 98))
|
||||
)
|
||||
(((pickup-type ammo-dark))
|
||||
@@ -2224,7 +2188,7 @@ This commonly includes things such as:
|
||||
(the-as skeleton-group (art-group-get-by-name *level* "skel-ammo-dark" (the-as (pointer uint32) #f)))
|
||||
(the-as pair 0)
|
||||
)
|
||||
(set-vector! (-> obj root-override2 scale) 3.0 3.0 3.0 1.0)
|
||||
(set-vector! (-> obj root scale) 3.0 3.0 3.0 1.0)
|
||||
(set! (-> obj ammo-effect) (-> *part-group-id-table* 83))
|
||||
)
|
||||
(((pickup-type gun-yellow))
|
||||
@@ -2233,11 +2197,11 @@ This commonly includes things such as:
|
||||
(the-as skeleton-group (art-group-get-by-name *level* "skel-gun-yellow-up" (the-as (pointer uint32) #f)))
|
||||
(the-as pair 0)
|
||||
)
|
||||
(set-vector! (-> obj root-override2 scale) 3.0 3.0 3.0 1.0)
|
||||
(set-vector! (-> obj root scale) 3.0 3.0 3.0 1.0)
|
||||
(logclear! (-> obj flags) (collectable-flag fadeout))
|
||||
(let ((v1-34 (-> obj node-list data)))
|
||||
(set! (-> v1-34 0 param0) (the-as (function cspace transformq none) cspace<-transformq+trans!))
|
||||
(set! (-> v1-34 0 param1) (the-as basic (-> obj root-override2 trans)))
|
||||
(set! (-> v1-34 0 param1) (the-as basic (-> obj root trans)))
|
||||
(set! (-> v1-34 0 param2) (the-as basic (-> obj extra-trans)))
|
||||
)
|
||||
(set-vector! (-> obj extra-trans) 0.0 1638.4 0.0 1.0)
|
||||
@@ -2248,7 +2212,7 @@ This commonly includes things such as:
|
||||
(the-as skeleton-group (art-group-get-by-name *level* "skel-gun-dark-up" (the-as (pointer uint32) #f)))
|
||||
(the-as pair 0)
|
||||
)
|
||||
(set-vector! (-> obj root-override2 scale) 3.0 3.0 3.0 1.0)
|
||||
(set-vector! (-> obj root scale) 3.0 3.0 3.0 1.0)
|
||||
(logclear! (-> obj flags) (collectable-flag fadeout))
|
||||
)
|
||||
(((pickup-type board))
|
||||
@@ -2262,10 +2226,10 @@ This commonly includes things such as:
|
||||
(let ((v1-48 (-> obj skel root-channel 0)))
|
||||
(set! (-> v1-48 frame-group) (the-as art-joint-anim (-> obj draw art-group data 3)))
|
||||
)
|
||||
(set-vector! (-> obj root-override2 scale) 2.0 2.0 2.0 1.0)
|
||||
(set-vector! (-> obj root scale) 2.0 2.0 2.0 1.0)
|
||||
(let ((v1-52 (-> obj node-list data)))
|
||||
(set! (-> v1-52 0 param0) (the-as (function cspace transformq none) cspace<-transformq+trans!))
|
||||
(set! (-> v1-52 0 param1) (the-as basic (-> obj root-override2 trans)))
|
||||
(set! (-> v1-52 0 param1) (the-as basic (-> obj root trans)))
|
||||
(set! (-> v1-52 0 param2) (the-as basic (-> obj extra-trans)))
|
||||
)
|
||||
(set-vector! (-> obj extra-trans) 0.0 2048.0 0.0 1.0)
|
||||
@@ -2291,12 +2255,12 @@ This commonly includes things such as:
|
||||
(set! (-> self fact pickup-amount) f30-0)
|
||||
)
|
||||
(set! (-> self fact options) (-> arg2 options))
|
||||
(set! (-> self root-override2 trans quad) (-> arg0 quad))
|
||||
(set! (-> self root-override2 transv quad) (-> arg1 quad))
|
||||
(set! (-> self root trans quad) (-> arg0 quad))
|
||||
(set! (-> self root transv quad) (-> arg1 quad))
|
||||
(initialize-effects self (-> self fact pickup-type))
|
||||
(set! (-> self notify) (the-as handle #f))
|
||||
(initialize-options self 4500 1024.0 arg2)
|
||||
(update-transforms (-> self root-override2))
|
||||
(update-transforms (-> self root))
|
||||
(set! (-> self event-hook) (-> (method-of-object self wait) event))
|
||||
(go-to-initial-state self)
|
||||
(none)
|
||||
@@ -2306,21 +2270,17 @@ This commonly includes things such as:
|
||||
(set! (-> obj pickup-amount) arg2)
|
||||
(set! (-> obj pickup-type) arg1)
|
||||
(initialize-allocations obj)
|
||||
(set! (-> obj root-override2 trans quad) (-> arg0 extra trans quad))
|
||||
(set! (-> obj root trans quad) (-> arg0 extra trans quad))
|
||||
(initialize-effects obj (-> obj fact pickup-type))
|
||||
(initialize-options obj 0 1024.0 (the-as fact-info #f))
|
||||
(update-transforms (-> obj root-override2))
|
||||
(update-transforms (-> obj root))
|
||||
(go-to-initial-state obj)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod common-post ammo-collectable ((obj ammo-collectable))
|
||||
(with-pp
|
||||
(quaternion-rotate-y!
|
||||
(-> obj root-override2 quat)
|
||||
(-> obj root-override2 quat)
|
||||
(* 40049.777 (-> pp clock seconds-per-frame))
|
||||
)
|
||||
(quaternion-rotate-y! (-> obj root quat) (-> obj root quat) (* 40049.777 (-> pp clock seconds-per-frame)))
|
||||
((method-of-type collectable common-post) obj)
|
||||
0
|
||||
(none)
|
||||
@@ -2374,8 +2334,8 @@ This commonly includes things such as:
|
||||
(set! (-> self fact pickup-amount) f30-0)
|
||||
)
|
||||
(set! (-> self fact options) (-> arg2 options))
|
||||
(set! (-> self root-override2 trans quad) (-> arg0 quad))
|
||||
(set! (-> self root-override2 transv quad) (-> arg1 quad))
|
||||
(set! (-> self root trans quad) (-> arg0 quad))
|
||||
(set! (-> self root transv quad) (-> arg1 quad))
|
||||
(initialize-effects self (-> self fact pickup-type))
|
||||
(set! (-> self notify) (the-as handle #f))
|
||||
(initialize-options
|
||||
@@ -2388,7 +2348,7 @@ This commonly includes things such as:
|
||||
(the-as fact-info #f)
|
||||
)
|
||||
(set! (-> self collect-timeout) (the-as seconds 300))
|
||||
(update-transforms (-> self root-override2))
|
||||
(update-transforms (-> self root))
|
||||
(set! (-> self event-hook) (-> (method-of-object self wait) event))
|
||||
(go-to-initial-state self)
|
||||
(none)
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
)
|
||||
|
||||
(deftype crate (process-focusable)
|
||||
((root-override2 collide-shape-moving :offset 128)
|
||||
((root collide-shape-moving :override)
|
||||
(smush smush-control :inline :offset-assert 208)
|
||||
(base vector :inline :offset-assert 240)
|
||||
(look symbol :offset-assert 256)
|
||||
@@ -476,7 +476,7 @@
|
||||
(go-virtual die #f (the-as int s5-0))
|
||||
)
|
||||
(else
|
||||
(when (and (!= s4-0 (-> self incoming-attack-id)) (= (-> self root-override2 trans y) (-> self base y)))
|
||||
(when (and (!= s4-0 (-> self incoming-attack-id)) (= (-> self root trans y) (-> self base y)))
|
||||
(if (not (and (demo?) (= (-> *setting-control* user-current language) (language-enum japanese))))
|
||||
(talker-spawn-func (-> *talker-speech* 313) *entity-pool* (target-pos 0) (the-as region #f))
|
||||
)
|
||||
@@ -505,7 +505,7 @@
|
||||
(go-virtual die #f (the-as int s5-0))
|
||||
)
|
||||
(else
|
||||
(when (and (!= s4-0 (-> self incoming-attack-id)) (= (-> self root-override2 trans y) (-> self base y)))
|
||||
(when (and (!= s4-0 (-> self incoming-attack-id)) (= (-> self root trans y) (-> self base y)))
|
||||
(talker-spawn-func (-> *talker-speech* 318) *entity-pool* (target-pos 0) (the-as region #f))
|
||||
(set! (-> self incoming-attack-id) s4-0)
|
||||
(if (not (!= (-> self smush amp) 0.0))
|
||||
@@ -581,7 +581,7 @@
|
||||
)
|
||||
)
|
||||
(('bonk)
|
||||
(when (= (-> self root-override2 trans y) (-> self base y))
|
||||
(when (= (-> self root trans y) (-> self base y))
|
||||
(activate! (-> self smush) -0.1 75 150 1.0 1.0 (-> self clock))
|
||||
(go-virtual bounce-on)
|
||||
)
|
||||
@@ -601,7 +601,7 @@
|
||||
(or (= v1-131 'notice-blue) (= v1-131 'die))
|
||||
)
|
||||
)
|
||||
(!= (-> self root-override2 trans y) (-> self base y))
|
||||
(!= (-> self root trans y) (-> self base y))
|
||||
)
|
||||
)
|
||||
(go-virtual notice-blue (process->handle arg0))
|
||||
@@ -609,7 +609,7 @@
|
||||
)
|
||||
(('fall)
|
||||
(when (not (and (-> self next-state) (= (-> self next-state name) 'fall)))
|
||||
(set! (-> self root-override2 transv quad) (-> (the-as vector (-> arg3 param 0)) quad))
|
||||
(set! (-> self root transv quad) (-> (the-as vector (-> arg3 param 0)) quad))
|
||||
(go-virtual fall)
|
||||
)
|
||||
)
|
||||
@@ -621,10 +621,10 @@
|
||||
:code (behavior ()
|
||||
(process-entity-status! self (entity-perm-status dead) #f)
|
||||
(process-entity-status! self (entity-perm-status subtask-complete) #f)
|
||||
(vector+! (-> self draw origin) (-> self root-override2 trans) (-> self draw bounds))
|
||||
(vector+! (-> self draw origin) (-> self root trans) (-> self draw bounds))
|
||||
(set! (-> self draw origin w) (-> self draw bounds w))
|
||||
(logior! (-> self draw status) (draw-control-status no-draw))
|
||||
(let ((v1-9 (-> (the-as collide-shape-moving (-> self root-override2)) root-prim)))
|
||||
(let ((v1-9 (-> (the-as collide-shape-moving (-> self root)) root-prim)))
|
||||
(set! (-> v1-9 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-9 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -632,24 +632,19 @@
|
||||
(ja-post)
|
||||
(while (or (crate-method-40 self)
|
||||
(and (sphere-in-view-frustum? (the-as sphere (-> self draw origin)))
|
||||
(< (vector-vector-distance (camera-pos) (-> self root-override2 trans)) 327680.0)
|
||||
(< (vector-vector-distance (camera-pos) (-> self root trans)) 327680.0)
|
||||
)
|
||||
(and *target*
|
||||
(and (>= 40960.0 (vector-vector-distance (-> self root-override2 trans) (-> *target* control trans)))
|
||||
(not (logtest? (focus-status teleporting) (-> *target* focus-status)))
|
||||
)
|
||||
(and *target* (and (>= 40960.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))
|
||||
(not (logtest? (focus-status teleporting) (-> *target* focus-status)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(suspend)
|
||||
)
|
||||
(logclear! (-> self draw status) (draw-control-status no-draw))
|
||||
(let ((v1-29 (-> (the-as collide-shape-moving (-> self root-override2)) root-prim)))
|
||||
(set! (-> v1-29 prim-core collide-as)
|
||||
(-> (the-as collide-shape-moving (-> self root-override2)) backup-collide-as)
|
||||
)
|
||||
(set! (-> v1-29 prim-core collide-with)
|
||||
(-> (the-as collide-shape-moving (-> self root-override2)) backup-collide-with)
|
||||
)
|
||||
(let ((v1-29 (-> (the-as collide-shape-moving (-> self root)) root-prim)))
|
||||
(set! (-> v1-29 prim-core collide-as) (-> (the-as collide-shape-moving (-> self root)) backup-collide-as))
|
||||
(set! (-> v1-29 prim-core collide-with) (-> (the-as collide-shape-moving (-> self root)) backup-collide-with))
|
||||
)
|
||||
(go-virtual idle)
|
||||
(none)
|
||||
@@ -661,7 +656,7 @@
|
||||
:event crate-standard-event-handler
|
||||
:code (behavior ()
|
||||
(suspend)
|
||||
(update-transforms (the-as collide-shape-moving (-> self root-override2)))
|
||||
(update-transforms (the-as collide-shape-moving (-> self root)))
|
||||
(carry-info-method-9 (-> self carry))
|
||||
(logior! (-> self mask) (process-mask sleep))
|
||||
(until #f
|
||||
@@ -681,7 +676,7 @@
|
||||
(-> self carry)
|
||||
)
|
||||
(('drop)
|
||||
(set! (-> self root-override2 transv quad) (-> (the-as vector (-> event param 1)) quad))
|
||||
(set! (-> self root transv quad) (-> (the-as vector (-> event param 1)) quad))
|
||||
(go-virtual fall)
|
||||
)
|
||||
)
|
||||
@@ -691,7 +686,7 @@
|
||||
(ja-post)
|
||||
(carry-info-method-9 (-> self carry))
|
||||
(carry-info-method-13 (-> self carry))
|
||||
(update-transforms (the-as collide-shape-moving (-> self root-override2)))
|
||||
(update-transforms (the-as collide-shape-moving (-> self root)))
|
||||
(none)
|
||||
)
|
||||
)
|
||||
@@ -716,32 +711,28 @@
|
||||
(-> self carry)
|
||||
)
|
||||
)
|
||||
(set! (-> self root-override2 status) (collide-status))
|
||||
(set! (-> self root-override2 root-prim local-sphere w) (-> self carry carry-radius))
|
||||
(set! (-> self root-override2 root-prim prim-core collide-with)
|
||||
(set! (-> self root status) (collide-status))
|
||||
(set! (-> self root root-prim local-sphere w) (-> self carry carry-radius))
|
||||
(set! (-> self root root-prim prim-core collide-with)
|
||||
(logior (collide-spec backgnd crate obstacle hit-by-others-list pusher)
|
||||
(-> self root-override2 root-prim prim-core collide-with)
|
||||
(-> self root root-prim prim-core collide-with)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:trans (behavior ()
|
||||
(when (and (logtest? (-> (the-as collide-shape-moving (-> self root-override2)) status) (collide-status on-surface))
|
||||
(< 0.8 (-> (the-as collide-shape-moving (-> self root-override2)) surface-angle))
|
||||
(when (and (logtest? (-> (the-as collide-shape-moving (-> self root)) status) (collide-status on-surface))
|
||||
(< 0.8 (-> (the-as collide-shape-moving (-> self root)) surface-angle))
|
||||
)
|
||||
(vector-reset! (-> self root-override2 transv))
|
||||
(when (= (vector-length (-> self root-override2 transv)) 0.0)
|
||||
(set! (-> (the-as collide-shape-moving (-> self root-override2)) root-prim local-sphere w)
|
||||
(vector-reset! (-> self root transv))
|
||||
(when (= (vector-length (-> self root transv)) 0.0)
|
||||
(set! (-> (the-as collide-shape-moving (-> self root)) root-prim local-sphere w)
|
||||
(-> self carry backup-radius)
|
||||
)
|
||||
(set! (-> self base quad) (-> self root-override2 trans quad))
|
||||
(let ((v1-16 (-> (the-as collide-shape-moving (-> self root-override2)) root-prim)))
|
||||
(set! (-> v1-16 prim-core collide-as)
|
||||
(-> (the-as collide-shape-moving (-> self root-override2)) backup-collide-as)
|
||||
)
|
||||
(set! (-> v1-16 prim-core collide-with)
|
||||
(-> (the-as collide-shape-moving (-> self root-override2)) backup-collide-with)
|
||||
)
|
||||
(set! (-> self base quad) (-> self root trans quad))
|
||||
(let ((v1-16 (-> (the-as collide-shape-moving (-> self root)) root-prim)))
|
||||
(set! (-> v1-16 prim-core collide-as) (-> (the-as collide-shape-moving (-> self root)) backup-collide-as))
|
||||
(set! (-> v1-16 prim-core collide-with) (-> (the-as collide-shape-moving (-> self root)) backup-collide-with))
|
||||
)
|
||||
(go-virtual idle)
|
||||
)
|
||||
@@ -751,18 +742,13 @@
|
||||
:code (the-as (function none :behavior crate) sleep-code)
|
||||
:post (behavior ()
|
||||
(vector-v++!
|
||||
(-> self root-override2 transv)
|
||||
(compute-acc-due-to-gravity (the-as collide-shape-moving (-> self root-override2)) (new-stack-vector0) 0.0)
|
||||
(-> self root transv)
|
||||
(compute-acc-due-to-gravity (the-as collide-shape-moving (-> self root)) (new-stack-vector0) 0.0)
|
||||
)
|
||||
(if (< (-> (the-as collide-shape-moving (-> self root-override2)) dynam gravity-max)
|
||||
(vector-length (-> self root-override2 transv))
|
||||
)
|
||||
(vector-normalize!
|
||||
(-> self root-override2 transv)
|
||||
(-> (the-as collide-shape-moving (-> self root-override2)) dynam gravity-max)
|
||||
)
|
||||
(if (< (-> (the-as collide-shape-moving (-> self root)) dynam gravity-max) (vector-length (-> self root transv)))
|
||||
(vector-normalize! (-> self root transv) (-> (the-as collide-shape-moving (-> self root)) dynam gravity-max))
|
||||
)
|
||||
(let ((gp-1 (-> self root-override2)))
|
||||
(let ((gp-1 (-> self root)))
|
||||
(let ((a2-1 (new 'stack-no-clear 'collide-query)))
|
||||
(set! (-> gp-1 root-prim type) collide-shape-prim-sphere)
|
||||
(set! (-> a2-1 collide-with) (collide-spec backgnd crate obstacle pusher))
|
||||
@@ -826,7 +812,7 @@
|
||||
)
|
||||
)
|
||||
(when v1-4
|
||||
(let* ((gp-2 (-> (the-as collide-shape-moving (-> self root-override2)) root-prim prim-core))
|
||||
(let* ((gp-2 (-> (the-as collide-shape-moving (-> self root)) root-prim prim-core))
|
||||
(a1-3 (-> (the-as collide-shape-moving v1-4) root-prim prim-core))
|
||||
(f30-0 (vector-vector-distance (the-as vector gp-2) (the-as vector a1-3)))
|
||||
)
|
||||
@@ -903,7 +889,7 @@
|
||||
)
|
||||
:code (behavior ((arg0 symbol) (arg1 int))
|
||||
(logior! (-> self focus-status) (focus-status dead))
|
||||
(let ((v1-3 (-> (the-as collide-shape (-> self root-override2)) root-prim)))
|
||||
(let ((v1-3 (-> (the-as collide-shape (-> self root)) root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-3 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -941,16 +927,13 @@
|
||||
)
|
||||
(case (-> self defense)
|
||||
(('darkeco)
|
||||
(let ((f0-0
|
||||
(lerp-scale 1.0 0.0 (vector-vector-distance (-> self root-override2 trans) (target-pos 0)) 8192.0 40960.0)
|
||||
)
|
||||
)
|
||||
(let ((f0-0 (lerp-scale 1.0 0.0 (vector-vector-distance (-> self root trans) (target-pos 0)) 8192.0 40960.0)))
|
||||
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 (the int (* 255.0 f0-0)) (seconds 0.3))
|
||||
)
|
||||
(process-spawn
|
||||
touch-tracker
|
||||
:init touch-tracker-init
|
||||
(-> self root-override2 trans)
|
||||
(-> self root trans)
|
||||
(-> *CRATE-bank* DARKECO_EXPLODE_RADIUS)
|
||||
30
|
||||
:to self
|
||||
@@ -974,7 +957,7 @@
|
||||
(t2-4 #f)
|
||||
(t3-0 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-0 trans quad) (-> self root-override2 trans quad))
|
||||
(set! (-> t3-0 trans quad) (-> self root trans quad))
|
||||
((the-as (function object object object object object object object object none) t9-18)
|
||||
a0-34
|
||||
a1-21
|
||||
@@ -1006,7 +989,7 @@
|
||||
(t2-5 #f)
|
||||
(t3-1 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-1 trans quad) (-> self root-override2 trans quad))
|
||||
(set! (-> t3-1 trans quad) (-> self root trans quad))
|
||||
((the-as (function object object object object object object object object none) t9-21)
|
||||
a0-39
|
||||
a1-27
|
||||
@@ -1038,7 +1021,7 @@
|
||||
(t2-6 #f)
|
||||
(t3-2 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-2 trans quad) (-> self root-override2 trans quad))
|
||||
(set! (-> t3-2 trans quad) (-> self root trans quad))
|
||||
((the-as (function object object object object object object object object none) t9-24)
|
||||
a0-42
|
||||
a1-32
|
||||
@@ -1145,7 +1128,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-20 (-> (the-as collide-shape-moving (-> self root-override2)) root-prim)))
|
||||
(let ((v1-20 (-> (the-as collide-shape-moving (-> self root)) root-prim)))
|
||||
(set! (-> v1-20 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-20 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -1173,7 +1156,7 @@
|
||||
|
||||
(defbehavior crate-init-by-other crate ((arg0 entity) (arg1 vector) (arg2 symbol) (arg3 fact-info-crate))
|
||||
(crate-init! self (the-as entity-actor arg0))
|
||||
(set! (-> self root-override2 trans quad) (-> arg1 quad))
|
||||
(set! (-> self root trans quad) (-> arg1 quad))
|
||||
(set! (-> self look) arg2)
|
||||
(set! (-> self defense) arg2)
|
||||
(skel-init! self)
|
||||
@@ -1246,7 +1229,7 @@ This commonly includes things such as:
|
||||
knocked
|
||||
)
|
||||
)
|
||||
(set! (-> obj root-override2) s4-0)
|
||||
(set! (-> obj root) s4-0)
|
||||
)
|
||||
(set! (-> obj fact)
|
||||
(new 'process 'fact-info-crate obj (pickup-type eco-pill-random) (-> *FACT-bank* default-eco-pill-green-inc))
|
||||
@@ -1295,7 +1278,7 @@ This commonly includes things such as:
|
||||
"Initialize the [[crate]]'s skeleton and other parameters based on the crate type."
|
||||
(case (-> obj look)
|
||||
(('iron)
|
||||
(set! (-> (the-as collide-shape-moving (-> obj root-override2)) penetrated-by)
|
||||
(set! (-> (the-as collide-shape-moving (-> obj root)) penetrated-by)
|
||||
(penetrate flop uppercut tube vehicle flut-attack board dark-skin explode)
|
||||
)
|
||||
(initialize-skeleton
|
||||
@@ -1305,7 +1288,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
(('steel)
|
||||
(set! (-> (the-as collide-shape-moving (-> obj root-override2)) penetrated-by)
|
||||
(set! (-> (the-as collide-shape-moving (-> obj root)) penetrated-by)
|
||||
(penetrate tube vehicle flut-attack board dark-skin explode)
|
||||
)
|
||||
(initialize-skeleton
|
||||
@@ -1343,7 +1326,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> obj base quad) (-> obj root-override2 trans quad))
|
||||
(set! (-> obj base quad) (-> obj root trans quad))
|
||||
(crate-post)
|
||||
(nav-mesh-connect-from-ent obj)
|
||||
(none)
|
||||
@@ -1384,9 +1367,9 @@ This commonly includes things such as:
|
||||
|
||||
(defmethod smush-update! crate ((obj crate))
|
||||
(let ((f0-0 (update! (-> obj smush))))
|
||||
(set! (-> obj root-override2 scale x) (+ 1.0 (* -0.5 f0-0)))
|
||||
(set! (-> obj root-override2 scale y) (+ 1.0 f0-0))
|
||||
(set! (-> obj root-override2 scale z) (+ 1.0 (* -0.5 f0-0)))
|
||||
(set! (-> obj root scale x) (+ 1.0 (* -0.5 f0-0)))
|
||||
(set! (-> obj root scale y) (+ 1.0 f0-0))
|
||||
(set! (-> obj root scale z) (+ 1.0 (* -0.5 f0-0)))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
|
||||
@@ -515,7 +515,7 @@ do so.
|
||||
(let ((f0-3 (sqrtf (sin-rad (* 3.1415925 (-> self path-pos))))))
|
||||
(update-vol! (-> self sound) f0-3)
|
||||
)
|
||||
(update-trans! (-> self sound) (-> self root-override trans))
|
||||
(update-trans! (-> self sound) (-> self root trans))
|
||||
(update! (-> self sound))
|
||||
)
|
||||
(plat-post)
|
||||
@@ -635,7 +635,7 @@ do so.
|
||||
(set-setting! 'board #f 0.0 0)
|
||||
(let ((gp-0 (-> self on-activate)))
|
||||
(if gp-0
|
||||
(script-eval gp-0 :key (* (the int (-> self move-pos 0)) 8) :vector (-> self root-override trans))
|
||||
(script-eval gp-0 :key (* (the int (-> self move-pos 0)) 8) :vector (-> self root trans))
|
||||
)
|
||||
)
|
||||
(set! (-> self path-pos) 0.0)
|
||||
@@ -726,7 +726,7 @@ do so.
|
||||
)
|
||||
(let ((gp-0 (-> self on-deactivate)))
|
||||
(if gp-0
|
||||
(script-eval gp-0 :key (* (the int (-> self move-pos 1)) 8) :vector (-> self root-override trans))
|
||||
(script-eval gp-0 :key (* (the int (-> self move-pos 1)) 8) :vector (-> self root trans))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
@@ -820,7 +820,7 @@ This commonly includes things such as:
|
||||
(initialize-skeleton obj (the-as skeleton-group (get-art-group obj)) (the-as pair 0))
|
||||
(stop-bouncing! obj)
|
||||
(set! (-> obj elevator-status) (elevator-status))
|
||||
(update-transforms (-> obj root-override))
|
||||
(update-transforms (-> obj root))
|
||||
(base-plat-method-32 obj)
|
||||
(init-defaults! obj)
|
||||
(set! (-> obj on-activate) (res-lump-struct (-> obj entity) 'on-activate pair))
|
||||
@@ -870,7 +870,7 @@ This commonly includes things such as:
|
||||
(set! (-> obj move-pos 0) sv-32)
|
||||
(set! (-> obj move-pos 1) sv-32)
|
||||
(get-point-in-path! sv-36 (-> obj basetrans) sv-32 'interp)
|
||||
(set! (-> obj root-override pause-adjust-distance)
|
||||
(set! (-> obj root pause-adjust-distance)
|
||||
(+ 122880.0 (-> obj params xz-threshold) (total-distance (-> obj path)))
|
||||
)
|
||||
(set-ambient-sound! obj)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype manipy (process-drawable)
|
||||
((root-override collide-shape :offset 128)
|
||||
((root collide-shape :override)
|
||||
(new-trans-hook (function none) :offset-assert 200)
|
||||
(cur-trans-hook (function none) :offset-assert 204)
|
||||
(cur-event-hook (function none) :offset-assert 208)
|
||||
@@ -105,23 +105,23 @@
|
||||
|
||||
|
||||
(deftype lightning-tracker (process)
|
||||
((ppointer-override (pointer lightning-tracker) :offset 28)
|
||||
(root trsqv :offset-assert 128)
|
||||
(lightning lightning-control :offset-assert 132)
|
||||
(callback (function lightning-tracker none) :offset-assert 136)
|
||||
(duration uint64 :offset-assert 144)
|
||||
(start-time time-frame :offset-assert 152)
|
||||
(offset0 vector :inline :offset-assert 160)
|
||||
(offset1 vector :inline :offset-assert 176)
|
||||
(target0 handle :offset-assert 192)
|
||||
(target1 handle :offset-assert 200)
|
||||
(target-joint0 int32 :offset-assert 208)
|
||||
(target-joint1 int32 :offset-assert 212)
|
||||
(sound sound-id :offset-assert 216)
|
||||
(userdata uint64 :offset-assert 224)
|
||||
(user-time time-frame 2 :offset-assert 232)
|
||||
(user-vector vector :inline :offset-assert 256)
|
||||
(user-handle handle 2 :offset 288)
|
||||
((ppointer (pointer lightning-tracker) :override)
|
||||
(root trsqv :offset-assert 128)
|
||||
(lightning lightning-control :offset-assert 132)
|
||||
(callback (function lightning-tracker none) :offset-assert 136)
|
||||
(duration uint64 :offset-assert 144)
|
||||
(start-time time-frame :offset-assert 152)
|
||||
(offset0 vector :inline :offset-assert 160)
|
||||
(offset1 vector :inline :offset-assert 176)
|
||||
(target0 handle :offset-assert 192)
|
||||
(target1 handle :offset-assert 200)
|
||||
(target-joint0 int32 :offset-assert 208)
|
||||
(target-joint1 int32 :offset-assert 212)
|
||||
(sound sound-id :offset-assert 216)
|
||||
(userdata uint64 :offset-assert 224)
|
||||
(user-time time-frame 2 :offset-assert 232)
|
||||
(user-vector vector :inline :offset-assert 256)
|
||||
(user-handle handle 2 :offset 288)
|
||||
)
|
||||
:heap-base #xb0
|
||||
:method-count-assert 17
|
||||
@@ -136,13 +136,13 @@
|
||||
|
||||
|
||||
(deftype touch-tracker (process-drawable)
|
||||
((root-override collide-shape :offset 128)
|
||||
(duration time-frame :offset-assert 200)
|
||||
(target handle :offset-assert 208)
|
||||
(event symbol :offset-assert 216)
|
||||
(run-function (function object) :offset-assert 220)
|
||||
(callback (function touch-tracker none) :offset-assert 224)
|
||||
(event-mode basic :offset-assert 228)
|
||||
((root collide-shape :override)
|
||||
(duration time-frame :offset-assert 200)
|
||||
(target handle :offset-assert 208)
|
||||
(event symbol :offset-assert 216)
|
||||
(run-function (function object) :offset-assert 220)
|
||||
(callback (function touch-tracker none) :offset-assert 224)
|
||||
(event-mode basic :offset-assert 228)
|
||||
)
|
||||
:heap-base #x70
|
||||
:method-count-assert 21
|
||||
@@ -155,13 +155,13 @@
|
||||
|
||||
|
||||
(deftype swingpole (process-drawable)
|
||||
((root-override collide-shape :offset 128)
|
||||
(edge-length meters :offset-assert 200)
|
||||
(path-pos float :offset-assert 204)
|
||||
(joint-track int32 :offset-assert 208)
|
||||
(speed meters :offset-assert 212)
|
||||
(dir vector :inline :offset-assert 224)
|
||||
(sync sync-eased :inline :offset-assert 240)
|
||||
((root collide-shape :override)
|
||||
(edge-length meters :offset-assert 200)
|
||||
(path-pos float :offset-assert 204)
|
||||
(joint-track int32 :offset-assert 208)
|
||||
(speed meters :offset-assert 212)
|
||||
(dir vector :inline :offset-assert 224)
|
||||
(sync sync-eased :inline :offset-assert 240)
|
||||
)
|
||||
:heap-base #xa0
|
||||
:method-count-assert 23
|
||||
@@ -219,7 +219,7 @@
|
||||
|
||||
|
||||
(deftype explosion (process-drawable)
|
||||
((root-override collide-shape :offset 128)
|
||||
((root collide-shape :override)
|
||||
(start-time time-frame :offset-assert 200)
|
||||
(duration uint32 :offset-assert 208)
|
||||
(linger-duration uint32 :offset-assert 212)
|
||||
|
||||
@@ -148,10 +148,8 @@
|
||||
(set! (-> obj path-pos) (get-norm! (-> obj sync) 0))
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector)))
|
||||
(get-point-at-percent-along-path! (-> obj path) s5-0 (-> obj path-pos) 'interp)
|
||||
(set! (-> obj speed)
|
||||
(* (vector-vector-distance s5-0 (-> obj root-override trans)) (-> pp clock frames-per-second))
|
||||
)
|
||||
(move-to-point! (-> obj root-override) s5-0)
|
||||
(set! (-> obj speed) (* (vector-vector-distance s5-0 (-> obj root trans)) (-> pp clock frames-per-second)))
|
||||
(move-to-point! (-> obj root) s5-0)
|
||||
)
|
||||
)
|
||||
((>= (-> obj joint-track) 0)
|
||||
@@ -162,12 +160,12 @@
|
||||
(vector<-cspace! s5-1 s4-0)
|
||||
(vector-normalize-copy! (-> obj dir) (the-as vector (-> s4-0 bone transform)) 1.0)
|
||||
)
|
||||
(move-to-point! (-> obj root-override) s5-1)
|
||||
(move-to-point! (-> obj root) s5-1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (nonzero? (-> obj sound))
|
||||
(set! (-> obj sound trans quad) (-> obj root-override trans quad))
|
||||
(set! (-> obj sound trans quad) (-> obj root trans quad))
|
||||
(let ((f30-0 (lerp-scale -0.1 -0.05 (-> obj speed) 8192.0 20480.0))
|
||||
(f0-6 (lerp-scale 0.7 1.0 (-> obj speed) 8192.0 20480.0))
|
||||
)
|
||||
@@ -198,7 +196,7 @@
|
||||
(if (nonzero? (-> self draw))
|
||||
(ja-post)
|
||||
)
|
||||
(update-transforms (-> self root-override))
|
||||
(update-transforms (-> self root))
|
||||
(cond
|
||||
((or (nonzero? (-> self path)) (>= (-> self joint-track) 0))
|
||||
(until #f
|
||||
@@ -267,12 +265,12 @@ This commonly includes things such as:
|
||||
(set! (-> s4-0 backup-collide-as) (-> v1-8 prim-core collide-as))
|
||||
(set! (-> s4-0 backup-collide-with) (-> v1-8 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override) s4-0)
|
||||
(set! (-> obj root) s4-0)
|
||||
)
|
||||
(set! (-> obj root-override trans quad) (-> arg0 extra trans quad))
|
||||
(quaternion-copy! (-> obj root-override quat) (-> arg0 quat))
|
||||
(vector-identity! (-> obj root-override scale))
|
||||
(vector-y-quaternion! (-> obj dir) (-> obj root-override quat))
|
||||
(set! (-> obj root trans quad) (-> arg0 extra trans quad))
|
||||
(quaternion-copy! (-> obj root quat) (-> arg0 quat))
|
||||
(vector-identity! (-> obj root scale))
|
||||
(vector-y-quaternion! (-> obj dir) (-> obj root quat))
|
||||
(set! (-> obj joint-track) -1)
|
||||
(let ((a1-8 (res-lump-struct (-> obj entity) 'art-name structure)))
|
||||
(if a1-8
|
||||
@@ -305,7 +303,7 @@ This commonly includes things such as:
|
||||
(set! (-> obj path) (new 'process 'curve-control obj 'path -1000000000.0))
|
||||
(logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text))
|
||||
)
|
||||
(set! (-> obj sound) (new 'process 'ambient-sound (-> obj entity) (-> obj root-override trans)))
|
||||
(set! (-> obj sound) (new 'process 'ambient-sound (-> obj entity) (-> obj root trans)))
|
||||
(go (method-of-object obj idle))
|
||||
(none)
|
||||
)
|
||||
@@ -325,11 +323,11 @@ This commonly includes things such as:
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-7 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-7 prim-core collide-with))
|
||||
)
|
||||
(set! (-> self root-override) s5-0)
|
||||
(set! (-> self root) s5-0)
|
||||
)
|
||||
(set! (-> self root-override trans quad) (-> (the-as swingpole (-> self parent 0)) root-override trans quad))
|
||||
(quaternion-identity! (-> self root-override quat))
|
||||
(vector-identity! (-> self root-override scale))
|
||||
(set! (-> self root trans quad) (-> (the-as swingpole (-> self parent 0)) root trans quad))
|
||||
(quaternion-identity! (-> self root quat))
|
||||
(vector-identity! (-> self root scale))
|
||||
(set! (-> self joint-track) arg0)
|
||||
(set-vector! (-> self dir) 0.0 0.0 1.0 1.0)
|
||||
(set! (-> self edge-length) 8192.0)
|
||||
@@ -635,11 +633,11 @@ This commonly includes things such as:
|
||||
)
|
||||
((= v1-0 'trans)
|
||||
(cond
|
||||
((type? (-> self root-override) collide-shape)
|
||||
(the-as object (move-to-point! (-> self root-override) (the-as vector (-> event param 0))))
|
||||
((type? (-> self root) collide-shape)
|
||||
(the-as object (move-to-point! (-> self root) (the-as vector (-> event param 0))))
|
||||
)
|
||||
(else
|
||||
(set! s4-0 (-> self root-override trans))
|
||||
(set! s4-0 (-> self root trans))
|
||||
(set! (-> (the-as vector s4-0) quad) (-> (the-as vector (-> event param 0)) quad))
|
||||
s4-0
|
||||
)
|
||||
@@ -648,11 +646,11 @@ This commonly includes things such as:
|
||||
((= v1-0 'rot)
|
||||
(let ((s5-3 (new 'stack-no-clear 'matrix)))
|
||||
(matrix-rotate-y! s5-3 (the-as float (-> event param 0)))
|
||||
(matrix->quaternion (-> self root-override quat) s5-3)
|
||||
(matrix->quaternion (-> self root quat) s5-3)
|
||||
)
|
||||
)
|
||||
((= v1-0 'rot-quat)
|
||||
(quaternion-copy! (-> self root-override quat) (the-as quaternion (-> event param 0)))
|
||||
(quaternion-copy! (-> self root quat) (the-as quaternion (-> event param 0)))
|
||||
)
|
||||
((= v1-0 'clone-copy-trans)
|
||||
(set! s4-0 (-> event param 0))
|
||||
@@ -816,14 +814,14 @@ This commonly includes things such as:
|
||||
(let ((v1-20 (handle->process (-> self cur-grab-handle))))
|
||||
(when v1-20
|
||||
(let ((gp-1 (-> (the-as process-drawable v1-20) root trans)))
|
||||
(if (type? (-> self root-override) collide-shape)
|
||||
(if (type? (-> self root) collide-shape)
|
||||
(move-by-vector!
|
||||
(the-as collide-shape (-> self root-override))
|
||||
(the-as collide-shape (-> self root))
|
||||
(vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos))
|
||||
)
|
||||
(vector+!
|
||||
(-> self root-override trans)
|
||||
(-> self root-override trans)
|
||||
(-> self root trans)
|
||||
(-> self root trans)
|
||||
(vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos))
|
||||
)
|
||||
)
|
||||
@@ -968,7 +966,7 @@ This commonly includes things such as:
|
||||
(set! (-> s3-1 backup-collide-as) (-> v1-14 prim-core collide-as))
|
||||
(set! (-> s3-1 backup-collide-with) (-> v1-14 prim-core collide-with))
|
||||
)
|
||||
(set! (-> self root-override) s3-1)
|
||||
(set! (-> self root) s3-1)
|
||||
)
|
||||
)
|
||||
(arg3
|
||||
@@ -985,17 +983,17 @@ This commonly includes things such as:
|
||||
(set! (-> s3-2 backup-collide-as) (-> v1-21 prim-core collide-as))
|
||||
(set! (-> s3-2 backup-collide-with) (-> v1-21 prim-core collide-with))
|
||||
)
|
||||
(set! (-> self root-override) s3-2)
|
||||
(set! (-> self root) s3-2)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! (-> self root-override) (the-as collide-shape (new 'process 'trsqv)))
|
||||
(set! (-> self root) (the-as collide-shape (new 'process 'trsqv)))
|
||||
)
|
||||
)
|
||||
(set! (-> self root-override trans quad) (-> arg0 quad))
|
||||
(set! (-> self root trans quad) (-> arg0 quad))
|
||||
(initialize-skeleton self arg2 (the-as pair 0))
|
||||
(if (type? (-> self root-override) collide-shape)
|
||||
(update-transforms (the-as collide-shape (-> self root-override)))
|
||||
(if (type? (-> self root) collide-shape)
|
||||
(update-transforms (the-as collide-shape (-> self root)))
|
||||
)
|
||||
(set! (-> self shadow-backup) (-> self draw shadow))
|
||||
(set! (-> self shadow-volume-joint) -1)
|
||||
@@ -1318,7 +1316,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
)
|
||||
((or (not a0-6) (zero? (-> (the-as process-focusable a0-6) root-override)))
|
||||
((or (not a0-6) (zero? (-> (the-as process-focusable a0-6) root)))
|
||||
(deactivate obj)
|
||||
)
|
||||
((= (-> obj target-joint0) 256)
|
||||
@@ -1365,7 +1363,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
)
|
||||
((or (not a0-22) (zero? (-> (the-as process-focusable a0-22) root-override)))
|
||||
((or (not a0-22) (zero? (-> (the-as process-focusable a0-22) root)))
|
||||
(deactivate obj)
|
||||
)
|
||||
((= (-> obj target-joint1) 256)
|
||||
@@ -1911,7 +1909,7 @@ This commonly includes things such as:
|
||||
)
|
||||
|
||||
(deftype launcher (process-drawable)
|
||||
((root-override collide-shape :offset 128)
|
||||
((root collide-shape :override)
|
||||
(spring-height meters :offset-assert 200)
|
||||
(camera state :offset-assert 204)
|
||||
(active-distance float :offset-assert 208)
|
||||
@@ -2360,18 +2358,17 @@ This commonly includes things such as:
|
||||
(go-virtual deactivated)
|
||||
)
|
||||
(('trans)
|
||||
(move-to-point! (-> self root-override) (the-as vector (-> event param 0)))
|
||||
(the-as object (update-transforms (-> self root-override)))
|
||||
(move-to-point! (-> self root) (the-as vector (-> event param 0)))
|
||||
(the-as object (update-transforms (-> self root)))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:trans (behavior ()
|
||||
(when (and *target* (and (>= (-> self active-distance)
|
||||
(vector-vector-distance (-> self root-override trans) (-> *target* control trans))
|
||||
)
|
||||
(not (logtest? (focus-status teleporting) (-> *target* focus-status)))
|
||||
)
|
||||
(when (and *target*
|
||||
(and (>= (-> self active-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))
|
||||
(not (logtest? (focus-status teleporting) (-> *target* focus-status)))
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((send-event *target* 'query 'powerup (pickup-type eco-blue))
|
||||
@@ -2385,10 +2382,9 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (and (and *target*
|
||||
(and (>= 32768.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
(not (logtest? (focus-status teleporting) (-> *target* focus-status)))
|
||||
)
|
||||
(if (and (and *target* (and (>= 32768.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))
|
||||
(not (logtest? (focus-status teleporting) (-> *target* focus-status)))
|
||||
)
|
||||
)
|
||||
(not (send-event *target* 'query 'powerup (pickup-type eco-blue)))
|
||||
)
|
||||
@@ -2412,8 +2408,8 @@ This commonly includes things such as:
|
||||
(go-virtual deactivated)
|
||||
)
|
||||
((= event-type 'trans)
|
||||
(move-to-point! (-> self root-override) (the-as vector (-> event param 0)))
|
||||
(the-as object (update-transforms (-> self root-override)))
|
||||
(move-to-point! (-> self root) (the-as vector (-> event param 0)))
|
||||
(the-as object (update-transforms (-> self root)))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -2431,20 +2427,19 @@ This commonly includes things such as:
|
||||
(none)
|
||||
)
|
||||
:trans (behavior ()
|
||||
(if (or (or (not *target*) (or (< (-> self active-distance)
|
||||
(vector-vector-distance (-> self root-override trans) (-> *target* control trans))
|
||||
)
|
||||
(focus-test? *target* teleporting)
|
||||
)
|
||||
(if (or (or (not *target*)
|
||||
(or (< (-> self active-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))
|
||||
(focus-test? *target* teleporting)
|
||||
)
|
||||
)
|
||||
(not (send-event *target* 'query 'powerup (pickup-type eco-blue)))
|
||||
)
|
||||
(go-virtual idle)
|
||||
)
|
||||
(spawn (-> self part) (-> self root-override trans))
|
||||
(spawn (-> self part) (-> self root trans))
|
||||
(sound-play "launch-idle" :id (-> self sound-id))
|
||||
(if (and (and *target* (and (>= (+ 2867.2 (-> self root-override root-prim prim-core world-sphere w))
|
||||
(vector-vector-distance (-> self root-override trans) (-> *target* control trans))
|
||||
(if (and (and *target* (and (>= (+ 2867.2 (-> self root root-prim prim-core world-sphere w))
|
||||
(vector-vector-distance (-> self root trans) (-> *target* control trans))
|
||||
)
|
||||
(not (logtest? (focus-status teleporting) (-> *target* focus-status)))
|
||||
)
|
||||
@@ -2489,10 +2484,10 @@ This commonly includes things such as:
|
||||
(set! (-> s4-0 backup-collide-as) (-> v1-6 prim-core collide-as))
|
||||
(set! (-> s4-0 backup-collide-with) (-> v1-6 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override) s4-0)
|
||||
(set! (-> obj root) s4-0)
|
||||
)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(update-transforms (-> obj root-override))
|
||||
(update-transforms (-> obj root))
|
||||
(set! (-> obj active-distance) 409600.0)
|
||||
(set! (-> obj spring-height) (res-lump-float arg0 'spring-height :default 163840.0))
|
||||
(let ((s4-1 (res-lump-value arg0 'mode uint128 :time -1000000000.0)))
|
||||
@@ -2555,12 +2550,12 @@ This commonly includes things such as:
|
||||
(set! (-> s2-0 backup-collide-as) (-> v1-7 prim-core collide-as))
|
||||
(set! (-> s2-0 backup-collide-with) (-> v1-7 prim-core collide-with))
|
||||
)
|
||||
(set! (-> self root-override) s2-0)
|
||||
(set! (-> self root) s2-0)
|
||||
)
|
||||
(set! (-> self root-override trans quad) (-> arg0 quad))
|
||||
(set-vector! (-> self root-override scale) 1.0 1.0 1.0 1.0)
|
||||
(set-vector! (-> self root-override quat) 0.0 0.0 0.0 1.0)
|
||||
(update-transforms (-> self root-override))
|
||||
(set! (-> self root trans quad) (-> arg0 quad))
|
||||
(set-vector! (-> self root scale) 1.0 1.0 1.0 1.0)
|
||||
(set-vector! (-> self root quat) 0.0 0.0 0.0 1.0)
|
||||
(update-transforms (-> self root))
|
||||
(set! (-> self spring-height) arg1)
|
||||
(set! (-> self active-distance) arg3)
|
||||
(let ((v1-18 (-> self level name)))
|
||||
@@ -2694,9 +2689,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
(if a0-6
|
||||
(set! (-> self root-override trans quad)
|
||||
(-> (the-as collide-shape a0-6) root-prim prim-core world-sphere quad)
|
||||
)
|
||||
(set! (-> self root trans quad) (-> (the-as collide-shape a0-6) root-prim prim-core world-sphere quad))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -2704,16 +2697,16 @@ This commonly includes things such as:
|
||||
(if (-> self callback)
|
||||
((-> self callback) self)
|
||||
)
|
||||
(update-transforms (-> self root-override))
|
||||
(update-transforms (-> self root))
|
||||
(let ((a1-3 (new 'stack-no-clear 'overlaps-others-params)))
|
||||
(set! (-> a1-3 options) (overlaps-others-options oo1))
|
||||
(set! (-> a1-3 collide-with-filter) (the-as collide-spec -1))
|
||||
(set! (-> a1-3 tlist) *touching-list*)
|
||||
(find-overlapping-shapes (-> self root-override) a1-3)
|
||||
(find-overlapping-shapes (-> self root) a1-3)
|
||||
)
|
||||
(suspend)
|
||||
)
|
||||
(let ((v1-21 (-> self root-override root-prim)))
|
||||
(let ((v1-21 (-> self root root-prim)))
|
||||
(set! (-> v1-21 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-21 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -2757,9 +2750,9 @@ This commonly includes things such as:
|
||||
(set! (-> s4-0 backup-collide-with) (-> v1-9 prim-core collide-with))
|
||||
)
|
||||
(set! (-> s4-0 event-self) 'touched)
|
||||
(set! (-> self root-override) s4-0)
|
||||
(set! (-> self root) s4-0)
|
||||
)
|
||||
(set! (-> self root-override trans quad) (-> arg0 quad))
|
||||
(set! (-> self root trans quad) (-> arg0 quad))
|
||||
(set! (-> self duration) arg2)
|
||||
(set! (-> self target) (the-as handle #f))
|
||||
(set! (-> self event) #f)
|
||||
@@ -2786,9 +2779,9 @@ This commonly includes things such as:
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-6 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-6 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(set! (-> obj root-override event-self) 'touched)
|
||||
(set! (-> obj root event-self) 'touched)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
@@ -2801,10 +2794,10 @@ This commonly includes things such as:
|
||||
(defbehavior explosion-init-by-other explosion ((arg0 explosion-init-params))
|
||||
(logclear! (-> self mask) (process-mask actor-pause movie))
|
||||
(setup-explosion-collision self)
|
||||
(set! (-> self root-override trans quad) (-> arg0 spawn-point quad))
|
||||
(quaternion-copy! (-> self root-override quat) (-> arg0 spawn-quat))
|
||||
(set! (-> self root-override penetrate-using) (-> arg0 penetrate-using))
|
||||
(let ((v1-9 (-> self root-override root-prim)))
|
||||
(set! (-> self root trans quad) (-> arg0 spawn-point quad))
|
||||
(quaternion-copy! (-> self root quat) (-> arg0 spawn-quat))
|
||||
(set! (-> self root penetrate-using) (-> arg0 penetrate-using))
|
||||
(let ((v1-9 (-> self root root-prim)))
|
||||
(set! (-> v1-9 local-sphere w) (-> arg0 radius))
|
||||
(set! (-> v1-9 prim-core world-sphere w) (-> arg0 radius))
|
||||
(set! (-> v1-9 prim-core collide-with) (-> arg0 collide-with))
|
||||
@@ -2823,7 +2816,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
(let ((v1-16 (new 'stack-no-clear 'traffic-danger-info)))
|
||||
(set! (-> v1-16 sphere quad) (-> self root-override trans quad))
|
||||
(set! (-> v1-16 sphere quad) (-> self root trans quad))
|
||||
(vector-reset! (-> v1-16 velocity))
|
||||
(set! (-> v1-16 sphere r) (* 2.0 (-> arg0 radius)))
|
||||
(set! (-> v1-16 notify-radius) 204800.0)
|
||||
@@ -2866,7 +2859,7 @@ This commonly includes things such as:
|
||||
(let ((a0-3 (-> (the-as process-drawable v1-1) root))
|
||||
(a1-2 (new 'stack-no-clear 'collide-query))
|
||||
)
|
||||
(let ((v1-4 (-> self root-override root-prim prim-core))
|
||||
(let ((v1-4 (-> self root root-prim prim-core))
|
||||
(a0-5 (-> (the-as collide-shape a0-3) root-prim prim-core))
|
||||
)
|
||||
0.0
|
||||
@@ -2903,20 +2896,20 @@ This commonly includes things such as:
|
||||
)
|
||||
:code (behavior ()
|
||||
(set! (-> self start-time) (current-time))
|
||||
(update-transforms (-> self root-override))
|
||||
(update-transforms (-> self root))
|
||||
(let ((a1-0 (new 'stack-no-clear 'overlaps-others-params)))
|
||||
(set! (-> a1-0 options) (overlaps-others-options))
|
||||
(set! (-> a1-0 collide-with-filter) (the-as collide-spec -1))
|
||||
(set! (-> a1-0 tlist) *touching-list*)
|
||||
(find-overlapping-shapes (-> self root-override) a1-0)
|
||||
(find-overlapping-shapes (-> self root) a1-0)
|
||||
)
|
||||
(let ((v1-9 (-> self root-override root-prim)))
|
||||
(let ((v1-9 (-> self root root-prim)))
|
||||
(set! (-> v1-9 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-9 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
0
|
||||
(while (< (- (current-time) (-> self start-time)) (the-as time-frame (-> self duration)))
|
||||
(let ((a1-1 (-> self root-override trans)))
|
||||
(let ((a1-1 (-> self root trans)))
|
||||
(spawn (-> self part) a1-1)
|
||||
)
|
||||
(suspend)
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
(set! (-> collision-shape backup-collide-as) (-> prim prim-core collide-as))
|
||||
(set! (-> collision-shape backup-collide-with) (-> prim prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override) collision-shape)
|
||||
(set! (-> obj root) (the-as collide-shape-moving collision-shape))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -128,8 +128,8 @@ otherwise, [[plat::34]]
|
||||
:trans (behavior ()
|
||||
(set! (-> self path-pos) (get-norm! (-> self sync) 0))
|
||||
(get-point-at-percent-along-path! (-> self path) (-> self basetrans) (-> self path-pos) 'interp)
|
||||
(if (< (vector-vector-distance (-> self root-override trans) (ear-trans 0)) 81920.0)
|
||||
(sound-play "eco-plat-hover" :id (-> self sound-id) :position (-> self root-override trans))
|
||||
(if (< (vector-vector-distance (-> self root trans) (ear-trans 0)) 81920.0)
|
||||
(sound-play "eco-plat-hover" :id (-> self sound-id) :position (-> self root trans))
|
||||
)
|
||||
(plat-trans)
|
||||
(none)
|
||||
@@ -163,7 +163,7 @@ This commonly includes things such as:
|
||||
(init-plat-collision! obj)
|
||||
(process-drawable-from-entity! obj entity)
|
||||
(initialize-skeleton obj (the-as skeleton-group (get-art-group obj)) (the-as pair 0))
|
||||
(update-transforms (-> obj root-override))
|
||||
(update-transforms (-> obj root))
|
||||
(stop-bouncing! obj)
|
||||
(base-plat-method-32 obj)
|
||||
(set! (-> obj fact)
|
||||
@@ -197,13 +197,13 @@ This commonly includes things such as:
|
||||
)
|
||||
((> (-> obj sync period) 0)
|
||||
(set! (-> obj path-pos) (get-norm! (-> obj sync) 0))
|
||||
(get-point-at-percent-along-path! (-> obj path) (-> obj root-override trans) (-> obj path-pos) 'interp)
|
||||
(get-point-at-percent-along-path! (-> obj path) (-> obj root trans) (-> obj path-pos) 'interp)
|
||||
(init-plat! obj)
|
||||
(plat-path-sync obj)
|
||||
)
|
||||
(else
|
||||
(set! (-> obj path-pos) 0.0)
|
||||
(get-point-at-percent-along-path! (-> obj path) (-> obj root-override trans) (-> obj path-pos) 'interp)
|
||||
(get-point-at-percent-along-path! (-> obj path) (-> obj root trans) (-> obj path-pos) 'interp)
|
||||
(init-plat! obj)
|
||||
(plat-path-sync obj)
|
||||
)
|
||||
@@ -264,7 +264,7 @@ This commonly includes things such as:
|
||||
(return (the-as object #f))
|
||||
)
|
||||
)
|
||||
(set! (-> self hit-point quad) (-> self root-override trans quad))
|
||||
(set! (-> self hit-point quad) (-> self root trans quad))
|
||||
(set! proc-focus (if (type? proc process-focusable)
|
||||
(the-as process-focusable proc)
|
||||
)
|
||||
@@ -323,7 +323,7 @@ This commonly includes things such as:
|
||||
:trans (the-as (function none :behavior drop-plat) rider-trans)
|
||||
:code (behavior ((arg0 symbol))
|
||||
(process-entity-status! self (entity-perm-status subtask-complete) #t)
|
||||
(let ((v1-1 (-> self root-override root-prim)))
|
||||
(let ((v1-1 (-> self root root-prim)))
|
||||
(set! (-> v1-1 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-1 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
|
||||
@@ -520,15 +520,11 @@
|
||||
)
|
||||
|
||||
(defbehavior target-eco-process target ()
|
||||
(when (and (!= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 0.0)
|
||||
(>= (- (-> *display* game-clock frame-counter)
|
||||
(-> (the-as fact-info-target (-> self fact-override)) eco-pickup-time)
|
||||
)
|
||||
(-> (the-as fact-info-target (-> self fact-override)) eco-timeout)
|
||||
)
|
||||
(when (and (!= (-> self fact eco-level) 0.0)
|
||||
(>= (- (-> *display* game-clock frame-counter) (-> self fact eco-pickup-time)) (-> self fact eco-timeout))
|
||||
)
|
||||
(set! (-> (the-as fact-info-target (-> self fact-override)) eco-level) 0.0)
|
||||
(set! (-> (the-as fact-info-target (-> self fact-override)) eco-timeout) 0)
|
||||
(set! (-> self fact eco-level) 0.0)
|
||||
(set! (-> self fact eco-timeout) 0)
|
||||
(logclear! (-> self state-flags) (state-flags sf4))
|
||||
(send-event self 'reset-collide)
|
||||
(stop! (-> self sound))
|
||||
@@ -536,25 +532,23 @@
|
||||
(if (logtest? (-> self game secrets) (game-secrets endless-dark))
|
||||
(set! (-> self game eco-pill-dark) (-> *FACT-bank* eco-pill-dark-max-default))
|
||||
)
|
||||
(when (and (< 0.0 (-> (the-as fact-info-target (-> self fact-override)) eco-level))
|
||||
(when (and (< 0.0 (-> self fact eco-level))
|
||||
(not (focus-test? self in-head))
|
||||
(not (logtest? (-> self draw status) (draw-control-status no-draw no-draw-temp)))
|
||||
(not (movie?))
|
||||
(rand-vu-percent? (lerp-scale
|
||||
0.0
|
||||
1.0
|
||||
(the float (- (-> (the-as fact-info-target (-> self fact-override)) eco-timeout)
|
||||
(- (-> *display* game-clock frame-counter)
|
||||
(-> (the-as fact-info-target (-> self fact-override)) eco-pickup-time)
|
||||
)
|
||||
)
|
||||
)
|
||||
0.0
|
||||
900.0
|
||||
)
|
||||
)
|
||||
(rand-vu-percent?
|
||||
(lerp-scale
|
||||
0.0
|
||||
1.0
|
||||
(the float
|
||||
(- (-> self fact eco-timeout) (- (-> *display* game-clock frame-counter) (-> self fact eco-pickup-time)))
|
||||
)
|
||||
0.0
|
||||
900.0
|
||||
)
|
||||
)
|
||||
)
|
||||
(case (-> (the-as fact-info-target (-> self fact-override)) eco-type)
|
||||
(case (-> self fact eco-type)
|
||||
((1)
|
||||
(change-sound! (-> self sound) (static-sound-name "yel-eco-jak"))
|
||||
(let ((s1-0 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))
|
||||
@@ -839,7 +833,6 @@
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defbehavior target-powerup-process target ()
|
||||
(let ((f30-0 (-> self control collision-spheres 0 prim-core world-sphere w)))
|
||||
(if (focus-test? self board)
|
||||
@@ -938,30 +931,19 @@
|
||||
)
|
||||
)
|
||||
(target-darkjak-process)
|
||||
(when (nonzero? (-> (the-as fact-info-target (-> self fact-override)) trick-point-duration))
|
||||
(when (>= (- (-> *display* game-clock frame-counter)
|
||||
(-> (the-as fact-info-target (-> self fact-override)) trick-point-start-time)
|
||||
)
|
||||
(-> (the-as fact-info-target (-> self fact-override)) trick-point-duration)
|
||||
(when (nonzero? (-> self fact trick-point-duration))
|
||||
(when (>= (- (-> *display* game-clock frame-counter) (-> self fact trick-point-start-time))
|
||||
(-> self fact trick-point-duration)
|
||||
)
|
||||
(format
|
||||
#t
|
||||
"------------> ~,,f total points~%"
|
||||
(-> (the-as fact-info-target (-> self fact-override)) trick-point)
|
||||
)
|
||||
(send-event
|
||||
(handle->process (-> self notify))
|
||||
'notify
|
||||
'trick-judge
|
||||
(-> (the-as fact-info-target (-> self fact-override)) trick-point)
|
||||
)
|
||||
(reset! (-> self fact-override) 'trick-judge)
|
||||
(format #t "------------> ~,,f total points~%" (-> self fact trick-point))
|
||||
(send-event (handle->process (-> self notify)) 'notify 'trick-judge (-> self fact trick-point))
|
||||
(reset! (-> self fact) 'trick-judge)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((logtest? (-> self game features) (game-feature unk-game-feature-01))
|
||||
(cond
|
||||
((< (current-time) (-> (the-as fact-info-target (-> self fact-override)) stop-time-timeout))
|
||||
((< (current-time) (-> self fact stop-time-timeout))
|
||||
(set-setting! 'bg-a 'abs 0.3 0)
|
||||
(set-setting! 'bg-r 'abs 1.0 0)
|
||||
(update-rates! (-> *display* entity-clock) 0.0)
|
||||
@@ -969,15 +951,15 @@
|
||||
(sound-play "stopwatch")
|
||||
)
|
||||
)
|
||||
((nonzero? (-> (the-as fact-info-target (-> self fact-override)) stop-time-timeout))
|
||||
((nonzero? (-> self fact stop-time-timeout))
|
||||
(remove-setting! 'bg-a)
|
||||
(remove-setting! 'bg-r)
|
||||
(update-rates! (-> *display* entity-clock) 1.0)
|
||||
(set! (-> (the-as fact-info-target (-> self fact-override)) stop-time-timeout) 0)
|
||||
(set! (-> self fact stop-time-timeout) 0)
|
||||
0
|
||||
)
|
||||
((cpad-pressed? (-> self control cpad number) r1)
|
||||
(set! (-> (the-as fact-info-target (-> self fact-override)) stop-time-timeout) (+ (current-time) (seconds 5)))
|
||||
(set! (-> self fact stop-time-timeout) (+ (current-time) (seconds 5)))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype projectile (process-drawable)
|
||||
((root-override collide-shape-moving :offset 128)
|
||||
((root collide-shape-moving :override)
|
||||
(starting-pos vector :inline :offset-assert 208)
|
||||
(starting-dir vector :inline :offset-assert 224)
|
||||
(target-pos vector :inline :offset-assert 240)
|
||||
|
||||
@@ -125,7 +125,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
(defmethod spawn-impact-particles projectile ((obj projectile))
|
||||
"Spawns associated particles with the projectile if applicable"
|
||||
(if (nonzero? (-> obj part))
|
||||
(spawn (-> obj part) (-> obj root-override trans))
|
||||
(spawn (-> obj part) (-> obj root trans))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -161,7 +161,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
|
||||
(defmethod made-impact? projectile ((obj projectile))
|
||||
"TODO - queries the collision cache, return true/false"
|
||||
(let ((v1-0 (-> obj root-override))
|
||||
(let ((v1-0 (-> obj root))
|
||||
(t1-0 (new 'stack-no-clear 'collide-query))
|
||||
)
|
||||
(let ((a1-0 t1-0))
|
||||
@@ -177,7 +177,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
)
|
||||
|
||||
(defun projectile-move-fill-all-dirs ((arg0 projectile))
|
||||
(let ((v1-0 (-> arg0 root-override))
|
||||
(let ((v1-0 (-> arg0 root))
|
||||
(a2-0 (new 'stack-no-clear 'collide-query))
|
||||
)
|
||||
(set! (-> a2-0 collide-with) (-> v1-0 root-prim prim-core collide-with))
|
||||
@@ -199,7 +199,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
(vf2 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let ((gp-0 (-> arg0 root-override)))
|
||||
(let ((gp-0 (-> arg0 root)))
|
||||
(let ((a1-0 (new 'stack-no-clear 'collide-query)))
|
||||
(let ((a2-0 (-> gp-0 root-prim)))
|
||||
(set! (-> a1-0 start-pos quad) (-> gp-0 trans quad))
|
||||
@@ -233,22 +233,19 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
)
|
||||
|
||||
(defun projectile-update-velocity-add-gravity ((arg0 projectile))
|
||||
(vector-v++!
|
||||
(-> arg0 root-override transv)
|
||||
(compute-acc-due-to-gravity (-> arg0 root-override) (new-stack-vector0) 1.0)
|
||||
)
|
||||
(vector-v++! (-> arg0 root transv) (compute-acc-due-to-gravity (-> arg0 root) (new-stack-vector0) 1.0))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun projectile-update-velocity-space-wars ((arg0 projectile))
|
||||
(let ((s5-1 (vector-! (new 'stack-no-clear 'vector) (-> arg0 target-pos) (-> arg0 root-override trans))))
|
||||
(let ((s5-1 (vector-! (new 'stack-no-clear 'vector) (-> arg0 target-pos) (-> arg0 root trans))))
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector))
|
||||
(s3-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> arg0 root-override transv) 1.0))
|
||||
(f30-0 (vector-length (-> arg0 root-override transv)))
|
||||
(s3-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> arg0 root transv) 1.0))
|
||||
(f30-0 (vector-length (-> arg0 root transv)))
|
||||
)
|
||||
(if (logtest? (-> arg0 root-override status) (collide-status touch-surface))
|
||||
(vector-flatten! s5-1 s5-1 (-> arg0 root-override local-normal))
|
||||
(if (logtest? (-> arg0 root status) (collide-status touch-surface))
|
||||
(vector-flatten! s5-1 s5-1 (-> arg0 root local-normal))
|
||||
)
|
||||
(vector-normalize-copy! s4-0 s5-1 1.0)
|
||||
(if (and (or (not (handle->process (-> arg0 last-target)))
|
||||
@@ -263,20 +260,17 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
)
|
||||
(go (method-of-object arg0 dissipate))
|
||||
)
|
||||
(vector-deg-slerp (-> arg0 root-override transv) s3-0 s4-0 (-> arg0 tween))
|
||||
(vector-normalize! (-> arg0 root-override transv) f30-0)
|
||||
(vector-deg-slerp (-> arg0 root transv) s3-0 s4-0 (-> arg0 tween))
|
||||
(vector-normalize! (-> arg0 root transv) f30-0)
|
||||
)
|
||||
(vector+! (-> arg0 root-override transv) (-> arg0 root-override transv) s5-1)
|
||||
(vector+! (-> arg0 root transv) (-> arg0 root transv) s5-1)
|
||||
)
|
||||
(vector-v++!
|
||||
(-> arg0 root-override transv)
|
||||
(compute-acc-due-to-gravity (-> arg0 root-override) (new-stack-vector0) 0.0)
|
||||
)
|
||||
(if (< (-> arg0 max-speed) (vector-length (-> arg0 root-override transv)))
|
||||
(vector-normalize! (-> arg0 root-override transv) (-> arg0 max-speed))
|
||||
(vector-v++! (-> arg0 root transv) (compute-acc-due-to-gravity (-> arg0 root) (new-stack-vector0) 0.0))
|
||||
(if (< (-> arg0 max-speed) (vector-length (-> arg0 root transv)))
|
||||
(vector-normalize! (-> arg0 root transv) (-> arg0 max-speed))
|
||||
)
|
||||
(if (logtest? (-> arg0 options) (projectile-options lose-altitude))
|
||||
(set! (-> arg0 root-override transv y) -40960.0)
|
||||
(set! (-> arg0 root transv y) -40960.0)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -305,7 +299,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
)
|
||||
(when (logtest? (-> self options) (projectile-options proj-options-2))
|
||||
(seek! (-> self tween) 1.0 (* 0.5 (-> self clock seconds-per-frame)))
|
||||
(let ((f0-4 (vector-vector-distance (-> self root-override trans) (-> self target-pos))))
|
||||
(let ((f0-4 (vector-vector-distance (-> self root trans) (-> self target-pos))))
|
||||
(cond
|
||||
((< f0-4 20480.0)
|
||||
(seek! (-> self tween) 1.0 (* 3.0 (-> self clock seconds-per-frame)))
|
||||
@@ -316,7 +310,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((gp-0 (-> self root-override)))
|
||||
(let ((gp-0 (-> self root)))
|
||||
(set! (-> self pre-move-transv quad) (-> gp-0 transv quad))
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> s5-0 quad) (-> gp-0 trans quad))
|
||||
@@ -331,7 +325,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
(+! f0-14 (-> self old-dist v1-38))
|
||||
)
|
||||
(if (or (and (logtest? (-> self options) (projectile-options proj-options-4))
|
||||
(and (logtest? (-> self root-override status) (collide-status touch-wall)) (< f0-14 2048.0))
|
||||
(and (logtest? (-> self root status) (collide-status touch-wall)) (< f0-14 2048.0))
|
||||
)
|
||||
(< f0-14 (-> self stop-speed))
|
||||
)
|
||||
@@ -423,9 +417,9 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 2))
|
||||
(set! (-> s5-0 event-self) 'touched)
|
||||
(set! (-> obj root-override) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(set! (-> obj root-override pat-ignore-mask)
|
||||
(set! (-> obj root pat-ignore-mask)
|
||||
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noproj #x1 :noendlessfall #x1)
|
||||
)
|
||||
0
|
||||
@@ -480,11 +474,11 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
)
|
||||
(logior! (-> self options) (projectile-options proj-options-4))
|
||||
(init-proj-collision! self)
|
||||
(let ((s5-0 (-> self root-override)))
|
||||
(let ((s5-0 (-> self root)))
|
||||
(when (type? s5-0 collide-shape-moving)
|
||||
(set! (-> self root-override dynam gravity y) 1228800.0)
|
||||
(set! (-> self root-override dynam gravity-length) 1228800.0)
|
||||
(set! (-> self root-override dynam gravity-max) 1228800.0)
|
||||
(set! (-> self root dynam gravity y) 1228800.0)
|
||||
(set! (-> self root dynam gravity-length) 1228800.0)
|
||||
(set! (-> self root dynam gravity-max) 1228800.0)
|
||||
)
|
||||
(set! (-> self mask) (logior (process-mask projectile) (-> self mask)))
|
||||
(logclear! (-> self mask) (process-mask enemy))
|
||||
@@ -500,7 +494,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
(set! (-> self target-pos quad) (-> self base-target-pos quad))
|
||||
(set! (-> self event-hook) projectile-event-handler)
|
||||
(init-proj-settings! self)
|
||||
(update-transforms (-> self root-override))
|
||||
(update-transforms (-> self root))
|
||||
(draw-laser-sight self)
|
||||
(play-impact-sound self (projectile-options))
|
||||
(when (logtest? (-> self options) (projectile-options proj-options-8000))
|
||||
@@ -513,15 +507,13 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
)
|
||||
|
||||
(defbehavior projectile-bounce-update-velocity projectile ((arg0 projectile-bounce))
|
||||
(set! (-> arg0 root-override transv y)
|
||||
(- (-> arg0 root-override transv y) (* 184320.0 (-> self clock seconds-per-frame)))
|
||||
)
|
||||
(set! (-> arg0 root transv y) (- (-> arg0 root transv y) (* 184320.0 (-> self clock seconds-per-frame))))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defbehavior projectile-bounce-falling-post projectile-bounce ((arg0 projectile-bounce))
|
||||
(let ((gp-0 (-> self root-override))
|
||||
(let ((gp-0 (-> self root))
|
||||
(s4-0 (new 'stack-no-clear 'collide-query))
|
||||
(s5-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
@@ -529,7 +521,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
(set! (-> s5-0 quad) (-> gp-0 trans quad))
|
||||
(vector-v++! s5-0 (-> gp-0 transv))
|
||||
(when (find-ground gp-0 s4-0 (collide-spec backgnd crate obstacle hit-by-others-list pusher) 4096.0 81920.0 1024.0)
|
||||
(let ((f0-1 (+ (-> gp-0 gspot-pos y) (-> self root-override root-prim local-sphere w))))
|
||||
(let ((f0-1 (+ (-> gp-0 gspot-pos y) (-> self root root-prim local-sphere w))))
|
||||
(when (>= f0-1 (-> s5-0 y))
|
||||
(set! (-> s5-0 y) f0-1)
|
||||
(vector-reset! (-> gp-0 transv))
|
||||
@@ -588,8 +580,8 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
)
|
||||
|
||||
(defun projectile-bounce-move ((arg0 projectile-bounce))
|
||||
(seek-toward-heading-vec! (-> arg0 root-override) (-> arg0 root-override transv) 131072.0 (seconds 0.1))
|
||||
(quaternion*! (-> arg0 root-override quat) (-> arg0 root-override quat) (-> arg0 tumble-quat))
|
||||
(seek-toward-heading-vec! (-> arg0 root) (-> arg0 root transv) 131072.0 (seconds 0.1))
|
||||
(quaternion*! (-> arg0 root quat) (-> arg0 root quat) (-> arg0 tumble-quat))
|
||||
(projectile-move-fill-all-dirs arg0)
|
||||
(none)
|
||||
)
|
||||
@@ -608,7 +600,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
;; WARN: Return type mismatch sound-id vs none.
|
||||
(defmethod play-impact-sound! projectile-bounce ((obj projectile-bounce))
|
||||
"Plays impact sound"
|
||||
(let* ((a2-0 (-> obj root-override))
|
||||
(let* ((a2-0 (-> obj root))
|
||||
(v1-0 (-> a2-0 status))
|
||||
)
|
||||
(if (logtest? v1-0 (collide-status touch-surface))
|
||||
@@ -646,14 +638,14 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 2))
|
||||
(set! (-> s5-0 event-self) 'touched)
|
||||
(set! (-> obj root-override) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(set-collide-with!
|
||||
(-> obj root-override)
|
||||
(-> obj root)
|
||||
(collide-spec backgnd bot crate civilian enemy obstacle vehicle-sphere hit-by-others-list player-list pusher)
|
||||
)
|
||||
(set-collide-as! (-> obj root-override) (collide-spec projectile))
|
||||
(set! (-> obj root-override pat-ignore-mask)
|
||||
(set-collide-as! (-> obj root) (collide-spec projectile))
|
||||
(set! (-> obj root pat-ignore-mask)
|
||||
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noproj #x1 :noendlessfall #x1)
|
||||
)
|
||||
(none)
|
||||
@@ -665,9 +657,9 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
|
||||
(set! (-> obj timeout) (seconds 1.6))
|
||||
(set! (-> obj update-velocity) projectile-bounce-update-velocity)
|
||||
(set! (-> obj move) projectile-bounce-move)
|
||||
(set! (-> obj root-override dynam gravity y) 184320.0)
|
||||
(set! (-> obj root-override dynam gravity-length) 184320.0)
|
||||
(set! (-> obj root-override dynam gravity-max) 184320.0)
|
||||
(set! (-> obj root dynam gravity y) 184320.0)
|
||||
(set! (-> obj root dynam gravity-length) 184320.0)
|
||||
(set! (-> obj root dynam gravity-max) 184320.0)
|
||||
(let ((f0-4 1092.2667))
|
||||
(quaternion-axis-angle! (-> obj tumble-quat) 1.0 0.0 0.0 f0-4)
|
||||
)
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
(set! (-> rigid-body-control-point-inline-array heap-base) (the-as uint 48))
|
||||
|
||||
(deftype rigid-body-platform (rigid-body-object)
|
||||
((info-override rigid-body-platform-constants :offset 204)
|
||||
((info rigid-body-platform-constants :override)
|
||||
(control-point-array rigid-body-control-point-inline-array :offset-assert 272)
|
||||
(player-velocity vector :inline :offset-assert 288)
|
||||
(player-velocity-prev vector :inline :offset-assert 304)
|
||||
@@ -118,7 +118,7 @@
|
||||
)
|
||||
(let* ((s4-0 (new 'stack-no-clear 'vector))
|
||||
(f0-3 (- (-> ctrl-point world-pos w) (-> ctrl-point world-pos y)))
|
||||
(f30-0 (/ f0-3 (-> obj info-override max-buoyancy-depth)))
|
||||
(f30-0 (/ f0-3 (-> obj info max-buoyancy-depth)))
|
||||
)
|
||||
(when (< 0.0 f0-3)
|
||||
(vector-float*!
|
||||
@@ -126,8 +126,8 @@
|
||||
*y-vector*
|
||||
(* (-> obj rbody state info mass)
|
||||
(fmin 1.0 f30-0)
|
||||
(/ (-> obj info-override extra gravity) (the float (-> obj info-override control-point-count)))
|
||||
(-> obj info-override buoyancy-factor)
|
||||
(/ (-> obj info extra gravity) (the float (-> obj info control-point-count)))
|
||||
(-> obj info buoyancy-factor)
|
||||
)
|
||||
)
|
||||
(let ((v1-6 (-> obj rbody))
|
||||
@@ -136,7 +136,7 @@
|
||||
)
|
||||
(rigid-body-method-18 (-> v1-6 state) a1-9 a2-0)
|
||||
)
|
||||
(vector-float*! s4-0 (-> ctrl-point velocity) (* -1.0 (-> obj info-override drag-factor) (fmin 1.0 f30-0)))
|
||||
(vector-float*! s4-0 (-> ctrl-point velocity) (* -1.0 (-> obj info drag-factor) (fmin 1.0 f30-0)))
|
||||
(let ((v1-11 (-> obj rbody))
|
||||
(a1-13 (-> ctrl-point world-pos))
|
||||
)
|
||||
@@ -157,7 +157,7 @@
|
||||
(let ((rigid-body (-> obj rbody))
|
||||
(force-pos (-> obj player-force-position))
|
||||
(force (-> obj player-force))
|
||||
(force-dist (-> obj info-override player-force-distance))
|
||||
(force-dist (-> obj info player-force-distance))
|
||||
)
|
||||
(rigid-body-method-21 (-> rigid-body state) force-pos force force-dist)
|
||||
)
|
||||
@@ -168,7 +168,7 @@
|
||||
|
||||
(defmethod rigid-body-platform-method-55 rigid-body-platform ((obj rigid-body-platform))
|
||||
(let ((a1-0 (new 'stack-no-clear 'vector)))
|
||||
(vector-float*! a1-0 *y-vector* (* -1.0 (-> obj info-override extra gravity) (-> obj rbody state info mass)))
|
||||
(vector-float*! a1-0 *y-vector* (* -1.0 (-> obj info extra gravity) (-> obj rbody state info mass)))
|
||||
(rigid-body-method-20 (-> obj rbody state) a1-0)
|
||||
)
|
||||
0
|
||||
@@ -194,7 +194,7 @@
|
||||
|
||||
(defmethod rigid-body-object-method-29 rigid-body-platform ((obj rigid-body-platform) (arg0 float))
|
||||
(let ((s4-0 (-> obj rbody state matrix)))
|
||||
(dotimes (s3-0 (-> obj info-override control-point-count))
|
||||
(dotimes (s3-0 (-> obj info control-point-count))
|
||||
(let ((s2-0 (-> obj control-point-array data s3-0)))
|
||||
(vector-matrix*! (-> s2-0 world-pos) (-> s2-0 local-pos) s4-0)
|
||||
(let ((v1-4 (-> obj rbody))
|
||||
@@ -214,8 +214,8 @@
|
||||
)
|
||||
|
||||
(defmethod rigid-body-object-method-30 rigid-body-platform ((obj rigid-body-platform))
|
||||
(if (-> obj info-override platform)
|
||||
(detect-riders! (-> obj root-override-2))
|
||||
(if (-> obj info platform)
|
||||
(detect-riders! (-> obj root))
|
||||
)
|
||||
(set! (-> obj player-velocity-prev quad) (-> obj player-velocity quad))
|
||||
(if *target*
|
||||
@@ -248,7 +248,7 @@
|
||||
(logior! (-> obj flags) (rigid-body-object-flag player-contact-force))
|
||||
(set! (-> obj player-force-position quad) (-> (the-as rigid-body-control-point v1-1) velocity quad))
|
||||
(vector-reset! (-> obj player-force))
|
||||
(set! (-> obj player-force y) (* -1.0 (-> obj info-override player-weight)))
|
||||
(set! (-> obj player-force y) (* -1.0 (-> obj info player-weight)))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -267,7 +267,7 @@
|
||||
)
|
||||
(when (not (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force)))
|
||||
(logior! (-> obj flags) (rigid-body-object-flag player-contact-force))
|
||||
(set! (-> obj player-force-position quad) (-> v1-11 root-override trans quad))
|
||||
(set! (-> obj player-force-position quad) (-> v1-11 root trans quad))
|
||||
(vector-reset! (-> obj player-force))
|
||||
(let* ((a1-5 (-> obj player-force-position))
|
||||
(f30-0 0.0)
|
||||
@@ -277,7 +277,7 @@
|
||||
(f1-2 12288.0)
|
||||
(f0-8 (fmax f30-0 (fmin f28-0 (- f26-0 (* f0-4 (/ 1.0 f1-2))))))
|
||||
)
|
||||
(set! (-> obj player-force y) (* -1.0 (-> obj info-override player-weight) f0-8))
|
||||
(set! (-> obj player-force y) (* -1.0 (-> obj info player-weight) f0-8))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -287,7 +287,7 @@
|
||||
)
|
||||
(('bonk)
|
||||
(when (>= (- (current-time) (the-as int (-> obj player-bonk-timeout)))
|
||||
(the-as time-frame (-> obj info-override player-force-timeout))
|
||||
(the-as time-frame (-> obj info player-force-timeout))
|
||||
)
|
||||
(set! (-> obj player-bonk-timeout) (the-as uint (current-time)))
|
||||
(let* ((s4-0 arg0)
|
||||
@@ -302,10 +302,10 @@
|
||||
(let ((f0-14 (fmin
|
||||
(* 0.00012207031
|
||||
(the-as float (-> arg3 param 1))
|
||||
(-> obj info-override player-bonk-factor)
|
||||
(-> obj info-override player-weight)
|
||||
(-> obj info player-bonk-factor)
|
||||
(-> obj info player-weight)
|
||||
)
|
||||
(-> obj info-override player-force-clamp)
|
||||
(-> obj info player-force-clamp)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -325,7 +325,7 @@
|
||||
(defmethod rigid-body-object-method-37 rigid-body-platform ((obj rigid-body-platform))
|
||||
(if (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force))
|
||||
(sound-play-by-name
|
||||
(string->sound-name (-> obj info-override sound-name))
|
||||
(string->sound-name (-> obj info sound-name))
|
||||
(new-sound-id)
|
||||
1024
|
||||
0
|
||||
@@ -335,9 +335,9 @@
|
||||
)
|
||||
)
|
||||
(rigid-body-object-method-30 obj)
|
||||
(quaternion-copy! (-> obj root-override-2 quat) (-> obj rbody state rotation))
|
||||
(quaternion-copy! (-> obj root quat) (-> obj rbody state rotation))
|
||||
(let ((v1-9 (-> obj rbody))
|
||||
(a1-2 (-> obj root-override-2 trans))
|
||||
(a1-2 (-> obj root trans))
|
||||
)
|
||||
(rigid-body-method-23 (-> v1-9 state) a1-2)
|
||||
)
|
||||
@@ -346,16 +346,16 @@
|
||||
)
|
||||
|
||||
(defmethod alloc-and-init-rigid-body-control rigid-body-platform ((obj rigid-body-platform) (arg0 rigid-body-object-constants))
|
||||
(set! (-> obj info-override) (the-as rigid-body-platform-constants arg0))
|
||||
(set! (-> obj info) (the-as rigid-body-platform-constants arg0))
|
||||
(set! (-> obj rbody) (new 'process 'rigid-body-control obj))
|
||||
(set! (-> obj control-point-array)
|
||||
(new 'process 'rigid-body-control-point-inline-array (-> obj info-override control-point-count))
|
||||
(new 'process 'rigid-body-control-point-inline-array (-> obj info control-point-count))
|
||||
)
|
||||
(update-transforms (-> obj root-override-2))
|
||||
(update-transforms (-> obj root))
|
||||
(let ((v1-5 (-> obj rbody))
|
||||
(a1-3 (-> obj info-override info))
|
||||
(a2-2 (-> obj root-override-2 trans))
|
||||
(a3-0 (-> obj root-override-2 quat))
|
||||
(a1-3 (-> obj info info))
|
||||
(a2-2 (-> obj root trans))
|
||||
(a3-0 (-> obj root quat))
|
||||
(t0-0 (method-of-object obj rigid-body-object-method-29))
|
||||
)
|
||||
(rigid-body-method-25 (-> v1-5 state) a1-3 a2-2 a3-0 t0-0)
|
||||
@@ -364,7 +364,7 @@
|
||||
(set! (-> obj player-force quad) (-> *null-vector* quad))
|
||||
(set! (-> obj player-velocity quad) (-> *null-vector* quad))
|
||||
(set! (-> obj player-velocity-prev quad) (-> *null-vector* quad))
|
||||
(set! (-> obj root-override-2 max-iteration-count) (the-as uint 4))
|
||||
(set! (-> obj root max-iteration-count) (the-as uint 4))
|
||||
(set! (-> obj max-time-step) (-> arg0 extra max-time-step))
|
||||
(set! (-> obj water-anim) (the-as water-anim (entity-actor-lookup (-> obj entity) 'water-actor 0)))
|
||||
0
|
||||
@@ -393,7 +393,7 @@
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-15 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-15 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override-2) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -436,7 +436,7 @@
|
||||
(defmethod init-skel-and-rigid-body rigid-body-platform ((obj rigid-body-platform))
|
||||
(set! (-> obj float-height-offset) 0.0)
|
||||
(alloc-and-init-rigid-body-control obj *rigid-body-platform-constants*)
|
||||
(let ((s5-0 (-> obj info-override control-point-count)))
|
||||
(let ((s5-0 (-> obj info control-point-count)))
|
||||
(dotimes (s4-0 s5-0)
|
||||
(let ((s3-0 (-> obj control-point-array data s4-0)))
|
||||
(let ((f30-0 (* 65536.0 (/ (the float s4-0) (the float s5-0)))))
|
||||
|
||||
@@ -58,14 +58,14 @@
|
||||
|
||||
|
||||
(deftype remote (process-drawable)
|
||||
((parent-override (pointer camera-slave) :offset 16)
|
||||
(base-trans vector :inline :offset-assert 208)
|
||||
(focus focus :inline :offset-assert 224)
|
||||
(seeker cam-float-seeker :inline :offset-assert 236)
|
||||
(start-time time-frame :offset-assert 264)
|
||||
(blend float :offset-assert 272)
|
||||
(twist float :offset-assert 276)
|
||||
(speak-effect? basic :offset-assert 280)
|
||||
((parent (pointer camera-slave) :override)
|
||||
(base-trans vector :inline :offset-assert 208)
|
||||
(focus focus :inline :offset-assert 224)
|
||||
(seeker cam-float-seeker :inline :offset-assert 236)
|
||||
(start-time time-frame :offset-assert 264)
|
||||
(blend float :offset-assert 272)
|
||||
(twist float :offset-assert 276)
|
||||
(speak-effect? basic :offset-assert 280)
|
||||
)
|
||||
:heap-base #xa0
|
||||
:method-count-assert 26
|
||||
@@ -121,12 +121,9 @@
|
||||
(-> obj speak-effect?)
|
||||
)
|
||||
)
|
||||
(let ((v1-15 (vector-float*!
|
||||
(new 'stack-no-clear 'vector)
|
||||
(-> obj parent-override 0 velocity)
|
||||
(-> pp clock frames-per-second)
|
||||
)
|
||||
)
|
||||
(let ((v1-15
|
||||
(vector-float*! (new 'stack-no-clear 'vector) (-> obj parent 0 velocity) (-> pp clock frames-per-second))
|
||||
)
|
||||
(a0-8 *particle-vel*)
|
||||
)
|
||||
(let ((a1-4 (-> obj node-list data 3 bone transform vector 2)))
|
||||
@@ -159,10 +156,10 @@
|
||||
(let ((gp-0 (handle->process (-> self focus handle)))
|
||||
(s5-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set! (-> s5-0 quad) (-> self parent-override 0 trans quad))
|
||||
(set! (-> s5-0 quad) (-> self parent 0 trans quad))
|
||||
(let ((f30-0 (get-track-pt-and-scale self s5-0)))
|
||||
(let ((a1-2 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> a1-2 quad) (-> self parent-override 0 trans quad))
|
||||
(set! (-> a1-2 quad) (-> self parent 0 trans quad))
|
||||
(vector-lerp! (-> self root trans) a1-2 s5-0 (-> self blend))
|
||||
)
|
||||
(+! (-> self root trans y) (* 1638.4 (sin (* 54.613335 (the float (mod (current-time) 1200))))))
|
||||
@@ -190,7 +187,7 @@
|
||||
(set! (-> a1-9 from) (process->ppointer self))
|
||||
(set! (-> a1-9 num-params) 0)
|
||||
(set! (-> a1-9 message) 'blocked-side?)
|
||||
(case (send-event-function (ppointer->process (-> self parent-override)) a1-9)
|
||||
(case (send-event-function (ppointer->process (-> self parent)) a1-9)
|
||||
((1)
|
||||
(set! (-> self twist) 0.5)
|
||||
)
|
||||
@@ -202,7 +199,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(send-event (ppointer->process (-> self parent-override)) 'joystick (-> self twist) -1082130432)
|
||||
(send-event (ppointer->process (-> self parent)) 'joystick (-> self twist) -1082130432)
|
||||
)
|
||||
(set! (-> self root scale x) f30-0)
|
||||
(set! (-> self root scale y) f30-0)
|
||||
@@ -230,7 +227,7 @@
|
||||
)
|
||||
:enter (behavior ()
|
||||
(set! (-> self start-time) (-> *display* game-clock frame-counter))
|
||||
(let* ((gp-0 (ppointer->process (-> self parent-override 0 parent)))
|
||||
(let* ((gp-0 (ppointer->process (-> self parent 0 parent)))
|
||||
(a1-1 (if (type? gp-0 process-focusable)
|
||||
gp-0
|
||||
)
|
||||
@@ -252,7 +249,7 @@
|
||||
(none)
|
||||
)
|
||||
:code (behavior ()
|
||||
(let* ((gp-0 (ppointer->process (-> self parent-override 0 parent)))
|
||||
(let* ((gp-0 (ppointer->process (-> self parent 0 parent)))
|
||||
(a0-1 (if (type? gp-0 process-focusable)
|
||||
(the-as process-focusable gp-0)
|
||||
)
|
||||
@@ -260,13 +257,13 @@
|
||||
)
|
||||
(if (and a0-1 (focus-test? a0-1 pilot))
|
||||
(send-event
|
||||
(ppointer->process (-> self parent-override))
|
||||
(ppointer->process (-> self parent))
|
||||
'set-dist
|
||||
(new 'static 'vector :z 8192.0 :w 1.0)
|
||||
(new 'static 'vector :y 20480.0 :z 12288.0 :w 1.0)
|
||||
)
|
||||
(send-event
|
||||
(ppointer->process (-> self parent-override))
|
||||
(ppointer->process (-> self parent))
|
||||
'set-dist
|
||||
(new 'static 'vector :z 16384.0 :w 1.0)
|
||||
(new 'static 'vector :y 20480.0 :z 40960.0 :w 1.0)
|
||||
@@ -310,7 +307,7 @@
|
||||
:trans remote-track
|
||||
:code (behavior ()
|
||||
(set! (-> self blend) 1.0)
|
||||
(send-event (ppointer->process (-> self parent-override)) 'change-state empty-state)
|
||||
(send-event (ppointer->process (-> self parent)) 'change-state empty-state)
|
||||
(suspend)
|
||||
0
|
||||
(none)
|
||||
@@ -375,7 +372,7 @@
|
||||
(suspend)
|
||||
)
|
||||
(set! (-> self blend) 1.0)
|
||||
(send-event (ppointer->process (-> self parent-override)) 'change-state empty-state)
|
||||
(send-event (ppointer->process (-> self parent)) 'change-state empty-state)
|
||||
(suspend)
|
||||
(cleanup-for-death self)
|
||||
(none)
|
||||
@@ -438,7 +435,7 @@
|
||||
)
|
||||
)
|
||||
(if *target*
|
||||
(set! (-> *game-info* score) (-> *target* fact-override trick-point))
|
||||
(set! (-> *game-info* score) (-> *target* fact trick-point))
|
||||
)
|
||||
(let ((v1-15 (the-as int (- (-> obj total-time) (- (-> *display* game-clock frame-counter) (-> obj start-time))))))
|
||||
(if (< (the-as time-frame v1-15) 0)
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
(set! (-> nav-graph-command-array heap-base) (the-as uint 32))
|
||||
|
||||
(deftype nav-graph-editor (process)
|
||||
((self-override nav-graph-editor :offset 32)
|
||||
((self nav-graph-editor :override)
|
||||
(nav-graph mysql-nav-graph :offset-assert 128)
|
||||
(mode symbol :offset-assert 132)
|
||||
(command-id int32 :offset-assert 136)
|
||||
@@ -2079,59 +2079,36 @@
|
||||
)
|
||||
|
||||
(defun get-nav-graph-editor ()
|
||||
(let ((v1-0 *nav-graph-editor*))
|
||||
(if v1-0
|
||||
(-> v1-0 0 self-override)
|
||||
)
|
||||
)
|
||||
(ppointer->process *nav-graph-editor*)
|
||||
)
|
||||
|
||||
(defun exit-nav-graph-editor ()
|
||||
(when *nav-graph-editor*
|
||||
(let ((v1-1 *nav-graph-editor*))
|
||||
(deactivate (if v1-1
|
||||
(-> v1-1 0 self-override)
|
||||
)
|
||||
)
|
||||
(if *nav-graph-editor*
|
||||
(deactivate (ppointer->process *nav-graph-editor*))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch mysql-save-flag vs uint.
|
||||
(defun set-minimap-edge-flag ((arg0 nav-minimap-edge-flag))
|
||||
(let ((v1-0 *nav-graph-editor*))
|
||||
(the-as uint (when (if v1-0
|
||||
(-> v1-0 0 self-override)
|
||||
)
|
||||
(let* ((a1-1 *nav-graph-editor*)
|
||||
(v1-2 (if a1-1
|
||||
(-> a1-1 0 self-override)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (>= (-> v1-2 edge-visibility) 0)
|
||||
(let ((v1-6 (-> v1-2 nav-graph edge-array data (-> v1-2 edge-visibility))))
|
||||
(set! (-> v1-6 minimap_edge_flag) arg0)
|
||||
(let ((v0-0 (logior (-> v1-6 mysql-save-flag) (mysql-save-flag update))))
|
||||
(set! (-> v1-6 mysql-save-flag) v0-0)
|
||||
v0-0
|
||||
)
|
||||
(the-as uint (when (ppointer->process *nav-graph-editor*)
|
||||
(let ((v1-2 (ppointer->process *nav-graph-editor*)))
|
||||
(when (>= (-> v1-2 edge-visibility) 0)
|
||||
(let ((v1-6 (-> v1-2 nav-graph edge-array data (-> v1-2 edge-visibility))))
|
||||
(set! (-> v1-6 minimap_edge_flag) arg0)
|
||||
(let ((v0-0 (logior (-> v1-6 mysql-save-flag) (mysql-save-flag update))))
|
||||
(set! (-> v1-6 mysql-save-flag) v0-0)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defun set-vehicle-edit-mode ((arg0 symbol))
|
||||
(let* ((a1-0 *nav-graph-editor*)
|
||||
(v1-0 (if a1-0
|
||||
(-> a1-0 0 self-override)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-0 (ppointer->process *nav-graph-editor*)))
|
||||
(when v1-0
|
||||
(set! (-> v1-0 vehicle-edit-mode) arg0)
|
||||
(set! (-> v1-0 default-node nav_node_flag) (if arg0
|
||||
@@ -2145,49 +2122,31 @@
|
||||
)
|
||||
|
||||
(defun translate-nav-graph ((arg0 float) (arg1 float) (arg2 float))
|
||||
(let ((v1-0 *nav-graph-editor*))
|
||||
(when (if v1-0
|
||||
(-> v1-0 0 self-override)
|
||||
)
|
||||
(let* ((a3-1 *nav-graph-editor*)
|
||||
(v1-2 (if a3-1
|
||||
(-> a3-1 0 self-override)
|
||||
)
|
||||
)
|
||||
)
|
||||
(dotimes (a3-2 (-> v1-2 nav-graph node-array length))
|
||||
(let ((t0-3 (-> v1-2 nav-graph node-array data a3-2)))
|
||||
(+! (-> t0-3 position x) arg0)
|
||||
(+! (-> t0-3 position y) arg1)
|
||||
(+! (-> t0-3 position z) arg2)
|
||||
(logior! (-> t0-3 mysql-save-flag) (mysql-save-flag update))
|
||||
)
|
||||
(when (ppointer->process *nav-graph-editor*)
|
||||
(let ((v1-2 (ppointer->process *nav-graph-editor*)))
|
||||
(dotimes (a3-2 (-> v1-2 nav-graph node-array length))
|
||||
(let ((t0-3 (-> v1-2 nav-graph node-array data a3-2)))
|
||||
(+! (-> t0-3 position x) arg0)
|
||||
(+! (-> t0-3 position y) arg1)
|
||||
(+! (-> t0-3 position z) arg2)
|
||||
(logior! (-> t0-3 mysql-save-flag) (mysql-save-flag update))
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
#f
|
||||
)
|
||||
)
|
||||
|
||||
(defun update-nav-meshes ()
|
||||
(let ((v1-0 *nav-graph-editor*))
|
||||
(when (if v1-0
|
||||
(-> v1-0 0 self-override)
|
||||
)
|
||||
(let* ((v1-2 *nav-graph-editor*)
|
||||
(gp-0 (if v1-2
|
||||
(-> v1-2 0 self-override)
|
||||
)
|
||||
)
|
||||
)
|
||||
(dotimes (s5-0 (-> gp-0 nav-graph node-array length))
|
||||
(if (not (logtest? (-> gp-0 nav-graph node-array data s5-0 mysql-save-flag) (mysql-save-flag delete)))
|
||||
(nav-graph-editor-method-54 gp-0 s5-0)
|
||||
)
|
||||
)
|
||||
(when (ppointer->process *nav-graph-editor*)
|
||||
(let ((gp-0 (ppointer->process *nav-graph-editor*)))
|
||||
(dotimes (s5-0 (-> gp-0 nav-graph node-array length))
|
||||
(if (not (logtest? (-> gp-0 nav-graph node-array data s5-0 mysql-save-flag) (mysql-save-flag delete)))
|
||||
(nav-graph-editor-method-54 gp-0 s5-0)
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
#f
|
||||
)
|
||||
)
|
||||
|
||||
@@ -2208,14 +2167,7 @@
|
||||
(vf6 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let* ((v1-0 *nav-graph-editor*)
|
||||
(s5-0 (-> (if v1-0
|
||||
(-> v1-0 0 self-override)
|
||||
)
|
||||
nav-graph
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((s5-0 (-> (ppointer->process *nav-graph-editor*) nav-graph)))
|
||||
(dotimes (s4-0 (-> s5-0 node-array length))
|
||||
(let ((s3-0 (-> s5-0 node-array data s4-0))
|
||||
(s2-0 (new-stack-vector0))
|
||||
@@ -2293,14 +2245,7 @@
|
||||
)
|
||||
|
||||
(defun update-height ((arg0 string))
|
||||
(let* ((v1-0 *nav-graph-editor*)
|
||||
(v1-2 (-> (if v1-0
|
||||
(-> v1-0 0 self-override)
|
||||
)
|
||||
nav-graph
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-2 (-> (ppointer->process *nav-graph-editor*) nav-graph)))
|
||||
(dotimes (a1-1 (-> v1-2 node-array length))
|
||||
(let ((a2-3 (-> v1-2 node-array data a1-1)))
|
||||
(set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0))
|
||||
@@ -2318,14 +2263,7 @@
|
||||
|
||||
(defun update-width ((arg0 string))
|
||||
(local-vars (sv-16 (array entity-nav-mesh)) (sv-32 int) (sv-48 uint) (sv-64 entity-nav-mesh))
|
||||
(let* ((v1-0 *nav-graph-editor*)
|
||||
(s5-0 (-> (if v1-0
|
||||
(-> v1-0 0 self-override)
|
||||
)
|
||||
nav-graph
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((s5-0 (-> (ppointer->process *nav-graph-editor*) nav-graph)))
|
||||
(dotimes (s4-0 (-> s5-0 edge-array length))
|
||||
(let ((s3-0 (-> s5-0 edge-array data s4-0)))
|
||||
(when (not (logtest? (-> s3-0 mysql-save-flag) (mysql-save-flag delete)))
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
(set! (-> arg0 reg 0) (the-as uint 127))
|
||||
)
|
||||
(else
|
||||
(let* ((s2-4 (-> v1-33 root-override))
|
||||
(let* ((s2-4 (-> v1-33 root))
|
||||
(v1-34 (if (type? s2-4 collide-shape-moving)
|
||||
s2-4
|
||||
)
|
||||
|
||||
@@ -10064,7 +10064,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node city-burning-bush-get-to-2-resolution)
|
||||
:index #xe
|
||||
:index 14
|
||||
:on-complete '(talker-spawn "bb10win")
|
||||
:on-fail #f
|
||||
)
|
||||
@@ -10212,7 +10212,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node city-burning-bush-get-to-4-resolution)
|
||||
:index #xa
|
||||
:index 10
|
||||
:on-complete '(talker-spawn "bb10win")
|
||||
:on-fail #f
|
||||
)
|
||||
@@ -10584,7 +10584,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node city-burning-bush-get-to-6-resolution)
|
||||
:index #xd
|
||||
:index 13
|
||||
:on-complete '(talker-spawn "bb10win")
|
||||
:on-fail #f
|
||||
)
|
||||
@@ -10737,7 +10737,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node city-burning-bush-get-to-7-resolution)
|
||||
:index #xc
|
||||
:index 12
|
||||
:on-complete '(talker-spawn "bb10win")
|
||||
:on-fail #f
|
||||
)
|
||||
@@ -10811,7 +10811,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node city-burning-bush-get-to-8-resolution)
|
||||
:index #x6
|
||||
:index 6
|
||||
:on-complete '(talker-spawn "bb10win")
|
||||
:on-fail #f
|
||||
)
|
||||
@@ -10885,7 +10885,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node city-burning-bush-get-to-9-resolution)
|
||||
:index #x8
|
||||
:index 8
|
||||
:on-complete '(talker-spawn "bb10win")
|
||||
:on-fail #f
|
||||
)
|
||||
@@ -11106,7 +11106,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node city-burning-bush-get-to-11-resolution)
|
||||
:index #x9
|
||||
:index 9
|
||||
:on-complete '(talker-spawn "bb10win")
|
||||
:on-fail #f
|
||||
)
|
||||
@@ -11399,7 +11399,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node city-burning-bush-get-to-13-resolution)
|
||||
:index #xb
|
||||
:index 11
|
||||
:on-complete '(talker-spawn "bb10win")
|
||||
:on-fail #f
|
||||
)
|
||||
@@ -11473,7 +11473,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node city-burning-bush-get-to-14-resolution)
|
||||
:index #x7
|
||||
:index 7
|
||||
:on-complete '(talker-spawn "bb10win")
|
||||
:on-fail #f
|
||||
)
|
||||
@@ -11695,7 +11695,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node city-burning-bush-race-errol-resolution)
|
||||
:index #x7
|
||||
:index 7
|
||||
:on-complete #f
|
||||
:on-fail #f
|
||||
)
|
||||
@@ -11769,7 +11769,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node city-burning-bush-race-port-resolution)
|
||||
:index #x8
|
||||
:index 8
|
||||
:on-complete #f
|
||||
:on-fail #f
|
||||
)
|
||||
@@ -12079,7 +12079,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node stadium-burning-bush-race-class1-resolution)
|
||||
:index #x6
|
||||
:index 6
|
||||
:on-complete #f
|
||||
:on-fail #f
|
||||
)
|
||||
@@ -12150,7 +12150,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node stadium-burning-bush-race-class3-r-resolution)
|
||||
:index #x9
|
||||
:index 9
|
||||
:on-complete #f
|
||||
:on-fail #f
|
||||
)
|
||||
@@ -12221,7 +12221,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node stadium-burning-bush-race-class2-r-resolution)
|
||||
:index #xa
|
||||
:index 10
|
||||
:on-complete #f
|
||||
:on-fail #f
|
||||
)
|
||||
@@ -12292,7 +12292,7 @@
|
||||
:fail-hook #f
|
||||
:event-hook #f
|
||||
:final-node (game-task-node stadium-burning-bush-race-class1-r-resolution)
|
||||
:index #xb
|
||||
:index 11
|
||||
:on-complete #f
|
||||
:on-fail #f
|
||||
)
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
0
|
||||
)
|
||||
)
|
||||
(let ((s5-0 (the-as connection-pers (-> *minimap* engine alive-list-override))))
|
||||
(let ((s5-0 (the-as connection-pers (-> *minimap* engine alive-list))))
|
||||
(while s5-0
|
||||
(let ((s4-0 (the-as connection-minimap s5-0)))
|
||||
(if (and (logtest? (-> s4-0 flags) (minimap-flag task-graph))
|
||||
@@ -1496,17 +1496,9 @@
|
||||
(when (and (not (logtest? (-> obj flags) (fail-mission-flags famflags-6)))
|
||||
(= (get-status *gui-control* (-> obj message-id)) (gui-status active))
|
||||
)
|
||||
(let ((gp-0 (new
|
||||
'stack
|
||||
'font-context
|
||||
*font-default-matrix*
|
||||
70
|
||||
20
|
||||
0.0
|
||||
(font-color orange)
|
||||
(font-flags shadow kerning)
|
||||
)
|
||||
)
|
||||
(let ((gp-0
|
||||
(new 'stack 'font-context *font-default-matrix* 70 20 0.0 (font-color orange) (font-flags shadow kerning))
|
||||
)
|
||||
)
|
||||
(set! (-> gp-0 origin x) 120.0)
|
||||
(let ((v1-7 gp-0))
|
||||
|
||||
@@ -1073,6 +1073,13 @@
|
||||
(none)
|
||||
)
|
||||
|
||||
(#when PC_PORT
|
||||
;; added - drillmtn uses camera-other but only palout sets the trans
|
||||
(defun init-mood-drillmnt ((arg0 mood-context))
|
||||
(set-vector! (-> *math-camera* trans-other) 0.0 0.0 0.0 1.0)
|
||||
)
|
||||
)
|
||||
|
||||
(deftype drillb-states (structure)
|
||||
((fire-floor float :offset-assert 0)
|
||||
(fire-floor-fade float :offset-assert 4)
|
||||
|
||||
@@ -1053,7 +1053,7 @@
|
||||
:music-bank 'strip
|
||||
:ambient-sounds '()
|
||||
:mood-func 'update-mood-drillmnt
|
||||
:mood-init #f
|
||||
:mood-init 'init-mood-drillmnt ;; added
|
||||
:ocean #f
|
||||
:sky #t
|
||||
:use-camera-other #t
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
(deftype nav-enemy (enemy)
|
||||
((enemy-info-override nav-enemy-info :offset 216)
|
||||
((enemy-info nav-enemy-info :override)
|
||||
(frustration-point vector :inline :offset-assert 544)
|
||||
(move-dest vector :inline :offset-assert 560)
|
||||
(frustration-time time-frame :offset-assert 576)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -313,7 +313,7 @@
|
||||
)
|
||||
|
||||
(deftype rigid-body-object (process-focusable)
|
||||
((root-override-2 collide-shape-moving :offset 128)
|
||||
((root collide-shape-moving :override)
|
||||
(info rigid-body-object-constants :offset-assert 204)
|
||||
(flags rigid-body-object-flag :offset-assert 208)
|
||||
(max-time-step float :offset-assert 216)
|
||||
|
||||
@@ -843,7 +843,7 @@
|
||||
(+! s4-1 -1)
|
||||
(s3-0 arg0 f30-0)
|
||||
(let ((v1-2 obj)
|
||||
(a1-2 (-> arg0 root-override-2))
|
||||
(a1-2 (-> arg0 root))
|
||||
(f0-4 f30-0)
|
||||
)
|
||||
(rigid-body-method-9 (-> v1-2 state) a1-2 f0-4)
|
||||
@@ -935,17 +935,17 @@
|
||||
(defmethod alloc-and-init-rigid-body-control rigid-body-object ((obj rigid-body-object) (arg0 rigid-body-object-constants))
|
||||
(set! (-> obj info) arg0)
|
||||
(set! (-> obj rbody) (new 'process 'rigid-body-control obj))
|
||||
(update-transforms (-> obj root-override-2))
|
||||
(update-transforms (-> obj root))
|
||||
(rigid-body-method-25
|
||||
(-> obj rbody state)
|
||||
(-> obj info info)
|
||||
(-> obj root-override-2 trans)
|
||||
(-> obj root-override-2 quat)
|
||||
(-> obj root trans)
|
||||
(-> obj root quat)
|
||||
(method-of-object obj rigid-body-object-method-29)
|
||||
)
|
||||
(rigid-body-object-method-35 obj)
|
||||
(set! (-> obj max-time-step) (-> arg0 extra max-time-step))
|
||||
(set! (-> obj root-override-2 max-iteration-count) (the-as uint 4))
|
||||
(set! (-> obj root max-iteration-count) (the-as uint 4))
|
||||
(let ((v1-15 (-> obj skel root-channel 0)))
|
||||
(set! (-> v1-15 num-func) num-func-identity)
|
||||
(set! (-> v1-15 frame-num) 0.0)
|
||||
@@ -976,7 +976,7 @@
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-16 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-16 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override-2) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -1033,7 +1033,7 @@ This commonly includes things such as:
|
||||
(rigid-body-object-method-30 obj)
|
||||
(do-engine-sounds obj)
|
||||
(let ((v1-4 (-> obj rbody))
|
||||
(a1-0 (-> obj root-override-2))
|
||||
(a1-0 (-> obj root))
|
||||
)
|
||||
(rigid-body-method-11 (-> v1-4 state) a1-0)
|
||||
)
|
||||
@@ -1044,9 +1044,9 @@ This commonly includes things such as:
|
||||
|
||||
(defmethod rigid-body-object-method-40 rigid-body-object ((obj rigid-body-object))
|
||||
(logior! (-> obj flags) (rigid-body-object-flag enable-collision))
|
||||
(let ((v1-3 (-> obj root-override-2 root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (-> obj root-override-2 backup-collide-as))
|
||||
(set! (-> v1-3 prim-core collide-with) (-> obj root-override-2 backup-collide-with))
|
||||
(let ((v1-3 (-> obj root root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (-> obj root backup-collide-as))
|
||||
(set! (-> v1-3 prim-core collide-with) (-> obj root backup-collide-with))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -1054,7 +1054,7 @@ This commonly includes things such as:
|
||||
|
||||
(defmethod rigid-body-object-method-41 rigid-body-object ((obj rigid-body-object))
|
||||
(logclear! (-> obj flags) (rigid-body-object-flag enable-collision))
|
||||
(let ((v1-3 (-> obj root-override-2 root-prim)))
|
||||
(let ((v1-3 (-> obj root root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-3 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -1066,8 +1066,8 @@ This commonly includes things such as:
|
||||
(defmethod rigid-body-object-method-38 rigid-body-object ((obj rigid-body-object))
|
||||
(when (not (logtest? (-> obj rbody state flags) (rigid-body-flag enable-physics)))
|
||||
(logior! (-> obj rbody state flags) (rigid-body-flag enable-physics))
|
||||
(rigid-body-method-26 (-> obj rbody state) (-> obj root-override-2 trans) (-> obj root-override-2 quat))
|
||||
(vector-float*! (-> obj rbody state lin-momentum) (-> obj root-override-2 transv) (-> obj info info mass))
|
||||
(rigid-body-method-26 (-> obj rbody state) (-> obj root trans) (-> obj root quat))
|
||||
(vector-float*! (-> obj rbody state lin-momentum) (-> obj root transv) (-> obj info info mass))
|
||||
(vector-reset! (-> obj rbody state ang-momentum))
|
||||
)
|
||||
0
|
||||
@@ -1111,12 +1111,12 @@ This commonly includes things such as:
|
||||
(set! (-> arg0 prim-id) (the-as uint 0))
|
||||
(vector-reset! (-> arg0 normal))
|
||||
(vector-reset! (-> arg0 velocity))
|
||||
(set! (-> arg0 point quad) (-> obj root-override-2 trans quad))
|
||||
(set! (-> arg0 point quad) (-> obj root trans quad))
|
||||
(when arg1
|
||||
(let ((s3-0 (-> arg1 head)))
|
||||
(when s3-0
|
||||
(get-intersect-point (-> arg0 point) s3-0 (-> obj root-override-2) arg1)
|
||||
(let ((s5-1 (get-touched-prim s3-0 (-> obj root-override-2) arg1)))
|
||||
(get-intersect-point (-> arg0 point) s3-0 (-> obj root) arg1)
|
||||
(let ((s5-1 (get-touched-prim s3-0 (-> obj root) arg1)))
|
||||
(when s5-1
|
||||
(set! (-> arg0 prim-id) (-> s5-1 prim-id))
|
||||
(vector-! (-> arg0 normal) (-> arg0 point) (the-as vector (-> s5-1 prim-core)))
|
||||
@@ -1240,10 +1240,10 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! (-> s5-0 velocity quad) (-> obj root-override-2 transv quad))
|
||||
(set! (-> s5-0 velocity quad) (-> obj root transv quad))
|
||||
)
|
||||
)
|
||||
(let ((v1-18 (-> arg0 root-override)))
|
||||
(let ((v1-18 (-> arg0 root)))
|
||||
(set! (-> s4-0 quad) (-> v1-18 transv quad))
|
||||
(vector-! (-> s5-0 velocity) (-> v1-18 transv) (-> s5-0 velocity))
|
||||
)
|
||||
@@ -1379,7 +1379,7 @@ This commonly includes things such as:
|
||||
)
|
||||
(when (not (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force)))
|
||||
(logior! (-> obj flags) (rigid-body-object-flag player-touching player-standing-on player-contact-force))
|
||||
(set! (-> obj player-force-position quad) (-> a0-34 root-override trans quad))
|
||||
(set! (-> obj player-force-position quad) (-> a0-34 root trans quad))
|
||||
(vector-reset! (-> obj player-force))
|
||||
(let ((f0-4 (/ 163840.0 (get-inv-mass a0-34)))
|
||||
(f1-1 1.0)
|
||||
@@ -1401,7 +1401,7 @@ This commonly includes things such as:
|
||||
)
|
||||
(when a0-38
|
||||
(logior! (-> obj flags) (rigid-body-object-flag player-touching player-impulse-force))
|
||||
(set! (-> obj player-force-position quad) (-> a0-38 root-override trans quad))
|
||||
(set! (-> obj player-force-position quad) (-> a0-38 root trans quad))
|
||||
(let ((f30-2 (* 0.00012207031 (the-as float (-> arg3 param 1))))
|
||||
(f0-9 (/ 163840.0 (get-inv-mass a0-38)))
|
||||
)
|
||||
@@ -1427,7 +1427,7 @@ This commonly includes things such as:
|
||||
:virtual #t
|
||||
:trans (behavior ()
|
||||
(if (and *target* (and (>= (-> self info extra idle-distance)
|
||||
(vector-vector-distance (-> self root-override-2 trans) (-> *target* control trans))
|
||||
(vector-vector-distance (-> self root trans) (-> *target* control trans))
|
||||
)
|
||||
(not (logtest? (focus-status teleporting) (-> *target* focus-status)))
|
||||
)
|
||||
@@ -1444,12 +1444,11 @@ This commonly includes things such as:
|
||||
:virtual #t
|
||||
:event rigid-body-object-event-handler
|
||||
:trans (behavior ()
|
||||
(if (or (not *target*)
|
||||
(or (< (+ 4096.0 (-> self info extra idle-distance))
|
||||
(vector-vector-distance (-> self root-override-2 trans) (-> *target* control trans))
|
||||
)
|
||||
(focus-test? *target* teleporting)
|
||||
)
|
||||
(if (or (not *target*) (or (< (+ 4096.0 (-> self info extra idle-distance))
|
||||
(vector-vector-distance (-> self root trans) (-> *target* control trans))
|
||||
)
|
||||
(focus-test? *target* teleporting)
|
||||
)
|
||||
)
|
||||
(go-virtual idle)
|
||||
)
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
(defmethod collide-check? focus ((obj focus) (arg0 process-focusable))
|
||||
(when (and arg0 (not (logtest? (-> arg0 focus-status) (focus-status disable dead))))
|
||||
(let* ((s5-0 (-> arg0 root-override))
|
||||
(let* ((s5-0 (-> arg0 root))
|
||||
(v1-2 (if (type? s5-0 collide-shape)
|
||||
s5-0
|
||||
)
|
||||
|
||||
@@ -45,8 +45,8 @@
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype process-focusable (process-drawable)
|
||||
((root-override collide-shape :offset 128)
|
||||
(focus-status focus-status :offset-assert 200)
|
||||
((root collide-shape :override)
|
||||
(focus-status focus-status :offset-assert 200)
|
||||
)
|
||||
:heap-base #x50
|
||||
:method-count-assert 27
|
||||
@@ -67,7 +67,7 @@
|
||||
;; WARN: Return type mismatch structure vs vector.
|
||||
(defmethod get-trans process-focusable ((obj process-focusable) (arg0 int))
|
||||
"@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]])"
|
||||
(let ((gp-0 (-> obj root-override)))
|
||||
(let ((gp-0 (-> obj root)))
|
||||
(the-as vector (cond
|
||||
((zero? arg0)
|
||||
(-> gp-0 trans)
|
||||
@@ -90,11 +90,11 @@
|
||||
)
|
||||
|
||||
(defmethod get-transv process-focusable ((obj process-focusable))
|
||||
(-> obj root-override transv)
|
||||
(-> obj root transv)
|
||||
)
|
||||
|
||||
(defmethod get-quat process-focusable ((obj process-focusable) (arg0 int))
|
||||
(-> obj root-override quat)
|
||||
(-> obj root quat)
|
||||
)
|
||||
|
||||
(defmethod time-to-apex-or-ground process-focusable ((obj process-focusable) (arg0 int))
|
||||
@@ -116,4 +116,5 @@
|
||||
)
|
||||
|
||||
(defmacro focus-test? (pfoc &rest status)
|
||||
`(logtest? (-> (the process-focusable ,pfoc) focus-status) (focus-status ,@status)))
|
||||
`(logtest? (-> (the process-focusable ,pfoc) focus-status) (focus-status ,@status)))
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
:enter (behavior ()
|
||||
(set! (-> self state-time) (current-time))
|
||||
(logior! (-> self draw status) (draw-control-status no-draw-bounds))
|
||||
(let ((v1-6 (-> self root-override root-prim)))
|
||||
(let ((v1-6 (-> self root root-prim)))
|
||||
(set! (-> v1-6 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-6 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -98,9 +98,9 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
)
|
||||
:exit (behavior ()
|
||||
(logclear! (-> self draw status) (draw-control-status no-draw-bounds))
|
||||
(let ((v1-3 (-> self root-override root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (-> self root-override backup-collide-as))
|
||||
(set! (-> v1-3 prim-core collide-with) (-> self root-override backup-collide-with))
|
||||
(let ((v1-3 (-> self root root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (-> self root backup-collide-as))
|
||||
(set! (-> v1-3 prim-core collide-with) (-> self root backup-collide-with))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
@@ -146,14 +146,7 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
)
|
||||
)
|
||||
(('touch)
|
||||
(send-shoves
|
||||
(-> self root-override)
|
||||
proc
|
||||
(the-as touching-shapes-entry (-> event param 0))
|
||||
0.7
|
||||
6144.0
|
||||
16384.0
|
||||
)
|
||||
(send-shoves (-> self root) proc (the-as touching-shapes-entry (-> event param 0)) 0.7 6144.0 16384.0)
|
||||
)
|
||||
(('say)
|
||||
(let ((v0-0 (the-as object (current-time))))
|
||||
@@ -208,7 +201,7 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
)
|
||||
)
|
||||
(and (not (logtest? (focus-status dead in-air in-head pole flut tube pilot mech dark) (-> *target* focus-status)))
|
||||
(and (or (and (< (-> (target-pos 0) y) (+ (-> self root-override root-prim prim-core world-sphere y) (-> self talk-height)))
|
||||
(and (or (and (< (-> (target-pos 0) y) (+ (-> self root root-prim prim-core world-sphere y) (-> self talk-height)))
|
||||
(let ((s5-0 (get-trans self 2))
|
||||
(f30-0 (if (= (-> gp-0 distance) 0.0)
|
||||
(-> self talk-distance)
|
||||
@@ -325,9 +318,9 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
(process-entity-status! self (entity-perm-status no-kill) #f)
|
||||
(logior! (-> self mask) (process-mask actor-pause))
|
||||
(logclear! (-> self draw status) (draw-control-status no-draw))
|
||||
(let ((v1-13 (-> self root-override root-prim)))
|
||||
(set! (-> v1-13 prim-core collide-as) (-> self root-override backup-collide-as))
|
||||
(set! (-> v1-13 prim-core collide-with) (-> self root-override backup-collide-with))
|
||||
(let ((v1-13 (-> self root root-prim)))
|
||||
(set! (-> v1-13 prim-core collide-as) (-> self root backup-collide-as))
|
||||
(set! (-> v1-13 prim-core collide-with) (-> self root backup-collide-with))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
@@ -338,7 +331,7 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
(suspend)
|
||||
)
|
||||
(logior! (-> self draw status) (draw-control-status no-draw))
|
||||
(let ((v1-17 (-> self root-override root-prim)))
|
||||
(let ((v1-17 (-> self root root-prim)))
|
||||
(set! (-> v1-17 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-17 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -402,7 +395,7 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-14 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-14 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -428,7 +421,7 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
(set! s5-0 (+ (-> v1-15 number) 1))
|
||||
)
|
||||
)
|
||||
(let ((v1-19 (the-as collide-shape-prim-group (-> obj root-override root-prim))))
|
||||
(let ((v1-19 (the-as collide-shape-prim-group (-> obj root root-prim))))
|
||||
(set! (-> v1-19 transform-index) s5-0)
|
||||
(dotimes (a0-7 (the-as int (-> v1-19 num-children)))
|
||||
(set! (-> v1-19 child a0-7 transform-index) s5-0)
|
||||
@@ -468,8 +461,7 @@ This commonly includes things such as:
|
||||
(format (clear *temp-string*) "skel-~S" (-> obj draw art-group name))
|
||||
(let ((s4-3 (s4-2 s5-1 *temp-string* (the-as (pointer uint32) #f))))
|
||||
(when s4-3
|
||||
(let ((s5-2 (process-spawn manipy :init manipy-init (-> obj root-override trans) (-> obj entity) s4-3 #f 0 :to obj))
|
||||
)
|
||||
(let ((s5-2 (process-spawn manipy :init manipy-init (-> obj root trans) (-> obj entity) s4-3 #f 0 :to obj)))
|
||||
(send-event (ppointer->process s5-2) 'anim-mode 'mirror)
|
||||
(send-event (ppointer->process s5-2) 'mirror #t)
|
||||
)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
(defmethod get-trans simple-focus ((obj simple-focus) (arg0 int))
|
||||
"@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]])"
|
||||
(-> obj root-override trans)
|
||||
(-> obj root trans)
|
||||
)
|
||||
|
||||
(defmethod run-logic? simple-focus ((obj simple-focus))
|
||||
@@ -37,7 +37,7 @@
|
||||
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
||||
(the-as object (case event-type
|
||||
(('move-trans)
|
||||
(let ((v0-0 (-> self root-override trans)))
|
||||
(let ((v0-0 (-> self root trans)))
|
||||
(set! (-> v0-0 quad) (-> (the-as vector (-> event param 0)) quad))
|
||||
v0-0
|
||||
)
|
||||
@@ -52,7 +52,7 @@
|
||||
(defbehavior simple-focus-init-by-other simple-focus ()
|
||||
"Initializes the new [[simple-focus]]. `first-time?` will be set to [[#t]]"
|
||||
(let ((root (new 'process 'trsqv)))
|
||||
(set! (-> self root-override) (the-as collide-shape root))
|
||||
(set! (-> self root) (the-as collide-shape root))
|
||||
(vector-identity! (-> root scale))
|
||||
(quaternion-identity! (-> root quat))
|
||||
)
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype simple-nav-sphere (process-drawable)
|
||||
((root-override collide-shape :offset 128)
|
||||
(first-time? symbol :offset-assert 200)
|
||||
(track-joint int32 :offset-assert 204)
|
||||
((root collide-shape :override)
|
||||
(first-time? symbol :offset-assert 200)
|
||||
(track-joint int32 :offset-assert 204)
|
||||
)
|
||||
:heap-base #x50
|
||||
:method-count-assert 22
|
||||
@@ -30,12 +30,12 @@
|
||||
(go empty-state)
|
||||
)
|
||||
(('move-trans)
|
||||
(move-to-point! (-> self root-override) (the-as vector (-> event param 0)))
|
||||
(move-to-point! (-> self root) (the-as vector (-> event param 0)))
|
||||
#t
|
||||
)
|
||||
(('set-radius)
|
||||
(let ((radius (the-as float (-> event param 0)))
|
||||
(collide-shape (-> self root-override))
|
||||
(collide-shape (-> self root))
|
||||
)
|
||||
(set! (-> collide-shape nav-radius) radius)
|
||||
(set! (-> collide-shape root-prim local-sphere w) radius)
|
||||
@@ -73,8 +73,8 @@
|
||||
(add-debug-sphere
|
||||
#t
|
||||
(bucket-id debug2)
|
||||
(-> self root-override trans)
|
||||
(-> self root-override nav-radius)
|
||||
(-> self root trans)
|
||||
(-> self root nav-radius)
|
||||
(new 'static 'rgba :r #x80 :g #x40 :a #x80)
|
||||
)
|
||||
)
|
||||
@@ -94,7 +94,7 @@
|
||||
(gp-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(vector<-cspace! gp-0 (-> (the-as process-drawable v1-0) node-list data (-> self track-joint)))
|
||||
(move-to-point! (-> self root-override) gp-0)
|
||||
(move-to-point! (-> self root) gp-0)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
@@ -130,7 +130,7 @@
|
||||
)
|
||||
0
|
||||
(update-transforms s5-0)
|
||||
(set! (-> self root-override) s5-0)
|
||||
(set! (-> self root) s5-0)
|
||||
)
|
||||
(logclear! (-> self mask) (process-mask actor-pause enemy))
|
||||
(set! (-> self event-hook)
|
||||
|
||||
@@ -20,13 +20,63 @@
|
||||
;; +++speech-type
|
||||
(defenum speech-type
|
||||
:type int8
|
||||
:bitfield #t
|
||||
(speech-type-0 0)
|
||||
(speech-type-1 1)
|
||||
(speech-type-2 2)
|
||||
(speech-type-3 3)
|
||||
(speech-type-4 4)
|
||||
(speech-type-5 5)
|
||||
(speech-type-0)
|
||||
(speech-type-1)
|
||||
(speech-type-2)
|
||||
(speech-type-3)
|
||||
(speech-type-4)
|
||||
(speech-type-5)
|
||||
(speech-type-6)
|
||||
(speech-type-7)
|
||||
(speech-type-8)
|
||||
(speech-type-9)
|
||||
(speech-type-10)
|
||||
(speech-type-11)
|
||||
(speech-type-12)
|
||||
(speech-type-13)
|
||||
(speech-type-14)
|
||||
(speech-type-15)
|
||||
(speech-type-16)
|
||||
(speech-type-17)
|
||||
(speech-type-18)
|
||||
(speech-type-19)
|
||||
(speech-type-20)
|
||||
(speech-type-21)
|
||||
(speech-type-22)
|
||||
(speech-type-23)
|
||||
(speech-type-24)
|
||||
(speech-type-25)
|
||||
(speech-type-26)
|
||||
(speech-type-27)
|
||||
(speech-type-28)
|
||||
(speech-type-29)
|
||||
(speech-type-30)
|
||||
(speech-type-31)
|
||||
(speech-type-32)
|
||||
(speech-type-33)
|
||||
(speech-type-34)
|
||||
(speech-type-35)
|
||||
(speech-type-36)
|
||||
(speech-type-37)
|
||||
(speech-type-38)
|
||||
(speech-type-39)
|
||||
(speech-type-40)
|
||||
(speech-type-41)
|
||||
(speech-type-42)
|
||||
(speech-type-43)
|
||||
(speech-type-44)
|
||||
(speech-type-45)
|
||||
(speech-type-46)
|
||||
(speech-type-47)
|
||||
(speech-type-48)
|
||||
(speech-type-49)
|
||||
(speech-type-50)
|
||||
(speech-type-51)
|
||||
(speech-type-52)
|
||||
(speech-type-53)
|
||||
(speech-type-54)
|
||||
(speech-type-55)
|
||||
(speech-type-56)
|
||||
)
|
||||
;; ---speech-type
|
||||
|
||||
@@ -105,7 +155,7 @@
|
||||
:flag-assert #x11000001c4
|
||||
(:methods
|
||||
(speech-control-method-9 (_type_) none 9)
|
||||
(speech-control-method-10 (_type_ int speech-type-info) none 10)
|
||||
(speech-table-set! (_type_ speech-type speech-type-info) none 10)
|
||||
(speech-control-method-11 (_type_) none 11)
|
||||
(speech-control-method-12 (_type_ process-drawable speech-type) none 12)
|
||||
(speech-control-method-13 (_type_ handle) none 13)
|
||||
|
||||
@@ -242,7 +242,7 @@
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod speech-control-method-10 speech-control ((obj speech-control) (arg0 int) (arg1 speech-type-info))
|
||||
(defmethod speech-table-set! speech-control ((obj speech-control) (arg0 speech-type) (arg1 speech-type-info))
|
||||
(set! (-> obj speech-table arg0) arg1)
|
||||
0
|
||||
(none)
|
||||
@@ -278,13 +278,13 @@
|
||||
(when v1-3
|
||||
(cond
|
||||
((focus-test? v1-3 dark)
|
||||
(speech-control-method-12 obj arg0 (speech-type speech-type-3))
|
||||
(speech-control-method-12 obj arg0 (speech-type speech-type-8))
|
||||
)
|
||||
((focus-test? v1-3 pilot)
|
||||
(speech-control-method-12 obj arg0 (speech-type speech-type-0 speech-type-1 speech-type-2))
|
||||
(speech-control-method-12 obj arg0 (speech-type speech-type-7))
|
||||
)
|
||||
(else
|
||||
(speech-control-method-12 obj arg0 (speech-type speech-type-1 speech-type-2))
|
||||
(speech-control-method-12 obj arg0 (speech-type speech-type-6))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -329,162 +329,162 @@
|
||||
(dotimes (s5-0 2)
|
||||
(speech-channel-method-12 (-> obj channel-array s5-0))
|
||||
)
|
||||
(speech-control-method-10 obj 0 (new 'static 'speech-type-info
|
||||
:priority 3
|
||||
:request-timeout #x12c
|
||||
:min-delay #x12c
|
||||
:max-delay #x12c
|
||||
:list (new 'static 'boxed-array :type string)
|
||||
)
|
||||
)
|
||||
(speech-control-method-10 obj 3 (new 'static 'speech-type-info
|
||||
:priority 3
|
||||
:request-timeout #x12c
|
||||
:min-delay #x12c
|
||||
:max-delay #x12c
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg136"
|
||||
"kg139"
|
||||
"kg140"
|
||||
"kg141"
|
||||
"kg142"
|
||||
"kg134"
|
||||
"kg157"
|
||||
"kg143"
|
||||
"kg156"
|
||||
"kg176"
|
||||
"kg177"
|
||||
"kg536"
|
||||
"kg551"
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-control-method-10 obj 9 (new 'static 'speech-type-info
|
||||
:priority 1
|
||||
:min-delay #x258
|
||||
:max-delay #x4b0
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg133"
|
||||
"kg135"
|
||||
"kg137"
|
||||
"kg138"
|
||||
"kg144"
|
||||
"kg145"
|
||||
"kg146"
|
||||
"kg147"
|
||||
"kg148"
|
||||
"kg149"
|
||||
"kg150"
|
||||
"kg151"
|
||||
"kg152"
|
||||
"kg153"
|
||||
"kg154"
|
||||
"kg155"
|
||||
"kg158"
|
||||
"kg159"
|
||||
"kg160"
|
||||
"kg163"
|
||||
"kg164"
|
||||
"kg507"
|
||||
"kg508"
|
||||
"kg509"
|
||||
"kg511"
|
||||
"kg513"
|
||||
"kg514"
|
||||
"kg515"
|
||||
"kg516"
|
||||
"kg517"
|
||||
"kg518"
|
||||
"kg520"
|
||||
"kg521"
|
||||
"kg523"
|
||||
"kg526"
|
||||
"kg527"
|
||||
"kg528"
|
||||
"kg529"
|
||||
"kg530"
|
||||
"kg532"
|
||||
"kg534"
|
||||
"kg535"
|
||||
"kg537"
|
||||
"kg538"
|
||||
"kg539"
|
||||
"kg540"
|
||||
"kg541"
|
||||
"kg542"
|
||||
"kg543"
|
||||
"kg544"
|
||||
"kg545"
|
||||
"kg546"
|
||||
"kg549"
|
||||
"kg550"
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-control-method-10 obj 10 (new 'static 'speech-type-info
|
||||
:flags (speech-type-flag random-order)
|
||||
:priority #xa
|
||||
:request-timeout #x258
|
||||
:min-delay #x258
|
||||
:max-delay #x4b0
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg165"
|
||||
"kg165a"
|
||||
"kg165b"
|
||||
"kg166"
|
||||
"kg166a"
|
||||
"kg166b"
|
||||
"kg167"
|
||||
"kg167a"
|
||||
"kg167b"
|
||||
"kg168"
|
||||
"kg168a"
|
||||
"kg168b"
|
||||
"kg169"
|
||||
"kg169a"
|
||||
"kg169b"
|
||||
"kg170"
|
||||
"kg170a"
|
||||
"kg170b"
|
||||
"kg171"
|
||||
"kg171a"
|
||||
"kg171b"
|
||||
"kg172"
|
||||
"kg172a"
|
||||
"kg172b"
|
||||
"kg173"
|
||||
"kg173a"
|
||||
"kg173b"
|
||||
"kg174"
|
||||
"kg174a"
|
||||
"kg174b"
|
||||
"kg175"
|
||||
"kg175a"
|
||||
"kg175b"
|
||||
"kg510"
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-control-method-10 obj 11 (new 'static 'speech-type-info
|
||||
:priority 2
|
||||
:min-delay #x1e
|
||||
:max-delay #x1e
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg386a"
|
||||
"kg428a"
|
||||
"kg641"
|
||||
"kg650"
|
||||
"kg338a"
|
||||
"kg339a"
|
||||
"kg340a"
|
||||
"kg341a"
|
||||
"kg342a"
|
||||
"kg343a"
|
||||
"kg344a"
|
||||
"kg512"
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-table-set! obj (speech-type speech-type-0) (new 'static 'speech-type-info
|
||||
:priority 3
|
||||
:request-timeout #x12c
|
||||
:min-delay (seconds 1)
|
||||
:max-delay (seconds 1)
|
||||
:list (new 'static 'boxed-array :type string)
|
||||
)
|
||||
)
|
||||
(speech-table-set! obj (speech-type speech-type-3) (new 'static 'speech-type-info
|
||||
:priority 3
|
||||
:request-timeout #x12c
|
||||
:min-delay (seconds 1)
|
||||
:max-delay (seconds 1)
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg136"
|
||||
"kg139"
|
||||
"kg140"
|
||||
"kg141"
|
||||
"kg142"
|
||||
"kg134"
|
||||
"kg157"
|
||||
"kg143"
|
||||
"kg156"
|
||||
"kg176"
|
||||
"kg177"
|
||||
"kg536"
|
||||
"kg551"
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-table-set! obj (speech-type speech-type-9) (new 'static 'speech-type-info
|
||||
:priority 1
|
||||
:min-delay (seconds 2)
|
||||
:max-delay (seconds 4)
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg133"
|
||||
"kg135"
|
||||
"kg137"
|
||||
"kg138"
|
||||
"kg144"
|
||||
"kg145"
|
||||
"kg146"
|
||||
"kg147"
|
||||
"kg148"
|
||||
"kg149"
|
||||
"kg150"
|
||||
"kg151"
|
||||
"kg152"
|
||||
"kg153"
|
||||
"kg154"
|
||||
"kg155"
|
||||
"kg158"
|
||||
"kg159"
|
||||
"kg160"
|
||||
"kg163"
|
||||
"kg164"
|
||||
"kg507"
|
||||
"kg508"
|
||||
"kg509"
|
||||
"kg511"
|
||||
"kg513"
|
||||
"kg514"
|
||||
"kg515"
|
||||
"kg516"
|
||||
"kg517"
|
||||
"kg518"
|
||||
"kg520"
|
||||
"kg521"
|
||||
"kg523"
|
||||
"kg526"
|
||||
"kg527"
|
||||
"kg528"
|
||||
"kg529"
|
||||
"kg530"
|
||||
"kg532"
|
||||
"kg534"
|
||||
"kg535"
|
||||
"kg537"
|
||||
"kg538"
|
||||
"kg539"
|
||||
"kg540"
|
||||
"kg541"
|
||||
"kg542"
|
||||
"kg543"
|
||||
"kg544"
|
||||
"kg545"
|
||||
"kg546"
|
||||
"kg549"
|
||||
"kg550"
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-table-set! obj (speech-type speech-type-10) (new 'static 'speech-type-info
|
||||
:flags (speech-type-flag random-order)
|
||||
:priority 10
|
||||
:request-timeout #x258
|
||||
:min-delay (seconds 2)
|
||||
:max-delay (seconds 4)
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg165"
|
||||
"kg165a"
|
||||
"kg165b"
|
||||
"kg166"
|
||||
"kg166a"
|
||||
"kg166b"
|
||||
"kg167"
|
||||
"kg167a"
|
||||
"kg167b"
|
||||
"kg168"
|
||||
"kg168a"
|
||||
"kg168b"
|
||||
"kg169"
|
||||
"kg169a"
|
||||
"kg169b"
|
||||
"kg170"
|
||||
"kg170a"
|
||||
"kg170b"
|
||||
"kg171"
|
||||
"kg171a"
|
||||
"kg171b"
|
||||
"kg172"
|
||||
"kg172a"
|
||||
"kg172b"
|
||||
"kg173"
|
||||
"kg173a"
|
||||
"kg173b"
|
||||
"kg174"
|
||||
"kg174a"
|
||||
"kg174b"
|
||||
"kg175"
|
||||
"kg175a"
|
||||
"kg175b"
|
||||
"kg510"
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-table-set! obj (speech-type speech-type-11) (new 'static 'speech-type-info
|
||||
:priority 2
|
||||
:min-delay (seconds 0.1)
|
||||
:max-delay (seconds 0.1)
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg386a"
|
||||
"kg428a"
|
||||
"kg641"
|
||||
"kg650"
|
||||
"kg338a"
|
||||
"kg339a"
|
||||
"kg340a"
|
||||
"kg341a"
|
||||
"kg342a"
|
||||
"kg343a"
|
||||
"kg344a"
|
||||
"kg512"
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -3110,7 +3110,7 @@
|
||||
(when (= *cheat-mode* 'debug)
|
||||
(when (and (not *pause-lock*) (cpad-hold? (-> self control cpad number) r2))
|
||||
(set! (-> self control time-of-last-debug-heal) (current-time))
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) 100.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) 100.0 (the-as handle #f))
|
||||
(go target-board-stance)
|
||||
)
|
||||
)
|
||||
@@ -3188,22 +3188,22 @@
|
||||
(go target-stance)
|
||||
)
|
||||
(else
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(go target-death (-> gp-0 mode))
|
||||
)
|
||||
)
|
||||
)
|
||||
(('drown-death 'sharkey 'lava 'dark-eco-pool 'melt 'instant-death 'crush 'death 'grenade 'big-explosion 'bot)
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(if (= (-> self game mode) 'play)
|
||||
(go target-death (-> gp-0 mode))
|
||||
)
|
||||
)
|
||||
(('death)
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
)
|
||||
(else
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) (- (-> gp-0 damage)) (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) (- (-> gp-0 damage)) (the-as handle #f))
|
||||
)
|
||||
)
|
||||
(target-hit-effect gp-0)
|
||||
@@ -3216,8 +3216,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (not (and (= (-> self game mode) 'play) (>= 0.0 (-> (the-as fact-info-target (-> self fact-override)) health)))
|
||||
)
|
||||
(when (not (and (= (-> self game mode) 'play) (>= 0.0 (-> (the-as fact-info-target (-> self fact)) health))))
|
||||
(when (= (-> gp-0 knock) 8)
|
||||
(set-quaternion! (-> self control) (-> self control dir-targ))
|
||||
(set-forward-vel (* -3.0 (-> gp-0 shove-back)))
|
||||
@@ -3244,7 +3243,7 @@
|
||||
)
|
||||
(target-hit-move gp-0 (target-hit-orient gp-0 s5-0) target-board-falling-anim-trans (-> gp-0 speed))
|
||||
)
|
||||
(if (and (= (-> self game mode) 'play) (>= 0.0 (-> (the-as fact-info-target (-> self fact-override)) health)))
|
||||
(if (and (= (-> self game mode) 'play) (>= 0.0 (-> (the-as fact-info-target (-> self fact)) health)))
|
||||
(go target-death (-> gp-0 mode))
|
||||
)
|
||||
)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
(defbehavior board-post board ()
|
||||
(let* ((a0-0 (-> self parent))
|
||||
(v1-0 (if a0-0
|
||||
(-> (the-as target (-> a0-0 0)) self-override)
|
||||
(-> (the-as target (-> a0-0 0)) self)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -2965,13 +2965,11 @@
|
||||
"Add specified trick and point amount to trick list."
|
||||
(send-event (handle->process (-> obj process 0 notify)) 'notify 'trick-point arg0)
|
||||
(when (and (< (-> obj trick-count) 16)
|
||||
(and (< 0.0 arg1)
|
||||
(nonzero? (-> (the-as fact-info-target (-> obj process 0 fact-override)) trick-point-duration))
|
||||
)
|
||||
(and (< 0.0 arg1) (nonzero? (-> (the-as fact-info-target (-> obj process 0 fact)) trick-point-duration)))
|
||||
)
|
||||
(let ((s4-0 0))
|
||||
(when (>= (- (-> *display* game-clock frame-counter)
|
||||
(-> (the-as fact-info-target (-> obj process 0 fact-override)) trick-point-pickup-time)
|
||||
(-> (the-as fact-info-target (-> obj process 0 fact)) trick-point-pickup-time)
|
||||
)
|
||||
(seconds 30)
|
||||
)
|
||||
@@ -3025,44 +3023,27 @@
|
||||
|
||||
(defmethod flush-trick-list board-info ((obj board-info))
|
||||
"Flush trick list and give out points."
|
||||
(with-pp
|
||||
(let ((f30-0 0.0))
|
||||
(dotimes (v1-0 (-> obj trick-count))
|
||||
(+! f30-0 (-> obj trick-points-array v1-0))
|
||||
)
|
||||
(when (< 0.0 f30-0)
|
||||
(send-event
|
||||
(handle->process (-> obj process 0 notify))
|
||||
'notify
|
||||
'trick-flush
|
||||
f30-0
|
||||
(-> obj trick-list)
|
||||
(-> obj trick-count)
|
||||
)
|
||||
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-1 from) (process->ppointer pp))
|
||||
(set! (-> a1-1 num-params) 2)
|
||||
(set! (-> a1-1 message) 'get-pickup)
|
||||
(set! (-> a1-1 param 0) (the-as uint 19))
|
||||
(set! (-> a1-1 param 1) (the-as uint f30-0))
|
||||
(let ((t9-1 send-event-function)
|
||||
(v1-22 (-> obj process))
|
||||
)
|
||||
(t9-1
|
||||
(if v1-22
|
||||
(-> v1-22 0 self-override)
|
||||
)
|
||||
a1-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(sound-play "trick-score")
|
||||
(#when PC_PORT
|
||||
(end-combo! *board-trick-tracker*)))
|
||||
(let ((f30-0 0.0))
|
||||
(dotimes (v1-0 (-> obj trick-count))
|
||||
(+! f30-0 (-> obj trick-points-array v1-0))
|
||||
)
|
||||
(when (< 0.0 f30-0)
|
||||
(send-event
|
||||
(handle->process (-> obj process 0 notify))
|
||||
'notify
|
||||
'trick-flush
|
||||
f30-0
|
||||
(-> obj trick-list)
|
||||
(-> obj trick-count)
|
||||
)
|
||||
(send-event (ppointer->process (-> obj process)) 'get-pickup 19 f30-0)
|
||||
(sound-play "trick-score")
|
||||
(#when PC_PORT
|
||||
(end-combo! *board-trick-tracker*))
|
||||
)
|
||||
(set! (-> obj trick-count) 0)
|
||||
0
|
||||
0
|
||||
(none)
|
||||
)
|
||||
(set! (-> obj trick-count) 0)
|
||||
0
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
(vector-rotate-y! s1-0 s1-0 16384.0)
|
||||
(vector+float*! s1-0 s5-1 s1-0 -8806.4)
|
||||
(set! (-> s2-0 start-pos quad) (-> s1-0 quad))
|
||||
(vector-float*! (-> s2-0 move-dist) (-> obj root-override dynam gravity-normal) -81920.0)
|
||||
(vector-float*! (-> s2-0 move-dist) (-> obj root dynam gravity-normal) -81920.0)
|
||||
(let ((v1-11 s2-0))
|
||||
(set! (-> v1-11 radius) 1228.8)
|
||||
(set! (-> v1-11 collide-with) (collide-spec backgnd obstacle hit-by-player-list hit-by-others-list))
|
||||
@@ -83,7 +83,7 @@
|
||||
)
|
||||
(let ((s4-1 (get-field-spec-by-id s4-0 (sp-field-id spt-rotate-y))))
|
||||
(if s4-1
|
||||
(set! (-> s4-1 initial-valuef) (y-angle (-> obj root-override)))
|
||||
(set! (-> s4-1 initial-valuef) (y-angle (-> obj root)))
|
||||
)
|
||||
)
|
||||
(let ((t9-7 sp-launch-particles-var)
|
||||
@@ -96,7 +96,7 @@
|
||||
)
|
||||
(let ((s4-2 (get-field-spec-by-id (-> *part-id-table* 195) (sp-field-id spt-rotate-y))))
|
||||
(if s4-2
|
||||
(set! (-> s4-2 initial-valuef) (y-angle (-> obj root-override)))
|
||||
(set! (-> s4-2 initial-valuef) (y-angle (-> obj root)))
|
||||
)
|
||||
)
|
||||
(let ((t9-10 sp-launch-particles-var)
|
||||
@@ -120,7 +120,7 @@
|
||||
(vf6 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let ((s3-1 (vector-! (new 'stack-no-clear 'vector) (-> obj root-override trans) (-> obj init-pos))))
|
||||
(let ((s3-1 (vector-! (new 'stack-no-clear 'vector) (-> obj root trans) (-> obj init-pos))))
|
||||
(draw-beam (-> *part-id-table* 191) (-> obj init-pos) s3-1 #t #t)
|
||||
(draw-beam (-> *part-id-table* 194) (-> obj init-pos) (-> obj starting-dir) #f #t)
|
||||
(let ((s5-0 (-> *part-id-table* 206))
|
||||
@@ -178,7 +178,7 @@
|
||||
(t2-0 #f)
|
||||
(t3-0 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-0 trans quad) (-> obj root-override trans quad))
|
||||
(set! (-> t3-0 trans quad) (-> obj root trans quad))
|
||||
((the-as (function object object object object object object object object none) t9-13)
|
||||
a0-19
|
||||
a1-15
|
||||
@@ -223,7 +223,7 @@
|
||||
|
||||
(defmethod made-impact? gun-blue-shot ((obj gun-blue-shot))
|
||||
"TODO - queries the collision cache, return true/false"
|
||||
(let ((v1-0 (-> obj root-override))
|
||||
(let ((v1-0 (-> obj root))
|
||||
(t1-0 (new 'stack-no-clear 'collide-query))
|
||||
)
|
||||
(let ((a1-0 t1-0))
|
||||
@@ -240,7 +240,7 @@
|
||||
|
||||
(defun gun-blue-shot-move ((arg0 gun-blue-shot))
|
||||
(projectile-move-fill-line-sphere arg0)
|
||||
(if (logtest? (-> arg0 root-override status) (collide-status touch-surface))
|
||||
(if (logtest? (-> arg0 root status) (collide-status touch-surface))
|
||||
(go (method-of-object arg0 impact))
|
||||
)
|
||||
0
|
||||
@@ -301,9 +301,9 @@
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 1))
|
||||
(set! (-> s5-0 event-self) 'touched)
|
||||
(set! (-> obj root-override) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(set! (-> obj root-override pat-ignore-mask)
|
||||
(set! (-> obj root pat-ignore-mask)
|
||||
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noproj #x1 :noendlessfall #x1)
|
||||
)
|
||||
0
|
||||
@@ -314,13 +314,9 @@
|
||||
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc"
|
||||
(with-pp
|
||||
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 204 (seconds 0.1))
|
||||
(set! (-> obj init-pos quad) (-> obj root-override trans quad))
|
||||
(set! (-> obj init-pos quad) (-> obj root trans quad))
|
||||
(set! (-> obj init-dir quad) (-> obj starting-dir quad))
|
||||
(vector-normalize-copy!
|
||||
(-> obj root-override transv)
|
||||
(-> obj init-dir)
|
||||
(* 327680.0 (-> pp clock frames-per-second))
|
||||
)
|
||||
(vector-normalize-copy! (-> obj root transv) (-> obj init-dir) (* 327680.0 (-> pp clock frames-per-second)))
|
||||
(set! (-> obj attack-mode) 'eco-blue)
|
||||
(set! (-> obj max-speed) (* 327680.0 (-> pp clock frames-per-second)))
|
||||
(set! (-> obj timeout) 1)
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
(defmethod init-proj-settings! gun-dark-shot ((obj gun-dark-shot))
|
||||
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc"
|
||||
(set! (-> obj attack-mode) 'eco-dark)
|
||||
(vector-normalize! (-> obj root-override transv) (+ 225280.0 (* 225280.0 (-> obj charge-level))))
|
||||
(vector-normalize! (-> obj root transv) (+ 225280.0 (* 225280.0 (-> obj charge-level))))
|
||||
(set! (-> obj part) (create-launch-control (-> *part-group-id-table* 72) obj))
|
||||
(set! (-> obj blast-radius) 40960.0)
|
||||
(set! (-> obj size-t) 0.0)
|
||||
@@ -178,7 +178,7 @@
|
||||
(set! (-> *part-id-table* 218 init-specs 2 initial-valuef) (lerp 409.6 8192.0 (-> obj size-t)))
|
||||
(set! (-> *part-id-table* 217 init-specs 1 initial-valuef) (lerp 0.1 1.0 (-> obj size-t)))
|
||||
(set! (-> *part-id-table* 217 init-specs 2 initial-valuef) (lerp 409.6 3686.4 (-> obj size-t)))
|
||||
(spawn (-> obj part) (-> obj root-override trans))
|
||||
(spawn (-> obj part) (-> obj root trans))
|
||||
)
|
||||
)
|
||||
(ja-post)
|
||||
@@ -222,7 +222,7 @@
|
||||
((or (< (- (current-time) (-> self state-time)) (seconds 0.3)) (cpad-hold? 0 r1))
|
||||
(set! (-> self size-t) (fmin 1.0 (* 0.016666668 (the float (- (current-time) (-> self state-time))))))
|
||||
(let ((t9-1 vector<-cspace!)
|
||||
(a0-13 (-> self root-override trans))
|
||||
(a0-13 (-> self root trans))
|
||||
(v1-26 (-> self parent))
|
||||
)
|
||||
(t9-1 a0-13 (-> (the-as process-drawable (if v1-26
|
||||
@@ -249,7 +249,7 @@
|
||||
(none)
|
||||
)
|
||||
:post (behavior ()
|
||||
(sound-play "pmkr-charge" :id (-> self charge-sound) :position (-> self root-override trans))
|
||||
(sound-play "pmkr-charge" :id (-> self charge-sound) :position (-> self root trans))
|
||||
(spawn-impact-particles self)
|
||||
(none)
|
||||
)
|
||||
@@ -263,7 +263,7 @@
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(set! (-> self core-position quad) (-> self root-override trans quad))
|
||||
(set! (-> self core-position quad) (-> self root trans quad))
|
||||
(let ((v1-5 (-> self core-velocity))
|
||||
(a0-3 (-> self parent))
|
||||
)
|
||||
@@ -314,7 +314,7 @@
|
||||
(t2-0 #f)
|
||||
(t3-0 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-0 trans quad) (-> self root-override trans quad))
|
||||
(set! (-> t3-0 trans quad) (-> self root trans quad))
|
||||
((the-as (function object object object object object object object object none) t9-5)
|
||||
a0-18
|
||||
a1-4
|
||||
@@ -329,7 +329,7 @@
|
||||
(-> gp-2 ppointer)
|
||||
)
|
||||
)
|
||||
(draw-beam (-> *part-id-table* 210) (-> self root-override trans) (-> self core-velocity) #f #t)
|
||||
(draw-beam (-> *part-id-table* 210) (-> self root trans) (-> self core-velocity) #f #t)
|
||||
(none)
|
||||
)
|
||||
:trans (behavior ()
|
||||
@@ -387,14 +387,14 @@
|
||||
)
|
||||
)
|
||||
(vector-cross! (the-as vector (-> s5-0 vector)) (-> s5-0 vector 1) (-> s5-0 vector 2))
|
||||
(matrix->quaternion (-> self root-override quat) s5-0)
|
||||
(matrix->quaternion (-> self root quat) s5-0)
|
||||
)
|
||||
(vector+! (-> self core-position) (-> self core-position) (-> self core-velocity))
|
||||
(vector+! gp-0 (-> self core-position) (-> self spin-vector))
|
||||
(vector-! (-> self root-override transv) gp-0 (-> self root-override trans))
|
||||
(vector-! (-> self root transv) gp-0 (-> self root trans))
|
||||
)
|
||||
(let ((v1-31 (-> self root-override transv)))
|
||||
(.lvf vf1 (&-> (-> self root-override transv) quad))
|
||||
(let ((v1-31 (-> self root transv)))
|
||||
(.lvf vf1 (&-> (-> self root transv) quad))
|
||||
(let ((f0-12 (-> self clock frames-per-second)))
|
||||
(.mov at-0 f0-12)
|
||||
)
|
||||
@@ -404,11 +404,11 @@
|
||||
(.svf (&-> v1-31 quad) vf1)
|
||||
)
|
||||
(projectile-move-fill-line-sphere self)
|
||||
(if (logtest? (-> self root-override status) (collide-status touch-surface))
|
||||
(if (logtest? (-> self root status) (collide-status touch-surface))
|
||||
(go-virtual impact)
|
||||
)
|
||||
(sound-play "pmkr-fire" :id (-> self fire-sound) :position (-> self root-override trans))
|
||||
(sound-play "pmkr-trail" :id (-> self trail-sound) :position (-> self root-override trans))
|
||||
(sound-play "pmkr-fire" :id (-> self fire-sound) :position (-> self root trans))
|
||||
(sound-play "pmkr-trail" :id (-> self trail-sound) :position (-> self root trans))
|
||||
(none)
|
||||
)
|
||||
)
|
||||
@@ -537,7 +537,7 @@
|
||||
(a1-1 (-> *part-id-table* 215))
|
||||
(a2-1 *launch-matrix*)
|
||||
)
|
||||
(set! (-> a2-1 trans quad) (-> self root-override trans quad))
|
||||
(set! (-> a2-1 trans quad) (-> self root trans quad))
|
||||
(t9-2 a0-3 a1-1 a2-1 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
||||
)
|
||||
(let ((t9-3 sp-launch-particles-var)
|
||||
@@ -545,7 +545,7 @@
|
||||
(a1-2 (-> *part-id-table* 216))
|
||||
(a2-2 *launch-matrix*)
|
||||
)
|
||||
(set! (-> a2-2 trans quad) (-> self root-override trans quad))
|
||||
(set! (-> a2-2 trans quad) (-> self root trans quad))
|
||||
(t9-3 a0-4 a1-2 a2-2 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
||||
)
|
||||
(let ((gp-0 (-> *part-id-table* 430)))
|
||||
@@ -559,7 +559,7 @@
|
||||
(a0-8 *sp-particle-system-2d*)
|
||||
(a2-3 *launch-matrix*)
|
||||
)
|
||||
(set! (-> a2-3 trans quad) (-> self root-override trans quad))
|
||||
(set! (-> a2-3 trans quad) (-> self root trans quad))
|
||||
(t9-5 a0-8 gp-0 a2-3 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
||||
)
|
||||
)
|
||||
@@ -594,10 +594,10 @@
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 2))
|
||||
(set! (-> s5-0 event-self) 'touched)
|
||||
(set! (-> self root-override) s5-0)
|
||||
(set! (-> self root) s5-0)
|
||||
)
|
||||
(set! (-> self root-override trans quad) (-> arg0 quad))
|
||||
(let ((v1-16 (-> self root-override root-prim)))
|
||||
(set! (-> self root trans quad) (-> arg0 quad))
|
||||
(let ((v1-16 (-> self root root-prim)))
|
||||
(set! (-> v1-16 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-16 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -651,14 +651,14 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-16 (-> self root-override root-prim)))
|
||||
(let ((v1-16 (-> self root root-prim)))
|
||||
(set! (-> v1-16 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-16 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
0
|
||||
(let ((gp-1 (new 'stack-no-clear 'explosion-init-params)))
|
||||
(set! (-> gp-1 spawn-point quad) (-> self root-override trans quad))
|
||||
(quaternion-copy! (-> gp-1 spawn-quat) (-> self root-override quat))
|
||||
(set! (-> gp-1 spawn-point quad) (-> self root trans quad))
|
||||
(quaternion-copy! (-> gp-1 spawn-quat) (-> self root quat))
|
||||
(set! (-> gp-1 radius) 36864.0)
|
||||
(set! (-> gp-1 group) (-> *part-group-id-table* 71))
|
||||
(set! (-> gp-1 collide-with)
|
||||
@@ -671,7 +671,7 @@
|
||||
(s3-0 (the-as (pointer collide-shape) (new 'stack-no-clear 'array 'collide-shape 16)))
|
||||
(a1-8 (new 'stack-no-clear 'sphere))
|
||||
)
|
||||
(set! (-> a1-8 quad) (-> self root-override trans quad))
|
||||
(set! (-> a1-8 quad) (-> self root trans quad))
|
||||
(set! (-> a1-8 r) (-> self blast-radius))
|
||||
(let ((gp-2 (fill-actor-list-for-sphere *actor-hash* a1-8 s3-0 16)))
|
||||
(let ((s1-0 (the-as process-drawable #f))
|
||||
@@ -695,7 +695,7 @@
|
||||
(not (logtest? (process-mask no-track) (-> s0-0 mask)))
|
||||
)
|
||||
(set! sv-288 (get-trans (the-as process-focusable s0-0) 3))
|
||||
(let ((f28-0 (- (vector-vector-distance (-> self root-override trans) sv-288) (-> sv-288 w))))
|
||||
(let ((f28-0 (- (vector-vector-distance (-> self root trans) sv-288) (-> sv-288 w))))
|
||||
(set! sv-304 s0-0)
|
||||
(if (and (not (if (type? sv-304 crate)
|
||||
sv-304
|
||||
@@ -748,7 +748,7 @@
|
||||
(go-virtual fizzle)
|
||||
)
|
||||
(if s5-1
|
||||
(process-spawn gun-dark-shot :init gun-dark-shot-init-fizzle (-> self root-override trans))
|
||||
(process-spawn gun-dark-shot :init gun-dark-shot-init-fizzle (-> self root trans))
|
||||
)
|
||||
)
|
||||
(countdown (s5-3 gp-2)
|
||||
|
||||
@@ -11,15 +11,15 @@
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype gun-red-shot (process-drawable)
|
||||
((root-override collide-shape-moving :offset 128)
|
||||
(probe-count int32 :offset-assert 200)
|
||||
(probe-mask uint32 :offset-assert 204)
|
||||
(actor-count int32 :offset-assert 208)
|
||||
(attack-id uint32 :offset-assert 212)
|
||||
(start-pos vector :inline :offset-assert 224)
|
||||
(start-dir vector :inline :offset-assert 240)
|
||||
(start-rot vector :inline :offset-assert 256)
|
||||
(probe-dir vector 19 :inline :offset-assert 272)
|
||||
((root collide-shape-moving :override)
|
||||
(probe-count int32 :offset-assert 200)
|
||||
(probe-mask uint32 :offset-assert 204)
|
||||
(actor-count int32 :offset-assert 208)
|
||||
(attack-id uint32 :offset-assert 212)
|
||||
(start-pos vector :inline :offset-assert 224)
|
||||
(start-dir vector :inline :offset-assert 240)
|
||||
(start-rot vector :inline :offset-assert 256)
|
||||
(probe-dir vector 19 :inline :offset-assert 272)
|
||||
)
|
||||
:heap-base #x1c0
|
||||
:method-count-assert 30
|
||||
@@ -255,7 +255,7 @@
|
||||
(vector-float*! s5-0 s5-0 43417.6)
|
||||
(vector+! s5-0 s5-0 (-> obj start-pos))
|
||||
(set! (-> s5-0 w) 43827.2)
|
||||
(let ((s4-0 (-> obj root-override root-prim prim-core collide-with)))
|
||||
(let ((s4-0 (-> obj root root-prim prim-core collide-with)))
|
||||
(set! *actor-list-length* 0)
|
||||
(if (logtest? s4-0 (collide-spec hit-by-others-list))
|
||||
(set! *actor-list-length* (fill-actor-list-for-sphere *actor-hash* (the-as sphere s5-0) *actor-list* 256))
|
||||
@@ -385,7 +385,7 @@
|
||||
(vf2 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let ((gp-0 (-> obj root-override)))
|
||||
(let ((gp-0 (-> obj root)))
|
||||
(let ((v1-0 (new 'stack-no-clear 'collide-query)))
|
||||
(set! (-> gp-0 trans quad) (-> obj start-pos quad))
|
||||
(vector-float*! (-> gp-0 transv) arg0 61440.0)
|
||||
@@ -421,7 +421,7 @@
|
||||
)
|
||||
|
||||
(defmethod gun-red-shot-method-24 gun-red-shot ((obj gun-red-shot))
|
||||
(let ((v1-0 (-> obj root-override))
|
||||
(let ((v1-0 (-> obj root))
|
||||
(t1-0 (new 'stack-no-clear 'collide-query))
|
||||
)
|
||||
(let ((a1-0 t1-0))
|
||||
@@ -539,14 +539,14 @@
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 1))
|
||||
(set! (-> s5-0 event-self) 'touched)
|
||||
(set! (-> self root-override) s5-0)
|
||||
(set! (-> self root) s5-0)
|
||||
)
|
||||
(let ((s5-1 (-> self root-override)))
|
||||
(let ((s5-1 (-> self root)))
|
||||
(set! (-> s5-1 trans quad) (-> arg0 quad))
|
||||
(quaternion-copy! (-> s5-1 quat) (-> (the-as process-drawable (-> self parent 0)) root quat))
|
||||
(vector-identity! (-> s5-1 scale))
|
||||
)
|
||||
(update-transforms (-> self root-override))
|
||||
(update-transforms (-> self root))
|
||||
(set! (-> self event-hook) gun-red-shot-event-handler)
|
||||
(set! (-> self mask) (logior (process-mask projectile) (-> self mask)))
|
||||
(logclear! (-> self mask) (process-mask enemy))
|
||||
@@ -589,7 +589,7 @@
|
||||
)
|
||||
(draw-beam (-> *part-id-table* 187) (-> self start-pos) (-> self start-dir) #f #t)
|
||||
(sound-play "red-shot-fire")
|
||||
(vector-float*! (-> self root-override transv) (-> self start-dir) 61440.0)
|
||||
(vector-float*! (-> self root transv) (-> self start-dir) 61440.0)
|
||||
(the-as gun-red-shot (if (gun-red-shot-method-24 self)
|
||||
(go-virtual blocked)
|
||||
(go-virtual idle)
|
||||
|
||||
@@ -30,9 +30,9 @@
|
||||
(let ((t9-3 (method-of-type projectile-bounce init-proj-settings!)))
|
||||
(t9-3 obj)
|
||||
)
|
||||
(quaternion-copy! (-> obj root-override quat) (-> (the-as gun (-> obj parent 0)) root quat))
|
||||
(quaternion-copy! (-> obj root quat) (-> (the-as gun (-> obj parent 0)) root quat))
|
||||
(set! (-> obj timeout) (seconds 4))
|
||||
(set! (-> (the-as collide-shape (-> obj root-override)) root-prim local-sphere w) 3276.8)
|
||||
(set! (-> (the-as collide-shape (-> obj root)) root-prim local-sphere w) 3276.8)
|
||||
(logclear! (-> obj mask) (process-mask projectile))
|
||||
0
|
||||
(none)
|
||||
@@ -950,12 +950,7 @@
|
||||
(let ((v1-13 s4-0))
|
||||
(set! (-> v1-13 radius) (-> obj track-beam-size))
|
||||
(set! (-> v1-13 collide-with) (-> obj process 0 control root-prim prim-core collide-with))
|
||||
(let ((a0-9 (-> obj process)))
|
||||
(set! (-> v1-13 ignore-process0) (if a0-9
|
||||
(-> a0-9 0 self-override)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-13 ignore-process0) (ppointer->process (-> obj process)))
|
||||
(set! (-> v1-13 ignore-process1) #f)
|
||||
(set! (-> v1-13 ignore-pat)
|
||||
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noproj #x1 :noendlessfall #x1)
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
(vf7 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let* ((s4-0 (-> obj root-override trans))
|
||||
(let* ((s4-0 (-> obj root trans))
|
||||
(a1-0 (-> obj tail-pos))
|
||||
(s5-1 (vector-! (new 'stack-no-clear 'vector) s4-0 a1-0))
|
||||
(f30-0 (vector-length s5-1))
|
||||
@@ -191,7 +191,7 @@
|
||||
(t2-0 #f)
|
||||
(t3-0 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-0 trans quad) (-> obj root-override trans quad))
|
||||
(set! (-> t3-0 trans quad) (-> obj root trans quad))
|
||||
((the-as (function object object object object object object object object none) t9-2)
|
||||
a0-3
|
||||
a1-2
|
||||
@@ -228,7 +228,7 @@
|
||||
(t2-1 #f)
|
||||
(t3-1 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-1 trans quad) (-> obj root-override trans quad))
|
||||
(set! (-> t3-1 trans quad) (-> obj root trans quad))
|
||||
((the-as (function object object object object object object object object none) t9-5)
|
||||
a0-6
|
||||
a1-5
|
||||
@@ -263,7 +263,7 @@
|
||||
(sound-play "yellow-shot-fiz")
|
||||
)
|
||||
(else
|
||||
(sound-play "yellow-shot-std" :id (-> obj sound-id) :position (-> obj root-override trans))
|
||||
(sound-play "yellow-shot-std" :id (-> obj sound-id) :position (-> obj root trans))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -272,7 +272,7 @@
|
||||
|
||||
(defmethod made-impact? gun-yellow-shot ((obj gun-yellow-shot))
|
||||
"TODO - queries the collision cache, return true/false"
|
||||
(let ((v1-0 (-> obj root-override))
|
||||
(let ((v1-0 (-> obj root))
|
||||
(t1-0 (new 'stack-no-clear 'collide-query))
|
||||
)
|
||||
(let ((a0-1 t1-0))
|
||||
@@ -284,7 +284,7 @@
|
||||
(set! (-> a0-1 action-mask) (collide-action solid))
|
||||
)
|
||||
(when (fill-and-try-snap-to-surface v1-0 (-> v1-0 transv) -10240.0 12697.6 -4096.0 t1-0)
|
||||
(if (logtest? (-> obj root-override status) (collide-status touch-actor))
|
||||
(if (logtest? (-> obj root status) (collide-status touch-actor))
|
||||
(set! (-> obj hit-actor?) #t)
|
||||
)
|
||||
#t
|
||||
@@ -294,7 +294,7 @@
|
||||
|
||||
(defun gun-yellow-shot-move ((arg0 gun-yellow-shot))
|
||||
(projectile-move-fill-line-sphere arg0)
|
||||
(let ((s5-0 (-> arg0 root-override)))
|
||||
(let ((s5-0 (-> arg0 root)))
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector)))
|
||||
(vector-! s4-0 (-> arg0 tail-pos) (-> s5-0 trans))
|
||||
(let ((f0-0 (vector-length s4-0)))
|
||||
@@ -305,7 +305,7 @@
|
||||
)
|
||||
)
|
||||
(when (logtest? (-> s5-0 status) (collide-status touch-surface))
|
||||
(if (logtest? (-> arg0 root-override status) (collide-status touch-actor))
|
||||
(if (logtest? (-> arg0 root status) (collide-status touch-actor))
|
||||
(set! (-> arg0 hit-actor?) #t)
|
||||
)
|
||||
(let ((v1-14 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> arg0 tail-pos) (-> s5-0 trans)) 2048.0))
|
||||
@@ -313,7 +313,7 @@
|
||||
)
|
||||
(set! (-> a1-5 quad) (-> s5-0 trans quad))
|
||||
(vector+! a1-5 a1-5 v1-14)
|
||||
(move-to-point! (-> arg0 root-override) a1-5)
|
||||
(move-to-point! (-> arg0 root) a1-5)
|
||||
)
|
||||
(go (method-of-object arg0 impact))
|
||||
)
|
||||
@@ -365,9 +365,9 @@
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 1))
|
||||
(set! (-> s5-0 event-self) 'touched)
|
||||
(set! (-> obj root-override) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(set! (-> obj root-override pat-ignore-mask)
|
||||
(set! (-> obj root pat-ignore-mask)
|
||||
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noproj #x1 :noendlessfall #x1)
|
||||
)
|
||||
0
|
||||
@@ -377,7 +377,7 @@
|
||||
(defmethod init-proj-settings! gun-yellow-shot ((obj gun-yellow-shot))
|
||||
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc"
|
||||
(set! (-> obj hit-actor?) #f)
|
||||
(set! (-> obj tail-pos quad) (-> obj root-override trans quad))
|
||||
(set! (-> obj tail-pos quad) (-> obj root trans quad))
|
||||
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 204 (seconds 0.1))
|
||||
(set! (-> obj attack-mode) 'eco-yellow)
|
||||
(set! (-> obj max-speed) 819200.0)
|
||||
|
||||
@@ -34,8 +34,8 @@
|
||||
(set! (-> self control time-of-last-surface-change) (current-time))
|
||||
)
|
||||
(surface-mult! (-> self control current-surface) (-> self control mod-surface) (-> self control surf))
|
||||
(when (and (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 3)
|
||||
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
|
||||
(when (and (and (= (-> (the-as fact-info-target (-> self fact)) eco-type) 3)
|
||||
(>= (-> (the-as fact-info-target (-> self fact)) eco-level) 1.0)
|
||||
)
|
||||
(or (= (-> self control mod-surface name) 'run) (= (-> self control mod-surface name) 'jump))
|
||||
)
|
||||
@@ -2216,14 +2216,14 @@
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector)))
|
||||
(let ((s4-1 (vector+float*!
|
||||
(new 'stack-no-clear 'vector)
|
||||
(-> (the-as swingpole s2-0) root-override trans)
|
||||
(-> (the-as swingpole s2-0) root trans)
|
||||
gp-0
|
||||
(the-as float (-> (the-as swingpole s2-0) edge-length))
|
||||
)
|
||||
)
|
||||
(s3-1 (vector+float*!
|
||||
(new 'stack-no-clear 'vector)
|
||||
(-> (the-as swingpole s2-0) root-override trans)
|
||||
(-> (the-as swingpole s2-0) root trans)
|
||||
gp-0
|
||||
(- (-> (the-as swingpole s2-0) edge-length))
|
||||
)
|
||||
@@ -2246,7 +2246,7 @@
|
||||
(add-debug-vector
|
||||
#t
|
||||
(bucket-id debug-no-zbuf1)
|
||||
(-> (the-as swingpole s2-0) root-override trans)
|
||||
(-> (the-as swingpole s2-0) root trans)
|
||||
(-> (the-as swingpole s2-0) dir)
|
||||
(meters 3)
|
||||
(new 'static 'rgba :r #xff :b #xff :a #x80)
|
||||
@@ -3259,7 +3259,7 @@
|
||||
(set! (-> obj leg-ik 1 elbow-rotation-axis) (the-as uint 0))
|
||||
(set! (-> obj foot 0) (new 'process 'joint-mod (joint-mod-mode foot-rot) obj 29))
|
||||
(set! (-> obj foot 1) (new 'process 'joint-mod (joint-mod-mode foot-rot) obj 36))
|
||||
(set! (-> obj fact-override)
|
||||
(set! (-> obj fact)
|
||||
(new 'process 'fact-info-target obj (pickup-type eco-pill-random) (-> *FACT-bank* default-eco-pill-green-inc))
|
||||
)
|
||||
(target-gun-setup (logtest? (-> obj game features) (game-feature gun)))
|
||||
|
||||
@@ -255,74 +255,28 @@ Returns `-1.0` if it exceeds the maximum allowed"
|
||||
(-> arg0 local-point z)
|
||||
)
|
||||
)
|
||||
(let* ((t9-13 change-parent)
|
||||
(v1-42 (-> arg0 process))
|
||||
(a0-28 (if v1-42
|
||||
(-> v1-42 0 self-override)
|
||||
)
|
||||
)
|
||||
(v1-44 (-> obj process))
|
||||
)
|
||||
(t9-13 a0-28 (if v1-44
|
||||
(-> v1-44 0 self-override)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let* ((v1-46 (-> arg0 process))
|
||||
(v1-49 (-> (the-as collide-shape (-> (the-as process-drawable (if v1-46
|
||||
(-> v1-46 0 self-override)
|
||||
)
|
||||
)
|
||||
root
|
||||
)
|
||||
)
|
||||
root-prim
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((a0-30 (-> v1-49 prim-core collide-as))
|
||||
(a1-25 (-> arg0 process))
|
||||
(change-parent (ppointer->process (-> arg0 process)) (ppointer->process (-> obj process)))
|
||||
(let ((v1-49 (-> (the-as collide-shape (-> (the-as process-drawable (ppointer->process (-> arg0 process))) root))
|
||||
root-prim
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> (the-as collide-shape (-> (the-as process-drawable (ppointer->process (-> arg0 process))) root))
|
||||
backup-collide-as
|
||||
)
|
||||
(-> v1-49 prim-core collide-as)
|
||||
)
|
||||
(set! (-> (the-as collide-shape (-> (the-as process-drawable (if a1-25
|
||||
(-> a1-25 0 self-override)
|
||||
)
|
||||
)
|
||||
root
|
||||
)
|
||||
)
|
||||
backup-collide-as
|
||||
)
|
||||
a0-30
|
||||
)
|
||||
)
|
||||
(let ((v1-50 (-> v1-49 prim-core collide-with))
|
||||
(a0-31 (-> arg0 process))
|
||||
(set! (-> (the-as collide-shape (-> (the-as process-drawable (ppointer->process (-> arg0 process))) root))
|
||||
backup-collide-with
|
||||
)
|
||||
(-> v1-49 prim-core collide-with)
|
||||
)
|
||||
(set! (-> (the-as collide-shape (-> (the-as process-drawable (if a0-31
|
||||
(-> a0-31 0 self-override)
|
||||
)
|
||||
)
|
||||
root
|
||||
)
|
||||
)
|
||||
backup-collide-with
|
||||
)
|
||||
v1-50
|
||||
)
|
||||
)
|
||||
)
|
||||
(let* ((v1-51 (-> arg0 process))
|
||||
(v1-54 (-> (the-as collide-shape (-> (the-as process-drawable (if v1-51
|
||||
(-> v1-51 0 self-override)
|
||||
)
|
||||
)
|
||||
root
|
||||
)
|
||||
)
|
||||
root-prim
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-54 (-> (the-as collide-shape (-> (the-as process-drawable (ppointer->process (-> arg0 process))) root))
|
||||
root-prim
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-54 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-54 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -348,54 +302,23 @@ Returns `-1.0` if it exceeds the maximum allowed"
|
||||
)
|
||||
(set! (-> obj other) (the-as handle #f))
|
||||
(set! (-> arg0 other) (the-as handle #f))
|
||||
(let ((t9-3 change-parent)
|
||||
(v1-11 (-> arg0 process))
|
||||
)
|
||||
(t9-3
|
||||
(if v1-11
|
||||
(-> v1-11 0 self-override)
|
||||
(change-parent (ppointer->process (-> arg0 process)) *entity-pool*)
|
||||
(let ((v1-16
|
||||
(-> (the-as collide-shape (-> (the-as process-drawable (ppointer->process (-> arg0 process))) root))
|
||||
root-prim
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-16 prim-core collide-as)
|
||||
(-> (the-as collide-shape (-> (the-as process-drawable (ppointer->process (-> arg0 process))) root))
|
||||
backup-collide-as
|
||||
)
|
||||
)
|
||||
(set! (-> v1-16 prim-core collide-with)
|
||||
(-> (the-as collide-shape (-> (the-as process-drawable (ppointer->process (-> arg0 process))) root))
|
||||
backup-collide-with
|
||||
)
|
||||
)
|
||||
*entity-pool*
|
||||
)
|
||||
)
|
||||
(let* ((v1-13 (-> arg0 process))
|
||||
(v1-16 (-> (the-as collide-shape (-> (the-as process-drawable (if v1-13
|
||||
(-> v1-13 0 self-override)
|
||||
)
|
||||
)
|
||||
root
|
||||
)
|
||||
)
|
||||
root-prim
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((a0-8 (-> arg0 process)))
|
||||
(set! (-> v1-16 prim-core collide-as)
|
||||
(-> (the-as collide-shape (-> (the-as process-drawable (if a0-8
|
||||
(-> a0-8 0 self-override)
|
||||
)
|
||||
)
|
||||
root
|
||||
)
|
||||
)
|
||||
backup-collide-as
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((a0-12 (-> arg0 process)))
|
||||
(set! (-> v1-16 prim-core collide-with)
|
||||
(-> (the-as collide-shape (-> (the-as process-drawable (if a0-12
|
||||
(-> a0-12 0 self-override)
|
||||
)
|
||||
)
|
||||
root
|
||||
)
|
||||
)
|
||||
backup-collide-with
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -518,74 +441,28 @@ Returns `-1.0` if it exceeds the maximum allowed"
|
||||
)
|
||||
)
|
||||
(vector+float*! arg1 (-> arg0 point) arg2 (- (-> arg0 carry-radius)))
|
||||
(let* ((t9-7 change-parent)
|
||||
(v1-42 (-> arg0 process))
|
||||
(a0-30 (if v1-42
|
||||
(-> v1-42 0 self-override)
|
||||
)
|
||||
)
|
||||
(v1-44 (-> obj process))
|
||||
)
|
||||
(t9-7 a0-30 (if v1-44
|
||||
(-> v1-44 0 self-override)
|
||||
)
|
||||
(change-parent (ppointer->process (-> arg0 process)) (ppointer->process (-> obj process)))
|
||||
(let ((v1-49 (-> (the-as collide-shape (-> (the-as process-drawable (ppointer->process (-> arg0 process))) root))
|
||||
root-prim
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> (the-as collide-shape (-> (the-as process-drawable (ppointer->process (-> arg0 process))) root))
|
||||
backup-collide-as
|
||||
)
|
||||
(-> v1-49 prim-core collide-as)
|
||||
)
|
||||
(set! (-> (the-as collide-shape (-> (the-as process-drawable (ppointer->process (-> arg0 process))) root))
|
||||
backup-collide-with
|
||||
)
|
||||
(-> v1-49 prim-core collide-with)
|
||||
)
|
||||
)
|
||||
(let* ((v1-46 (-> arg0 process))
|
||||
(v1-49 (-> (the-as collide-shape (-> (the-as process-drawable (if v1-46
|
||||
(-> v1-46 0 self-override)
|
||||
)
|
||||
)
|
||||
root
|
||||
)
|
||||
)
|
||||
root-prim
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((a0-32 (-> v1-49 prim-core collide-as))
|
||||
(a1-7 (-> arg0 process))
|
||||
)
|
||||
(set! (-> (the-as collide-shape (-> (the-as process-drawable (if a1-7
|
||||
(-> a1-7 0 self-override)
|
||||
)
|
||||
)
|
||||
root
|
||||
)
|
||||
)
|
||||
backup-collide-as
|
||||
)
|
||||
a0-32
|
||||
)
|
||||
)
|
||||
(let ((v1-50 (-> v1-49 prim-core collide-with))
|
||||
(a0-33 (-> arg0 process))
|
||||
)
|
||||
(set! (-> (the-as collide-shape (-> (the-as process-drawable (if a0-33
|
||||
(-> a0-33 0 self-override)
|
||||
)
|
||||
)
|
||||
root
|
||||
)
|
||||
)
|
||||
backup-collide-with
|
||||
)
|
||||
v1-50
|
||||
)
|
||||
)
|
||||
)
|
||||
(let* ((v1-51 (-> arg0 process))
|
||||
(v1-54 (-> (the-as collide-shape (-> (the-as process-drawable (if v1-51
|
||||
(-> v1-51 0 self-override)
|
||||
)
|
||||
)
|
||||
root
|
||||
)
|
||||
)
|
||||
root-prim
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-54 (-> (the-as collide-shape (-> (the-as process-drawable (ppointer->process (-> arg0 process))) root))
|
||||
root-prim
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-54 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-54 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
(grunt-mech-info-method-10 s4-0)
|
||||
(let ((gp-0 -1))
|
||||
(let ((f30-0 0.0)
|
||||
(s3-0 (-> obj root-override2 trans))
|
||||
(s3-0 (-> obj root trans))
|
||||
)
|
||||
(countdown (s2-0 4)
|
||||
(let ((s1-0 (-> s4-0 holds s2-0)))
|
||||
@@ -216,7 +216,7 @@
|
||||
(set! (-> s0-0 quad) (-> s1-0 world-mat vector 2 quad))
|
||||
(set! (-> s0-0 y) 0.0)
|
||||
(vector-normalize! s0-0 1.0)
|
||||
(vector-! sv-592 (-> s1-0 world-mat trans) (-> obj root-override2 trans))
|
||||
(vector-! sv-592 (-> s1-0 world-mat trans) (-> obj root trans))
|
||||
(set! (-> sv-592 y) 0.0)
|
||||
(vector-normalize! sv-592 1.0)
|
||||
(let ((f0-2 (-> sv-592 x))
|
||||
@@ -247,7 +247,7 @@
|
||||
(let ((s3-1 (-> s4-0 holds gp-0 lower-hold)))
|
||||
(when (!= s3-1 -1)
|
||||
(if (and (or (zero? (get-rand-int obj 2))
|
||||
(>= 14336.0 (vector-vector-xz-distance-squared (-> obj root-override2 trans) (target-pos 0)))
|
||||
(>= 14336.0 (vector-vector-xz-distance-squared (-> obj root trans) (target-pos 0)))
|
||||
)
|
||||
(grunt-mech-info-method-9 s4-0 s3-1 obj #t)
|
||||
)
|
||||
@@ -256,7 +256,7 @@
|
||||
)
|
||||
)
|
||||
(let ((a1-9 (new 'stack-no-clear 'collide-query)))
|
||||
(set! (-> a1-9 start-pos quad) (-> obj root-override2 trans quad))
|
||||
(set! (-> a1-9 start-pos quad) (-> obj root trans quad))
|
||||
(set! (-> a1-9 start-pos y) (+ 6144.0 (-> a1-9 start-pos y)))
|
||||
(vector-!
|
||||
(-> a1-9 move-dist)
|
||||
@@ -296,7 +296,7 @@
|
||||
(let ((v1-4 (get-trans gp-0 0))
|
||||
(a1-2 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(vector-! a1-2 v1-4 (-> obj root-override2 trans))
|
||||
(vector-! a1-2 v1-4 (-> obj root trans))
|
||||
(.lvf vf1 (&-> a1-2 quad))
|
||||
)
|
||||
(.add.w.vf vf2 vf0 vf0 :mask #b1)
|
||||
@@ -349,13 +349,13 @@
|
||||
)
|
||||
0
|
||||
(nav-enemy-method-167 self)
|
||||
(set! (-> self dismount-dest quad) (-> self root-override2 trans quad))
|
||||
(logclear! (-> self root-override2 nav-flags) (nav-flags has-root-sphere))
|
||||
(set! (-> self dismount-dest quad) (-> self root trans quad))
|
||||
(logclear! (-> self root nav-flags) (nav-flags has-root-sphere))
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(logclear! (-> self enemy-flags) (enemy-flag actor-pause-backup))
|
||||
(logior! (-> self root-override2 nav-flags) (nav-flags has-root-sphere))
|
||||
(logior! (-> self root nav-flags) (nav-flags has-root-sphere))
|
||||
(none)
|
||||
)
|
||||
:trans (behavior ()
|
||||
@@ -365,8 +365,8 @@
|
||||
:code (behavior ()
|
||||
(ja-channel-push! 1 (seconds 0.07))
|
||||
(let ((gp-0 (new 'stack-no-clear 'matrix)))
|
||||
(quaternion-copy! (the-as quaternion (-> gp-0 vector)) (-> self root-override2 quat))
|
||||
(set! (-> gp-0 vector 1 quad) (-> self root-override2 trans quad))
|
||||
(quaternion-copy! (the-as quaternion (-> gp-0 vector)) (-> self root quat))
|
||||
(set! (-> gp-0 vector 1 quad) (-> self root trans quad))
|
||||
(ja-no-eval :group! (-> self draw art-group data 48)
|
||||
:num! (seek!
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 48)) frames num-frames) -1))
|
||||
@@ -381,12 +381,12 @@
|
||||
(matrix->quaternion (the-as quaternion (-> gp-0 vector 2)) (-> s5-1 world-mat))
|
||||
(let ((f30-0 (lerp-scale 0.0 1.0 (ja-aframe-num 0) 0.0 6.0)))
|
||||
(quaternion-slerp!
|
||||
(-> self root-override2 quat)
|
||||
(-> self root quat)
|
||||
(the-as quaternion (-> gp-0 vector))
|
||||
(the-as quaternion (-> gp-0 vector 2))
|
||||
f30-0
|
||||
)
|
||||
(vector-lerp! (-> self root-override2 trans) (-> gp-0 vector 1) (-> s5-1 world-mat trans) f30-0)
|
||||
(vector-lerp! (-> self root trans) (-> gp-0 vector 1) (-> s5-1 world-mat trans) f30-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -404,7 +404,7 @@
|
||||
(let ((gp-0 *grunt-mech-info*))
|
||||
(grunt-mech-info-method-10 gp-0)
|
||||
(let ((v1-5 (-> gp-0 holds (-> self hold-id)))
|
||||
(a0-2 (-> self root-override2))
|
||||
(a0-2 (-> self root))
|
||||
)
|
||||
(set! (-> a0-2 trans quad) (-> v1-5 world-mat trans quad))
|
||||
(matrix->quaternion (-> a0-2 quat) (-> v1-5 world-mat))
|
||||
@@ -423,7 +423,7 @@
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let ((s5-0 (new 'stack-no-clear 'nav-avoid-spheres-params)))
|
||||
(vector-! (-> s5-0 current-pos) (-> obj root-override2 trans) (-> obj nav state mesh bounds))
|
||||
(vector-! (-> s5-0 current-pos) (-> obj root trans) (-> obj nav state mesh bounds))
|
||||
(vector-normalize-copy! (-> s5-0 travel) arg0 (the-as float arg1))
|
||||
(set! (-> s5-0 pref-dir quad) (-> s5-0 travel quad))
|
||||
(avoid-spheres-1! (-> obj nav) s5-0)
|
||||
@@ -431,7 +431,7 @@
|
||||
(let ((t0-0 (new 'stack-no-clear 'clamp-travel-vector-to-mesh-return-info)))
|
||||
(clamp-vector-to-mesh-no-gaps
|
||||
(-> obj nav)
|
||||
(-> obj root-override2 trans)
|
||||
(-> obj root trans)
|
||||
(-> obj nav state current-poly)
|
||||
(the-as vector (-> s5-0 out-travel))
|
||||
t0-0
|
||||
@@ -453,7 +453,7 @@
|
||||
(set! (-> a1-3 w) (-> obj nav-radius-backup))
|
||||
(when (not (add-root-sphere-to-hash! (-> obj nav) a1-3 #x80068))
|
||||
(let ((s4-1 (new 'stack-no-clear 'vector)))
|
||||
(vector+! s4-1 (-> obj root-override2 trans) (the-as vector (-> s5-0 out-travel)))
|
||||
(vector+! s4-1 (-> obj root trans) (the-as vector (-> s5-0 out-travel)))
|
||||
(let ((s5-1 (new 'stack-no-clear 'collide-query)))
|
||||
(when (enemy-above-ground? obj s5-1 s4-1 (the-as collide-spec (-> obj gnd-collide)) 4096.0 122880.0 1024.0)
|
||||
(set! (-> s4-1 y) (-> s5-1 best-other-tri intersect y))
|
||||
@@ -472,7 +472,7 @@
|
||||
)
|
||||
|
||||
(defmethod grunt-mech-method-192 grunt-mech ((obj grunt-mech))
|
||||
(do-navigation-to-destination (-> obj nav state) (-> obj root-override2 trans))
|
||||
(do-navigation-to-destination (-> obj nav state) (-> obj root trans))
|
||||
(let ((a1-1 *target*))
|
||||
(if (or (not a1-1) (not (logtest? (focus-status mech) (-> a1-1 focus-status))))
|
||||
(return #t)
|
||||
@@ -517,7 +517,7 @@
|
||||
)
|
||||
)
|
||||
(label cfg-16)
|
||||
(let ((a0-15 (-> obj root-override2 trans)))
|
||||
(let ((a0-15 (-> obj root trans)))
|
||||
(if (or (>= 0.0 (- (-> a0-15 y) (-> obj dismount-dest y)))
|
||||
(let ((f0-4 40960.0))
|
||||
(< (* f0-4 f0-4) (vector-vector-xz-distance-squared a0-15 (-> obj dismount-dest)))
|
||||
@@ -567,19 +567,19 @@
|
||||
:enter (behavior ()
|
||||
(set! (-> self state-time) (current-time))
|
||||
(set! (-> self enemy-flags) (logior (enemy-flag actor-pause-backup) (-> self enemy-flags)))
|
||||
(set! (-> self root-override2 root-prim prim-core collide-as) (collide-spec))
|
||||
(set! (-> self root root-prim prim-core collide-as) (collide-spec))
|
||||
(stop-looking-at-target! self)
|
||||
(set! (-> self state-timeout) (+ (current-time) (get-rand-int-range self 450 900)))
|
||||
(logclear! (-> self root-override2 nav-flags) (nav-flags has-root-sphere))
|
||||
(logclear! (-> self root nav-flags) (nav-flags has-root-sphere))
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(logclear! (-> self enemy-flags) (enemy-flag actor-pause-backup))
|
||||
(let ((v1-3 (-> self root-override2 root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (-> self root-override2 backup-collide-as))
|
||||
(set! (-> v1-3 prim-core collide-with) (-> self root-override2 backup-collide-with))
|
||||
(let ((v1-3 (-> self root root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (-> self root backup-collide-as))
|
||||
(set! (-> v1-3 prim-core collide-with) (-> self root backup-collide-with))
|
||||
)
|
||||
(logior! (-> self root-override2 nav-flags) (nav-flags has-root-sphere))
|
||||
(logior! (-> self root nav-flags) (nav-flags has-root-sphere))
|
||||
(none)
|
||||
)
|
||||
:trans (behavior ()
|
||||
@@ -709,7 +709,7 @@
|
||||
:event (the-as (function process int symbol event-message-block object :behavior grunt-mech) enemy-event-handler)
|
||||
:enter (behavior ()
|
||||
(set! (-> self state-time) (current-time))
|
||||
(set! (-> self root-override2 root-prim prim-core collide-as) (collide-spec))
|
||||
(set! (-> self root root-prim prim-core collide-as) (collide-spec))
|
||||
(let* ((v1-4 (-> self nav))
|
||||
(a1-0 (-> self dismount-dest))
|
||||
(f0-0 (-> v1-4 extra-nav-sphere w))
|
||||
@@ -726,30 +726,30 @@
|
||||
(logior! (-> v1-9 shape nav-flags) (nav-flags has-extra-sphere))
|
||||
)
|
||||
0
|
||||
(logclear! (-> self root-override2 nav-flags) (nav-flags has-root-sphere))
|
||||
(logclear! (-> self root nav-flags) (nav-flags has-root-sphere))
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(let ((v1-1 (-> self root-override2 root-prim)))
|
||||
(set! (-> v1-1 prim-core collide-as) (-> self root-override2 backup-collide-as))
|
||||
(set! (-> v1-1 prim-core collide-with) (-> self root-override2 backup-collide-with))
|
||||
(let ((v1-1 (-> self root root-prim)))
|
||||
(set! (-> v1-1 prim-core collide-as) (-> self root backup-collide-as))
|
||||
(set! (-> v1-1 prim-core collide-with) (-> self root backup-collide-with))
|
||||
)
|
||||
(let ((v1-2 (-> self nav)))
|
||||
(logclear! (-> v1-2 shape nav-flags) (nav-flags has-extra-sphere))
|
||||
)
|
||||
0
|
||||
(logior! (-> self root-override2 nav-flags) (nav-flags has-root-sphere))
|
||||
(logior! (-> self root nav-flags) (nav-flags has-root-sphere))
|
||||
(none)
|
||||
)
|
||||
:code (behavior ()
|
||||
(ja-channel-push! 1 (seconds 0.07))
|
||||
(let ((gp-0 (new 'stack-no-clear 'matrix)))
|
||||
(vector-! (-> gp-0 vector 1) (-> self root-override2 trans) (-> self dismount-dest))
|
||||
(vector-! (-> gp-0 vector 1) (-> self root trans) (-> self dismount-dest))
|
||||
(set! (-> gp-0 vector 1 y) 0.0)
|
||||
(vector-normalize! (-> gp-0 vector 1) 1.0)
|
||||
(quaternion-look-at! (the-as quaternion (-> gp-0 vector 2)) (-> gp-0 vector 1) *up-vector*)
|
||||
(quaternion-copy! (the-as quaternion (-> gp-0 vector)) (-> self root-override2 quat))
|
||||
(set! (-> gp-0 vector 1 quad) (-> self root-override2 trans quad))
|
||||
(quaternion-copy! (the-as quaternion (-> gp-0 vector)) (-> self root quat))
|
||||
(set! (-> gp-0 vector 1 quad) (-> self root trans quad))
|
||||
(ja-no-eval :group! (-> self draw art-group data 54)
|
||||
:num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 54)) frames num-frames) -1)))
|
||||
:frame-num 0.0
|
||||
@@ -757,20 +757,20 @@
|
||||
(until (ja-done? 0)
|
||||
(let ((f30-0 (lerp-scale 0.0 1.0 (ja-aframe-num 0) 33.0 41.0)))
|
||||
(quaternion-slerp!
|
||||
(-> self root-override2 quat)
|
||||
(-> self root quat)
|
||||
(the-as quaternion (-> gp-0 vector))
|
||||
(the-as quaternion (-> gp-0 vector 2))
|
||||
f30-0
|
||||
)
|
||||
(vector-lerp! (-> self root-override2 trans) (-> gp-0 vector 1) (-> self dismount-dest) f30-0)
|
||||
(vector-lerp! (-> self root trans) (-> gp-0 vector 1) (-> self dismount-dest) f30-0)
|
||||
)
|
||||
(suspend)
|
||||
(ja :num! (seek!))
|
||||
)
|
||||
)
|
||||
(let ((v1-32 (-> self root-override2 root-prim)))
|
||||
(set! (-> v1-32 prim-core collide-as) (-> self root-override2 backup-collide-as))
|
||||
(set! (-> v1-32 prim-core collide-with) (-> self root-override2 backup-collide-with))
|
||||
(let ((v1-32 (-> self root root-prim)))
|
||||
(set! (-> v1-32 prim-core collide-as) (-> self root backup-collide-as))
|
||||
(set! (-> v1-32 prim-core collide-with) (-> self root backup-collide-with))
|
||||
)
|
||||
(let ((v1-33 (-> self nav)))
|
||||
(logclear! (-> v1-33 shape nav-flags) (nav-flags has-extra-sphere))
|
||||
@@ -817,7 +817,7 @@
|
||||
(when (>= (- (current-time) (-> self state-time)) (-> self reaction-time))
|
||||
(when (>= 1 (the-as int gp-1))
|
||||
(nav-enemy-method-161 self)
|
||||
(if (-> self enemy-info-override use-stop-chase)
|
||||
(if (-> self enemy-info use-stop-chase)
|
||||
(go-virtual stop-chase)
|
||||
(go-virtual active)
|
||||
)
|
||||
|
||||
@@ -1039,7 +1039,7 @@
|
||||
(when (= *cheat-mode* 'debug)
|
||||
(when (and (not *pause-lock*) (cpad-hold? (-> self control cpad number) r2))
|
||||
(set! (-> self control time-of-last-debug-heal) (current-time))
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) 100.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) 100.0 (the-as handle #f))
|
||||
(go target-mech-stance)
|
||||
)
|
||||
)
|
||||
@@ -1114,14 +1114,14 @@
|
||||
(go target-mech-stance)
|
||||
)
|
||||
(else
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(go target-mech-death (-> gp-0 mode))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(target-hit-effect gp-0)
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(go target-mech-death (-> gp-0 mode))
|
||||
)
|
||||
(else
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
)
|
||||
|
||||
(deftype mech (process-drawable)
|
||||
((root-override collide-shape-moving :offset 128)
|
||||
((root collide-shape-moving :override)
|
||||
(extra-trans vector :inline :offset-assert 208)
|
||||
(condition int32 :offset-assert 224)
|
||||
(shadow-backup basic :offset-assert 228)
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
(defmethod mech-method-24 mech ((obj mech))
|
||||
(if (nonzero? (-> obj part))
|
||||
(spawn (-> obj part) (-> obj root-override trans))
|
||||
(spawn (-> obj part) (-> obj root trans))
|
||||
)
|
||||
(update! (-> obj sound))
|
||||
0
|
||||
@@ -77,18 +77,11 @@
|
||||
)
|
||||
(('touch)
|
||||
(send-event proc 'target-mech-get-off 90)
|
||||
(send-shoves
|
||||
(-> self root-override)
|
||||
proc
|
||||
(the-as touching-shapes-entry (-> event param 0))
|
||||
0.7
|
||||
6144.0
|
||||
16384.0
|
||||
)
|
||||
(send-shoves (-> self root) proc (the-as touching-shapes-entry (-> event param 0)) 0.7 6144.0 16384.0)
|
||||
(the-as structure #f)
|
||||
)
|
||||
(('trans)
|
||||
(vector+! (the-as vector (-> event param 0)) (-> self root-override trans) (-> self extra-trans))
|
||||
(vector+! (the-as vector (-> event param 0)) (-> self root trans) (-> self extra-trans))
|
||||
)
|
||||
(('shadow)
|
||||
(cond
|
||||
@@ -108,8 +101,8 @@
|
||||
)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(set! (-> self root-override root-prim prim-core action) (collide-action))
|
||||
(set! (-> self root-override penetrated-by) (the-as penetrate -1))
|
||||
(set! (-> self root root-prim prim-core action) (collide-action))
|
||||
(set! (-> self root penetrated-by) (the-as penetrate -1))
|
||||
(none)
|
||||
)
|
||||
:code (behavior ()
|
||||
@@ -123,12 +116,12 @@
|
||||
:event (-> (method-of-type mech wait-for-start) event)
|
||||
:enter (behavior ()
|
||||
(set! (-> self nav-sphere-handle) (the-as uint #f))
|
||||
(let ((s5-0 (find-nearest-nav-mesh (-> self root-override trans) 8192.0)))
|
||||
(let ((s5-0 (find-nearest-nav-mesh (-> self root trans) 8192.0)))
|
||||
(when s5-0
|
||||
(let ((gp-0 (new 'stack-no-clear 'vector)))
|
||||
(vector-z-quaternion! gp-0 (-> self root-override quat))
|
||||
(vector-z-quaternion! gp-0 (-> self root quat))
|
||||
(vector-normalize! gp-0 5120.0)
|
||||
(vector+! gp-0 gp-0 (-> self root-override trans))
|
||||
(vector+! gp-0 gp-0 (-> self root trans))
|
||||
(set! (-> self nav-sphere-handle)
|
||||
(the-as uint (ppointer->handle (process-spawn simple-nav-sphere #x46266666 gp-0 s5-0 -1 :to self)))
|
||||
)
|
||||
@@ -146,8 +139,8 @@
|
||||
(change-parent self *entity-pool*)
|
||||
(ja-channel-set! 1)
|
||||
(ja :group! mech-mech-idle-ja)
|
||||
(set! (-> self root-override root-prim prim-core action) (collide-action solid can-ride no-standon))
|
||||
(set! (-> self root-override penetrated-by) (penetrate))
|
||||
(set! (-> self root root-prim prim-core action) (collide-action solid can-ride no-standon))
|
||||
(set! (-> self root penetrated-by) (penetrate))
|
||||
0.0
|
||||
(let ((f30-0 20480.0))
|
||||
(until #f
|
||||
@@ -155,7 +148,7 @@
|
||||
(>= (- (current-time) (-> self probe-time)) (seconds 1))
|
||||
)
|
||||
(move-to-ground
|
||||
(-> self root-override)
|
||||
(-> self root)
|
||||
8192.0
|
||||
40960.0
|
||||
#t
|
||||
@@ -163,10 +156,9 @@
|
||||
)
|
||||
(set! (-> self probe-time) (current-time))
|
||||
)
|
||||
(when (and (and *target*
|
||||
(and (>= f30-0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
(not (logtest? (focus-status teleporting) (-> *target* focus-status)))
|
||||
)
|
||||
(when (and (and *target* (and (>= f30-0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))
|
||||
(not (logtest? (focus-status teleporting) (-> *target* focus-status)))
|
||||
)
|
||||
)
|
||||
(not (focus-test? *target* in-head pole board mech dark))
|
||||
(can-display-query? self (the-as string #f) -99.0)
|
||||
@@ -198,7 +190,7 @@
|
||||
(go-virtual pickup (method-of-object self wait-for-return))
|
||||
)
|
||||
)
|
||||
(target-look-at-me! :trans (vector+! (new 'stack-no-clear 'vector) (the-as vector (-> self root-override root-prim prim-core)) (new 'static 'vector :y 2048.0 :w 1.0)))
|
||||
(target-look-at-me! :trans (vector+! (new 'stack-no-clear 'vector) (the-as vector (-> self root root-prim prim-core)) (new 'static 'vector :y 2048.0 :w 1.0)))
|
||||
(mech-method-24 self)
|
||||
(suspend)
|
||||
)
|
||||
@@ -216,12 +208,12 @@
|
||||
(('draw)
|
||||
(ja-channel-set! 1)
|
||||
(ja :group! mech-mech-idle-ja)
|
||||
(set! (-> self root-override root-prim prim-core action) (collide-action solid can-ride no-standon))
|
||||
(set! (-> self root-override penetrated-by) (penetrate))
|
||||
(set! (-> self root root-prim prim-core action) (collide-action solid can-ride no-standon))
|
||||
(set! (-> self root penetrated-by) (penetrate))
|
||||
(transform-post)
|
||||
)
|
||||
(('trans)
|
||||
(vector+! (the-as vector (-> event param 0)) (-> self root-override trans) (-> self extra-trans))
|
||||
(vector+! (the-as vector (-> event param 0)) (-> self root trans) (-> self extra-trans))
|
||||
)
|
||||
(('touch 'attack 'bonk)
|
||||
#f
|
||||
@@ -254,10 +246,9 @@
|
||||
(ja-channel-set! 0)
|
||||
(ja-post)
|
||||
(while (zero? (ja-group-size))
|
||||
(if (or (not *target*)
|
||||
(or (< 24576.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
(focus-test? *target* teleporting)
|
||||
)
|
||||
(if (or (not *target*) (or (< 24576.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))
|
||||
(focus-test? *target* teleporting)
|
||||
)
|
||||
)
|
||||
(go arg0)
|
||||
)
|
||||
@@ -282,28 +273,26 @@
|
||||
(defstate wait-for-return (mech)
|
||||
:virtual #t
|
||||
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
||||
(the-as
|
||||
object
|
||||
(case event-type
|
||||
(('trans)
|
||||
(vector+! (the-as vector (-> event param 0)) (-> self root-override trans) (-> self extra-trans))
|
||||
)
|
||||
(('shadow)
|
||||
(cond
|
||||
((-> event param 0)
|
||||
(let ((v0-1 (the-as structure (-> self shadow-backup))))
|
||||
(set! (-> self draw shadow) (the-as shadow-geo v0-1))
|
||||
v0-1
|
||||
)
|
||||
(the-as object (case event-type
|
||||
(('trans)
|
||||
(vector+! (the-as vector (-> event param 0)) (-> self root trans) (-> self extra-trans))
|
||||
)
|
||||
(('shadow)
|
||||
(cond
|
||||
((-> event param 0)
|
||||
(let ((v0-1 (the-as structure (-> self shadow-backup))))
|
||||
(set! (-> self draw shadow) (the-as shadow-geo v0-1))
|
||||
v0-1
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! (-> self draw shadow) #f)
|
||||
(the-as structure #f)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! (-> self draw shadow) #f)
|
||||
(the-as structure #f)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:code (behavior ()
|
||||
(ja-channel-set! 0)
|
||||
@@ -335,17 +324,17 @@
|
||||
(set! (-> s2-0 backup-collide-as) (-> v1-9 prim-core collide-as))
|
||||
(set! (-> s2-0 backup-collide-with) (-> v1-9 prim-core collide-with))
|
||||
)
|
||||
(set! (-> self root-override) s2-0)
|
||||
(set! (-> self root) s2-0)
|
||||
)
|
||||
(set! (-> self rider) (the-as uint arg2))
|
||||
(when arg0
|
||||
(process-entity-set! self arg0)
|
||||
(process-drawable-from-entity! self arg0)
|
||||
(set-yaw-angle-clear-roll-pitch! (-> self root-override) (res-lump-float arg0 'rotoffset))
|
||||
(set-yaw-angle-clear-roll-pitch! (-> self root) (res-lump-float arg0 'rotoffset))
|
||||
)
|
||||
(when arg1
|
||||
(set! (-> self root-override trans quad) (-> arg1 vector 0 quad))
|
||||
(quaternion-copy! (-> self root-override quat) (the-as quaternion (-> arg1 vector 1)))
|
||||
(set! (-> self root trans quad) (-> arg1 vector 0 quad))
|
||||
(quaternion-copy! (-> self root quat) (the-as quaternion (-> arg1 vector 1)))
|
||||
)
|
||||
(initialize-skeleton
|
||||
self
|
||||
@@ -356,7 +345,7 @@
|
||||
(set! (-> self draw shadow-ctrl) *mech-shadow-control*)
|
||||
(let ((v1-27 (-> self node-list data)))
|
||||
(set! (-> v1-27 0 param0) (the-as (function cspace transformq none) cspace<-transformq+trans!))
|
||||
(set! (-> v1-27 0 param1) (the-as basic (-> self root-override trans)))
|
||||
(set! (-> v1-27 0 param1) (the-as basic (-> self root trans)))
|
||||
(set! (-> v1-27 0 param2) (the-as basic (-> self extra-trans)))
|
||||
)
|
||||
(set! (-> self condition) (res-lump-value arg0 'index int :time -1000000000.0))
|
||||
@@ -367,7 +356,7 @@
|
||||
(set! (-> self nav-sphere-handle) (the-as uint #f))
|
||||
(if (-> self entity)
|
||||
(move-to-ground
|
||||
(-> self root-override)
|
||||
(-> self root)
|
||||
8192.0
|
||||
40960.0
|
||||
#t
|
||||
@@ -375,7 +364,7 @@
|
||||
)
|
||||
)
|
||||
(set! (-> self sound)
|
||||
(new 'process 'ambient-sound (static-sound-spec "zoom-teleport" :fo-max 30) (-> self root-override trans))
|
||||
(new 'process 'ambient-sound (static-sound-spec "zoom-teleport" :fo-max 30) (-> self root trans))
|
||||
)
|
||||
(set! (-> self draw light-index) (the-as uint 30))
|
||||
(if (handle->process arg2)
|
||||
@@ -496,11 +485,11 @@ This commonly includes things such as:
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defbehavior mech-target-init mech ((arg0 vector) (arg1 quaternion) (arg2 entity-actor))
|
||||
(process-entity-set! self arg2)
|
||||
(set! (-> self root-override) (the-as collide-shape-moving (new 'process 'trsqv)))
|
||||
(set! (-> self root-override trans quad) (-> arg0 quad))
|
||||
(quaternion-copy! (-> self root-override quat) arg1)
|
||||
(set! (-> self root-override scale x) 0.0)
|
||||
(set! (-> self root-override scale y) 0.0)
|
||||
(set! (-> self root) (the-as collide-shape-moving (new 'process 'trsqv)))
|
||||
(set! (-> self root trans quad) (-> arg0 quad))
|
||||
(quaternion-copy! (-> self root quat) arg1)
|
||||
(set! (-> self root scale x) 0.0)
|
||||
(set! (-> self root scale y) 0.0)
|
||||
(initialize-skeleton
|
||||
self
|
||||
(the-as skeleton-group (art-group-get-by-name *level* "skel-mech-target" (the-as (pointer uint32) #f)))
|
||||
|
||||
@@ -401,7 +401,7 @@
|
||||
(a0-12 *sp-particle-system-2d*)
|
||||
(a2-3 *launch-matrix*)
|
||||
)
|
||||
(set! (-> a2-3 trans quad) (-> self root-override trans quad))
|
||||
(set! (-> a2-3 trans quad) (-> self root trans quad))
|
||||
(t9-6 a0-12 s5-2 a2-3 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
||||
)
|
||||
)
|
||||
@@ -415,7 +415,7 @@
|
||||
(a0-15 *sp-particle-system-2d*)
|
||||
(a2-4 *launch-matrix*)
|
||||
)
|
||||
(set! (-> a2-4 trans quad) (-> self root-override trans quad))
|
||||
(set! (-> a2-4 trans quad) (-> self root trans quad))
|
||||
(t9-8 a0-15 s5-3 a2-4 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
||||
)
|
||||
)
|
||||
@@ -1182,19 +1182,14 @@
|
||||
(send-event
|
||||
(ppointer->process (-> self manipy))
|
||||
'trans-hook
|
||||
(lambda :behavior target
|
||||
(lambda :behavior manipy
|
||||
()
|
||||
(let* ((a0-0 (-> self parent))
|
||||
(v1-0 (if a0-0
|
||||
(-> (the-as (pointer target) a0-0) 0 self-override)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> self control trans quad) (-> v1-0 mech mech-trans quad))
|
||||
(let ((v1-0 (ppointer->process (the-as (pointer target) (-> self parent)))))
|
||||
(set! (-> self root trans quad) (-> v1-0 mech mech-trans quad))
|
||||
(let ((a0-4 (-> v1-0 mech mech-quat quad)))
|
||||
(set! (-> self control quat quad) a0-4)
|
||||
(set! (-> self root quat quad) a0-4)
|
||||
)
|
||||
(set! (-> self control scale quad) (-> v1-0 mech mech-scale quad))
|
||||
(set! (-> self root scale quad) (-> v1-0 mech mech-scale quad))
|
||||
(set! (-> self draw light-index) (-> v1-0 draw light-index))
|
||||
(let ((a0-10 (-> v1-0 draw color-mult quad)))
|
||||
(set! (-> self draw color-mult quad) a0-10)
|
||||
@@ -1207,7 +1202,7 @@
|
||||
)
|
||||
)
|
||||
(dotimes (gp-0 2)
|
||||
(enable-set! (-> self mech-ik gp-0) #t)
|
||||
(target-set! (-> self joint gp-0) (the-as vector #t))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -67,12 +67,7 @@
|
||||
("board-jump"
|
||||
,(lambda :behavior sidekick
|
||||
((arg0 object) (arg1 vector) (arg2 object))
|
||||
(let* ((v1-0 (-> self parent-override))
|
||||
(gp-0 (if v1-0
|
||||
(-> v1-0 0 self-override)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((gp-0 (ppointer->process (-> self parent))))
|
||||
(when (>= (- (current-time) (-> self special-anim-time)) (seconds 1))
|
||||
(set! (-> self special-anim-interp) 0.0)
|
||||
(set! (-> self special-anim-frame) 0.0)
|
||||
@@ -184,9 +179,7 @@
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param0)
|
||||
(the-as (function cspace transformq none) cspace<-cspace+transformq!)
|
||||
)
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param1)
|
||||
(the-as basic (-> self parent-override 0 node-list data))
|
||||
)
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param1) (the-as basic (-> self parent 0 node-list data)))
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param2) (the-as basic (-> self offset)))
|
||||
)
|
||||
(('copy-parent)
|
||||
@@ -194,9 +187,7 @@
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param0)
|
||||
(the-as (function cspace transformq none) cspace<-cspace!)
|
||||
)
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param1)
|
||||
(the-as basic (-> self parent-override 0 node-list data))
|
||||
)
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param1) (the-as basic (-> self parent 0 node-list data)))
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param2) #f)
|
||||
)
|
||||
(('root)
|
||||
@@ -204,9 +195,7 @@
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param0)
|
||||
(the-as (function cspace transformq none) cspace<-cspace-normalized!)
|
||||
)
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param1)
|
||||
(the-as basic (-> self parent-override 0 node-list data))
|
||||
)
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param1) (the-as basic (-> self parent 0 node-list data)))
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param2) #f)
|
||||
)
|
||||
(('indax)
|
||||
@@ -214,11 +203,9 @@
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param0)
|
||||
(the-as (function cspace transformq none) cspace<-transformq+trans!)
|
||||
)
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param1)
|
||||
(the-as basic (-> self parent-override 0 control trans))
|
||||
)
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param1) (the-as basic (-> self parent 0 control trans)))
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param2)
|
||||
(the-as basic (-> self parent-override 0 control cspace-offset))
|
||||
(the-as basic (-> self parent 0 control cspace-offset))
|
||||
)
|
||||
)
|
||||
(('board)
|
||||
@@ -226,9 +213,7 @@
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param0)
|
||||
(the-as (function cspace transformq none) cspace<-cspace-normalized!)
|
||||
)
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param1)
|
||||
(the-as basic (-> self parent-override 0 node-list data 25))
|
||||
)
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param1) (the-as basic (-> self parent 0 node-list data 25)))
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param2) #f)
|
||||
)
|
||||
(else
|
||||
@@ -237,7 +222,7 @@
|
||||
(the-as (function cspace transformq none) cspace<-cspace+transformq!)
|
||||
)
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param1)
|
||||
(the-as basic (-> self parent-override 0 control sidekick-root parent))
|
||||
(the-as basic (-> self parent 0 control sidekick-root parent))
|
||||
)
|
||||
(set! (-> (the-as (inline-array cspace) v0-0) 0 param2) (the-as basic (-> self offset)))
|
||||
)
|
||||
@@ -266,144 +251,126 @@
|
||||
)
|
||||
:code (the-as (function none :behavior sidekick) looping-code)
|
||||
:post (behavior ()
|
||||
(let ((v1-0 (-> self parent-override)))
|
||||
(when (not (and (-> (if v1-0
|
||||
(-> v1-0 0 self-override)
|
||||
)
|
||||
next-state
|
||||
)
|
||||
(let ((v1-4 (-> self parent-override)))
|
||||
(= (-> (if v1-4
|
||||
(-> v1-4 0 self-override)
|
||||
)
|
||||
next-state
|
||||
name
|
||||
)
|
||||
'process-drawable-art-error
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(quaternion-rotate-y!
|
||||
(-> self root quat)
|
||||
(-> self parent-override 0 control quat)
|
||||
(-> self parent-override 0 upper-body twist z)
|
||||
)
|
||||
(set! (-> self anim-seed) (-> self parent-override 0 anim-seed))
|
||||
(set! (-> self draw status) (-> self parent-override 0 draw status))
|
||||
(logclear! (-> self draw status) (draw-control-status no-draw-bounds2))
|
||||
(let ((gp-0 0))
|
||||
(cond
|
||||
((and (not (logtest? (-> self parent-override 0 focus-status) (focus-status edge-grab)))
|
||||
(> (-> self parent-override 0 skel float-channels) 0)
|
||||
)
|
||||
(let ((gp-1 (-> self skel)))
|
||||
(joint-control-copy! gp-1 (-> self parent-override 0 skel))
|
||||
(set! (-> gp-1 root-channel)
|
||||
(the-as (inline-array joint-control-channel) (-> gp-1 channel (-> gp-1 active-channels)))
|
||||
)
|
||||
(dotimes (s5-0 (the-as int (-> self parent-override 0 skel float-channels)))
|
||||
(let ((s4-0 (-> gp-1 channel (+ s5-0 (-> gp-1 active-channels)))))
|
||||
(mem-copy!
|
||||
(the-as pointer s4-0)
|
||||
(the-as
|
||||
pointer
|
||||
(-> self parent-override 0 skel channel (+ s5-0 (-> self parent-override 0 skel active-channels)))
|
||||
)
|
||||
64
|
||||
)
|
||||
(set! (-> s4-0 frame-interp 0) (-> s4-0 frame-interp 1))
|
||||
(set! (-> s4-0 command) (joint-control-command blend))
|
||||
)
|
||||
)
|
||||
(dotimes (v1-58 (the-as int (-> gp-1 allocated-length)))
|
||||
(set! (-> gp-1 channel v1-58 parent) gp-1)
|
||||
)
|
||||
(+! (-> gp-1 active-channels) (-> self parent-override 0 skel float-channels))
|
||||
(set! (-> gp-1 float-channels) (the-as uint 0))
|
||||
(when (not (and (-> (ppointer->process (-> self parent)) next-state)
|
||||
(= (-> (ppointer->process (-> self parent)) next-state name) 'process-drawable-art-error)
|
||||
)
|
||||
)
|
||||
(set! gp-0 1)
|
||||
)
|
||||
(else
|
||||
(joint-control-copy! (-> self skel) (-> self parent-override 0 skel))
|
||||
)
|
||||
)
|
||||
(joint-control-remap!
|
||||
(-> self skel)
|
||||
(-> self draw art-group)
|
||||
(-> self parent-override 0 draw art-group)
|
||||
*sidekick-remap*
|
||||
(the-as int (-> self anim-seed))
|
||||
""
|
||||
)
|
||||
(cond
|
||||
((zero? gp-0)
|
||||
(set! (-> self skel effect channel-offset) (-> self parent-override 0 skel effect channel-offset))
|
||||
)
|
||||
((= gp-0 1)
|
||||
(set! (-> self skel effect channel-offset) 0)
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-85 (-> self parent-override 0 draw color-mult quad)))
|
||||
(set! (-> self draw color-mult quad) v1-85)
|
||||
)
|
||||
(let ((v1-89 (-> self parent-override 0 draw color-emissive quad)))
|
||||
(set! (-> self draw color-emissive quad) v1-89)
|
||||
)
|
||||
(set! (-> self draw force-fade) (-> self parent-override 0 draw force-fade))
|
||||
(set! (-> self draw death-vertex-skip) (-> self parent-override 0 draw death-vertex-skip))
|
||||
(set! (-> self draw death-effect) (-> self parent-override 0 draw death-effect))
|
||||
(set! (-> self draw death-timer) (-> self parent-override 0 draw death-timer))
|
||||
(set! (-> self draw death-timer-org) (-> self parent-override 0 draw death-timer-org))
|
||||
(set! (-> self draw death-draw-overlap) (-> self parent-override 0 draw death-draw-overlap))
|
||||
(quaternion-copy! (-> self offset quat) (-> self root quat))
|
||||
(let ((f0-3 (* (-> self parent-override 0 darkjak-interp) (-> self parent-override 0 darkjak-giant-interp))))
|
||||
(set! (-> self offset trans x) (* 286.72 f0-3))
|
||||
(set! (-> self offset trans y) (* 204.8 f0-3))
|
||||
(set! (-> self offset trans z) (* 409.6 f0-3))
|
||||
)
|
||||
(update-anim-data (-> self skel))
|
||||
(when *debug-segment*
|
||||
(let ((gp-2 (-> *display* frames (-> *display* on-screen) profile-array data 0))
|
||||
(v1-132 'target-post)
|
||||
(s5-1 *profile-target-post-color*)
|
||||
(quaternion-rotate-y!
|
||||
(-> self root quat)
|
||||
(-> self parent 0 control quat)
|
||||
(-> self parent 0 upper-body twist z)
|
||||
)
|
||||
(set! (-> self anim-seed) (-> self parent 0 anim-seed))
|
||||
(set! (-> self draw status) (-> self parent 0 draw status))
|
||||
(logclear! (-> self draw status) (draw-control-status no-draw-bounds2))
|
||||
(let ((gp-0 0))
|
||||
(cond
|
||||
((and (not (logtest? (-> self parent 0 focus-status) (focus-status edge-grab)))
|
||||
(> (-> self parent 0 skel float-channels) 0)
|
||||
)
|
||||
(when (and *dproc* *debug-segment*)
|
||||
(let ((s4-1 (-> gp-2 data (-> gp-2 count))))
|
||||
(let ((s3-0 (-> gp-2 base-time)))
|
||||
(set! (-> s4-1 name) v1-132)
|
||||
(set! (-> s4-1 start-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s3-0))))
|
||||
)
|
||||
(set! (-> s4-1 depth) (the-as uint (-> gp-2 depth)))
|
||||
(set! (-> s4-1 color) s5-1)
|
||||
(set! (-> gp-2 segment (-> gp-2 depth)) s4-1)
|
||||
)
|
||||
(+! (-> gp-2 count) 1)
|
||||
(+! (-> gp-2 depth) 1)
|
||||
(set! (-> gp-2 max-depth) (max (-> gp-2 max-depth) (-> gp-2 depth)))
|
||||
)
|
||||
(let ((gp-1 (-> self skel)))
|
||||
(joint-control-copy! gp-1 (-> self parent 0 skel))
|
||||
(set! (-> gp-1 root-channel)
|
||||
(the-as (inline-array joint-control-channel) (-> gp-1 channel (-> gp-1 active-channels)))
|
||||
)
|
||||
(dotimes (s5-0 (the-as int (-> self parent 0 skel float-channels)))
|
||||
(let ((s4-0 (-> gp-1 channel (+ s5-0 (-> gp-1 active-channels)))))
|
||||
(mem-copy!
|
||||
(the-as pointer s4-0)
|
||||
(the-as pointer (-> self parent 0 skel channel (+ s5-0 (-> self parent 0 skel active-channels))))
|
||||
64
|
||||
)
|
||||
(set! (-> s4-0 frame-interp 0) (-> s4-0 frame-interp 1))
|
||||
(set! (-> s4-0 command) (joint-control-command blend))
|
||||
)
|
||||
)
|
||||
(dotimes (v1-58 (the-as int (-> gp-1 allocated-length)))
|
||||
(set! (-> gp-1 channel v1-58 parent) gp-1)
|
||||
)
|
||||
(+! (-> gp-1 active-channels) (-> self parent 0 skel float-channels))
|
||||
(set! (-> gp-1 float-channels) (the-as uint 0))
|
||||
)
|
||||
(set! gp-0 1)
|
||||
)
|
||||
(else
|
||||
(joint-control-copy! (-> self skel) (-> self parent 0 skel))
|
||||
)
|
||||
0
|
||||
)
|
||||
(do-joint-math (-> self draw) (-> self node-list) (-> self skel))
|
||||
(when *debug-segment*
|
||||
(let ((gp-3 (-> *display* frames (-> *display* on-screen) profile-array data 0)))
|
||||
(when (and *dproc* *debug-segment*)
|
||||
(let* ((v1-158 (+ (-> gp-3 depth) -1))
|
||||
(s5-2 (-> gp-3 segment v1-158))
|
||||
(s4-2 (-> gp-3 base-time))
|
||||
)
|
||||
(when (>= v1-158 0)
|
||||
(set! (-> s5-2 end-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s4-2))))
|
||||
(+! (-> gp-3 depth) -1)
|
||||
)
|
||||
(joint-control-remap!
|
||||
(-> self skel)
|
||||
(-> self draw art-group)
|
||||
(-> self parent 0 draw art-group)
|
||||
*sidekick-remap*
|
||||
(the-as int (-> self anim-seed))
|
||||
""
|
||||
)
|
||||
(cond
|
||||
((zero? gp-0)
|
||||
(set! (-> self skel effect channel-offset) (-> self parent 0 skel effect channel-offset))
|
||||
)
|
||||
((= gp-0 1)
|
||||
(set! (-> self skel effect channel-offset) 0)
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-85 (-> self parent 0 draw color-mult quad)))
|
||||
(set! (-> self draw color-mult quad) v1-85)
|
||||
)
|
||||
(let ((v1-89 (-> self parent 0 draw color-emissive quad)))
|
||||
(set! (-> self draw color-emissive quad) v1-89)
|
||||
)
|
||||
(set! (-> self draw force-fade) (-> self parent 0 draw force-fade))
|
||||
(set! (-> self draw death-vertex-skip) (-> self parent 0 draw death-vertex-skip))
|
||||
(set! (-> self draw death-effect) (-> self parent 0 draw death-effect))
|
||||
(set! (-> self draw death-timer) (-> self parent 0 draw death-timer))
|
||||
(set! (-> self draw death-timer-org) (-> self parent 0 draw death-timer-org))
|
||||
(set! (-> self draw death-draw-overlap) (-> self parent 0 draw death-draw-overlap))
|
||||
(quaternion-copy! (-> self offset quat) (-> self root quat))
|
||||
(let ((f0-3 (* (-> self parent 0 darkjak-interp) (-> self parent 0 darkjak-giant-interp))))
|
||||
(set! (-> self offset trans x) (* 286.72 f0-3))
|
||||
(set! (-> self offset trans y) (* 204.8 f0-3))
|
||||
(set! (-> self offset trans z) (* 409.6 f0-3))
|
||||
)
|
||||
(update-anim-data (-> self skel))
|
||||
(when *debug-segment*
|
||||
(let ((gp-2 (-> *display* frames (-> *display* on-screen) profile-array data 0))
|
||||
(v1-132 'target-post)
|
||||
(s5-1 *profile-target-post-color*)
|
||||
)
|
||||
(when (and *dproc* *debug-segment*)
|
||||
(let ((s4-1 (-> gp-2 data (-> gp-2 count))))
|
||||
(let ((s3-0 (-> gp-2 base-time)))
|
||||
(set! (-> s4-1 name) v1-132)
|
||||
(set! (-> s4-1 start-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s3-0))))
|
||||
)
|
||||
(set! (-> s4-1 depth) (the-as uint (-> gp-2 depth)))
|
||||
(set! (-> s4-1 color) s5-1)
|
||||
(set! (-> gp-2 segment (-> gp-2 depth)) s4-1)
|
||||
)
|
||||
(+! (-> gp-2 count) 1)
|
||||
(+! (-> gp-2 depth) 1)
|
||||
(set! (-> gp-2 max-depth) (max (-> gp-2 max-depth) (-> gp-2 depth)))
|
||||
)
|
||||
)
|
||||
0
|
||||
)
|
||||
(do-joint-math (-> self draw) (-> self node-list) (-> self skel))
|
||||
(when *debug-segment*
|
||||
(let ((gp-3 (-> *display* frames (-> *display* on-screen) profile-array data 0)))
|
||||
(when (and *dproc* *debug-segment*)
|
||||
(let* ((v1-158 (+ (-> gp-3 depth) -1))
|
||||
(s5-2 (-> gp-3 segment v1-158))
|
||||
(s4-2 (-> gp-3 base-time))
|
||||
)
|
||||
(when (>= v1-158 0)
|
||||
(set! (-> s5-2 end-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s4-2))))
|
||||
(+! (-> gp-3 depth) -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
(when *display-sidekick-stats*
|
||||
@@ -412,7 +379,7 @@
|
||||
(add-debug-sphere
|
||||
*display-sidekick-stats*
|
||||
(bucket-id debug-no-zbuf1)
|
||||
(-> self parent-override 0 control sidekick-root parent bone transform trans)
|
||||
(-> self parent 0 control sidekick-root parent bone transform trans)
|
||||
(meters 0.1)
|
||||
(new 'static 'rgba :g #xff :a #x80)
|
||||
)
|
||||
@@ -438,12 +405,12 @@
|
||||
)
|
||||
)
|
||||
(set! (-> self draw shadow)
|
||||
(the-as shadow-geo (if (or (and (movie?) (-> self shadow-in-movie?))
|
||||
(logtest? (focus-status indax) (-> self parent-override 0 focus-status))
|
||||
)
|
||||
(-> self draw art-group data 3)
|
||||
)
|
||||
)
|
||||
(the-as
|
||||
shadow-geo
|
||||
(if (or (and (movie?) (-> self shadow-in-movie?)) (logtest? (focus-status indax) (-> self parent 0 focus-status)))
|
||||
(-> self draw art-group data 3)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((a0-53 (-> self skel effect)))
|
||||
(if a0-53
|
||||
@@ -513,7 +480,7 @@
|
||||
(set! (-> self draw light-index) (the-as uint 30))
|
||||
(let ((v1-14 (-> self node-list data)))
|
||||
(set! (-> v1-14 0 param0) (the-as (function cspace transformq none) cspace<-cspace+transformq!))
|
||||
(set! (-> v1-14 0 param1) (the-as basic (-> self parent-override 0 control sidekick-root parent)))
|
||||
(set! (-> v1-14 0 param1) (the-as basic (-> self parent 0 control sidekick-root parent)))
|
||||
(set! (-> v1-14 0 param2) (the-as basic (-> self offset)))
|
||||
)
|
||||
(set! (-> self shadow-in-movie?) #t)
|
||||
|
||||
@@ -58,9 +58,7 @@
|
||||
)
|
||||
)
|
||||
(or (and (not (and (focus-test? self dark) (nonzero? (-> self darkjak))))
|
||||
(and (>= (- (current-time) (-> (the-as fact-info-target (-> self fact-override)) darkjak-start-time))
|
||||
(seconds 0.05)
|
||||
)
|
||||
(and (>= (- (current-time) (-> (the-as fact-info-target (-> self fact)) darkjak-start-time)) (seconds 0.05))
|
||||
(>= (-> self game eco-pill-dark) (-> *FACT-bank* eco-pill-dark-max-default))
|
||||
)
|
||||
)
|
||||
@@ -113,8 +111,8 @@
|
||||
)
|
||||
(target-danger-set! (-> self control danger-mode) #f)
|
||||
(update-transforms (-> self control))
|
||||
(if (and (or (>= (- (current-time) (-> (the-as fact-info-target (-> self fact-override)) darkjak-start-time))
|
||||
(-> (the-as fact-info-target (-> self fact-override)) darkjak-effect-time)
|
||||
(if (and (or (>= (- (current-time) (-> (the-as fact-info-target (-> self fact)) darkjak-start-time))
|
||||
(-> (the-as fact-info-target (-> self fact)) darkjak-effect-time)
|
||||
)
|
||||
(not (-> *setting-control* user-current darkjak))
|
||||
)
|
||||
@@ -288,7 +286,7 @@
|
||||
(persist-with-delay *setting-control* 'bg-a-speed (seconds 3) 'bg-a-speed 'abs 0.5 0)
|
||||
(if (not (and (-> self next-state) (= (-> self next-state name) 'target-darkjak-get-off)))
|
||||
(pickup-collectable!
|
||||
(-> self fact-override)
|
||||
(-> self fact)
|
||||
(pickup-type eco-pill-dark)
|
||||
(- (-> *FACT-bank* eco-pill-dark-max-default))
|
||||
(the-as handle #f)
|
||||
@@ -319,8 +317,8 @@
|
||||
(set! (-> self darkjak-giant-interp) 1.0)
|
||||
(set-setting! 'sound-flava #f 30.0 4)
|
||||
(set! (-> self focus-status) (logior (focus-status dark) (-> self focus-status)))
|
||||
(set! (-> (the-as fact-info-target (-> self fact-override)) darkjak-start-time) (current-time))
|
||||
(set! (-> (the-as fact-info-target (-> self fact-override)) darkjak-effect-time) (seconds 20))
|
||||
(set! (-> (the-as fact-info-target (-> self fact)) darkjak-start-time) (current-time))
|
||||
(set! (-> (the-as fact-info-target (-> self fact)) darkjak-effect-time) (seconds 20))
|
||||
(if (logtest? (-> self darkjak stage) 16)
|
||||
(logior! (-> self state-flags) (state-flags sf4))
|
||||
(logclear! (-> self state-flags) (state-flags sf4))
|
||||
|
||||
@@ -666,7 +666,7 @@
|
||||
(case (-> arg4 angle)
|
||||
(('jump 'up 'up-forward)
|
||||
(when (and (not (focus-test? self flut pilot mech indax))
|
||||
(not (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact-override health))))
|
||||
(not (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))))
|
||||
)
|
||||
(if (and (cpad-pressed? (-> self control cpad number) circle) (can-feet? #f))
|
||||
(go target-attack-air #f)
|
||||
@@ -954,7 +954,7 @@
|
||||
(when (= *cheat-mode* 'debug)
|
||||
(when (and (not *pause-lock*) (cpad-hold? (-> self control cpad number) r2))
|
||||
(set! (-> self control time-of-last-debug-heal) (current-time))
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) 100.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) 100.0 (the-as handle #f))
|
||||
(go target-stance)
|
||||
)
|
||||
)
|
||||
@@ -995,8 +995,8 @@
|
||||
)
|
||||
(when (and (focus-test? self dark) (nonzero? (-> self darkjak)))
|
||||
(set! (-> sv-32 damage) (fmax 1.0 (ceil (* 0.5 (-> sv-32 damage)))))
|
||||
(if (< (- (-> self fact-override health) (-> sv-32 damage)) 1.0)
|
||||
(set! (-> sv-32 damage) (+ -1.0 (-> self fact-override health)))
|
||||
(if (< (- (-> self fact health) (-> sv-32 damage)) 1.0)
|
||||
(set! (-> sv-32 damage) (+ -1.0 (-> self fact health)))
|
||||
)
|
||||
)
|
||||
(set! (-> sv-36 quad) (-> sv-32 vector quad))
|
||||
@@ -1038,13 +1038,13 @@
|
||||
(go target-stance)
|
||||
)
|
||||
(else
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(go target-death (-> sv-32 mode))
|
||||
)
|
||||
)
|
||||
)
|
||||
(('lava 'melt)
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(let ((gp-2 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-2
|
||||
(let ((t9-15 (method-of-type part-tracker activate)))
|
||||
@@ -1095,23 +1095,23 @@
|
||||
'centipede
|
||||
'big-explosion
|
||||
)
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(if (= (-> self game mode) 'play)
|
||||
(go target-death (-> sv-32 mode))
|
||||
)
|
||||
)
|
||||
(('explode)
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) (- (-> sv-32 damage)) (the-as handle #f))
|
||||
(if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact-override health)))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) (- (-> sv-32 damage)) (the-as handle #f))
|
||||
(if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health)))
|
||||
(go target-death (-> sv-32 mode))
|
||||
)
|
||||
)
|
||||
(('smush)
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) (- (-> sv-32 damage)) (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) (- (-> sv-32 damage)) (the-as handle #f))
|
||||
(go target-hit-ground-hard (-> *TARGET-bank* fall-far))
|
||||
)
|
||||
(('shock 'shock-red 'shock-green)
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) (- (-> sv-32 damage)) (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) (- (-> sv-32 damage)) (the-as handle #f))
|
||||
(let* ((v1-123 (-> sv-32 mode))
|
||||
(gp-3 (cond
|
||||
((= v1-123 'shock-red)
|
||||
@@ -1236,7 +1236,7 @@
|
||||
)
|
||||
)
|
||||
(else
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) (- (-> sv-32 damage)) (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) (- (-> sv-32 damage)) (the-as handle #f))
|
||||
)
|
||||
)
|
||||
(target-hit-effect sv-32)
|
||||
@@ -1249,17 +1249,17 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and (= (-> self game mode) 'play) (and (>= 0.0 (-> self fact-override health)) (using-gun? self)))
|
||||
(when (and (= (-> self game mode) 'play) (and (>= 0.0 (-> self fact health)) (using-gun? self)))
|
||||
(send-event (ppointer->process (-> self gun gun)) 'die)
|
||||
(target-gun-end-mode #f)
|
||||
)
|
||||
(set! (-> self control mod-surface) *smack-mods*)
|
||||
(target-hit-setup-anim sv-32)
|
||||
(target-hit-move sv-32 (target-hit-orient sv-32 sv-36) target-falling-anim-trans 1.0)
|
||||
(if (and (and (focus-test? self dark) (nonzero? (-> self darkjak))) (>= 1.0 (-> self fact-override health)))
|
||||
(if (and (and (focus-test? self dark) (nonzero? (-> self darkjak))) (>= 1.0 (-> self fact health)))
|
||||
(go target-darkjak-get-off)
|
||||
)
|
||||
(if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact-override health)))
|
||||
(if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health)))
|
||||
(go target-death (-> sv-32 mode))
|
||||
)
|
||||
(go target-hit-ground #f)
|
||||
|
||||
@@ -2324,7 +2324,7 @@
|
||||
(logtest? (state-flags sf16) (-> self state-flags))
|
||||
(logtest? (-> self game secrets) (game-secrets endless-ammo))
|
||||
)
|
||||
(pickup-collectable! (-> self fact-override) (the-as pickup-type a1-0) -1.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (the-as pickup-type a1-0) -1.0 (the-as handle #f))
|
||||
(case (-> gp-0 gun-type)
|
||||
(((pickup-type eco-blue))
|
||||
(cond
|
||||
|
||||
@@ -179,9 +179,9 @@
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype target (process-focusable)
|
||||
((self-override target :offset 32)
|
||||
((self target :override)
|
||||
(fact fact-info-target :override)
|
||||
(control control-info :offset 128)
|
||||
(fact-override fact-info-target :offset 160)
|
||||
(skel2 joint-control :offset-assert 204)
|
||||
(shadow-backup shadow-geo :offset-assert 208)
|
||||
(target-flags uint32 :offset 188)
|
||||
@@ -417,7 +417,7 @@
|
||||
(define-perm *target* target #f)
|
||||
|
||||
(deftype sidekick (process-drawable)
|
||||
((parent-override (pointer target) :offset 16)
|
||||
((parent (pointer target) :override)
|
||||
(control control-info :offset 128)
|
||||
(anim-seed uint64 :offset 208)
|
||||
(shadow-in-movie? symbol :offset-assert 216)
|
||||
|
||||
@@ -74,10 +74,10 @@
|
||||
((or (logtest? (state-flags sf2 tinvul1 tinvul2) (-> self state-flags))
|
||||
(logtest? (-> self game secrets) (game-secrets invulnerable))
|
||||
(and (logtest? (-> self state-flags) (state-flags sf4)) (not (attack-mode-is-invinc s4-0)))
|
||||
(< 0.0 (-> (the-as fact-info-target (-> self fact-override)) shield-level))
|
||||
(< 0.0 (-> (the-as fact-info-target (-> self fact)) shield-level))
|
||||
(and (= s4-0 'darkeco)
|
||||
(and (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
|
||||
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
|
||||
(and (and (= (-> (the-as fact-info-target (-> self fact)) eco-type) 2)
|
||||
(>= (-> (the-as fact-info-target (-> self fact)) eco-level) 1.0)
|
||||
)
|
||||
(or (logtest? (-> self state-flags) (state-flags sf15)) (focus-test? self dangerous))
|
||||
)
|
||||
@@ -124,12 +124,12 @@
|
||||
((and (logtest? (-> self attack-info-rec mask) (attack-info-mask mode))
|
||||
(= (-> self attack-info-rec mode) 'damage)
|
||||
(not (and (= (-> self game mode) 'play)
|
||||
(>= 0.0 (- (-> (the-as fact-info-target (-> self fact-override)) health) (-> self attack-info-rec damage)))
|
||||
(>= 0.0 (- (-> (the-as fact-info-target (-> self fact)) health) (-> self attack-info-rec damage)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(pickup-collectable!
|
||||
(-> self fact-override)
|
||||
(-> self fact)
|
||||
(pickup-type health)
|
||||
(if (logtest? (attack-info-mask damage) (-> self attack-info-rec mask))
|
||||
(- (-> self attack-info-rec damage))
|
||||
@@ -191,7 +191,7 @@
|
||||
(else
|
||||
(logior! (-> self focus-status) (focus-status ignore hit))
|
||||
(when (and (= (-> self game mode) 'play)
|
||||
(and (or (and (>= 0.0 (- (-> (the-as fact-info-target (-> self fact-override)) health) (-> self attack-info-rec damage)))
|
||||
(and (or (and (>= 0.0 (- (-> (the-as fact-info-target (-> self fact)) health) (-> self attack-info-rec damage)))
|
||||
(not (and (focus-test? self dark) (nonzero? (-> self darkjak))))
|
||||
)
|
||||
(attack-mode-is-invinc s4-0)
|
||||
@@ -666,8 +666,8 @@
|
||||
(let ((s4-0 (-> arg3 param 0))
|
||||
(f28-0 (the-as float (-> arg3 param 1)))
|
||||
)
|
||||
(if (!= (pickup-collectable! (-> self fact-override) (the-as pickup-type s4-0) 0.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact-override) (the-as pickup-type s4-0) f28-0 (process->handle arg0))
|
||||
(if (!= (pickup-collectable! (-> self fact) (the-as pickup-type s4-0) 0.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (the-as pickup-type s4-0) f28-0 (process->handle arg0))
|
||||
)
|
||||
#t
|
||||
'full
|
||||
@@ -677,11 +677,11 @@
|
||||
)
|
||||
(('test-pickup)
|
||||
(let ((a1-6 (-> arg3 param 0)))
|
||||
(pickup-collectable! (-> self fact-override) (the-as pickup-type a1-6) 0.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (the-as pickup-type a1-6) 0.0 (the-as handle #f))
|
||||
)
|
||||
)
|
||||
(('reset-pickup)
|
||||
(the-as object (reset! (-> self fact-override) (the-as symbol (-> arg3 param 0))))
|
||||
(the-as object (reset! (-> self fact) (the-as symbol (-> arg3 param 0))))
|
||||
)
|
||||
(('reset-collide)
|
||||
(cond
|
||||
@@ -718,13 +718,9 @@
|
||||
(let ((s4-1 (-> s5-1 info)))
|
||||
(let ((v1-40 (-> s4-1 buzzer)))
|
||||
(if (nonzero? v1-40)
|
||||
(set! (-> self fact-override buzzer) 0.0)
|
||||
(set! (-> self fact-override buzzer) (pickup-collectable!
|
||||
(-> self fact-override)
|
||||
(pickup-type buzzer)
|
||||
(the float (logior -65536 v1-40))
|
||||
(the-as handle #f)
|
||||
)
|
||||
(set! (-> self fact buzzer) 0.0)
|
||||
(set! (-> self fact buzzer)
|
||||
(pickup-collectable! (-> self fact) (pickup-type buzzer) (the float (logior -65536 v1-40)) (the-as handle #f))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -769,12 +765,12 @@
|
||||
(('query)
|
||||
(case (-> arg3 param 0)
|
||||
(('powerup)
|
||||
(and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) (-> arg3 param 1))
|
||||
(< 0.0 (-> (the-as fact-info-target (-> self fact-override)) eco-level))
|
||||
(and (= (-> (the-as fact-info-target (-> self fact)) eco-type) (-> arg3 param 1))
|
||||
(< 0.0 (-> (the-as fact-info-target (-> self fact)) eco-level))
|
||||
)
|
||||
)
|
||||
(('pickup)
|
||||
(pickup-collectable! (-> self fact-override) (the-as pickup-type (-> arg3 param 1)) 0.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (the-as pickup-type (-> arg3 param 1)) 0.0 (the-as handle #f))
|
||||
)
|
||||
(('ground-height)
|
||||
(target-height-above-ground)
|
||||
@@ -934,20 +930,20 @@
|
||||
)
|
||||
(('touched)
|
||||
(cond
|
||||
((< 0.0 (-> (the-as fact-info-target (-> self fact-override)) shield-level))
|
||||
((< 0.0 (-> (the-as fact-info-target (-> self fact)) shield-level))
|
||||
(let ((s4-3 (-> self control penetrate-using)))
|
||||
(set! (-> self control penetrate-using) (penetrate touch shield))
|
||||
(let* ((v1-193 (-> self game))
|
||||
(a0-161 (+ (-> v1-193 attack-id) 1))
|
||||
)
|
||||
(set! (-> v1-193 attack-id) a0-161)
|
||||
(set! (-> self fact-override shield-attack-id) a0-161)
|
||||
(set! (-> self fact shield-attack-id) a0-161)
|
||||
)
|
||||
(set! v0-0 (target-send-attack
|
||||
arg0
|
||||
'shield
|
||||
(the-as touching-shapes-entry (-> arg3 param 0))
|
||||
(the-as int (-> (the-as fact-info-target (-> self fact-override)) shield-attack-id))
|
||||
(the-as int (-> (the-as fact-info-target (-> self fact)) shield-attack-id))
|
||||
0
|
||||
(-> self control penetrate-using)
|
||||
)
|
||||
@@ -1257,8 +1253,8 @@
|
||||
)
|
||||
((logtest? (-> arg3 param 2) 128)
|
||||
(set! (-> self darkjak stage) (logand -2 (-> self darkjak stage)))
|
||||
(set! v0-0 (+ (- (seconds 20) (-> self fact-override darkjak-start-time)) (current-time)))
|
||||
(set! (-> self fact-override darkjak-effect-time) (the-as time-frame v0-0))
|
||||
(set! v0-0 (+ (- (seconds 20) (-> self fact darkjak-start-time)) (current-time)))
|
||||
(set! (-> self fact darkjak-effect-time) (the-as time-frame v0-0))
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
@@ -1395,14 +1391,14 @@
|
||||
(case arg2
|
||||
(('touched)
|
||||
(cond
|
||||
((< 0.0 (-> (the-as fact-info-target (-> self fact-override)) shield-level))
|
||||
((< 0.0 (-> (the-as fact-info-target (-> self fact)) shield-level))
|
||||
(let ((s4-1 (-> self control penetrate-using)))
|
||||
(set! (-> self control penetrate-using) (penetrate touch shield))
|
||||
(let ((v0-0 (the-as object (target-send-attack
|
||||
arg0
|
||||
'shield
|
||||
(the-as touching-shapes-entry (-> arg3 param 0))
|
||||
(the-as int (-> (the-as fact-info-target (-> self fact-override)) shield-attack-id))
|
||||
(the-as int (-> (the-as fact-info-target (-> self fact)) shield-attack-id))
|
||||
0
|
||||
(-> self control penetrate-using)
|
||||
)
|
||||
|
||||
@@ -2526,7 +2526,7 @@
|
||||
)
|
||||
(-> s5-0 end-pos)
|
||||
)
|
||||
(-> sv-752 ppointer-override)
|
||||
(-> sv-752 ppointer)
|
||||
)
|
||||
)
|
||||
(when sv-624
|
||||
@@ -2574,7 +2574,7 @@
|
||||
(t9-5 s0-1 arg1 (symbol->string (-> lightning-tracker symbol)) (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process s0-1 lightning-tracker-init arg2 0 arg3 arg0 s1-0 sv-16)
|
||||
(-> s0-1 ppointer-override)
|
||||
(-> s0-1 ppointer)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -680,7 +680,7 @@
|
||||
(set! (-> v1-1 mode) 'damage)
|
||||
)
|
||||
(if (and (= (-> self game mode) 'play)
|
||||
(>= 0.0 (- (-> (the-as fact-info-target (-> self fact-override)) health) (-> v1-1 damage)))
|
||||
(>= 0.0 (- (-> (the-as fact-info-target (-> self fact)) health) (-> v1-1 damage)))
|
||||
)
|
||||
(set! (-> v1-1 mode) 'drown-death)
|
||||
)
|
||||
|
||||
@@ -874,13 +874,13 @@
|
||||
(set! (-> self game hit-time) (current-time))
|
||||
(case (-> gp-0 mode)
|
||||
(('bot)
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) -1000.0 (the-as handle #f))
|
||||
(if (= (-> self game mode) 'play)
|
||||
(go target-death (-> gp-0 mode))
|
||||
)
|
||||
)
|
||||
(else
|
||||
(pickup-collectable! (-> self fact-override) (pickup-type health) (- (-> gp-0 damage)) (the-as handle #f))
|
||||
(pickup-collectable! (-> self fact) (pickup-type health) (- (-> gp-0 damage)) (the-as handle #f))
|
||||
)
|
||||
)
|
||||
(target-hit-effect gp-0)
|
||||
@@ -912,7 +912,7 @@
|
||||
(set! (-> a0-58 quad) (-> self control transv quad))
|
||||
(s5-2 s4-1 (t9-9 a0-58 1.0) (vector-y-quaternion! (new-stack-vector0) (-> self control dir-targ)))
|
||||
)
|
||||
(if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact-override health)))
|
||||
(if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health)))
|
||||
(go target-tube-death (-> gp-0 mode))
|
||||
)
|
||||
)
|
||||
|
||||
@@ -229,14 +229,14 @@
|
||||
)
|
||||
)
|
||||
:code (behavior ()
|
||||
(let ((root-prim (-> self root-override root-prim)))
|
||||
(let ((root-prim (-> self root root-prim)))
|
||||
(set! (-> (the-as collide-shape-prim-group root-prim) child 0 prim-core world-sphere w) 4915.2)
|
||||
)
|
||||
(let ((overlap-params (new 'stack-no-clear 'overlaps-others-params)))
|
||||
(set! (-> overlap-params options) (overlaps-others-options))
|
||||
(set! (-> overlap-params collide-with-filter) (the-as collide-spec -1))
|
||||
(set! (-> overlap-params tlist) *touching-list*)
|
||||
(find-overlapping-shapes (-> self root-override) overlap-params)
|
||||
(find-overlapping-shapes (-> self root) overlap-params)
|
||||
)
|
||||
(suspend)
|
||||
(go-virtual die)
|
||||
@@ -254,7 +254,7 @@
|
||||
(vf7 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let* ((gp-0 (-> obj root-override trans))
|
||||
(let* ((gp-0 (-> obj root trans))
|
||||
(a1-0 (-> obj tail-pos))
|
||||
(s5-1 (vector-! (new 'stack-no-clear 'vector) gp-0 a1-0))
|
||||
(f30-0 (vector-length s5-1))
|
||||
@@ -324,7 +324,7 @@
|
||||
|
||||
(defmethod spawn-shell-particles turret-shot ((obj turret-shot))
|
||||
"TODO - confirm"
|
||||
(let* ((root (-> obj root-override))
|
||||
(let* ((root (-> obj root))
|
||||
(v1-2 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> obj tail-pos) (-> root trans)) 2048.0))
|
||||
(gp-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
@@ -388,7 +388,7 @@
|
||||
;; WARN: Return type mismatch projectile-options vs none.
|
||||
(defmethod init-proj-settings! turret-shot ((obj turret-shot))
|
||||
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc"
|
||||
(set! (-> obj tail-pos quad) (-> obj root-override trans quad))
|
||||
(set! (-> obj tail-pos quad) (-> obj root trans quad))
|
||||
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 204 (seconds 0.1))
|
||||
(set! (-> obj attack-mode) 'turret)
|
||||
(set! (-> obj max-speed) 1228800.0)
|
||||
@@ -466,9 +466,9 @@
|
||||
)
|
||||
(set! (-> cshape max-iteration-count) (the-as uint 1))
|
||||
(set! (-> cshape event-self) 'touched)
|
||||
(set! (-> obj root-override) cshape)
|
||||
(set! (-> obj root) cshape)
|
||||
)
|
||||
(set! (-> obj root-override pat-ignore-mask)
|
||||
(set! (-> obj root pat-ignore-mask)
|
||||
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noproj #x1 :noendlessfall #x1)
|
||||
)
|
||||
0
|
||||
|
||||
@@ -759,7 +759,7 @@
|
||||
|
||||
(defmethod base-turret-method-36 base-turret ((obj base-turret))
|
||||
(if (nonzero? (-> obj part))
|
||||
(spawn (-> obj part) (-> obj root-override trans))
|
||||
(spawn (-> obj part) (-> obj root trans))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -776,7 +776,7 @@
|
||||
(matrix->quaternion gp-0 s3-0)
|
||||
(quaternion-smooth-seek! (-> obj target-quat) (-> obj target-quat) gp-0 0.33)
|
||||
(let ((f0-2 (update! (-> obj smush-control))))
|
||||
(quaternion-rotate-local-x! (-> obj root-override quat) gp-0 (* -910.2222 f0-2))
|
||||
(quaternion-rotate-local-x! (-> obj root quat) gp-0 (* -910.2222 f0-2))
|
||||
)
|
||||
)
|
||||
0
|
||||
@@ -797,7 +797,7 @@
|
||||
(set! (-> obj sound-playing 0) #f)
|
||||
)
|
||||
((< (* 1.2 f26-0) f30-0)
|
||||
(sound-play "drill-turret-lp" :id (-> obj sound-id 0) :position (-> obj root-override trans))
|
||||
(sound-play "drill-turret-lp" :id (-> obj sound-id 0) :position (-> obj root trans))
|
||||
(set! (-> obj sound-playing 0) #t)
|
||||
)
|
||||
)
|
||||
@@ -807,12 +807,12 @@
|
||||
(set! (-> obj sound-playing 1) #f)
|
||||
)
|
||||
((< (* 1.2 f24-0) f28-0)
|
||||
(sound-play "drill-turret-l2" :id (-> obj sound-id 1) :position (-> obj root-override trans))
|
||||
(sound-play "drill-turret-l2" :id (-> obj sound-id 1) :position (-> obj root trans))
|
||||
(set! (-> obj sound-playing 1) #t)
|
||||
)
|
||||
)
|
||||
(if (and (or s5-0 s4-0) (< f30-0 f26-0) (< f28-0 f24-0))
|
||||
(sound-play "drill-tur-stop" :position (-> obj root-override trans))
|
||||
(sound-play "drill-tur-stop" :position (-> obj root trans))
|
||||
)
|
||||
)
|
||||
(case (-> obj path-mode)
|
||||
@@ -824,7 +824,7 @@
|
||||
(the int (* 1524.0 (lerp-scale -0.3 0.3 (-> obj path-speed-mult) 0.0 4.0)))
|
||||
0
|
||||
(sound-group sfx)
|
||||
(-> obj root-override trans)
|
||||
(-> obj root trans)
|
||||
)
|
||||
(set! (-> obj sound-playing 2) #t)
|
||||
)
|
||||
@@ -844,7 +844,7 @@
|
||||
(case arg2
|
||||
(('trans)
|
||||
(set! v0-0 (-> arg3 param 0))
|
||||
(set! (-> (the-as vector v0-0) quad) (-> obj root-override trans quad))
|
||||
(set! (-> (the-as vector v0-0) quad) (-> obj root trans quad))
|
||||
v0-0
|
||||
)
|
||||
(('quat)
|
||||
@@ -879,7 +879,7 @@
|
||||
(defmethod get-trans base-turret ((obj base-turret) (arg0 int))
|
||||
"@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]])"
|
||||
(if (= arg0 1)
|
||||
(-> obj root-override trans)
|
||||
(-> obj root trans)
|
||||
((method-of-type process-focusable get-trans) obj arg0)
|
||||
)
|
||||
)
|
||||
@@ -912,14 +912,7 @@
|
||||
)
|
||||
(('touch)
|
||||
(send-event proc 'target-turret-get-off 90)
|
||||
(send-shoves
|
||||
(-> self root-override)
|
||||
proc
|
||||
(the-as touching-shapes-entry (-> event param 0))
|
||||
0.7
|
||||
6144.0
|
||||
16384.0
|
||||
)
|
||||
(send-shoves (-> self root) proc (the-as touching-shapes-entry (-> event param 0)) 0.7 6144.0 16384.0)
|
||||
#f
|
||||
)
|
||||
(('exit)
|
||||
@@ -943,7 +936,7 @@
|
||||
(let ((f30-0 20480.0))
|
||||
(until #f
|
||||
(when (and (and *target*
|
||||
(and (>= f30-0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
(and (>= f30-0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))
|
||||
(not (logtest? (focus-status teleporting) (-> *target* focus-status)))
|
||||
)
|
||||
)
|
||||
@@ -951,7 +944,7 @@
|
||||
(can-display-query? self (the-as string #f) -99.0)
|
||||
(not (focus-test? *target* in-head board mech dark))
|
||||
(let ((f28-0 24576.0)
|
||||
(s4-0 (-> self root-override))
|
||||
(s4-0 (-> self root))
|
||||
(s5-0 (target-pos 0))
|
||||
)
|
||||
(and (< f28-0
|
||||
@@ -996,7 +989,7 @@
|
||||
(go-virtual setup)
|
||||
)
|
||||
)
|
||||
(target-look-at-me! :trans (vector+! (new 'stack-no-clear 'vector) (the-as vector (-> self root-override root-prim prim-core)) (new 'static 'vector :y 2048.0 :w 1.0)))
|
||||
(target-look-at-me! :trans (vector+! (new 'stack-no-clear 'vector) (the-as vector (-> self root root-prim prim-core)) (new 'static 'vector :y 2048.0 :w 1.0)))
|
||||
(base-turret-method-36 self)
|
||||
(suspend)
|
||||
)
|
||||
@@ -1008,12 +1001,12 @@
|
||||
(cond
|
||||
((-> self enable-controls)
|
||||
(quaternion-slerp!
|
||||
(-> self root-override quat)
|
||||
(-> self root-override quat)
|
||||
(-> self root quat)
|
||||
(-> self root quat)
|
||||
(-> self init-quat)
|
||||
(* 3.0 (-> self clock seconds-per-frame))
|
||||
)
|
||||
(quaternion-copy! (-> self target-quat) (-> self root-override quat))
|
||||
(quaternion-copy! (-> self target-quat) (-> self root quat))
|
||||
)
|
||||
(else
|
||||
(let ((s4-0 (new 'stack-no-clear 'matrix))
|
||||
@@ -1026,7 +1019,7 @@
|
||||
(matrix->quaternion gp-0 s4-0)
|
||||
(quaternion-smooth-seek! (-> self target-quat) (-> self target-quat) gp-0 0.33)
|
||||
(let ((f0-4 (update! (-> self smush-control))))
|
||||
(quaternion-rotate-local-x! (-> self root-override quat) gp-0 (* -910.2222 f0-4))
|
||||
(quaternion-rotate-local-x! (-> self root quat) gp-0 (* -910.2222 f0-4))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -1177,7 +1170,7 @@
|
||||
(set! (-> self focus-status) (focus-status))
|
||||
(set! (-> self red-filter-timer) 0)
|
||||
(set! (-> self ride-height) 0.0)
|
||||
(set! (-> self roty) (y-angle (-> self root-override)))
|
||||
(set! (-> self roty) (y-angle (-> self root)))
|
||||
(set! (-> self rotyv) 0.0)
|
||||
(set! (-> self rotx) 0.0)
|
||||
(set! (-> self rotxv) 0.0)
|
||||
@@ -1186,7 +1179,7 @@
|
||||
(base-turret-method-34 self a1-1)
|
||||
)
|
||||
)
|
||||
(let ((v1-14 (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) child 1)))
|
||||
(let ((v1-14 (-> (the-as collide-shape-prim-group (-> self root root-prim)) child 1)))
|
||||
(set! (-> v1-14 prim-core action) (collide-action solid))
|
||||
(set! (-> v1-14 prim-core collide-as) (collide-spec obstacle))
|
||||
)
|
||||
@@ -1194,7 +1187,7 @@
|
||||
)
|
||||
:exit (behavior ()
|
||||
(set-filter-color! 1.0 1.0 1.0)
|
||||
(let ((v1-3 (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) child 1)))
|
||||
(let ((v1-3 (-> (the-as collide-shape-prim-group (-> self root root-prim)) child 1)))
|
||||
(set! (-> v1-3 prim-core action) (collide-action))
|
||||
(set! (-> v1-3 prim-core collide-as) (collide-spec))
|
||||
)
|
||||
@@ -1224,8 +1217,8 @@
|
||||
((2 3 4)
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector)))
|
||||
(get-point-at-percent-along-path! (-> self path) s5-0 (-> self path-u) 'interp)
|
||||
(set! (-> self root-override trans quad) (-> s5-0 quad))
|
||||
(set! (-> self root-override trans y) (+ (-> s5-0 y) (-> self ride-height)))
|
||||
(set! (-> self root trans quad) (-> s5-0 quad))
|
||||
(set! (-> self root trans y) (+ (-> s5-0 y) (-> self ride-height)))
|
||||
)
|
||||
(seek! (-> self ride-height) 2048.0 (* 2048.0 (-> self clock seconds-per-frame)))
|
||||
(set! (-> self path-u-prev) (-> self path-u))
|
||||
@@ -1239,7 +1232,7 @@
|
||||
)
|
||||
(base-turret-method-38 self)
|
||||
(when (= (-> self path-u) 1.0)
|
||||
(get-point-at-percent-along-path! (-> self path) (-> self root-override trans) 1.0 'interp)
|
||||
(get-point-at-percent-along-path! (-> self path) (-> self root trans) 1.0 'interp)
|
||||
(let ((a1-9 (displacement-between-points-at-percent-normalized! (-> self path) (new 'stack-no-clear 'vector) 1.0)))
|
||||
(forward-up-nopitch->quaternion (-> self init-quat) a1-9 *y-vector*)
|
||||
)
|
||||
@@ -1269,7 +1262,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> self path-old-pos quad) (-> self root-override trans quad))
|
||||
(set! (-> self path-old-pos quad) (-> self root trans quad))
|
||||
(base-turret-method-36 self)
|
||||
(suspend)
|
||||
)
|
||||
@@ -1398,7 +1391,7 @@
|
||||
)
|
||||
:trans (behavior ()
|
||||
(when (< 0.99 (vector-dot
|
||||
(vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self root-override quat))
|
||||
(vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self root quat))
|
||||
(vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self init-quat))
|
||||
)
|
||||
)
|
||||
@@ -1420,7 +1413,7 @@
|
||||
(ja :group! (-> self draw art-group data 2))
|
||||
(until #f
|
||||
(base-turret-method-37 self)
|
||||
(target-look-at-me! :trans (vector+! (new 'stack-no-clear 'vector) (the-as vector (-> self root-override root-prim prim-core)) (new 'static 'vector :y 2048.0 :w 1.0)))
|
||||
(target-look-at-me! :trans (vector+! (new 'stack-no-clear 'vector) (the-as vector (-> self root root-prim prim-core)) (new 'static 'vector :y 2048.0 :w 1.0)))
|
||||
(suspend)
|
||||
)
|
||||
#f
|
||||
@@ -1430,8 +1423,8 @@
|
||||
(when (= (-> self path-mode) 5)
|
||||
(let ((gp-0 (new 'stack-no-clear 'vector)))
|
||||
(get-point-at-percent-along-path! (-> self path) gp-0 1.0 'interp)
|
||||
(set! (-> self root-override trans quad) (-> gp-0 quad))
|
||||
(set! (-> self root-override trans y) (+ (-> gp-0 y) (-> self ride-height)))
|
||||
(set! (-> self root trans quad) (-> gp-0 quad))
|
||||
(set! (-> self root trans y) (+ (-> gp-0 y) (-> self ride-height)))
|
||||
)
|
||||
(seek! (-> self ride-height) 0.0 (* 2048.0 (-> self clock seconds-per-frame)))
|
||||
)
|
||||
@@ -1514,14 +1507,7 @@
|
||||
)
|
||||
(('touch)
|
||||
(send-event proc 'target-turret-get-off 90)
|
||||
(send-shoves
|
||||
(-> self root-override)
|
||||
proc
|
||||
(the-as touching-shapes-entry (-> event param 0))
|
||||
0.7
|
||||
6144.0
|
||||
16384.0
|
||||
)
|
||||
(send-shoves (-> self root) proc (the-as touching-shapes-entry (-> event param 0)) 0.7 6144.0 16384.0)
|
||||
#f
|
||||
)
|
||||
(('exit)
|
||||
@@ -1571,13 +1557,13 @@
|
||||
)
|
||||
(send-event-function (handle->process (-> self rider)) a1-1)
|
||||
)
|
||||
(let ((v1-17 (-> self root-override root-prim)))
|
||||
(let ((v1-17 (-> self root root-prim)))
|
||||
(set! (-> v1-17 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-17 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
0
|
||||
(logior! (-> self draw status) (draw-control-status no-draw))
|
||||
(sound-play "turret-die" :position (-> self root-override trans))
|
||||
(sound-play "turret-die" :position (-> self root trans))
|
||||
(let ((gp-2 (new 'stack 'joint-exploder-tuning (the-as uint 0))))
|
||||
(process-spawn
|
||||
joint-exploder
|
||||
@@ -1589,7 +1575,7 @@
|
||||
)
|
||||
)
|
||||
(let ((gp-3 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> gp-3 quad) (-> self root-override trans quad))
|
||||
(set! (-> gp-3 quad) (-> self root trans quad))
|
||||
(set! (-> gp-3 y) (+ 8192.0 (-> gp-3 y)))
|
||||
(let ((s5-2 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when s5-2
|
||||
@@ -1636,7 +1622,7 @@
|
||||
|
||||
(defmethod base-turret-method-47 base-turret ((obj base-turret))
|
||||
(with-pp
|
||||
(let ((a0-1 (-> obj root-override trans))
|
||||
(let ((a0-1 (-> obj root trans))
|
||||
(f30-0 0.0)
|
||||
(s4-0 (the-as process-drawable #f))
|
||||
)
|
||||
@@ -1667,7 +1653,7 @@
|
||||
(!= s2-1 *target*)
|
||||
(base-turret-method-46 obj s2-1)
|
||||
)
|
||||
(let ((f0-1 (vector-vector-xz-distance (-> obj root-override trans) (-> s2-1 root trans))))
|
||||
(let ((f0-1 (vector-vector-xz-distance (-> obj root trans) (-> s2-1 root trans))))
|
||||
(when (or (not s4-0) (< f0-1 f30-0))
|
||||
(set! s4-0 s2-1)
|
||||
(set! f30-0 f0-1)
|
||||
@@ -1688,12 +1674,12 @@
|
||||
(set! (-> s5-1 w) 1.0)
|
||||
(let ((s1-1 (new 'stack-no-clear 'vector))
|
||||
(s3-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 12)))
|
||||
(s2-2 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override quat)))
|
||||
(s2-2 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root quat)))
|
||||
)
|
||||
(vector-matrix*! s5-1 s5-1 (-> (the-as process-focusable s4-0) node-list data 0 bone transform))
|
||||
(vector-line-distance-point! s5-1 s3-1 (vector+float*! (new 'stack-no-clear 'vector) s3-1 s2-2 4096.0) s1-1)
|
||||
(let* ((a1-10 (vector-! (new 'stack-no-clear 'vector) s5-1 s1-1))
|
||||
(s4-1 (vector-inv-orient-by-quat! (new 'stack-no-clear 'vector) a1-10 (-> obj root-override quat)))
|
||||
(s4-1 (vector-inv-orient-by-quat! (new 'stack-no-clear 'vector) a1-10 (-> obj root quat)))
|
||||
(f30-1 (vector-vector-angle-safe s2-2 (vector-! (new 'stack-no-clear 'vector) s5-1 s3-1)))
|
||||
)
|
||||
(let ((f0-10 (- (atan (-> s4-1 x) (-> s4-1 y)))))
|
||||
@@ -1716,7 +1702,7 @@
|
||||
)
|
||||
(seek!
|
||||
(-> obj arrow-red)
|
||||
(lerp-scale 1.0 0.0 (vector-vector-distance s5-1 (-> obj root-override trans)) 122880.0 245760.0)
|
||||
(lerp-scale 1.0 0.0 (vector-vector-distance s5-1 (-> obj root trans)) 122880.0 245760.0)
|
||||
(-> pp clock seconds-per-frame)
|
||||
)
|
||||
)
|
||||
@@ -1733,7 +1719,7 @@
|
||||
)
|
||||
|
||||
(defmethod base-turret-method-43 base-turret ((obj base-turret))
|
||||
(set! (-> obj roty) (y-angle (-> obj root-override)))
|
||||
(set! (-> obj roty) (y-angle (-> obj root)))
|
||||
(set! (-> obj rotyv) 0.0)
|
||||
(set! (-> obj rotyvv) 0.0)
|
||||
(set! (-> obj rotx) 0.0)
|
||||
@@ -1775,15 +1761,15 @@
|
||||
(set! (-> s3-0 backup-collide-as) (-> v1-19 prim-core collide-as))
|
||||
(set! (-> s3-0 backup-collide-with) (-> v1-19 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override) s3-0)
|
||||
(set! (-> obj root) s3-0)
|
||||
)
|
||||
(when arg0
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(set-yaw-angle-clear-roll-pitch! (-> obj root-override) (res-lump-float arg0 'rotoffset))
|
||||
(set-yaw-angle-clear-roll-pitch! (-> obj root) (res-lump-float arg0 'rotoffset))
|
||||
)
|
||||
(when arg1
|
||||
(set! (-> obj root-override trans quad) (-> arg1 vector 0 quad))
|
||||
(quaternion-copy! (-> obj root-override quat) (the-as quaternion (-> arg1 vector 1)))
|
||||
(set! (-> obj root trans quad) (-> arg1 vector 0 quad))
|
||||
(quaternion-copy! (-> obj root quat) (the-as quaternion (-> arg1 vector 1)))
|
||||
)
|
||||
(initialize-skeleton
|
||||
obj
|
||||
@@ -1797,13 +1783,7 @@
|
||||
(new 'process 'fact-info obj (pickup-type eco-pill-random) (-> *FACT-bank* default-eco-pill-green-inc))
|
||||
)
|
||||
(if (-> obj entity)
|
||||
(move-to-ground
|
||||
(the-as collide-shape-moving (-> obj root-override))
|
||||
40960.0
|
||||
40960.0
|
||||
#t
|
||||
(collide-spec backgnd)
|
||||
)
|
||||
(move-to-ground (the-as collide-shape-moving (-> obj root)) 40960.0 40960.0 #t (collide-spec backgnd))
|
||||
)
|
||||
(set-zero! (-> obj smush-control))
|
||||
(set! (-> obj hud) (the-as handle #f))
|
||||
@@ -1849,12 +1829,12 @@
|
||||
(logior! (-> s5-1 flags) (path-control-flag display draw-line draw-point draw-text))
|
||||
)
|
||||
(when (not (logtest? (-> obj path flags) (path-control-flag not-found)))
|
||||
(get-point-at-percent-along-path! (-> obj path) (-> obj root-override trans) 0.0 'interp)
|
||||
(set! (-> obj path-old-pos quad) (-> obj root-override trans quad))
|
||||
(get-point-at-percent-along-path! (-> obj path) (-> obj root trans) 0.0 'interp)
|
||||
(set! (-> obj path-old-pos quad) (-> obj root trans quad))
|
||||
)
|
||||
(set! (-> obj path-speed-mult) 1.0)
|
||||
(quaternion-copy! (-> obj target-quat) *unity-quaternion*)
|
||||
(quaternion-copy! (-> obj init-quat) (-> obj root-override quat))
|
||||
(quaternion-copy! (-> obj init-quat) (-> obj root quat))
|
||||
(set! (-> obj gun-index) 0)
|
||||
(set! (-> obj shot-timeout) (seconds 0.667))
|
||||
(set! (-> obj gun-recoil-jmod 0) (new 'process 'joint-mod-add-local obj 5 #t #f #f))
|
||||
@@ -1883,7 +1863,7 @@
|
||||
(defmethod base-turret-method-41 base-turret ((obj base-turret) (arg0 vector))
|
||||
(local-vars (sv-592 int))
|
||||
(let* ((s3-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj init-quat)))
|
||||
(s1-0 (-> obj root-override trans))
|
||||
(s1-0 (-> obj root trans))
|
||||
(s5-0 (new 'stack-no-clear 'vector))
|
||||
(s2-0 (new 'stack 'collide-query))
|
||||
(s0-0 8)
|
||||
@@ -1903,7 +1883,7 @@
|
||||
(set! (-> v1-9 collide-with) (collide-spec backgnd))
|
||||
(set! (-> v1-9 ignore-process0) obj)
|
||||
(set! (-> v1-9 ignore-process1) #f)
|
||||
(set! (-> v1-9 ignore-pat) (-> obj root-override pat-ignore-mask))
|
||||
(set! (-> v1-9 ignore-pat) (-> obj root pat-ignore-mask))
|
||||
(set! (-> v1-9 action-mask) (collide-action solid))
|
||||
)
|
||||
(when (>= (fill-and-probe-using-line-sphere *collide-cache* s2-0) 0.0)
|
||||
@@ -1980,7 +1960,7 @@
|
||||
(let ((s3-0 (new 'static 'array int32 4 5 11 7 9))
|
||||
(s4-0 (* (-> obj gun-index) 2))
|
||||
(s2-0 (+ (* (-> obj gun-index) 2) 1))
|
||||
(s5-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override quat)))
|
||||
(s5-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root quat)))
|
||||
)
|
||||
(set-recoil (the-as joint-mod (-> obj gun-recoil-jmod s4-0)) -819.2 arg1)
|
||||
(set-recoil (the-as joint-mod (-> obj gun-recoil-jmod s2-0)) 819.2 arg1)
|
||||
@@ -2314,14 +2294,12 @@ This commonly includes things such as:
|
||||
)
|
||||
(let ((v1-2 (handle->process (-> self turret handle))))
|
||||
(if v1-2
|
||||
(quaternion<-rotate-y-vector
|
||||
(-> self control dir-targ)
|
||||
(vector-!
|
||||
(new 'stack-no-clear 'vector)
|
||||
(-> (the-as process-focusable v1-2) root-override trans)
|
||||
(-> self control trans)
|
||||
)
|
||||
)
|
||||
(quaternion<-rotate-y-vector (-> self control dir-targ) (vector-!
|
||||
(new 'stack-no-clear 'vector)
|
||||
(-> (the-as process-focusable v1-2) root trans)
|
||||
(-> self control trans)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> self control unknown-handle02) (-> self turret handle))
|
||||
@@ -2393,7 +2371,7 @@ This commonly includes things such as:
|
||||
(new 'static 'vector :z -10649.6 :w 1.0)
|
||||
(-> (the-as process-focusable s5-0) node-list data 0 bone transform)
|
||||
)
|
||||
(set! (-> self control unknown-vector40 quad) (-> (the-as process-focusable s5-0) root-override quat quad))
|
||||
(set! (-> self control unknown-vector40 quad) (-> (the-as process-focusable s5-0) root quat quad))
|
||||
)
|
||||
)
|
||||
(set! (-> self alt-cam-pos quad) (-> self control camera-pos quad))
|
||||
@@ -2411,7 +2389,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
(if a0-39
|
||||
(set! (-> self alt-cam-pos quad) (-> (the-as process-focusable a0-39) root-override trans quad))
|
||||
(set! (-> self alt-cam-pos quad) (-> (the-as process-focusable a0-39) root trans quad))
|
||||
)
|
||||
)
|
||||
(vector-lerp!
|
||||
|
||||
@@ -622,7 +622,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(case (-> (the-as fact-info-target (-> self fact-override)) eco-type)
|
||||
(case (-> self fact eco-type)
|
||||
((1)
|
||||
(set! (-> self control penetrate-using) (logior (penetrate eco-yellow) (-> self control penetrate-using)))
|
||||
)
|
||||
@@ -1305,9 +1305,7 @@
|
||||
)
|
||||
)
|
||||
(>= (- (current-time) (-> self control last-running-attack-end-time))
|
||||
(the-as time-frame (if (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 1)
|
||||
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
|
||||
)
|
||||
(the-as time-frame (if (and (= (-> self fact eco-type) 1) (>= (-> self fact eco-level) 1.0))
|
||||
(-> *TARGET-bank* yellow-attack-timeout)
|
||||
(-> *TARGET-bank* attack-timeout)
|
||||
)
|
||||
|
||||
@@ -2216,9 +2216,7 @@
|
||||
(until (ja-done? 0)
|
||||
(compute-alignment! (-> self align))
|
||||
(align! (-> self align) (align-opts adjust-quat) 1.0 1.0 1.0)
|
||||
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
|
||||
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
|
||||
)
|
||||
(when (and (= (-> self fact eco-type) 2) (>= (-> self fact eco-level) 1.0))
|
||||
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 38)
|
||||
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
|
||||
(talker-spawn-func (-> *talker-speech* 328) *entity-pool* (target-pos 0) (the-as region #f))
|
||||
@@ -2519,9 +2517,7 @@
|
||||
#f
|
||||
)
|
||||
)
|
||||
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
|
||||
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
|
||||
)
|
||||
(when (and (= (-> self fact eco-type) 2) (>= (-> self fact eco-level) 1.0))
|
||||
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 22)
|
||||
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
|
||||
(talker-spawn-func (-> *talker-speech* 328) *entity-pool* (target-pos 0) (the-as region #f))
|
||||
@@ -2961,9 +2957,7 @@
|
||||
(set! (-> self control dynam gravity-max) (-> self control standard-dynamics gravity-max))
|
||||
(set! (-> self control dynam gravity-length) (-> self control standard-dynamics gravity-length))
|
||||
)
|
||||
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
|
||||
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
|
||||
)
|
||||
(when (and (= (-> self fact eco-type) 2) (>= (-> self fact eco-level) 1.0))
|
||||
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 31)
|
||||
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
|
||||
(talker-spawn-func (-> *talker-speech* 328) *entity-pool* (target-pos 0) (the-as region #f))
|
||||
@@ -3253,9 +3247,7 @@
|
||||
(go target-attack-air 'uppercut)
|
||||
)
|
||||
(mod-var-jump #t #t (cpad-hold? (-> self control cpad number) x) (-> self control transv))
|
||||
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
|
||||
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
|
||||
)
|
||||
(when (and (= (-> self fact eco-type) 2) (>= (-> self fact eco-level) 1.0))
|
||||
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 22)
|
||||
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
|
||||
)
|
||||
@@ -3373,9 +3365,7 @@
|
||||
)
|
||||
:enter (behavior ((arg0 float) (arg1 float) (arg2 float))
|
||||
(cond
|
||||
((and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 1)
|
||||
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
|
||||
)
|
||||
((and (= (-> self fact eco-type) 1) (>= (-> self fact eco-level) 1.0))
|
||||
(go target-yellow-jump-blast)
|
||||
)
|
||||
((and (focus-test? self dark) (nonzero? (-> self darkjak)) (logtest? (-> self darkjak stage) 4))
|
||||
@@ -3448,15 +3438,11 @@
|
||||
)
|
||||
(when gp-1
|
||||
(logior! (-> self control status) (collide-status on-surface))
|
||||
(when (or (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
|
||||
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
|
||||
)
|
||||
(when (or (and (= (-> self fact eco-type) 2) (>= (-> self fact eco-level) 1.0))
|
||||
(and (focus-test? self dark) (nonzero? (-> self darkjak)) (logtest? (-> self darkjak stage) 2))
|
||||
)
|
||||
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.5))
|
||||
(if (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
|
||||
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
|
||||
)
|
||||
(if (and (= (-> self fact eco-type) 2) (>= (-> self fact eco-level) 1.0))
|
||||
(do-effect (-> self skel effect) 'group-red-eco-strike-ground (ja-frame-num 0) 0)
|
||||
)
|
||||
(let ((v1-56 (process-spawn touch-tracker :init touch-tracker-init (-> self control trans) #x45800000 30 :to self))
|
||||
@@ -3476,9 +3462,7 @@
|
||||
(go target-flop-hit-ground gp-1)
|
||||
)
|
||||
)
|
||||
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
|
||||
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
|
||||
)
|
||||
(when (and (= (-> self fact eco-type) 2) (>= (-> self fact eco-level) 1.0))
|
||||
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) (if (rand-vu-percent? 0.5)
|
||||
22
|
||||
18
|
||||
@@ -3687,9 +3671,7 @@
|
||||
(go target-attack-air 'flop)
|
||||
)
|
||||
)
|
||||
(when (and (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
|
||||
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
|
||||
)
|
||||
(when (and (and (= (-> self fact eco-type) 2) (>= (-> self fact eco-level) 1.0))
|
||||
(< (- (current-time) (-> self state-time)) (seconds 0.25))
|
||||
)
|
||||
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) (if (rand-vu-percent? 0.5)
|
||||
|
||||
@@ -1105,7 +1105,7 @@
|
||||
(let ((f0-5 (the float (the int (+ 1.0 (/ (- arg0 (-> *TARGET-bank* fall-far)) (-> *TARGET-bank* fall-far-inc))))))
|
||||
)
|
||||
(pickup-collectable!
|
||||
(-> self fact-override)
|
||||
(-> self fact)
|
||||
(pickup-type health)
|
||||
(* (-> *FACT-bank* health-single-inc) (- (fmax 0.0 f0-5)))
|
||||
(the-as handle #f)
|
||||
@@ -1114,7 +1114,7 @@
|
||||
(target-timed-invulnerable (the-as time-frame (-> *TARGET-bank* hit-invulnerable-timeout)) self 1)
|
||||
)
|
||||
(cond
|
||||
((and (= (-> self game mode) 'play) (>= 0.0 (-> (the-as fact-info-target (-> self fact-override)) health)))
|
||||
((and (= (-> self game mode) 'play) (>= 0.0 (-> (the-as fact-info-target (-> self fact)) health)))
|
||||
(set! (-> self attack-info attacker) (the-as handle #f))
|
||||
(go target-death 'target-hit-ground-hard)
|
||||
)
|
||||
|
||||
@@ -610,7 +610,7 @@
|
||||
(format 0 "ERROR: bigmap: mini-map-icons texture is #f~%")
|
||||
)
|
||||
)
|
||||
(let ((s3-2 (the-as connection-pers (-> *minimap* engine alive-list-override))))
|
||||
(let ((s3-2 (the-as connection-pers (-> *minimap* engine alive-list))))
|
||||
(while s3-2
|
||||
(let ((a2-3 (the-as connection-minimap s3-2)))
|
||||
(when (logtest? (-> a2-3 class flags) (minimap-flag bigmap))
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defglobalconstant SKIP_MINIMAP_DRAW #f)
|
||||
|
||||
(defmethod draw hud-map ((obj hud-map))
|
||||
(set-hud-piece-position!
|
||||
(-> obj sprites 1)
|
||||
@@ -36,9 +34,6 @@
|
||||
(let ((t9-5 (method-of-type hud draw)))
|
||||
(t9-5 obj)
|
||||
)
|
||||
(#when SKIP_MINIMAP_DRAW
|
||||
(return #f)
|
||||
)
|
||||
(cond
|
||||
((< (-> *setting-control* user-current race-minimap) 0)
|
||||
(with-dma-buffer-add-bucket ((s4-0 (-> *display* frames (-> *display* on-screen) global-buf))
|
||||
@@ -258,10 +253,10 @@
|
||||
)
|
||||
|
||||
(defmethod update-values hud-health ((obj hud-health))
|
||||
(set! (-> obj values 0 target) (the int (* 10.0 (-> *target* fact-override health))))
|
||||
(set! (-> obj values 1 target) (the-as int (-> *target* fact-override health-pickup-time)))
|
||||
(set! (-> obj values 0 target) (the int (* 10.0 (-> *target* fact health))))
|
||||
(set! (-> obj values 1 target) (the-as int (-> *target* fact health-pickup-time)))
|
||||
(set! (-> obj values 2 target) (mod (the int (+ 0.5 (-> *target* game eco-pill-dark))) 100))
|
||||
(set! (-> obj values 3 target) (the-as int (-> *target* fact-override eco-pill-dark-pickup-time)))
|
||||
(set! (-> obj values 3 target) (the-as int (-> *target* fact eco-pill-dark-pickup-time)))
|
||||
(if (and (zero? (-> obj values 2 target)) (!= (-> *target* game eco-pill-dark) 0.0))
|
||||
(set! (-> obj values 2 target) 100)
|
||||
)
|
||||
@@ -402,10 +397,10 @@
|
||||
)
|
||||
|
||||
(defmethod update-values hud-dark-eco-symbol ((obj hud-dark-eco-symbol))
|
||||
(set! (-> obj values 0 target) (the int (* 10.0 (-> *target* fact-override health))))
|
||||
(set! (-> obj values 1 target) (the-as int (-> *target* fact-override health-pickup-time)))
|
||||
(set! (-> obj values 0 target) (the int (* 10.0 (-> *target* fact health))))
|
||||
(set! (-> obj values 1 target) (the-as int (-> *target* fact health-pickup-time)))
|
||||
(set! (-> obj values 2 target) (mod (the int (+ 0.5 (-> *target* game eco-pill-dark))) 100))
|
||||
(set! (-> obj values 3 target) (the-as int (-> *target* fact-override eco-pill-dark-pickup-time)))
|
||||
(set! (-> obj values 3 target) (the-as int (-> *target* fact eco-pill-dark-pickup-time)))
|
||||
(if (and (or (and (zero? (-> obj values 2 target)) (!= (-> *target* game eco-pill-dark) 0.0))
|
||||
(focus-test? *target* dark)
|
||||
)
|
||||
@@ -511,7 +506,7 @@
|
||||
(when (not (paused?))
|
||||
(let ((s5-1 (new 'stack-no-clear 'quaternion)))
|
||||
(quaternion-axis-angle! s5-1 0.0 1.0 0.0 364.0889)
|
||||
(quaternion*! (-> obj icons 0 icon 0 root-override quat) s5-1 (-> obj icons 0 icon 0 root-override quat))
|
||||
(quaternion*! (-> obj icons 0 icon 0 root quat) s5-1 (-> obj icons 0 icon 0 root quat))
|
||||
)
|
||||
)
|
||||
((method-of-type hud draw) obj)
|
||||
@@ -1040,7 +1035,7 @@
|
||||
(cond
|
||||
((focus-test? *target* gun)
|
||||
(set! (-> obj values 0 target) (the-as int (-> *target* gun gun-type)))
|
||||
(set! (-> obj values 1 target) (the int (get-gun-ammo (-> *target* fact-override))))
|
||||
(set! (-> obj values 1 target) (the int (get-gun-ammo (-> *target* fact))))
|
||||
(logclear! (-> obj flags) (hud-flags disable))
|
||||
(logior! (-> obj flags) (hud-flags show))
|
||||
)
|
||||
|
||||
+69
-232
@@ -261,32 +261,10 @@
|
||||
(t2-0 (the int (- (-> obj max y) (-> obj min y))))
|
||||
(t1-0 (/ t2-0 4))
|
||||
)
|
||||
(let* ((t3-0 arg0)
|
||||
(t4-0 (the-as dma-packet (-> t3-0 base)))
|
||||
)
|
||||
(set! (-> t4-0 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt)))
|
||||
(set! (-> t4-0 vif0) (new 'static 'vif-tag))
|
||||
(set! (-> t4-0 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> t3-0 base) (the-as pointer (&+ t4-0 16)))
|
||||
)
|
||||
(let* ((t3-1 arg0)
|
||||
(t4-2 (the-as gs-gif-tag (-> t3-1 base)))
|
||||
)
|
||||
(set! (-> t4-2 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2))
|
||||
(set! (-> t4-2 regs) GIF_REGS_ALL_AD)
|
||||
(set! (-> t3-1 base) (the-as pointer (&+ t4-2 16)))
|
||||
)
|
||||
(let* ((t3-2 arg0)
|
||||
(t4-4 (-> t3-2 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-test) t4-4) 0)
|
||||
(new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-reg64) t4-4) 1) (gs-reg64 test-1))
|
||||
(set! (-> (the-as (pointer gs-alpha) t4-4) 2) (new 'static 'gs-alpha :b #x2 :d #x1))
|
||||
(set! (-> (the-as (pointer gs-reg64) t4-4) 3) (gs-reg64 alpha-1))
|
||||
(set! (-> t3-2 base) (&+ t4-4 32))
|
||||
)
|
||||
(dma-buffer-add-gs-set arg0
|
||||
(test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)))
|
||||
(alpha-1 (new 'static 'gs-alpha :b #x2 :d #x1))
|
||||
)
|
||||
(set! (-> v1-0 scanline) (mod (+ (-> v1-0 scanline) 6) (the-as uint t2-0)))
|
||||
(let ((t3-6 (the-as (pointer uint128) (-> arg0 base))))
|
||||
(set! (-> t3-6 0) (-> v1-0 scan-tmpl dma-vif quad))
|
||||
@@ -308,30 +286,7 @@
|
||||
(&+! (-> arg0 base) 80)
|
||||
)
|
||||
)
|
||||
(let* ((a0-5 arg0)
|
||||
(t2-1 (the-as dma-packet (-> a0-5 base)))
|
||||
)
|
||||
(set! (-> t2-1 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt)))
|
||||
(set! (-> t2-1 vif0) (new 'static 'vif-tag))
|
||||
(set! (-> t2-1 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> a0-5 base) (the-as pointer (&+ t2-1 16)))
|
||||
)
|
||||
(let* ((a0-6 arg0)
|
||||
(t2-3 (the-as gs-gif-tag (-> a0-6 base)))
|
||||
)
|
||||
(set! (-> t2-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2))
|
||||
(set! (-> t2-3 regs) GIF_REGS_ALL_AD)
|
||||
(set! (-> a0-6 base) (the-as pointer (&+ t2-3 16)))
|
||||
)
|
||||
(let* ((a0-7 arg0)
|
||||
(t2-5 (-> a0-7 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-alpha) t2-5) 0) (new 'static 'gs-alpha :a #x2 :d #x1))
|
||||
(set! (-> (the-as (pointer gs-reg64) t2-5) 1) (gs-reg64 alpha-1))
|
||||
(set! (-> (the-as (pointer gs-rgbaq) t2-5) 2) (-> v1-0 line-color))
|
||||
(set! (-> (the-as (pointer gs-reg64) t2-5) 3) (gs-reg64 rgbaq))
|
||||
(set! (-> a0-7 base) (&+ t2-5 32))
|
||||
)
|
||||
(dma-buffer-add-gs-set arg0 (alpha-1 (new 'static 'gs-alpha :a #x2 :d #x1)) (rgbaq (-> v1-0 line-color)))
|
||||
(dotimes (a0-8 t1-0)
|
||||
(let ((t2-7 (the-as (inline-array vector4w) (-> arg0 base))))
|
||||
(set! (-> t2-7 0 quad) (-> v1-0 line-tmpl dma-vif quad))
|
||||
@@ -493,32 +448,10 @@
|
||||
)
|
||||
|
||||
(defmethod draw-box-alpha-1 hud-box ((obj hud-box) (arg0 dma-buffer))
|
||||
(let* ((v1-0 arg0)
|
||||
(a2-0 (the-as dma-packet (-> v1-0 base)))
|
||||
)
|
||||
(set! (-> a2-0 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt)))
|
||||
(set! (-> a2-0 vif0) (new 'static 'vif-tag))
|
||||
(set! (-> a2-0 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> v1-0 base) (the-as pointer (&+ a2-0 16)))
|
||||
)
|
||||
(let* ((v1-1 arg0)
|
||||
(a2-2 (the-as gs-gif-tag (-> v1-1 base)))
|
||||
)
|
||||
(set! (-> a2-2 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2))
|
||||
(set! (-> a2-2 regs) GIF_REGS_ALL_AD)
|
||||
(set! (-> v1-1 base) (the-as pointer (&+ a2-2 16)))
|
||||
)
|
||||
(let* ((v1-2 arg0)
|
||||
(a2-4 (-> v1-2 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-test) a2-4) 0)
|
||||
(new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-reg64) a2-4) 1) (gs-reg64 test-1))
|
||||
(set! (-> (the-as (pointer gs-alpha) a2-4) 2) (new 'static 'gs-alpha :a #x1 :d #x2))
|
||||
(set! (-> (the-as (pointer gs-reg64) a2-4) 3) (gs-reg64 alpha-1))
|
||||
(set! (-> v1-2 base) (&+ a2-4 32))
|
||||
)
|
||||
(dma-buffer-add-gs-set arg0
|
||||
(test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)))
|
||||
(alpha-1 (new 'static 'gs-alpha :a #x1 :d #x2))
|
||||
)
|
||||
(let ((t0-0 *hud-sprite-work*)
|
||||
(v1-3 (the-as (inline-array vector4w) (-> arg0 base)))
|
||||
(a2-8 (* (+ (the int (-> obj min x)) 1792) 16))
|
||||
@@ -540,32 +473,10 @@
|
||||
)
|
||||
|
||||
(defmethod draw-box-alpha-2 hud-box ((obj hud-box) (arg0 dma-buffer))
|
||||
(let* ((v1-0 arg0)
|
||||
(a2-0 (the-as dma-packet (-> v1-0 base)))
|
||||
)
|
||||
(set! (-> a2-0 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt)))
|
||||
(set! (-> a2-0 vif0) (new 'static 'vif-tag))
|
||||
(set! (-> a2-0 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> v1-0 base) (the-as pointer (&+ a2-0 16)))
|
||||
)
|
||||
(let* ((v1-1 arg0)
|
||||
(a2-2 (the-as gs-gif-tag (-> v1-1 base)))
|
||||
)
|
||||
(set! (-> a2-2 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2))
|
||||
(set! (-> a2-2 regs) GIF_REGS_ALL_AD)
|
||||
(set! (-> v1-1 base) (the-as pointer (&+ a2-2 16)))
|
||||
)
|
||||
(let* ((v1-2 arg0)
|
||||
(a2-4 (-> v1-2 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-test) a2-4) 0)
|
||||
(new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-reg64) a2-4) 1) (gs-reg64 test-1))
|
||||
(set! (-> (the-as (pointer gs-alpha) a2-4) 2) (new 'static 'gs-alpha :b #x2 :d #x1))
|
||||
(set! (-> (the-as (pointer gs-reg64) a2-4) 3) (gs-reg64 alpha-1))
|
||||
(set! (-> v1-2 base) (&+ a2-4 32))
|
||||
)
|
||||
(dma-buffer-add-gs-set arg0
|
||||
(test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)))
|
||||
(alpha-1 (new 'static 'gs-alpha :b #x2 :d #x1))
|
||||
)
|
||||
(let ((t0-0 *hud-sprite-work*)
|
||||
(v1-3 (the-as (inline-array vector4w) (-> arg0 base)))
|
||||
(a2-8 (* (+ (the int (-> obj min x)) 1792) 16))
|
||||
@@ -587,32 +498,10 @@
|
||||
)
|
||||
|
||||
(defmethod draw-box-alpha-3 hud-box ((obj hud-box) (arg0 dma-buffer))
|
||||
(let* ((v1-0 arg0)
|
||||
(a2-0 (the-as dma-packet (-> v1-0 base)))
|
||||
)
|
||||
(set! (-> a2-0 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt)))
|
||||
(set! (-> a2-0 vif0) (new 'static 'vif-tag))
|
||||
(set! (-> a2-0 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> v1-0 base) (the-as pointer (&+ a2-0 16)))
|
||||
)
|
||||
(let* ((v1-1 arg0)
|
||||
(a2-2 (the-as gs-gif-tag (-> v1-1 base)))
|
||||
)
|
||||
(set! (-> a2-2 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2))
|
||||
(set! (-> a2-2 regs) GIF_REGS_ALL_AD)
|
||||
(set! (-> v1-1 base) (the-as pointer (&+ a2-2 16)))
|
||||
)
|
||||
(let* ((v1-2 arg0)
|
||||
(a2-4 (-> v1-2 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-test) a2-4) 0)
|
||||
(new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-reg64) a2-4) 1) (gs-reg64 test-1))
|
||||
(set! (-> (the-as (pointer gs-alpha) a2-4) 2) (new 'static 'gs-alpha :b #x1 :d #x1))
|
||||
(set! (-> (the-as (pointer gs-reg64) a2-4) 3) (gs-reg64 alpha-1))
|
||||
(set! (-> v1-2 base) (&+ a2-4 32))
|
||||
)
|
||||
(dma-buffer-add-gs-set arg0
|
||||
(test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)))
|
||||
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
|
||||
)
|
||||
(let ((t0-0 *hud-sprite-work*)
|
||||
(v1-3 (the-as (inline-array vector4w) (-> arg0 base)))
|
||||
(a2-8 (* (+ (the int (-> obj min x)) 1792) 16))
|
||||
@@ -634,61 +523,20 @@
|
||||
)
|
||||
|
||||
(defmethod setup-scissor hud-box ((obj hud-box) (arg0 dma-buffer))
|
||||
(let* ((v1-0 arg0)
|
||||
(a2-0 (the-as dma-packet (-> v1-0 base)))
|
||||
)
|
||||
(set! (-> a2-0 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
|
||||
(set! (-> a2-0 vif0) (new 'static 'vif-tag))
|
||||
(set! (-> a2-0 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> v1-0 base) (the-as pointer (&+ a2-0 16)))
|
||||
)
|
||||
(let* ((v1-1 arg0)
|
||||
(a2-2 (the-as gs-gif-tag (-> v1-1 base)))
|
||||
)
|
||||
(set! (-> a2-2 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
|
||||
(set! (-> a2-2 regs) GIF_REGS_ALL_AD)
|
||||
(set! (-> v1-1 base) (the-as pointer (&+ a2-2 16)))
|
||||
)
|
||||
(let* ((v1-2 arg0)
|
||||
(a1-1 (-> v1-2 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-scissor) a1-1) 0) (new 'static 'gs-scissor
|
||||
:scax0 (the int (-> obj min x))
|
||||
:scay0 (the int (-> obj min y))
|
||||
:scax1 (the int (-> obj max x))
|
||||
:scay1 (the int (-> obj max y))
|
||||
)
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-reg64) a1-1) 1) (gs-reg64 scissor-1))
|
||||
(set! (-> v1-2 base) (&+ a1-1 16))
|
||||
)
|
||||
(dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor
|
||||
:scax0 (the int (-> obj min x))
|
||||
:scay0 (the int (-> obj min y))
|
||||
:scax1 (the int (-> obj max x))
|
||||
:scay1 (the int (-> obj max y))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod restore-scissor hud-box ((obj hud-box) (arg0 dma-buffer))
|
||||
(let* ((v1-0 arg0)
|
||||
(a0-1 (the-as dma-packet (-> v1-0 base)))
|
||||
)
|
||||
(set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
|
||||
(set! (-> a0-1 vif0) (new 'static 'vif-tag))
|
||||
(set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> v1-0 base) (the-as pointer (&+ a0-1 16)))
|
||||
)
|
||||
(let* ((v1-1 arg0)
|
||||
(a0-3 (the-as gs-gif-tag (-> v1-1 base)))
|
||||
)
|
||||
(set! (-> a0-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
|
||||
(set! (-> a0-3 regs) GIF_REGS_ALL_AD)
|
||||
(set! (-> v1-1 base) (the-as pointer (&+ a0-3 16)))
|
||||
)
|
||||
(let* ((v1-2 arg0)
|
||||
(a0-5 (-> v1-2 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-scissor) a0-5) 0) (new 'static 'gs-scissor :scax1 #x1ff :scay1 #x19f))
|
||||
(set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 scissor-1))
|
||||
(set! (-> v1-2 base) (&+ a0-5 16))
|
||||
)
|
||||
(dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x1ff :scay1 #x19f)))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
@@ -703,8 +551,6 @@
|
||||
(the-as hud ((method-of-type process relocate) obj arg0))
|
||||
)
|
||||
|
||||
;; WARN: Failed store: (s.w! (+ v1-47 8) 0) at op 126
|
||||
;; WARN: Failed store: (s.w! (+ v1-47 12) 0) at op 127
|
||||
(defmethod draw hud ((obj hud))
|
||||
(when (not (hidden? obj))
|
||||
(with-dma-buffer-add-bucket ((s4-0 (-> *display* frames (-> *display* on-screen) global-buf))
|
||||
@@ -715,17 +561,9 @@
|
||||
(draw (-> obj sprites s3-0) s4-0 (-> obj level))
|
||||
)
|
||||
)
|
||||
(let ((s3-1 (new
|
||||
'stack
|
||||
'font-context
|
||||
*font-default-matrix*
|
||||
0
|
||||
0
|
||||
0.0
|
||||
(font-color default)
|
||||
(font-flags shadow kerning)
|
||||
)
|
||||
)
|
||||
(let ((s3-1
|
||||
(new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning))
|
||||
)
|
||||
)
|
||||
(dotimes (s2-0 14)
|
||||
(when (and (-> obj strings s2-0 text) (nonzero? (-> obj strings s2-0 pos 0)))
|
||||
@@ -747,18 +585,18 @@
|
||||
(dotimes (v1-55 2)
|
||||
(when (-> obj icons v1-55 icon)
|
||||
(set-vector!
|
||||
(-> obj icons v1-55 icon 0 root-override scale)
|
||||
(-> obj icons v1-55 icon 0 root scale)
|
||||
(* (-> obj icons v1-55 scale-x) (-> *video-params* relative-x-scale))
|
||||
(-> obj icons v1-55 scale-y)
|
||||
(* (-> obj icons v1-55 scale-x) (-> *video-params* relative-x-scale))
|
||||
1.0
|
||||
)
|
||||
(if (-> *blit-displays-work* horizontal-flip-flag)
|
||||
(set! (-> obj icons v1-55 icon 0 root-override trans x) (the float (- 256 (-> obj icons v1-55 pos 0))))
|
||||
(set! (-> obj icons v1-55 icon 0 root-override trans x) (the float (+ (-> obj icons v1-55 pos 0) -256)))
|
||||
(set! (-> obj icons v1-55 icon 0 root trans x) (the float (- 256 (-> obj icons v1-55 pos 0))))
|
||||
(set! (-> obj icons v1-55 icon 0 root trans x) (the float (+ (-> obj icons v1-55 pos 0) -256)))
|
||||
)
|
||||
(set! (-> obj icons v1-55 icon 0 root-override trans y) (the float (* (+ (-> obj icons v1-55 pos 1) -208) 2)))
|
||||
(set! (-> obj icons v1-55 icon 0 root-override trans z) (the float (-> obj icons v1-55 pos 2)))
|
||||
(set! (-> obj icons v1-55 icon 0 root trans y) (the float (* (+ (-> obj icons v1-55 pos 1) -208) 2)))
|
||||
(set! (-> obj icons v1-55 icon 0 root trans z) (the float (-> obj icons v1-55 pos 2)))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -792,7 +630,7 @@
|
||||
(the-as uint (seekl
|
||||
(the-as int (-> obj values s4-0 counter))
|
||||
0
|
||||
(the-as int (- (-> pp clock frame-counter) (-> pp clock old-frame-counter)))
|
||||
(the-as int (- (current-time) (-> pp clock old-frame-counter)))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -826,13 +664,10 @@
|
||||
)
|
||||
)
|
||||
(if (and (not *progress-process*)
|
||||
(>= (- (-> pp clock frame-counter) (-> obj last-hide-time)) (seconds 0.05))
|
||||
(>= (- (current-time) (-> obj last-hide-time)) (seconds 0.05))
|
||||
(>= (- (-> *display* base-clock frame-counter) (-> *game-info* letterbox-time)) (seconds 0.1))
|
||||
(>= (- (-> *display* base-clock frame-counter) (-> *game-info* blackout-time)) (seconds 0.1))
|
||||
(or (not *target*)
|
||||
(not (logtest? (-> *target* focus-status) (focus-status grabbed)))
|
||||
(logtest? (-> obj flags) (hud-flags show))
|
||||
)
|
||||
(or (not *target*) (not (focus-test? *target* grabbed)) (logtest? (-> obj flags) (hud-flags show)))
|
||||
(not (logtest? (-> obj flags) (hud-flags disable)))
|
||||
(not (or (= *master-mode* 'progress) (= *master-mode* 'menu)))
|
||||
(or s5-0
|
||||
@@ -894,17 +729,21 @@
|
||||
(the-as symbol (and (-> obj next-state) (= (-> obj next-state name) 'hud-hidden)))
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch (pointer process) vs (pointer manipy).
|
||||
(defun hud-create-icon ((arg0 hud) (arg1 int) (arg2 int))
|
||||
(let ((s4-0 (process-spawn manipy :init manipy-init (new 'static 'vector :w 1.0) #f arg2 #f 0 :to arg0)))
|
||||
(when s4-0
|
||||
(set! (-> (the-as process-drawable (-> s4-0 0)) draw dma-add-func)
|
||||
(the-as (function process-drawable draw-control symbol object none) dma-add-process-drawable-hud)
|
||||
)
|
||||
(logior! (-> s4-0 0 mask) (process-mask freeze pause))
|
||||
(logclear! (-> s4-0 0 mask) (process-mask menu progress))
|
||||
(send-event (ppointer->process s4-0) 'draw #f)
|
||||
(set! (-> arg0 icons arg1 icon) (the-as (pointer manipy) s4-0))
|
||||
s4-0
|
||||
(the-as
|
||||
(pointer manipy)
|
||||
(when s4-0
|
||||
(set! (-> (the-as process-drawable (-> s4-0 0)) draw dma-add-func)
|
||||
(the-as (function process-drawable draw-control symbol object none) dma-add-process-drawable-hud)
|
||||
)
|
||||
(logior! (-> s4-0 0 mask) (process-mask freeze pause))
|
||||
(logclear! (-> s4-0 0 mask) (process-mask menu progress))
|
||||
(send-event (ppointer->process s4-0) 'draw #f)
|
||||
(set! (-> arg0 icons arg1 icon) (the-as (pointer manipy) s4-0))
|
||||
s4-0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -924,19 +763,19 @@
|
||||
(case event-type
|
||||
(('show)
|
||||
(if (and (not *progress-process*)
|
||||
(!= (-> self last-hide-time) (-> self clock frame-counter))
|
||||
(!= (-> self last-hide-time) (current-time))
|
||||
(check-ready-and-maybe-show self #t)
|
||||
)
|
||||
(go hud-arriving)
|
||||
)
|
||||
)
|
||||
(('hide)
|
||||
(set! v0-1 (-> self clock frame-counter))
|
||||
(set! v0-1 (current-time))
|
||||
(set! (-> self last-hide-time) (the-as time-frame v0-1))
|
||||
v0-1
|
||||
)
|
||||
(('force-hide)
|
||||
(set! (-> self last-hide-time) (-> self clock frame-counter))
|
||||
(set! (-> self last-hide-time) (current-time))
|
||||
(set! v0-1 (logclear (-> self flags) (hud-flags show)))
|
||||
(set! (-> self flags) (the-as hud-flags v0-1))
|
||||
v0-1
|
||||
@@ -944,19 +783,19 @@
|
||||
(('force-show)
|
||||
(logior! (-> self flags) (hud-flags show))
|
||||
(if (and (not *progress-process*)
|
||||
(!= (-> self last-hide-time) (-> self clock frame-counter))
|
||||
(!= (-> self last-hide-time) (current-time))
|
||||
(check-ready-and-maybe-show self #t)
|
||||
)
|
||||
(go hud-arriving)
|
||||
)
|
||||
)
|
||||
(('hide-quick)
|
||||
(set! v0-1 (-> self clock frame-counter))
|
||||
(set! v0-1 (current-time))
|
||||
(set! (-> self last-hide-time) (the-as time-frame v0-1))
|
||||
v0-1
|
||||
)
|
||||
(('hide-and-die)
|
||||
(set! (-> self last-hide-time) (-> self clock frame-counter))
|
||||
(set! (-> self last-hide-time) (current-time))
|
||||
(logior! (-> self flags) (hud-flags should-die))
|
||||
(set! v0-1 (logclear (-> self flags) (hud-flags show)))
|
||||
(set! (-> self flags) (the-as hud-flags v0-1))
|
||||
@@ -1018,38 +857,38 @@
|
||||
(local-vars (v0-1 object))
|
||||
(case event-type
|
||||
(('hide-quick)
|
||||
(set! (-> self last-hide-time) (-> self clock frame-counter))
|
||||
(set! (-> self last-hide-time) (current-time))
|
||||
(set! (-> self offset) 1.0)
|
||||
(update-values self)
|
||||
(go hud-hidden)
|
||||
)
|
||||
(('force-hide)
|
||||
(set! (-> self last-hide-time) (-> self clock frame-counter))
|
||||
(set! (-> self last-hide-time) (current-time))
|
||||
(logclear! (-> self flags) (hud-flags show))
|
||||
(go hud-leaving 0.1)
|
||||
)
|
||||
(('force-show)
|
||||
(logior! (-> self flags) (hud-flags show))
|
||||
(if (and (not *progress-process*)
|
||||
(!= (-> self last-hide-time) (-> self clock frame-counter))
|
||||
(!= (-> self last-hide-time) (current-time))
|
||||
(check-ready-and-maybe-show self #t)
|
||||
)
|
||||
(go hud-arriving)
|
||||
)
|
||||
)
|
||||
(('hide)
|
||||
(set! (-> self last-hide-time) (-> self clock frame-counter))
|
||||
(set! (-> self last-hide-time) (current-time))
|
||||
(go hud-leaving 0.1)
|
||||
)
|
||||
(('hide-and-die)
|
||||
(set! (-> self last-hide-time) (-> self clock frame-counter))
|
||||
(set! (-> self last-hide-time) (current-time))
|
||||
(logior! (-> self flags) (hud-flags should-die))
|
||||
(logclear! (-> self flags) (hud-flags show))
|
||||
(go hud-leaving 0.1)
|
||||
)
|
||||
(('show)
|
||||
(if (and (not *progress-process*)
|
||||
(!= (-> self last-hide-time) (-> self clock frame-counter))
|
||||
(!= (-> self last-hide-time) (current-time))
|
||||
(check-ready-and-maybe-show self #t)
|
||||
)
|
||||
(go hud-arriving)
|
||||
@@ -1077,7 +916,7 @@
|
||||
)
|
||||
)
|
||||
:enter (behavior ()
|
||||
(set! (-> self trigger-time) (-> self clock frame-counter))
|
||||
(set! (-> self trigger-time) (current-time))
|
||||
(let ((gp-0 (-> self child)))
|
||||
(while gp-0
|
||||
(send-event (ppointer->process gp-0) 'draw #t)
|
||||
@@ -1096,7 +935,7 @@
|
||||
)
|
||||
(when (= (get-status *gui-control* (-> self gui-id)) (gui-status pending))
|
||||
(set! (-> self event-hook) #f)
|
||||
(set! (-> self last-hide-time) (-> self clock frame-counter))
|
||||
(set! (-> self last-hide-time) (current-time))
|
||||
(set! (-> self offset) 1.0)
|
||||
(update-values self)
|
||||
(go hud-hidden)
|
||||
@@ -1122,16 +961,14 @@
|
||||
(defstate hud-in (hud)
|
||||
:event (-> hud-arriving event)
|
||||
:code (behavior ()
|
||||
(set! (-> self trigger-time) (-> self clock frame-counter))
|
||||
(while (and (< (- (-> self clock frame-counter) (-> self trigger-time)) (seconds 2))
|
||||
(check-ready-and-maybe-show self #f)
|
||||
)
|
||||
(set! (-> self trigger-time) (current-time))
|
||||
(while (and (< (- (current-time) (-> self trigger-time)) (seconds 2)) (check-ready-and-maybe-show self #f))
|
||||
(set! (-> self offset) 0.0)
|
||||
(suspend)
|
||||
)
|
||||
(when (= (get-status *gui-control* (-> self gui-id)) (gui-status pending))
|
||||
(set! (-> self event-hook) #f)
|
||||
(set! (-> self last-hide-time) (-> self clock frame-counter))
|
||||
(set! (-> self last-hide-time) (current-time))
|
||||
(set! (-> self offset) 1.0)
|
||||
(update-values self)
|
||||
(go hud-hidden)
|
||||
@@ -1151,7 +988,7 @@
|
||||
)
|
||||
(when (= (get-status *gui-control* (-> self gui-id)) (gui-status pending))
|
||||
(set! (-> self event-hook) #f)
|
||||
(set! (-> self last-hide-time) (-> self clock frame-counter))
|
||||
(set! (-> self last-hide-time) (current-time))
|
||||
(set! (-> self offset) 1.0)
|
||||
(update-values self)
|
||||
(go hud-hidden)
|
||||
@@ -1172,7 +1009,7 @@
|
||||
(set! (-> self mask) (process-mask menu))
|
||||
(set! (-> self clock) (-> *display* real-clock))
|
||||
(set! (-> self flags) (hud-flags))
|
||||
(set! (-> self last-hide-time) (-> self clock frame-counter))
|
||||
(set! (-> self last-hide-time) (current-time))
|
||||
(set! (-> self offset) 1.0)
|
||||
(dotimes (v1-9 14)
|
||||
(set! (-> self strings v1-9 text) #f)
|
||||
|
||||
@@ -142,8 +142,8 @@
|
||||
|
||||
|
||||
(deftype engine-minimap (engine-pers)
|
||||
((alive-list-override connection-minimap :offset 24)
|
||||
(dead-list-override connection-minimap :offset 28)
|
||||
((alive-list connection-minimap :override)
|
||||
(dead-list connection-minimap :override)
|
||||
)
|
||||
:method-count-assert 15
|
||||
:size-assert #x20
|
||||
|
||||
@@ -1134,8 +1134,8 @@
|
||||
|
||||
(defmethod run-pending-updates! engine-minimap ((obj engine-minimap) (arg0 time-frame))
|
||||
(with-pp
|
||||
(let ((s2-0 (the-as (pointer connection-pers) (&-> obj alive-list-override)))
|
||||
(s3-0 (-> obj alive-list-override))
|
||||
(let ((s2-0 (the-as (pointer connection-pers) (&-> obj alive-list)))
|
||||
(s3-0 (-> obj alive-list))
|
||||
)
|
||||
(while s3-0
|
||||
(let ((s4-0 (-> s3-0 next)))
|
||||
@@ -1172,8 +1172,8 @@
|
||||
((and (logtest? (-> s3-0 flags) (minimap-flag fade-out)) (= (-> s3-0 alpha) 0.0))
|
||||
(kill-callback obj s3-0)
|
||||
(set! (-> s2-0 0) (-> s3-0 next))
|
||||
(set! (-> s3-0 next) (-> obj dead-list-override))
|
||||
(set! (-> obj dead-list-override) s3-0)
|
||||
(set! (-> s3-0 next) (-> obj dead-list))
|
||||
(set! (-> obj dead-list) s3-0)
|
||||
(+! (-> obj length) -1)
|
||||
)
|
||||
((and (handle->process (-> s3-0 handle))
|
||||
@@ -1974,7 +1974,7 @@
|
||||
)
|
||||
(dma-buffer-add-gs-set s5-0 (xyoffset-1 (new 'static 'gs-xy-offset :ofx #x640 :ofy #x640)))
|
||||
(when (!= (-> obj frustum-alpha) 0.0)
|
||||
(let ((s3-2 (the-as connection-pers (-> *minimap* engine alive-list-override))))
|
||||
(let ((s3-2 (the-as connection-pers (-> *minimap* engine alive-list))))
|
||||
(while s3-2
|
||||
(let ((a2-6 s3-2))
|
||||
(if (logtest? (-> (the-as connection-minimap a2-6) class flags) (minimap-flag frustum))
|
||||
@@ -1998,7 +1998,7 @@
|
||||
(format *stdcon* "minimap: mini-map-icons texture is #f~%")
|
||||
)
|
||||
)
|
||||
(let ((s3-4 (the-as connection-pers (-> *minimap* engine alive-list-override))))
|
||||
(let ((s3-4 (the-as connection-pers (-> *minimap* engine alive-list))))
|
||||
(while s3-4
|
||||
(let ((a2-7 s3-4))
|
||||
(if (logtest? (-> (the-as connection-minimap a2-7) class flags) (minimap-flag frustum))
|
||||
@@ -2018,7 +2018,7 @@
|
||||
(&+! (-> arg0 buf base) 112)
|
||||
)
|
||||
)
|
||||
(let ((s3-6 (the-as connection-pers (-> *minimap* engine alive-list-override))))
|
||||
(let ((s3-6 (the-as connection-pers (-> *minimap* engine alive-list))))
|
||||
(while s3-6
|
||||
(let ((a2-8 s3-6))
|
||||
(if (logtest? (-> (the-as connection-minimap a2-8) class flags) (minimap-flag racer))
|
||||
@@ -2313,7 +2313,7 @@
|
||||
((not a2-2)
|
||||
(when (!= (-> arg1 alpha) 0.0)
|
||||
(when (not (get-trail-for-connection obj arg1 #t))
|
||||
(let ((s2-1 (the-as connection-pers (-> *minimap* engine alive-list-override))))
|
||||
(let ((s2-1 (the-as connection-pers (-> *minimap* engine alive-list))))
|
||||
(while s2-1
|
||||
(let ((a1-12 s2-1))
|
||||
(if (and (= (the-as float (-> a1-12 param 1)) 0.0) (logtest? (-> arg1 class flags) (minimap-flag trail)))
|
||||
@@ -2530,7 +2530,7 @@
|
||||
(format *stdcon* "minimap: mini-map-icons texture is #f~%")
|
||||
)
|
||||
)
|
||||
(let ((s4-2 (the-as connection-pers (-> *minimap* engine alive-list-override))))
|
||||
(let ((s4-2 (the-as connection-pers (-> *minimap* engine alive-list))))
|
||||
(while s4-2
|
||||
(let ((a2-1 s4-2))
|
||||
(draw-connection obj s5-1 (the-as connection-minimap a2-1))
|
||||
@@ -2638,7 +2638,7 @@
|
||||
(f28-0 (the float (/ (-> s5-0 draw-pos y) 16)))
|
||||
(s4-2 (the-as connection-pers #f))
|
||||
)
|
||||
(let ((s3-2 (the-as connection-pers (-> *minimap* engine alive-list-override))))
|
||||
(let ((s3-2 (the-as connection-pers (-> *minimap* engine alive-list))))
|
||||
(while s3-2
|
||||
(let ((s2-2 s3-2))
|
||||
(when (logtest? (-> (the-as connection-minimap s2-2) class flags) (minimap-flag racer))
|
||||
|
||||
@@ -168,10 +168,10 @@
|
||||
)
|
||||
|
||||
(deftype hud-ring-cell (process-drawable)
|
||||
((parent-override (pointer progress) :offset 16)
|
||||
(joint-idx int32 :offset-assert 200)
|
||||
(init-angle degrees :offset-assert 204)
|
||||
(graphic-index int32 :offset-assert 208)
|
||||
((parent (pointer progress) :override)
|
||||
(joint-idx int32 :offset-assert 200)
|
||||
(init-angle degrees :offset-assert 204)
|
||||
(graphic-index int32 :offset-assert 208)
|
||||
)
|
||||
:heap-base #x60
|
||||
:method-count-assert 21
|
||||
@@ -194,10 +194,10 @@
|
||||
(set! (-> self joint-idx) arg0)
|
||||
(set! (-> self init-angle) arg1)
|
||||
(set! (-> self graphic-index) arg2)
|
||||
(set! (-> self root trans quad) (-> (the-as progress (-> self parent-override 0)) root trans quad))
|
||||
(quaternion-copy! (-> self root quat) (-> (the-as progress (-> self parent-override 0)) root quat))
|
||||
(set! (-> self root trans quad) (-> self parent 0 root trans quad))
|
||||
(quaternion-copy! (-> self root quat) (-> self parent 0 root quat))
|
||||
(quaternion-normalize! (-> self root quat))
|
||||
(set! (-> self root scale quad) (-> (the-as progress (-> self parent-override 0)) root scale quad))
|
||||
(set! (-> self root scale quad) (-> self parent 0 root scale quad))
|
||||
(let ((gp-1 (quaternion-vector-angle! (new 'stack-no-clear 'quaternion) *z-vector* (-> self init-angle))))
|
||||
(quaternion-normalize! gp-1)
|
||||
(quaternion*! (-> self root quat) (-> self root quat) gp-1)
|
||||
@@ -217,10 +217,7 @@
|
||||
(the-as
|
||||
int
|
||||
(-> *hud-ring-kiosk-graphic-remap*
|
||||
(mod
|
||||
(+ (-> self graphic-index) (-> (the-as progress (-> self parent-override 0)) graphic-index))
|
||||
(-> *hud-ring-kiosk-graphic-remap* length)
|
||||
)
|
||||
(mod (+ (-> self graphic-index) (-> self parent 0 graphic-index)) (-> *hud-ring-kiosk-graphic-remap* length))
|
||||
)
|
||||
)
|
||||
0
|
||||
@@ -232,10 +229,7 @@
|
||||
(the-as
|
||||
int
|
||||
(-> *hud-ring-demo-graphic-remap*
|
||||
(mod
|
||||
(+ (-> self graphic-index) (-> (the-as progress (-> self parent-override 0)) graphic-index))
|
||||
(-> *hud-ring-kiosk-graphic-remap* length)
|
||||
)
|
||||
(mod (+ (-> self graphic-index) (-> self parent 0 graphic-index)) (-> *hud-ring-kiosk-graphic-remap* length))
|
||||
)
|
||||
)
|
||||
0
|
||||
@@ -247,10 +241,7 @@
|
||||
(the-as
|
||||
int
|
||||
(-> *hud-ring-graphic-remap*
|
||||
(mod
|
||||
(+ (-> self graphic-index) (-> (the-as progress (-> self parent-override 0)) graphic-index))
|
||||
(-> *hud-ring-graphic-remap* length)
|
||||
)
|
||||
(mod (+ (-> self graphic-index) (-> self parent 0 graphic-index)) (-> *hud-ring-graphic-remap* length))
|
||||
)
|
||||
)
|
||||
0
|
||||
@@ -273,53 +264,47 @@
|
||||
:post (behavior ()
|
||||
(vector<-cspace!
|
||||
(-> self root trans)
|
||||
(-> (the-as progress (-> self parent-override 0)) node-list data (-> self joint-idx))
|
||||
(-> (the-as progress (-> self parent 0)) node-list data (-> self joint-idx))
|
||||
)
|
||||
(when (-> (the-as progress (-> self parent-override 0)) main-menu)
|
||||
(when (-> (the-as progress (-> self parent 0)) main-menu)
|
||||
(setup-masks (-> self draw) 0 2046)
|
||||
(cond
|
||||
((and (= *cheat-mode* #f) (= *kernel-boot-message* 'kiosk))
|
||||
(setup-masks
|
||||
(-> self draw)
|
||||
(the-as
|
||||
int
|
||||
(-> *hud-ring-kiosk-graphic-remap*
|
||||
(mod
|
||||
(+ (-> self graphic-index) (-> (the-as progress (-> self parent-override 0)) graphic-index))
|
||||
(-> *hud-ring-kiosk-graphic-remap* length)
|
||||
(the-as int (-> *hud-ring-kiosk-graphic-remap*
|
||||
(mod
|
||||
(+ (-> self graphic-index) (-> (the-as progress (-> self parent 0)) graphic-index))
|
||||
(-> *hud-ring-kiosk-graphic-remap* length)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
((and (= *cheat-mode* #f) (demo?))
|
||||
(setup-masks
|
||||
(-> self draw)
|
||||
(the-as
|
||||
int
|
||||
(-> *hud-ring-demo-graphic-remap*
|
||||
(mod
|
||||
(+ (-> self graphic-index) (-> (the-as progress (-> self parent-override 0)) graphic-index))
|
||||
(-> *hud-ring-kiosk-graphic-remap* length)
|
||||
(the-as int (-> *hud-ring-demo-graphic-remap*
|
||||
(mod
|
||||
(+ (-> self graphic-index) (-> (the-as progress (-> self parent 0)) graphic-index))
|
||||
(-> *hud-ring-kiosk-graphic-remap* length)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
(else
|
||||
(setup-masks
|
||||
(-> self draw)
|
||||
(the-as
|
||||
int
|
||||
(-> *hud-ring-graphic-remap*
|
||||
(mod
|
||||
(+ (-> self graphic-index) (-> (the-as progress (-> self parent-override 0)) graphic-index))
|
||||
(-> *hud-ring-graphic-remap* length)
|
||||
(the-as int (-> *hud-ring-graphic-remap*
|
||||
(mod
|
||||
(+ (-> self graphic-index) (-> (the-as progress (-> self parent 0)) graphic-index))
|
||||
(-> *hud-ring-graphic-remap* length)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
@@ -327,8 +312,8 @@
|
||||
)
|
||||
(when (= (-> self init-angle) 0.0)
|
||||
(cond
|
||||
((= (-> (the-as progress (-> self parent-override 0)) ring-angle)
|
||||
(-> (the-as progress (-> self parent-override 0)) ring-want-angle)
|
||||
((= (-> (the-as progress (-> self parent 0)) ring-angle)
|
||||
(-> (the-as progress (-> self parent 0)) ring-want-angle)
|
||||
)
|
||||
(set! (-> self draw color-mult x) 1.2)
|
||||
(set! (-> self draw color-mult y) 1.2)
|
||||
@@ -345,11 +330,11 @@
|
||||
(a0-8 (new 'stack-no-clear 'quaternion))
|
||||
(a1-26 *z-vector*)
|
||||
(f0-8 (-> self init-angle))
|
||||
(f1-2 (-> (the-as progress (-> self parent-override 0)) ring-angle))
|
||||
(f1-2 (-> (the-as progress (-> self parent 0)) ring-angle))
|
||||
(gp-0 (t9-6 a0-8 a1-26 (+ f0-8 (- f1-2 (* (the float (the int (/ f1-2 6553.6))) 6553.6)))))
|
||||
)
|
||||
(quaternion-normalize! gp-0)
|
||||
(quaternion-copy! (-> self root quat) (-> (the-as progress (-> self parent-override 0)) root quat))
|
||||
(quaternion-copy! (-> self root quat) (-> (the-as progress (-> self parent 0)) root quat))
|
||||
(quaternion-normalize! (-> self root quat))
|
||||
(quaternion*! (-> self root quat) (-> self root quat) gp-0)
|
||||
)
|
||||
|
||||
@@ -79,3 +79,16 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro fsec (x)
|
||||
"Convert number to seconds unit.
|
||||
Returns float."
|
||||
(cond
|
||||
((or (integer? x) (float? x))
|
||||
(* 1.0 TICKS_PER_SECOND x)
|
||||
)
|
||||
(#t
|
||||
`(* 1.0 TICKS_PER_SECOND ,x)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -276,7 +276,8 @@
|
||||
;; Base type for all actual processes.
|
||||
;; this can be used directly, or child types can be made.
|
||||
(deftype process (process-tree)
|
||||
((pool dead-pool ) ;; where to return us when we die
|
||||
((self process :override) ;; ourselves!
|
||||
(pool dead-pool ) ;; where to return us when we die
|
||||
(status symbol :offset-assert 40) ;; used by kernel to track init/death
|
||||
(pid int32 ) ;; globally unique ID, never reused for another
|
||||
(main-thread cpu-thread :offset-assert 48) ;; suspendable main thread
|
||||
@@ -483,13 +484,13 @@
|
||||
;; this uses the self field, which seems to always just get set to the object.
|
||||
;; confirmed in Jak 1 that using self here is useless, not sure...
|
||||
`(let ((the-pp ,ppointer))
|
||||
(the process (if the-pp (-> the-pp 0 self)))
|
||||
(if the-pp (-> the-pp 0 self))
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro process->ppointer (proc)
|
||||
"safely get a (pointer process) from a process, returning #f if invalid."
|
||||
`(let ((the-proc (the-as process ,proc)))
|
||||
`(let ((the-proc ,proc))
|
||||
(if the-proc (-> the-proc ppointer))
|
||||
)
|
||||
)
|
||||
@@ -503,7 +504,7 @@
|
||||
|
||||
(defmacro process->handle (proc)
|
||||
"convert a process to a handle. if proc is #f, returns a #f handle."
|
||||
`(ppointer->handle (process->ppointer ,proc))
|
||||
`(ppointer->handle (process->ppointer (the-as process ,proc)))
|
||||
)
|
||||
|
||||
(defmethod print handle ((obj handle))
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-battle))
|
||||
(clear-speech-flags! arg0)
|
||||
(move-to-point! (-> arg0 root-override2) (the-as vector (-> arg0 ash-course spots 0)))
|
||||
(move-to-point! (-> arg0 root) (the-as vector (-> arg0 ash-course spots 0)))
|
||||
(let ((v1-7 (get-current-task-event (-> arg0 task))))
|
||||
(if (= (-> v1-7 action) (game-task-action say))
|
||||
(add-process
|
||||
@@ -63,7 +63,7 @@
|
||||
)
|
||||
(let ((a0-8 15))
|
||||
(set! (-> arg0 hit-points) a0-8)
|
||||
(set! (-> arg0 enemy-info-override default-hit-points) a0-8)
|
||||
(set! (-> arg0 enemy-info default-hit-points) a0-8)
|
||||
)
|
||||
(set! (-> arg0 waypoint-time0) 0)
|
||||
(let ((v1-10 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
@@ -97,7 +97,7 @@
|
||||
((and (nonzero? (-> arg1 waypoint-time0))
|
||||
(and (>= (- (current-time) (-> arg1 waypoint-time0)) (seconds 1))
|
||||
(let ((f0-0 143360.0))
|
||||
(and (>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (target-pos 0) (-> arg1 root-override2 trans)))
|
||||
(and (>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (target-pos 0) (-> arg1 root trans)))
|
||||
(= (-> s5-0 action) (game-task-action say))
|
||||
)
|
||||
)
|
||||
@@ -328,12 +328,12 @@
|
||||
:on-set (lambda ((arg0 ashelin-battle))
|
||||
(logclear! (-> arg0 bot-flags) (bot-flags bf06))
|
||||
(bot-method-196 arg0)
|
||||
(let ((v1-5 (-> arg0 root-override2 root-prim)))
|
||||
(let ((v1-5 (-> arg0 root root-prim)))
|
||||
(set! (-> v1-5 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-5 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
(set! (-> arg0 root-override2 backup-collide-as) (collide-spec))
|
||||
(set! (-> arg0 root-override2 backup-collide-with) (collide-spec))
|
||||
(set! (-> arg0 root backup-collide-as) (collide-spec))
|
||||
(set! (-> arg0 root backup-collide-with) (collide-spec))
|
||||
0
|
||||
(send-event arg0 'hide #t)
|
||||
(let ((v1-15 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
@@ -429,7 +429,7 @@
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha042")
|
||||
)
|
||||
:speech-tunings (new 'static 'inline-array bot-speech-tuning 1
|
||||
(new 'static 'bot-speech-tuning :fo-min 30 :fo-max 100 :fo-curve #xb :trans? #t)
|
||||
(new 'static 'bot-speech-tuning :fo-min 30 :fo-max 100 :fo-curve 11 :trans? #t)
|
||||
)
|
||||
:spots (new 'static 'inline-array bot-spot 8
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2263285.8 :y 213319.69 :z -4552335.5 :w 16384.0))
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
:event (-> (method-of-type piston idle) event)
|
||||
:enter (behavior ()
|
||||
(let ((f1-1 (- (-> self range-top) (-> self range-bottom))))
|
||||
(set! (-> self root-override trans y) (+ (-> self init-height) (+ (-> self range-bottom) f1-1)))
|
||||
(set! (-> self root trans y) (+ (-> self init-height) (+ (-> self range-bottom) f1-1)))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
@@ -106,7 +106,7 @@
|
||||
:code (the-as (function none :behavior piston) sleep-code)
|
||||
:post (behavior ()
|
||||
(let ((f0-1 (- (-> self range-top) (-> self range-bottom))))
|
||||
(set! (-> self root-override trans y)
|
||||
(set! (-> self root trans y)
|
||||
(+ (-> self init-height) (+ (-> self range-bottom) (get-scaled-val! (-> self sync) f0-1 0)))
|
||||
)
|
||||
)
|
||||
@@ -151,11 +151,11 @@ This commonly includes things such as:
|
||||
(set! (-> s4-0 backup-collide-as) (-> v1-12 prim-core collide-as))
|
||||
(set! (-> s4-0 backup-collide-with) (-> v1-12 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override) s4-0)
|
||||
(set! (-> obj root) s4-0)
|
||||
)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(set! (-> obj sound-trans quad) (-> obj root-override trans quad))
|
||||
(set! (-> obj root-override trans y) (+ 53248.0 (-> obj root-override trans y)))
|
||||
(set! (-> obj sound-trans quad) (-> obj root trans quad))
|
||||
(set! (-> obj root trans y) (+ 53248.0 (-> obj root trans y)))
|
||||
(initialize-skeleton
|
||||
obj
|
||||
(the-as skeleton-group (art-group-get-by-name *level* "skel-piston" (the-as (pointer uint32) #f)))
|
||||
@@ -199,8 +199,8 @@ This commonly includes things such as:
|
||||
(set! (-> obj range-bottom) (* 4096.0 f28-0))
|
||||
(set! (-> obj range-top) (* 4096.0 f30-0))
|
||||
)
|
||||
(set! (-> obj init-height) (-> obj root-override trans y))
|
||||
(set! (-> obj root-override trans y) (+ -40960.0 (-> obj root-override trans y)))
|
||||
(set! (-> obj init-height) (-> obj root trans y))
|
||||
(set! (-> obj root trans y) (+ -40960.0 (-> obj root trans y)))
|
||||
(cond
|
||||
((logtest? (actor-option user18) (-> obj fact options))
|
||||
(set! (-> obj looping-id) (new-sound-id))
|
||||
@@ -550,7 +550,7 @@ This commonly includes things such as:
|
||||
)
|
||||
|
||||
(deftype atollrotpipe (process-drawable)
|
||||
((root-override collide-shape-moving :offset 128)
|
||||
((root collide-shape-moving :override)
|
||||
(smush smush-control :inline :offset 200)
|
||||
(init-quat quaternion :inline :offset 240)
|
||||
(rot-angle float :offset 256)
|
||||
@@ -589,7 +589,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
)
|
||||
(quaternion*! (-> self root-override quat) (-> self init-quat) a2-1)
|
||||
(quaternion*! (-> self root quat) (-> self init-quat) a2-1)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
@@ -607,7 +607,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
(activate! (-> self smush) -1.0 60 225 1.0 1.0 (-> self clock))
|
||||
(sound-play "rot-pipe-wiggle" :position (-> self root-override trans))
|
||||
(sound-play "rot-pipe-wiggle" :position (-> self root trans))
|
||||
(let ((gp-3 (current-time)))
|
||||
(until (>= (- (current-time) gp-3) (seconds 0.75))
|
||||
(set! (-> self shudder-angle) (* 364.0889 (update! (-> self smush))))
|
||||
@@ -621,7 +621,7 @@ This commonly includes things such as:
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(sound-play "rot-pipe-turn" :position (-> self root-override trans))
|
||||
(sound-play "rot-pipe-turn" :position (-> self root trans))
|
||||
(let* ((f0-7 2.0)
|
||||
(f30-1 (* 16384.0 f0-7))
|
||||
(gp-6 (current-time))
|
||||
@@ -678,9 +678,9 @@ This commonly includes things such as:
|
||||
(set! (-> s4-0 backup-collide-as) (-> v1-12 prim-core collide-as))
|
||||
(set! (-> s4-0 backup-collide-with) (-> v1-12 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override) (the-as collide-shape-moving s4-0))
|
||||
(set! (-> obj root) (the-as collide-shape-moving s4-0))
|
||||
)
|
||||
(set! (-> obj root-override rider-max-momentum) 8192.0)
|
||||
(set! (-> obj root rider-max-momentum) 8192.0)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(initialize-skeleton
|
||||
obj
|
||||
@@ -690,7 +690,7 @@ This commonly includes things such as:
|
||||
(logclear! (-> obj mask) (process-mask actor-pause))
|
||||
(set! (-> obj rot-angle) 0.0)
|
||||
(set! (-> obj shudder-angle) 0.0)
|
||||
(quaternion-copy! (-> obj init-quat) (-> obj root-override quat))
|
||||
(quaternion-copy! (-> obj init-quat) (-> obj root quat))
|
||||
(ja-channel-push! 1 0)
|
||||
(let ((s4-2 (-> obj skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
@@ -719,7 +719,7 @@ This commonly includes things such as:
|
||||
)
|
||||
|
||||
(deftype slider (process-drawable)
|
||||
((root-override collide-shape-moving :offset 128)
|
||||
((root collide-shape-moving :override)
|
||||
(path-pos float :offset-assert 200)
|
||||
(sync sync-eased :inline :offset-assert 208)
|
||||
(attack-id uint32 :offset-assert 252)
|
||||
@@ -758,7 +758,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
(when s3-0
|
||||
(let ((s4-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self root-override quat))))
|
||||
(let ((s4-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self root quat))))
|
||||
(let* ((v1-7 (vector-z-quaternion! (new 'stack-no-clear 'vector) (get-quat (the-as process-focusable s3-0) 0)))
|
||||
(f0-1 (vector-dot s4-1 v1-7))
|
||||
)
|
||||
@@ -797,19 +797,19 @@ This commonly includes things such as:
|
||||
:post (behavior ()
|
||||
(let ((f30-0 (get-norm! (-> self sync) 0)))
|
||||
(set! (-> self path-pos) f30-0)
|
||||
(get-point-at-percent-along-path! (-> self path) (-> self root-override trans) (-> self path-pos) 'interp)
|
||||
(get-point-at-percent-along-path! (-> self path) (-> self root trans) (-> self path-pos) 'interp)
|
||||
(let ((f0-3 (sin-rad (* 3.1415925 f30-0))))
|
||||
(update-vol! (-> self sound) (sqrtf f0-3))
|
||||
)
|
||||
)
|
||||
(update-trans! (-> self sound) (-> self root-override trans))
|
||||
(update-trans! (-> self sound) (-> self root trans))
|
||||
(let ((a1-4 (new 'stack-no-clear 'overlaps-others-params)))
|
||||
(set! (-> a1-4 options) (overlaps-others-options oo0))
|
||||
(set! (-> a1-4 collide-with-filter) (the-as collide-spec -1))
|
||||
(set! (-> a1-4 tlist) *touching-list*)
|
||||
(find-overlapping-shapes (-> self root-override) a1-4)
|
||||
(find-overlapping-shapes (-> self root) a1-4)
|
||||
)
|
||||
(let ((v1-17 (-> self root-override trans))
|
||||
(let ((v1-17 (-> self root trans))
|
||||
(a0-6 (-> self l-bolts))
|
||||
(a1-5 (-> self l-points))
|
||||
)
|
||||
@@ -881,7 +881,7 @@ This commonly includes things such as:
|
||||
(set! (-> s4-0 backup-collide-as) (-> v1-5 prim-core collide-as))
|
||||
(set! (-> s4-0 backup-collide-with) (-> v1-5 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override) (the-as collide-shape-moving s4-0))
|
||||
(set! (-> obj root) (the-as collide-shape-moving s4-0))
|
||||
)
|
||||
(logclear! (-> obj mask) (process-mask actor-pause))
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
@@ -945,7 +945,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
(s4-2 (-> obj l-points))
|
||||
(s3-0 (-> obj root-override trans))
|
||||
(s3-0 (-> obj root trans))
|
||||
)
|
||||
(dotimes (s2-0 4)
|
||||
(set! (-> obj l-bolts s2-0) (new 'process 'lightning-control s5-2 obj 0.0))
|
||||
@@ -965,7 +965,7 @@ This commonly includes things such as:
|
||||
)
|
||||
)
|
||||
(set! (-> obj sound)
|
||||
(new 'process 'ambient-sound (static-sound-spec "slider" :fo-max 50) (-> obj root-override trans))
|
||||
(new 'process 'ambient-sound (static-sound-spec "slider" :fo-max 50) (-> obj root trans))
|
||||
)
|
||||
(ja-channel-push! 1 0)
|
||||
(let ((s5-3 (-> obj skel root-channel 0)))
|
||||
|
||||
@@ -1617,7 +1617,7 @@
|
||||
|
||||
(defmethod get-trans atoll-tank ((obj atoll-tank) (arg0 int))
|
||||
"@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]])"
|
||||
(let ((v1-0 (-> obj root-override)))
|
||||
(let ((v1-0 (-> obj root)))
|
||||
(case arg0
|
||||
((3 2)
|
||||
(let ((v0-0 (new 'static 'vector :w 1.0)))
|
||||
@@ -1636,8 +1636,8 @@
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defbehavior atoll-tank-init-by-other atoll-tank ((arg0 process-drawable) (arg1 int))
|
||||
(set! (-> self is-master?) #f)
|
||||
(set! (-> self root-override) (the-as collide-shape (new 'process 'trsqv)))
|
||||
(let ((s4-0 (-> self root-override)))
|
||||
(set! (-> self root) (the-as collide-shape (new 'process 'trsqv)))
|
||||
(let ((s4-0 (-> self root)))
|
||||
(set! (-> s4-0 trans quad) (-> arg0 root trans quad))
|
||||
(quaternion-copy! (-> s4-0 quat) (-> arg0 root quat))
|
||||
(vector-identity! (-> s4-0 scale))
|
||||
@@ -1685,7 +1685,7 @@
|
||||
:virtual #t
|
||||
:trans (behavior ()
|
||||
(if (-> self is-master?)
|
||||
(spawn (-> self aftermath-part) (-> self root-override trans))
|
||||
(spawn (-> self aftermath-part) (-> self root trans))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
@@ -1776,7 +1776,7 @@ This commonly includes things such as:
|
||||
(set! (-> s4-0 backup-collide-as) (-> v1-28 prim-core collide-as))
|
||||
(set! (-> s4-0 backup-collide-with) (-> v1-28 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override) s4-0)
|
||||
(set! (-> obj root) s4-0)
|
||||
)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(initialize-skeleton
|
||||
@@ -1807,12 +1807,12 @@ This commonly includes things such as:
|
||||
)
|
||||
(else
|
||||
(logior! (-> obj draw status) (draw-control-status no-draw))
|
||||
(let ((v1-54 (-> obj root-override root-prim)))
|
||||
(let ((v1-54 (-> obj root root-prim)))
|
||||
(set! (-> v1-54 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-54 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
(set! (-> obj root-override backup-collide-as) (collide-spec))
|
||||
(set! (-> obj root-override backup-collide-with) (collide-spec))
|
||||
(set! (-> obj root backup-collide-as) (collide-spec))
|
||||
(set! (-> obj root backup-collide-with) (collide-spec))
|
||||
0
|
||||
(go (method-of-object obj dormant))
|
||||
)
|
||||
|
||||
@@ -123,9 +123,9 @@
|
||||
(case arg2
|
||||
(('reset)
|
||||
(let ((v1-1 (the-as object (-> arg3 param 0))))
|
||||
(set! (-> obj root-override trans quad) (-> (the-as matrix v1-1) trans quad))
|
||||
(set! (-> obj root trans quad) (-> (the-as matrix v1-1) trans quad))
|
||||
(set! (-> obj starting-pos quad) (-> (the-as matrix v1-1) trans quad))
|
||||
(set! (-> obj root-override transv quad) (-> (&+ (the-as matrix v1-1) 64) quad 0))
|
||||
(set! (-> obj root transv quad) (-> (&+ (the-as matrix v1-1) 64) quad 0))
|
||||
(set! (-> obj pre-move-transv quad) (-> (&+ (the-as matrix v1-1) 64) quad 0))
|
||||
)
|
||||
(set! (-> obj hits) 0)
|
||||
@@ -167,7 +167,7 @@
|
||||
(defmethod spawn-impact-particles juicer-shot ((obj juicer-shot))
|
||||
"Spawns associated particles with the projectile if applicable"
|
||||
(let ((s5-0 (-> obj starting-pos))
|
||||
(s4-0 (-> obj root-override trans))
|
||||
(s4-0 (-> obj root trans))
|
||||
)
|
||||
(when (line-in-view-frustum? s5-0 s4-0)
|
||||
(let ((s3-0 (new 'stack-no-clear 'vector))
|
||||
@@ -258,7 +258,7 @@
|
||||
(t2-0 #f)
|
||||
(t3-0 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-0 trans quad) (-> obj root-override trans quad))
|
||||
(set! (-> t3-0 trans quad) (-> obj root trans quad))
|
||||
((the-as (function object object object object object object object object none) t9-3)
|
||||
a0-4
|
||||
a1-2
|
||||
@@ -279,7 +279,7 @@
|
||||
|
||||
(defmethod made-impact? juicer-shot ((obj juicer-shot))
|
||||
"TODO - queries the collision cache, return true/false"
|
||||
(let ((gp-0 (-> obj root-override))
|
||||
(let ((gp-0 (-> obj root))
|
||||
(s5-0 (new 'stack-no-clear 'collide-query))
|
||||
)
|
||||
(let ((v1-0 s5-0))
|
||||
@@ -306,12 +306,12 @@
|
||||
(let ((s5-0 (handle->process (-> arg0 victim))))
|
||||
(cond
|
||||
(s5-0
|
||||
(set! (-> arg0 root-override trans quad) (-> (get-trans (the-as process-focusable s5-0) 3) quad))
|
||||
(set! (-> arg0 root trans quad) (-> (get-trans (the-as process-focusable s5-0) 3) quad))
|
||||
((method-of-type projectile deal-damage!) arg0 s5-0 (the-as event-message-block #f))
|
||||
)
|
||||
(else
|
||||
(projectile-move-fill-line-sphere arg0)
|
||||
(if (logtest? (-> arg0 root-override status) (collide-status touch-surface))
|
||||
(if (logtest? (-> arg0 root status) (collide-status touch-surface))
|
||||
(go (method-of-object arg0 impact))
|
||||
)
|
||||
)
|
||||
@@ -358,9 +358,9 @@
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-10 prim-core collide-with))
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 1))
|
||||
(set! (-> obj root-override) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
(set! (-> obj root-override pat-ignore-mask)
|
||||
(set! (-> obj root pat-ignore-mask)
|
||||
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noproj #x1 :noendlessfall #x1)
|
||||
)
|
||||
(none)
|
||||
@@ -381,9 +381,9 @@
|
||||
(logior! (-> obj options) (projectile-options proj-options-8000))
|
||||
(set! (-> obj attack-mode) 'eco-yellow)
|
||||
(set! (-> obj move) juicer-proj-move)
|
||||
(set! (-> obj root-override dynam gravity y) 0.0)
|
||||
(set! (-> obj root-override dynam gravity-length) 0.0)
|
||||
(set! (-> obj root-override dynam gravity-max) 0.0)
|
||||
(set! (-> obj root dynam gravity y) 0.0)
|
||||
(set! (-> obj root dynam gravity-length) 0.0)
|
||||
(set! (-> obj root dynam gravity-max) 0.0)
|
||||
(set! (-> obj attack-mode) 'shock-red)
|
||||
(dotimes (s5-0 5)
|
||||
(set! (-> obj lightning s5-0) (new
|
||||
@@ -664,7 +664,7 @@
|
||||
:walk-travel-speed (meters 2)
|
||||
:walk-acceleration (meters 2)
|
||||
:walk-turning-acceleration (meters 3)
|
||||
:maximum-rotation-rate (degrees 360.0)
|
||||
:maximum-rotation-rate (degrees 360)
|
||||
:notice-nav-radius (meters 7.5)
|
||||
:frustration-distance (meters 8)
|
||||
:frustration-time (seconds 4)
|
||||
@@ -742,7 +742,7 @@
|
||||
)
|
||||
)
|
||||
(zero? (get-rand-int obj 3))
|
||||
(let ((f0-0 (vector-vector-distance-squared (-> obj root-override2 trans) (target-pos 0)))
|
||||
(let ((f0-0 (vector-vector-distance-squared (-> obj root trans) (target-pos 0)))
|
||||
(f1-0 32768.0)
|
||||
)
|
||||
(>= f0-0 (* f1-0 f1-0))
|
||||
@@ -812,9 +812,9 @@
|
||||
(('instant-death)
|
||||
(when (> (-> obj hit-points) 0)
|
||||
(set! (-> obj hit-points) 0)
|
||||
(set! (-> obj root-override2 penetrated-by) (get-penetrate-info obj))
|
||||
(set! (-> obj root penetrated-by) (get-penetrate-info obj))
|
||||
(let ((s4-0 (enemy-method-50 obj (new 'stack-no-clear 'vector))))
|
||||
(vector-z-quaternion! s4-0 (-> obj root-override2 quat))
|
||||
(vector-z-quaternion! s4-0 (-> obj root quat))
|
||||
(vector-float*! s4-0 s4-0 -1.0)
|
||||
(vector-normalize! s4-0 1.0)
|
||||
)
|
||||
@@ -917,7 +917,7 @@
|
||||
(set! (-> v1-102 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag38) (-> v1-102 enemy-flags))))
|
||||
)
|
||||
(set! (-> v1-102 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag36) (-> v1-102 enemy-flags))))
|
||||
(set! (-> v1-102 nav callback-info) (-> v1-102 enemy-info-override callback-info))
|
||||
(set! (-> v1-102 nav callback-info) (-> v1-102 enemy-info callback-info))
|
||||
)
|
||||
0
|
||||
)
|
||||
@@ -930,7 +930,7 @@
|
||||
|
||||
(defmethod enemy-method-84 juicer ((obj juicer) (arg0 enemy-jump-info))
|
||||
(cond
|
||||
((logtest? (-> obj fact-info-override enemy-options) (enemy-option user8))
|
||||
((logtest? (-> obj fact enemy-options) (enemy-option user8))
|
||||
(vector-vector-xz-distance (-> arg0 start-pos) (-> arg0 dest-pos))
|
||||
(let ((f0-1 8192.0))
|
||||
(setup-from-to-height! (-> arg0 traj) (-> arg0 start-pos) (-> arg0 dest-pos) f0-1 -4.551111)
|
||||
@@ -967,7 +967,7 @@
|
||||
(format 0 "ERROR: ~A has no intro path, skipping ambush~%" (-> self name))
|
||||
(go-virtual notice)
|
||||
)
|
||||
(get-point-in-path! (-> self intro-path) (-> self root-override2 trans) 0.0 'interp)
|
||||
(get-point-in-path! (-> self intro-path) (-> self root trans) 0.0 'interp)
|
||||
(none)
|
||||
)
|
||||
:code (behavior ()
|
||||
@@ -1033,11 +1033,11 @@
|
||||
:code (behavior ()
|
||||
(ja-channel-push! 1 (seconds 0.075))
|
||||
(let ((s5-0 0))
|
||||
(let ((s4-0 (quaternion->matrix (new 'stack-no-clear 'matrix) (-> self root-override2 quat)))
|
||||
(let ((s4-0 (quaternion->matrix (new 'stack-no-clear 'matrix) (-> self root quat)))
|
||||
(gp-1 (vector-!
|
||||
(new 'stack-no-clear 'vector)
|
||||
(get-trans (the-as process-focusable (handle->process (-> self focus handle))) 0)
|
||||
(-> self root-override2 trans)
|
||||
(-> self root trans)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -1066,7 +1066,7 @@
|
||||
(let ((a1-9 (-> self nav state)))
|
||||
(set! (-> gp-2 quad) (-> a1-9 travel quad))
|
||||
)
|
||||
(seek-toward-heading-vec! (-> self root-override2) gp-2 (-> self nav max-rotation-rate) (seconds 0.02))
|
||||
(seek-toward-heading-vec! (-> self root) gp-2 (-> self nav max-rotation-rate) (seconds 0.02))
|
||||
(suspend)
|
||||
(ja :num! (seek! max f30-1))
|
||||
)
|
||||
@@ -1152,10 +1152,10 @@
|
||||
(let ((a0-1 (handle->process (-> self focus handle))))
|
||||
(when a0-1
|
||||
(let* ((gp-0 (get-trans (the-as process-focusable a0-1) 1))
|
||||
(f30-0 (vector-vector-xz-distance (-> self root-override2 trans) gp-0))
|
||||
(f30-0 (vector-vector-xz-distance (-> self root trans) gp-0))
|
||||
)
|
||||
(cond
|
||||
((< (- (-> gp-0 y) (-> self root-override2 trans y)) 4096.0)
|
||||
((< (- (-> gp-0 y) (-> self root trans y)) 4096.0)
|
||||
(let ((v1-10 (-> self nav state)))
|
||||
(logclear! (-> v1-10 flags) (nav-state-flag directional-mode))
|
||||
(logior! (-> v1-10 flags) (nav-state-flag target-poly-dirty))
|
||||
@@ -1223,23 +1223,22 @@
|
||||
(a0-3 self)
|
||||
)
|
||||
(when (and (logtest? (enemy-flag enemy-flag37) (-> a0-3 enemy-flags)) gp-0)
|
||||
(let ((f0-1 (fabs (deg-diff
|
||||
(quaternion-y-angle (-> self root-override2 quat))
|
||||
(vector-y-angle (vector-!
|
||||
(new 'stack-no-clear 'vector)
|
||||
(get-trans (the-as process-focusable gp-0) 0)
|
||||
(-> self root-override2 trans)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((f0-1
|
||||
(fabs
|
||||
(deg-diff
|
||||
(quaternion-y-angle (-> self root quat))
|
||||
(vector-y-angle
|
||||
(vector-! (new 'stack-no-clear 'vector) (get-trans (the-as process-focusable gp-0) 0) (-> self root trans))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((or (< 5461.3335 f0-1) (and (-> self using-turn-anim) (< 910.2222 f0-1)))
|
||||
(set! (-> self using-turn-anim) #t)
|
||||
(seek-to-point-toward-point!
|
||||
(-> self root-override2)
|
||||
(-> self root)
|
||||
(get-trans (the-as process-focusable gp-0) 0)
|
||||
(-> self nav max-rotation-rate)
|
||||
(seconds 0.2)
|
||||
@@ -1294,7 +1293,7 @@
|
||||
:event (the-as (function process int symbol event-message-block object :behavior juicer) enemy-event-handler)
|
||||
:enter (behavior ()
|
||||
(let ((v1-1 (-> self nav state))
|
||||
(a0-1 (-> self root-override2 trans))
|
||||
(a0-1 (-> self root trans))
|
||||
)
|
||||
(logclear! (-> v1-1 flags) (nav-state-flag directional-mode))
|
||||
(logior! (-> v1-1 flags) (nav-state-flag target-poly-dirty))
|
||||
@@ -1358,9 +1357,7 @@
|
||||
(until (ja-done? 0)
|
||||
(let ((s3-0 (handle->process (-> self focus handle))))
|
||||
(when s3-0
|
||||
(when (< 28672.0
|
||||
(vector-vector-distance (-> self root-override2 trans) (get-trans (the-as process-focusable s3-0) 0))
|
||||
)
|
||||
(when (< 28672.0 (vector-vector-distance (-> self root trans) (get-trans (the-as process-focusable s3-0) 0)))
|
||||
(fire-projectile self (the-as process-focusable s3-0) s5-0)
|
||||
(current-time)
|
||||
(if (not gp-0)
|
||||
@@ -1369,7 +1366,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (and (logtest? (-> self enemy-flags) (enemy-flag look-at-focus)) (-> self enemy-info-override use-victory))
|
||||
(if (and (logtest? (-> self enemy-flags) (enemy-flag look-at-focus)) (-> self enemy-info use-victory))
|
||||
(go-virtual victory)
|
||||
)
|
||||
(b!
|
||||
@@ -1399,9 +1396,7 @@
|
||||
(send-event (handle->process (-> self current-projectile)) 'die)
|
||||
(let ((a0-37 (handle->process (-> self focus handle))))
|
||||
(when a0-37
|
||||
(if (>= 28672.0
|
||||
(vector-vector-distance (-> self root-override2 trans) (get-trans (the-as process-focusable a0-37) 0))
|
||||
)
|
||||
(if (>= 28672.0 (vector-vector-distance (-> self root trans) (get-trans (the-as process-focusable a0-37) 0)))
|
||||
(go-virtual circling)
|
||||
)
|
||||
)
|
||||
@@ -1437,7 +1432,7 @@
|
||||
(set! (-> v1-15 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag38) (-> v1-15 enemy-flags))))
|
||||
)
|
||||
(set! (-> v1-15 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag36) (-> v1-15 enemy-flags))))
|
||||
(set! (-> v1-15 nav callback-info) (-> v1-15 enemy-info-override callback-info))
|
||||
(set! (-> v1-15 nav callback-info) (-> v1-15 enemy-info callback-info))
|
||||
)
|
||||
0
|
||||
(let ((v1-18 self))
|
||||
@@ -1470,7 +1465,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (< 20480.0 (vector-vector-xz-distance (-> self focus-pos) (-> self root-override2 trans)))
|
||||
(when (< 20480.0 (vector-vector-xz-distance (-> self focus-pos) (-> self root trans)))
|
||||
(let ((v1-54 self))
|
||||
(set! (-> v1-54 enemy-flags) (the-as enemy-flag (logclear (-> v1-54 enemy-flags) (enemy-flag enemy-flag36))))
|
||||
(set! (-> v1-54 nav callback-info) *nav-enemy-null-callback-info*)
|
||||
@@ -1480,7 +1475,7 @@
|
||||
(set! (-> v1-57 enemy-flags) (the-as enemy-flag (logclear (-> v1-57 enemy-flags) (enemy-flag enemy-flag37))))
|
||||
)
|
||||
0
|
||||
(vector-reset! (-> self root-override2 transv))
|
||||
(vector-reset! (-> self root transv))
|
||||
(ja-channel-push! 1 (seconds 0.1))
|
||||
(let ((gp-2 (-> self draw art-group data (-> *juicer-global-info* celebrate-anim (get-rand-int self 2))))
|
||||
(f30-2 (get-rand-float-range self 0.9 1.1))
|
||||
@@ -1507,13 +1502,10 @@
|
||||
(local-vars (v1-37 enemy-flag) (v1-45 enemy-flag))
|
||||
(ja-channel-push! 1 (seconds 0.2))
|
||||
(let ((f30-0 (get-rand-float-range self 0.9 1.1)))
|
||||
(ja-no-eval :group! (-> self draw art-group data (-> self enemy-info-override hit-anim))
|
||||
(ja-no-eval :group! (-> self draw art-group data (-> self enemy-info hit-anim))
|
||||
:num! (seek!
|
||||
(the float
|
||||
(+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self enemy-info-override hit-anim)))
|
||||
frames
|
||||
num-frames
|
||||
)
|
||||
(+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self enemy-info hit-anim))) frames num-frames)
|
||||
-1
|
||||
)
|
||||
)
|
||||
@@ -1560,7 +1552,7 @@
|
||||
:code (behavior ()
|
||||
(ja-channel-push! 1 (seconds 1))
|
||||
(let ((f30-0 (get-rand-float-range self 0.9 1.1))
|
||||
(gp-0 (-> self draw art-group data (-> self enemy-info-override idle-anim)))
|
||||
(gp-0 (-> self draw art-group data (-> self enemy-info idle-anim)))
|
||||
)
|
||||
(until #f
|
||||
(ja-no-eval :group! gp-0
|
||||
@@ -1587,7 +1579,7 @@
|
||||
(s5-0 (current-time))
|
||||
(f28-0 f30-0)
|
||||
)
|
||||
(ja-no-eval :group! (-> self draw art-group data (-> self enemy-info-override idle-anim))
|
||||
(ja-no-eval :group! (-> self draw art-group data (-> self enemy-info idle-anim))
|
||||
:num! (loop! f28-0)
|
||||
:frame-num 0.0
|
||||
)
|
||||
@@ -1597,13 +1589,10 @@
|
||||
)
|
||||
)
|
||||
(ja-channel-push! 1 (seconds 0.1))
|
||||
(ja-no-eval :group! (-> self draw art-group data (-> self enemy-info-override taunt-anim))
|
||||
(ja-no-eval :group! (-> self draw art-group data (-> self enemy-info taunt-anim))
|
||||
:num! (seek!
|
||||
(the float
|
||||
(+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self enemy-info-override taunt-anim)))
|
||||
frames
|
||||
num-frames
|
||||
)
|
||||
(+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self enemy-info taunt-anim))) frames num-frames)
|
||||
-1
|
||||
)
|
||||
)
|
||||
@@ -1730,7 +1719,7 @@
|
||||
|
||||
;; WARN: Return type mismatch symbol vs none.
|
||||
(defmethod juicer-method-184 juicer ((obj juicer) (arg0 symbol))
|
||||
(let ((v1-1 (-> obj root-override2 root-prim)))
|
||||
(let ((v1-1 (-> obj root root-prim)))
|
||||
(dotimes (a0-1 (the-as int (-> v1-1 specific 0)))
|
||||
(let ((a2-1 (-> (the-as collide-shape-prim-group v1-1) child a0-1)))
|
||||
(if arg0
|
||||
@@ -1839,7 +1828,7 @@
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-26 prim-core collide-with))
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 3))
|
||||
(set! (-> obj root-override2) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -1878,7 +1867,7 @@
|
||||
(set! (-> v1-7 speed-scale) 1.0)
|
||||
)
|
||||
0
|
||||
(set-gravity-length (-> obj root-override2 dynam) 573440.0)
|
||||
(set-gravity-length (-> obj root dynam) 573440.0)
|
||||
(set! (-> obj last-fire-time) 0)
|
||||
(set! (-> obj heading) (the-as basic (if (rand-vu-percent? 0.5)
|
||||
#t
|
||||
@@ -1914,7 +1903,7 @@
|
||||
(new 'static 'vector :x -901.12 :y -1146.88 :z 1269.76 :w 163840.0)
|
||||
)
|
||||
(add-connection *part-engine* obj 20 obj 4635 (new 'static 'vector :w 163840.0))
|
||||
(set! (-> obj root-override2 pause-adjust-distance) 81920.0)
|
||||
(set! (-> obj root pause-adjust-distance) 81920.0)
|
||||
(set! (-> obj current-projectile) (the-as handle #f))
|
||||
0
|
||||
(none)
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
)
|
||||
)
|
||||
(when v1-9
|
||||
(if (>= 20480.0 (- (-> (the-as process-focusable v1-9) root-override trans y) (-> arg0 root-override2 trans y)))
|
||||
(if (>= 20480.0 (- (-> (the-as process-focusable v1-9) root trans y) (-> arg0 root trans y)))
|
||||
(logior! (-> arg0 bot-task-bits) 16)
|
||||
)
|
||||
)
|
||||
@@ -203,15 +203,15 @@
|
||||
:waypoints (new 'static 'boxed-array :type bot-waypoint
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 1
|
||||
:skip-to #xa
|
||||
:skip-to 10
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(let ((a0-1 20))
|
||||
(set! (-> arg0 hit-points) a0-1)
|
||||
(set! (-> arg0 enemy-info-override default-hit-points) a0-1)
|
||||
(set! (-> arg0 enemy-info default-hit-points) a0-1)
|
||||
)
|
||||
(let ((a1-0 (new 'stack-no-clear 'vector)))
|
||||
(set-vector! a1-0 0.0 32768.0 0.0 1.0)
|
||||
(quaternion-zxy! (-> arg0 root-override2 quat) a1-0)
|
||||
(quaternion-zxy! (-> arg0 root quat) a1-0)
|
||||
)
|
||||
(clear-speech-flags! arg0)
|
||||
(logior! (-> arg0 focus-status) (focus-status disable))
|
||||
@@ -238,9 +238,9 @@
|
||||
(lambda ((arg0 object) (arg1 sig-atoll))
|
||||
(when *target*
|
||||
(let* ((s5-0 (target-pos 0))
|
||||
(f1-0 (vector-vector-xz-distance (-> arg1 root-override2 trans) s5-0))
|
||||
(f0-1 (- (-> s5-0 x) (-> arg1 root-override2 trans x)))
|
||||
(f2-2 (- (-> s5-0 z) (-> arg1 root-override2 trans z)))
|
||||
(f1-0 (vector-vector-xz-distance (-> arg1 root trans) s5-0))
|
||||
(f0-1 (- (-> s5-0 x) (-> arg1 root trans x)))
|
||||
(f2-2 (- (-> s5-0 z) (-> arg1 root trans z)))
|
||||
)
|
||||
(when (and (>= f2-2 -40960.0)
|
||||
(or (>= 40960.0 f1-0) (< f2-2 24576.0) (and (< f2-2 192512.0) (or (< f0-1 -81920.0) (< 53248.0 f0-1))))
|
||||
@@ -308,7 +308,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 3
|
||||
:skip-to #xa
|
||||
:skip-to 10
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(with-pp
|
||||
(if (demo?)
|
||||
@@ -376,7 +376,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 4
|
||||
:skip-to #xa
|
||||
:skip-to 10
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(set! (-> arg0 too-far-warn-dist) 286720.0)
|
||||
(let ((v1-2 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
|
||||
@@ -429,7 +429,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 5
|
||||
:skip-to #xa
|
||||
:skip-to 10
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-choose-piston arg0)))
|
||||
(set! (-> v1-1 bytes 5) 4)
|
||||
@@ -460,7 +460,7 @@
|
||||
:on-update (lambda ((arg0 sig-atoll))
|
||||
(if (and (not (speech-playing? arg0 1))
|
||||
(not (channel-active? arg0 (the-as uint 0)))
|
||||
(< (-> arg0 root-override2 trans z) (-> (target-pos 0) z))
|
||||
(< (-> arg0 root trans z) (-> (target-pos 0) z))
|
||||
)
|
||||
(play-speech arg0 1)
|
||||
)
|
||||
@@ -472,7 +472,7 @@
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 6
|
||||
:nav-mesh-index 1
|
||||
:skip-to #xa
|
||||
:skip-to 10
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(logior! (-> arg0 focus-status) (focus-status ignore))
|
||||
(let ((gp-0 7)
|
||||
@@ -505,7 +505,7 @@
|
||||
)
|
||||
:on-update (lambda ((arg0 sig-atoll))
|
||||
(when (not (channel-active? arg0 (the-as uint 0)))
|
||||
(if (and (not (speech-playing? arg0 1)) (< (-> arg0 root-override2 trans z) (-> (target-pos 0) z)))
|
||||
(if (and (not (speech-playing? arg0 1)) (< (-> arg0 root trans z) (-> (target-pos 0) z)))
|
||||
(play-speech arg0 1)
|
||||
)
|
||||
)
|
||||
@@ -517,7 +517,7 @@
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 7
|
||||
:nav-mesh-index 1
|
||||
:skip-to #xa
|
||||
:skip-to 10
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(reset-warn-time! arg0)
|
||||
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
|
||||
@@ -660,7 +660,7 @@
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 10
|
||||
:nav-mesh-index 2
|
||||
:skip-to #xf
|
||||
:skip-to 15
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(play-speech arg0 4)
|
||||
(logior! (-> arg0 focus-status) (focus-status disable))
|
||||
@@ -690,7 +690,7 @@
|
||||
(if (and (not (speech-playing? arg1 5))
|
||||
(not (channel-active? arg1 (the-as uint 0)))
|
||||
(let ((f0-1 73728.0))
|
||||
(>= (* f0-1 f0-1) (vector-vector-xz-distance-squared (target-pos 0) (-> arg1 root-override2 trans)))
|
||||
(>= (* f0-1 f0-1) (vector-vector-xz-distance-squared (target-pos 0) (-> arg1 root trans)))
|
||||
)
|
||||
)
|
||||
(play-speech arg1 5)
|
||||
@@ -732,10 +732,10 @@
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 11
|
||||
:nav-mesh-index 2
|
||||
:skip-to #xf
|
||||
:skip-to 15
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(set! (-> arg0 sig-course liftcat-speech-index) 0)
|
||||
(let ((f0-0 (vector-vector-xz-distance-squared (target-pos 0) (-> arg0 root-override2 trans)))
|
||||
(let ((f0-0 (vector-vector-xz-distance-squared (target-pos 0) (-> arg0 root trans)))
|
||||
(f1-0 98304.0)
|
||||
)
|
||||
(if (>= f0-0 (* f1-0 f1-0))
|
||||
@@ -849,14 +849,14 @@
|
||||
)
|
||||
(set! (-> arg0 waypoint-bits) (logand -3 (-> arg0 waypoint-bits)))
|
||||
(let ((f0-0 98304.0))
|
||||
(if (>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (target-pos 0) (-> arg0 root-override2 trans)))
|
||||
(if (>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (target-pos 0) (-> arg0 root trans)))
|
||||
(play-speech arg0 34)
|
||||
)
|
||||
)
|
||||
)
|
||||
((and (logtest? (-> arg0 waypoint-bits) 2)
|
||||
(let ((f0-3 49152.0))
|
||||
(>= (* f0-3 f0-3) (vector-vector-xz-distance-squared (target-pos 0) (-> arg0 root-override2 trans)))
|
||||
(>= (* f0-3 f0-3) (vector-vector-xz-distance-squared (target-pos 0) (-> arg0 root trans)))
|
||||
)
|
||||
)
|
||||
(set! (-> arg0 waypoint-bits) (logand -3 (-> arg0 waypoint-bits)))
|
||||
@@ -881,7 +881,7 @@
|
||||
)
|
||||
)
|
||||
(let ((f0-6 98304.0))
|
||||
(>= (* f0-6 f0-6) (vector-vector-xz-distance-squared (target-pos 0) (-> arg0 root-override2 trans)))
|
||||
(>= (* f0-6 f0-6) (vector-vector-xz-distance-squared (target-pos 0) (-> arg0 root trans)))
|
||||
)
|
||||
)
|
||||
(when (and (demo?)
|
||||
@@ -950,7 +950,7 @@
|
||||
(cond
|
||||
((not (logtest? (-> arg1 waypoint-bits) 1))
|
||||
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
|
||||
(let ((f0-2 (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
|
||||
(let ((f0-2 (vector-vector-xz-distance-squared (-> arg1 root trans) (target-pos 0)))
|
||||
(f1-0 81920.0)
|
||||
)
|
||||
(cond
|
||||
@@ -1073,7 +1073,7 @@
|
||||
)
|
||||
(not (channel-active? arg1 (the-as uint 0)))
|
||||
(not (focus-test? s5-0 edge-grab))
|
||||
(>= (- (-> s5-0 control trans y) (-> arg1 root-override2 trans y)) -4096.0)
|
||||
(>= (- (-> s5-0 control trans y) (-> arg1 root trans y)) -4096.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -1139,13 +1139,13 @@
|
||||
(when (scene-release? arg1)
|
||||
(let ((a1-1 (new 'stack-no-clear 'vector)))
|
||||
(set-vector! a1-1 0.0 -16384.0 0.0 1.0)
|
||||
(quaternion-zxy! (-> arg1 root-override2 quat) a1-1)
|
||||
(quaternion-zxy! (-> arg1 root quat) a1-1)
|
||||
)
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector)))
|
||||
(let ((v1-6 (-> arg1 sig-course spots)))
|
||||
(vector-lerp! s5-0 (the-as vector (-> v1-6 21)) (the-as vector (-> v1-6 22)) 0.5)
|
||||
)
|
||||
(move-to-point! (-> arg1 root-override2) s5-0)
|
||||
(move-to-point! (-> arg1 root) s5-0)
|
||||
)
|
||||
(clear-poi-and-focus! arg1)
|
||||
(remove-setting! 'sound-mode)
|
||||
@@ -1168,7 +1168,7 @@
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 15
|
||||
:nav-mesh-index 3
|
||||
:skip-to #x17
|
||||
:skip-to 23
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(play-speech arg0 11)
|
||||
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
|
||||
@@ -1282,7 +1282,7 @@
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 16
|
||||
:nav-mesh-index 3
|
||||
:skip-to #x17
|
||||
:skip-to 23
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
|
||||
(set! (-> v1-1 bytes 5) 1)
|
||||
@@ -1378,7 +1378,7 @@
|
||||
(cond
|
||||
((zero? (-> arg1 waypoint-time0))
|
||||
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
|
||||
(let ((f0-2 (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
|
||||
(let ((f0-2 (vector-vector-xz-distance-squared (-> arg1 root trans) (target-pos 0)))
|
||||
(f1-0 73728.0)
|
||||
)
|
||||
(cond
|
||||
@@ -1501,7 +1501,7 @@
|
||||
)
|
||||
(not (channel-active? arg1 (the-as uint 0)))
|
||||
(let ((f0-0 102400.0))
|
||||
(>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
|
||||
(>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root trans) (target-pos 0)))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -1590,7 +1590,7 @@
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 20
|
||||
:nav-mesh-index 4
|
||||
:skip-to #x17
|
||||
:skip-to 23
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
|
||||
(set! (-> v1-1 bytes 5) 1)
|
||||
@@ -1627,7 +1627,7 @@
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 21
|
||||
:nav-mesh-index 5
|
||||
:skip-to #x17
|
||||
:skip-to 23
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(set! (-> arg0 sig-course liftcat-speech-index) 0)
|
||||
(let ((v1-2 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
|
||||
@@ -1656,7 +1656,7 @@
|
||||
(cond
|
||||
((zero? v1-6)
|
||||
(when (not (channel-active? arg1 (the-as uint 0)))
|
||||
(let ((s5-0 (-> arg1 root-override2 trans))
|
||||
(let ((s5-0 (-> arg1 root trans))
|
||||
(s4-0 (-> arg1 sig-course spots))
|
||||
(f0-0 163840.0)
|
||||
)
|
||||
@@ -1751,7 +1751,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 22
|
||||
:nav-mesh-index #x6
|
||||
:nav-mesh-index 6
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(set! (-> arg0 waypoint-time0) 0)
|
||||
@@ -1778,7 +1778,7 @@
|
||||
(cond
|
||||
((zero? (-> arg1 waypoint-time0))
|
||||
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
|
||||
(let ((f0-2 (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
|
||||
(let ((f0-2 (vector-vector-xz-distance-squared (-> arg1 root trans) (target-pos 0)))
|
||||
(f1-0 61440.0)
|
||||
)
|
||||
(cond
|
||||
@@ -1833,8 +1833,8 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 23
|
||||
:nav-mesh-index #x6
|
||||
:skip-to #x1f
|
||||
:nav-mesh-index 6
|
||||
:skip-to 31
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(with-pp
|
||||
(add-process *gui-control* arg0 (gui-channel art-load) (gui-action queue) "atoll-sniper-c" -99.0 0)
|
||||
@@ -1899,7 +1899,7 @@
|
||||
)
|
||||
(not (channel-active? arg1 (the-as uint 0)))
|
||||
(let ((f0-0 102400.0))
|
||||
(>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
|
||||
(>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root trans) (target-pos 0)))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -1962,7 +1962,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 24
|
||||
:nav-mesh-index #x6
|
||||
:nav-mesh-index 6
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
|
||||
@@ -1994,7 +1994,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 25
|
||||
:nav-mesh-index #x6
|
||||
:nav-mesh-index 6
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(logior! (-> arg0 focus-status) (focus-status disable))
|
||||
@@ -2025,7 +2025,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 26
|
||||
:nav-mesh-index #x7
|
||||
:nav-mesh-index 7
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
|
||||
@@ -2054,7 +2054,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 27
|
||||
:nav-mesh-index #x8
|
||||
:nav-mesh-index 8
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(logclear! (-> arg0 focus-status) (focus-status disable))
|
||||
@@ -2101,7 +2101,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 28
|
||||
:nav-mesh-index #x8
|
||||
:nav-mesh-index 8
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(set! (-> arg0 waypoint-time0) 0)
|
||||
@@ -2125,7 +2125,7 @@
|
||||
(cond
|
||||
((zero? (-> arg1 waypoint-time0))
|
||||
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
|
||||
(let ((f0-2 (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
|
||||
(let ((f0-2 (vector-vector-xz-distance-squared (-> arg1 root trans) (target-pos 0)))
|
||||
(f1-0 73728.0)
|
||||
)
|
||||
(cond
|
||||
@@ -2187,7 +2187,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 29
|
||||
:nav-mesh-index #x8
|
||||
:nav-mesh-index 8
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(with-pp
|
||||
@@ -2253,7 +2253,7 @@
|
||||
)
|
||||
(not (channel-active? arg1 (the-as uint 0)))
|
||||
(let ((f0-0 102400.0))
|
||||
(>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
|
||||
(>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root trans) (target-pos 0)))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -2304,7 +2304,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 30
|
||||
:nav-mesh-index #x8
|
||||
:nav-mesh-index 8
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
|
||||
@@ -2340,8 +2340,8 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 31
|
||||
:nav-mesh-index #x9
|
||||
:skip-to #x25
|
||||
:nav-mesh-index 9
|
||||
:skip-to 37
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(set! (-> arg0 too-far-warn-dist) 327680.0)
|
||||
(set! (-> arg0 too-far-fail-dist-delta) 163840.0)
|
||||
@@ -2414,7 +2414,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 32
|
||||
:nav-mesh-index #xa
|
||||
:nav-mesh-index 10
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(with-pp
|
||||
@@ -2474,7 +2474,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 33
|
||||
:nav-mesh-index #xa
|
||||
:nav-mesh-index 10
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(set! (-> arg0 too-far-warn-dist) 327680.0)
|
||||
@@ -2514,7 +2514,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 34
|
||||
:nav-mesh-index #xa
|
||||
:nav-mesh-index 10
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(with-pp
|
||||
@@ -2618,7 +2618,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 35
|
||||
:nav-mesh-index #xa
|
||||
:nav-mesh-index 10
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(with-pp
|
||||
@@ -2684,7 +2684,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 36
|
||||
:nav-mesh-index #xa
|
||||
:nav-mesh-index 10
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(set! (-> arg0 too-far-warn-dist) 327680.0)
|
||||
@@ -2701,7 +2701,7 @@
|
||||
(not (channel-active? arg1 (the-as uint 0)))
|
||||
)
|
||||
(let ((f0-0 122880.0))
|
||||
(if (>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
|
||||
(if (>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root trans) (target-pos 0)))
|
||||
(play-speech arg1 30)
|
||||
)
|
||||
)
|
||||
@@ -2722,7 +2722,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 37
|
||||
:nav-mesh-index #xa
|
||||
:nav-mesh-index 10
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(set! (-> arg0 too-far-warn-dist) 327680.0)
|
||||
@@ -2747,7 +2747,7 @@
|
||||
(cond
|
||||
((zero? (-> arg1 waypoint-time0))
|
||||
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
|
||||
(let ((f0-0 (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
|
||||
(let ((f0-0 (vector-vector-xz-distance-squared (-> arg1 root trans) (target-pos 0)))
|
||||
(f1-0 61440.0)
|
||||
)
|
||||
(cond
|
||||
@@ -2818,7 +2818,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 38
|
||||
:nav-mesh-index #xa
|
||||
:nav-mesh-index 10
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(with-pp
|
||||
@@ -2884,7 +2884,7 @@
|
||||
)
|
||||
(not (channel-active? arg1 (the-as uint 0)))
|
||||
(let ((f0-0 102400.0))
|
||||
(>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
|
||||
(>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root trans) (target-pos 0)))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -2943,7 +2943,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 39
|
||||
:nav-mesh-index #xa
|
||||
:nav-mesh-index 10
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
|
||||
@@ -2974,7 +2974,7 @@
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 40
|
||||
:nav-mesh-index #xa
|
||||
:nav-mesh-index 10
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 sig-atoll))
|
||||
(task-node-close! (game-task-node atoll-sig-resolution))
|
||||
@@ -3056,7 +3056,7 @@
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt092")
|
||||
)
|
||||
:speech-tunings (new 'static 'inline-array bot-speech-tuning 1
|
||||
(new 'static 'bot-speech-tuning :fo-min 30 :fo-max #x78 :fo-curve #xb :trans? #t)
|
||||
(new 'static 'bot-speech-tuning :fo-min 30 :fo-max #x78 :fo-curve 11 :trans? #t)
|
||||
)
|
||||
:spots (new 'static 'inline-array bot-spot 42
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2341970.0 :y 4915.2 :z -3590061.8 :w 16384.0))
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user