diff --git a/common/goos/Object.cpp b/common/goos/Object.cpp index cfe01f09dd..328e331b6d 100644 --- a/common/goos/Object.cpp +++ b/common/goos/Object.cpp @@ -260,6 +260,10 @@ bool Object::is_symbol(const std::string& name) const { return is_symbol() && as_symbol()->name == name; } +bool Object::is_string(const std::string& val) const { + return is_string() && as_string()->data == val; +} + template <> Object Object::make_number(FloatType value) { return Object::make_float(value); diff --git a/common/goos/Object.h b/common/goos/Object.h index 09cea46918..f6420e74a8 100644 --- a/common/goos/Object.h +++ b/common/goos/Object.h @@ -302,6 +302,7 @@ class Object { bool is_symbol() const { return type == ObjectType::SYMBOL; } bool is_symbol(const std::string& name) const; bool is_string() const { return type == ObjectType::STRING; } + bool is_string(const std::string& val) const; bool is_pair() const { return type == ObjectType::PAIR; } bool is_array() const { return type == ObjectType::ARRAY; } bool is_env() const { return type == ObjectType::ENVIRONMENT; } diff --git a/decompiler/IR2/FormExpressionAnalysis.cpp b/decompiler/IR2/FormExpressionAnalysis.cpp index db932c0722..f25e7de8f1 100644 --- a/decompiler/IR2/FormExpressionAnalysis.cpp +++ b/decompiler/IR2/FormExpressionAnalysis.cpp @@ -3299,55 +3299,57 @@ void FunctionCallElement::update_from_stack(const Env& env, // lg::print("GOT: {}\n", pop->to_string(env)); arg_forms.at(0) = pop; auto head = mr.maps.forms.at(1); + auto head_obj = head->to_form(env); // rewrite get-art-by-name-method calls to get-art-by-name, which is a macro that // will apply the appropriate cast. if (tp_type.kind == TP_Type::Kind::GET_ART_BY_NAME_METHOD) { - ASSERT(head->to_string(env) == "get-art-by-name-method"); + ASSERT(head_obj.is_symbol("get-art-by-name-method")); head = pool.form("get-art-by-name"); - } - - auto head_obj = head->to_form(env); - if (head_obj.is_symbol() && tp_type.method_from_type().base_type() == "setting-control" && - arg_forms.at(0)->to_form(env).is_symbol("*setting-control*") && - arg_forms.size() > 1) { - auto arg1_reg = get_form_reg_acc(arg_forms.at(1)); - if (arg1_reg && arg1_reg->reg().is_s6()) { - std::string new_head; - if (head_obj.is_symbol("add-setting")) { - new_head = "add-setting!"; - } else if (head_obj.is_symbol("set-setting")) { - new_head = "set-setting!"; - } else if (head_obj.is_symbol("remove-setting")) { - new_head = "remove-setting!"; - } - if (!new_head.empty()) { - auto oldp = head->parent_element; - head = pool.form(new_head); - head->parent_element = oldp; - arg_forms.erase(arg_forms.begin()); - arg_forms.erase(arg_forms.begin()); - if (arg_forms.size() > 3) { - auto argi = arg_forms.at(3); - auto argi_o = argi->to_form(env); - if (argi_o.is_int()) { - auto argset = arg_forms.at(0)->to_string(env); - if (argset == "'process-mask") { - auto en = env.dts->ts.try_enum_lookup("process-mask"); - if (en) { - arg_forms.at(3) = - cast_to_bitfield_enum(env.dts->ts.try_enum_lookup("process-mask"), pool, - env, argi_o.as_int()); - } - } else if (argset == "'sound-flava") { - auto en = env.dts->ts.try_enum_lookup("music-flava"); - if (en) { - arg_forms.at(3) = cast_to_int_enum( - env.dts->ts.try_enum_lookup("music-flava"), pool, env, argi_o.as_int()); + } else { + if (head_obj.is_symbol() && + tp_type.method_from_type().base_type() == "setting-control" && + arg_forms.at(0)->to_form(env).is_symbol("*setting-control*") && + arg_forms.size() > 1) { + auto arg1_reg = get_form_reg_acc(arg_forms.at(1)); + if (arg1_reg && arg1_reg->reg().is_s6()) { + std::string new_head; + if (head_obj.is_symbol("add-setting")) { + new_head = "add-setting!"; + } else if (head_obj.is_symbol("set-setting")) { + new_head = "set-setting!"; + } else if (head_obj.is_symbol("remove-setting")) { + new_head = "remove-setting!"; + } + if (!new_head.empty()) { + auto oldp = head->parent_element; + head = pool.form(new_head); + head->parent_element = oldp; + arg_forms.erase(arg_forms.begin()); + arg_forms.erase(arg_forms.begin()); + if (arg_forms.size() > 3) { + auto argi = arg_forms.at(3); + auto argi_o = argi->to_form(env); + if (argi_o.is_int()) { + auto argset = arg_forms.at(0)->to_string(env); + if (argset == "'process-mask") { + auto en = env.dts->ts.try_enum_lookup("process-mask"); + if (en) { + arg_forms.at(3) = + cast_to_bitfield_enum(env.dts->ts.try_enum_lookup("process-mask"), + pool, env, argi_o.as_int()); + } + } else if (argset == "'sound-flava") { + auto en = env.dts->ts.try_enum_lookup("music-flava"); + if (en) { + arg_forms.at(3) = + cast_to_int_enum(env.dts->ts.try_enum_lookup("music-flava"), pool, + env, argi_o.as_int()); + } } } + arg_forms.at(3)->parent_element = argi->parent_element; } - arg_forms.at(3)->parent_element = argi->parent_element; } } } @@ -3507,8 +3509,8 @@ void FunctionCallElement::update_from_stack(const Env& env, auto temp_form = pool.alloc_single_form(nullptr, new_form); auto match_result = match(matcher, temp_form); if (match_result.matched) { - auto type_1 = match_result.maps.strings.at(type_for_method); - auto& name = match_result.maps.strings.at(method_name); + const auto type_1 = match_result.maps.strings.at(type_for_method); + const auto& name = match_result.maps.strings.at(method_name); if (name == "new" && type_1 == "object") { // calling the new method of object. This is a special case that turns into an (object-new @@ -3608,7 +3610,7 @@ void FunctionCallElement::update_from_stack(const Env& env, auto temp_form = pool.alloc_single_form(nullptr, new_form); auto match_result = match(matcher, temp_form); if (match_result.matched) { - auto name = match_result.maps.strings.at(method_name); + const auto name = match_result.maps.strings.at(method_name); if (name != "new") { // only do these checks on non-new methods. New methods are treated as functions because // they are never virtual and are never called like a method. @@ -3621,35 +3623,95 @@ void FunctionCallElement::update_from_stack(const Env& env, } auto type_source_form = match_result.maps.forms.at(type_source); + auto type_source_obj = type_source_form->to_form(env); - if (name == "get-property-value-float" && type_source_form->to_string(env) == "res-lump") { + bool is_res_lump = type_source_obj.is_symbol("res-lump"); + if (name == "get-property-value-float" && is_res_lump) { auto as_macro = handle_get_property_value_float(arg_forms, pool, env); if (as_macro) { result->push_back(as_macro); return; } - } else if (name == "get-property-data" && type_source_form->to_string(env) == "res-lump") { + } else if (name == "get-property-data" && is_res_lump) { auto as_macro = handle_get_property_data(arg_forms, pool, env); if (as_macro) { result->push_back(as_macro); return; } - } else if (name == "get-property-struct" && type_source_form->to_string(env) == "res-lump") { + } else if (name == "get-property-struct" && is_res_lump) { auto as_macro = handle_get_property_struct(arg_forms, pool, env); if (as_macro) { result->push_back(as_macro); return; } - } else if (name == "get-property-value" && type_source_form->to_string(env) == "res-lump") { + } else if (name == "get-property-value" && is_res_lump) { auto as_macro = handle_get_property_value(arg_forms, pool, env); if (as_macro) { result->push_back(as_macro); return; } + } else if (name == "eval!" && arg_forms.size() == 2 && + type_source_obj.is_symbol("script-context")) { + // jak 2 macro for eval'ing a "script" + auto arg_context = arg_forms.at(0); // the script context + auto arg_script = arg_forms.at(1); // the script itself + auto mr_new_script_context = + match(Matcher::op_fixed(FixedOperatorKind::NEW, + {Matcher::constant_token("'stack"), + Matcher::constant_token("'script-context"), Matcher::any(0), + Matcher::any(1), Matcher::any(2)}), + arg_context); + if (mr_new_script_context.matched) { + // grab the arguments passed to the context alloc. nullptr = dont put in macro (uses + // defaults) + auto ctx_key = mr_new_script_context.maps.forms.at(0); // a key given to the context + auto ctx_proc = + mr_new_script_context.maps.forms.at(1); // the process the context's bound to + auto ctx_vector = mr_new_script_context.maps.forms.at(2); // some vector for positioning + + // default for arg is (process->ppointer self) [weird] + auto mr_ctx_key = match( + Matcher::op_fixed(FixedOperatorKind::PROCESS_TO_PPOINTER, {Matcher::s6()}), ctx_key); + if (mr_ctx_key.matched) { + ctx_key = nullptr; + } + // default for process arg is just self + auto mr_ctx_proc = match(Matcher::s6(), ctx_proc); + if (mr_ctx_proc.matched) { + ctx_proc = nullptr; + } + // default for vector is just #f + auto mr_ctx_vector = match(Matcher::cast("vector", Matcher::symbol("#f")), ctx_vector); + if (mr_ctx_vector.matched) { + ctx_vector = nullptr; + } + + // build the macro! + std::vector macro_args; + + macro_args.push_back(arg_script); + if (ctx_key) { + macro_args.push_back(pool.form(":key")); + macro_args.push_back(ctx_key); + } + if (ctx_proc) { + macro_args.push_back(pool.form(":proc")); + macro_args.push_back(ctx_proc); + } + if (ctx_vector) { + macro_args.push_back(pool.form(":vector")); + macro_args.push_back(ctx_vector); + } + + result->push_back(pool.alloc_element( + GenericOperator::make_function(pool.form("script-eval")), + macro_args)); + return; + } } // if the type is the exact type of the argument, we want to build it into a method call - if (type_source_form->to_string(env) == first_arg_type.base_type() && name != "new") { + if (type_source_obj.is_symbol(first_arg_type.base_type()) && name != "new") { if (env.dts->ts.should_use_virtual_methods(tp_type.method_from_type(), tp_type.method_id())) { throw std::runtime_error(fmt::format( diff --git a/decompiler/IR2/GenericElementMatcher.cpp b/decompiler/IR2/GenericElementMatcher.cpp index 807fa62e4c..15589872f1 100644 --- a/decompiler/IR2/GenericElementMatcher.cpp +++ b/decompiler/IR2/GenericElementMatcher.cpp @@ -123,6 +123,13 @@ Matcher Matcher::any_symbol(int match_id) { return m; } +Matcher Matcher::quoted_symbol(const std::string& name) { + Matcher m; + m.m_kind = Kind::QUOTED_SYMBOL; + m.m_str = name; + return m; +} + Matcher Matcher::symbol(const std::string& name) { Matcher m; m.m_kind = Kind::SYMBOL; @@ -463,6 +470,24 @@ bool Matcher::do_match(Form* input, MatchResult::Maps* maps_out) const { return false; } + case Kind::QUOTED_SYMBOL: { + auto as_simple_atom = dynamic_cast(input->try_as_single_active_element()); + if (as_simple_atom) { + if (as_simple_atom->atom().is_sym_ptr()) { + return as_simple_atom->atom().get_str() == m_str; + } + } + + auto as_expr = dynamic_cast(input->try_as_single_active_element()); + if (as_expr && as_expr->expr().is_identity()) { + const auto& atom = as_expr->expr().get_arg(0); + if (atom.is_sym_ptr()) { + return atom.get_str() == m_str; + } + } + return false; + } + case Kind::SYMBOL: { auto as_simple_atom = dynamic_cast(input->try_as_single_active_element()); if (as_simple_atom) { diff --git a/decompiler/IR2/GenericElementMatcher.h b/decompiler/IR2/GenericElementMatcher.h index 683b1745dd..3937001785 100644 --- a/decompiler/IR2/GenericElementMatcher.h +++ b/decompiler/IR2/GenericElementMatcher.h @@ -55,6 +55,7 @@ class Matcher { static Matcher any_reg_cast_to_int_or_uint(int match_id = -1); static Matcher any_quoted_symbol(int match_id = -1); static Matcher any_symbol(int match_id = -1); + static Matcher quoted_symbol(const std::string& name); static Matcher symbol(const std::string& name); static Matcher deref(const Matcher& root, bool is_addr_of, @@ -95,6 +96,7 @@ class Matcher { SC_OR, BEGIN, REG, // a specific register. like s6. + QUOTED_SYMBOL, INVALID }; diff --git a/goal_src/jak1/kernel/gkernel-h.gc b/goal_src/jak1/kernel/gkernel-h.gc index f4372ebfb9..baa9ac1840 100644 --- a/goal_src/jak1/kernel/gkernel-h.gc +++ b/goal_src/jak1/kernel/gkernel-h.gc @@ -607,6 +607,8 @@ ,@body) ) +(defconstant PP (with-pp pp)) + (defmacro with-proc (bindings &rest body) "execute the body with process register set to the given value and bound to pp. it is recommended to use run-now-in-process over this" diff --git a/goal_src/jak2/engine/ai/enemy.gc b/goal_src/jak2/engine/ai/enemy.gc index f7e0cc401a..08b0c94b4d 100644 --- a/goal_src/jak2/engine/ai/enemy.gc +++ b/goal_src/jak2/engine/ai/enemy.gc @@ -1881,10 +1881,7 @@ This commonly includes things such as: (drop-pickup (-> obj fact-info-override) #t *entity-pool* (-> obj fact-info-override) 0) (let ((s5-1 (-> obj on-death))) (if s5-1 - (eval! - (new 'stack 'script-context (process->ppointer pp) pp (-> obj root-override2 trans)) - (the-as pair s5-1) - ) + (script-eval (the-as pair s5-1) :vector (-> obj root-override2 trans)) ) ) ) @@ -1926,10 +1923,7 @@ This commonly includes things such as: (send-event (ppointer->process (-> obj parent)) 'child-die) (let ((s5-3 (-> obj on-death))) (if s5-3 - (eval! - (new 'stack 'script-context (process->ppointer pp) pp (-> obj root-override2 trans)) - (the-as pair s5-3) - ) + (script-eval (the-as pair s5-3) :vector (-> obj root-override2 trans)) ) ) (cleanup-for-death obj) @@ -2350,10 +2344,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 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) @@ -2406,10 +2397,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 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) @@ -2473,10 +2461,7 @@ This commonly includes things such as: (logclear! (-> self enemy-flags) (enemy-flag drawn-mirrored)) (let ((gp-0 (-> self on-hostile))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/goal_src/jak2/engine/ambient/ambient.gc b/goal_src/jak2/engine/ambient/ambient.gc index 7ce28db41d..0eff666c22 100644 --- a/goal_src/jak2/engine/ambient/ambient.gc +++ b/goal_src/jak2/engine/ambient/ambient.gc @@ -409,13 +409,10 @@ ) ) ) - (eval! - (new 'stack 'script-context (process->ppointer self) self (if v1-5 - (-> v1-5 root trans) - ) - ) - gp-0 - ) + (script-eval gp-0 :vector (if v1-5 + (-> v1-5 root trans) + ) + ) ) ) ) diff --git a/goal_src/jak2/engine/common_objs/basebutton.gc b/goal_src/jak2/engine/common_objs/basebutton.gc index aae8a4960c..c3f1fe5ed3 100644 --- a/goal_src/jak2/engine/common_objs/basebutton.gc +++ b/goal_src/jak2/engine/common_objs/basebutton.gc @@ -169,10 +169,7 @@ (send-event! self (-> self event-down)) (let ((activation-script (res-lump-struct (-> self entity) 'on-activate structure))) (if activation-script - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - (the-as pair activation-script) - ) + (script-eval (the-as pair activation-script)) ) ) (go-virtual down-idle) diff --git a/goal_src/jak2/engine/common_objs/elevator.gc b/goal_src/jak2/engine/common_objs/elevator.gc index f49b3e8eff..34248f60fd 100644 --- a/goal_src/jak2/engine/common_objs/elevator.gc +++ b/goal_src/jak2/engine/common_objs/elevator.gc @@ -635,10 +635,7 @@ do so. (set-setting! 'board #f 0 0) (let ((gp-0 (-> self on-activate))) (if gp-0 - (eval! - (new 'stack 'script-context (* (the int (-> self move-pos 0)) 8) self (-> self root-override trans)) - gp-0 - ) + (script-eval gp-0 :key (* (the int (-> self move-pos 0)) 8) :vector (-> self root-override trans)) ) ) (set! (-> self path-pos) 0.0) @@ -727,10 +724,7 @@ do so. ) (let ((gp-0 (-> self on-deactivate))) (if gp-0 - (eval! - (new 'stack 'script-context (* (the int (-> self move-pos 1)) 8) self (-> self root-override trans)) - gp-0 - ) + (script-eval gp-0 :key (* (the int (-> self move-pos 1)) 8) :vector (-> self root-override trans)) ) ) (none) diff --git a/goal_src/jak2/engine/common_objs/water.gc b/goal_src/jak2/engine/common_objs/water.gc index a3705f71ed..52f823ab59 100644 --- a/goal_src/jak2/engine/common_objs/water.gc +++ b/goal_src/jak2/engine/common_objs/water.gc @@ -1476,141 +1476,138 @@ ) (defun water-info<-region ((arg0 water-info) (arg1 drawable-region-prim) (arg2 collide-shape) (arg3 collide-action)) - (with-pp - (set! (-> arg0 flags) (water-flags)) - (set! (-> arg0 handle) (the-as handle #f)) - (set! (-> arg0 depth) 0.0) - (let ((s2-0 (the-as object (-> arg1 region on-inside)))) - (set! s2-0 - (cond - ((= (the-as symbol (-> (the-as pair s2-0) car)) 'water) - (empty) - s2-0 - ) - (else - (eval! (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) (the-as pair s2-0)) - ) - ) - ) - (let ((a0-4 (-> arg2 root-prim))) - (when s2-0 - (set! (-> arg0 trans quad) (-> a0-4 prim-core world-sphere quad)) - (set-vector! (-> arg0 normal) 0.0 1.0 0.0 1.0) - (set! (-> arg0 prim) arg1) - (case (-> (the-as pair (-> (the-as pair s2-0) cdr)) car) - (('height) - (set! (-> arg0 flags) (water-flags active)) - (set! (-> arg0 trans y) - (* 4096.0 (command-get-float (-> (the-as pair (-> (the-as pair (-> (the-as pair s2-0) cdr)) cdr)) car) 0.0)) - ) - (set! (-> arg0 base-height) (-> arg0 trans y)) - ) - (('ocean) - (set! (-> arg0 flags) (water-flags active use-ocean)) - (set! (-> arg0 trans y) (get-height *ocean* (-> arg0 trans) #f)) - (set! (-> arg0 base-height) (get-base-height *ocean-map*)) - (when (= (-> arg0 trans y) 4095996000.0) - (set! (-> arg0 flags) (water-flags)) - 0 - ) - ) - (('water-anim) - (let* ((s0-0 (command-get-process - (-> (the-as pair (-> (the-as pair (-> (the-as pair s2-0) cdr)) cdr)) car) - (the-as process #f) - ) - ) - (s1-0 (if (type? s0-0 process-drawable) - s0-0 - ) - ) - ) - (cond - (s1-0 - (set! (-> arg0 flags) (water-flags active use-water-anim)) - (set! (-> arg0 trans y) (ripple-find-height (the-as process-drawable s1-0) 0 (-> arg0 trans))) - (set! (-> arg0 handle) (process->handle s1-0)) - (set! (-> arg0 base-height) (-> (the-as process-drawable s1-0) root trans y)) - ) + (set! (-> arg0 flags) (water-flags)) + (set! (-> arg0 handle) (the-as handle #f)) + (set! (-> arg0 depth) 0.0) + (let ((s2-0 (the-as object (-> arg1 region on-inside)))) + (set! s2-0 (cond + ((= (the-as symbol (-> (the-as pair s2-0) car)) 'water) + (empty) + s2-0 + ) (else - (set! (-> arg0 flags) (water-flags)) - 0 + (script-eval (the-as pair s2-0)) ) ) + ) + (let ((a0-4 (-> arg2 root-prim))) + (when s2-0 + (set! (-> arg0 trans quad) (-> a0-4 prim-core world-sphere quad)) + (set-vector! (-> arg0 normal) 0.0 1.0 0.0 1.0) + (set! (-> arg0 prim) arg1) + (case (-> (the-as pair (-> (the-as pair s2-0) cdr)) car) + (('height) + (set! (-> arg0 flags) (water-flags active)) + (set! (-> arg0 trans y) + (* 4096.0 (command-get-float (-> (the-as pair (-> (the-as pair (-> (the-as pair s2-0) cdr)) cdr)) car) 0.0)) + ) + (set! (-> arg0 base-height) (-> arg0 trans y)) + ) + (('ocean) + (set! (-> arg0 flags) (water-flags active use-ocean)) + (set! (-> arg0 trans y) (get-height *ocean* (-> arg0 trans) #f)) + (set! (-> arg0 base-height) (get-base-height *ocean-map*)) + (when (= (-> arg0 trans y) 4095996000.0) + (set! (-> arg0 flags) (water-flags)) + 0 + ) + ) + (('water-anim) + (let* ((s0-0 (command-get-process + (-> (the-as pair (-> (the-as pair (-> (the-as pair s2-0) cdr)) cdr)) car) + (the-as process #f) + ) + ) + (s1-0 (if (type? s0-0 process-drawable) + s0-0 + ) + ) + ) + (cond + (s1-0 + (set! (-> arg0 flags) (water-flags active use-water-anim)) + (set! (-> arg0 trans y) (ripple-find-height (the-as process-drawable s1-0) 0 (-> arg0 trans))) + (set! (-> arg0 handle) (process->handle s1-0)) + (set! (-> arg0 base-height) (-> (the-as process-drawable s1-0) root trans y)) + ) + (else + (set! (-> arg0 flags) (water-flags)) + 0 + ) ) ) - ) - (when (logtest? (-> arg0 flags) (water-flags active)) - (let* ((s2-1 (-> (the-as pair (-> (the-as pair (-> (the-as pair (-> (the-as pair s2-0) cdr)) cdr)) cdr)) car)) - (v1-39 (-> (the-as pair s2-1) car)) - ) - (while (not (null? s2-1)) - (cond - ((= v1-39 'swim) - (logior! (-> arg0 flags) (water-flags can-swim can-ground)) - ) - ((= v1-39 'wade) - (logior! (-> arg0 flags) (water-flags can-wade can-ground)) - ) - ((= v1-39 'event) - (set! (-> arg0 flags) (logior (water-flags event) (-> arg0 flags))) - ) - ((= v1-39 'tar) - (logior! (-> arg0 flags) (water-flags tar)) - ) - ((= v1-39 'darkeco) - (logior! (-> arg0 flags) (water-flags dark-eco)) - ) - ((= v1-39 'lava) - (logior! (-> arg0 flags) (water-flags lava)) - ) - ((= v1-39 'mech) - (let* ((s1-1 (-> arg2 process)) - (a0-39 (if (type? s1-1 process-focusable) - s1-1 - ) - ) - ) - (when (and a0-39 (zero? (logand (focus-status mech) (-> (the-as process-focusable a0-39) focus-status)))) - (set! (-> arg0 flags) (water-flags)) - 0 - ) + ) + ) + (when (logtest? (-> arg0 flags) (water-flags active)) + (let* ((s2-1 (-> (the-as pair (-> (the-as pair (-> (the-as pair (-> (the-as pair s2-0) cdr)) cdr)) cdr)) car)) + (v1-39 (-> (the-as pair s2-1) car)) + ) + (while (not (null? s2-1)) + (cond + ((= v1-39 'swim) + (logior! (-> arg0 flags) (water-flags can-swim can-ground)) + ) + ((= v1-39 'wade) + (logior! (-> arg0 flags) (water-flags can-wade can-ground)) + ) + ((= v1-39 'event) + (set! (-> arg0 flags) (logior (water-flags event) (-> arg0 flags))) + ) + ((= v1-39 'tar) + (logior! (-> arg0 flags) (water-flags tar)) + ) + ((= v1-39 'darkeco) + (logior! (-> arg0 flags) (water-flags dark-eco)) + ) + ((= v1-39 'lava) + (logior! (-> arg0 flags) (water-flags lava)) + ) + ((= v1-39 'mech) + (let* ((s1-1 (-> arg2 process)) + (a0-39 (if (type? s1-1 process-focusable) + s1-1 + ) + ) + ) + (when (and a0-39 (zero? (logand (focus-status mech) (-> (the-as process-focusable a0-39) focus-status)))) + (set! (-> arg0 flags) (water-flags)) + 0 ) - (logior! (-> arg0 extra-flags) 1) ) - ) - (set! s2-1 (-> (the-as pair s2-1) cdr)) - (set! v1-39 (-> (the-as pair s2-1) car)) + (logior! (-> arg0 extra-flags) 1) + ) ) + (set! s2-1 (-> (the-as pair s2-1) cdr)) + (set! v1-39 (-> (the-as pair s2-1) car)) ) - (let ((s2-2 (-> arg2 root-prim))) - (countdown (s1-2 (-> arg2 total-prims)) - (when (and (nonzero? (-> s2-2 prim-core prim-type)) - (logtest? (-> s2-2 prim-core action) arg3) - (nonzero? (-> s2-2 prim-core collide-with)) - ) - (set! (-> (scratchpad-object region-prim-area) pos quad) (-> s2-2 prim-core world-sphere quad)) - (if (and (within-area? arg1 (scratchpad-object region-prim-area)) - (begin - (set! (-> arg0 flags) (logior (water-flags over-water) (-> arg0 flags))) - (>= (-> arg0 trans y) (- (-> s2-2 prim-core world-sphere y) (-> s2-2 prim-core world-sphere w))) - ) - ) - (set! (-> arg0 flags) (logior (water-flags touch-water) (-> arg0 flags))) - ) - ) - (&+! s2-2 80) - ) - ) - (if (and (logtest? (water-flags event) (-> arg0 flags)) (logtest? (water-flags touch-water) (-> arg0 flags))) - (send-event (handle->process (-> arg0 handle)) 'water arg0 (-> arg2 process)) - ) ) + (let ((s2-2 (-> arg2 root-prim))) + (countdown (s1-2 (-> arg2 total-prims)) + (when (and (nonzero? (-> s2-2 prim-core prim-type)) + (logtest? (-> s2-2 prim-core action) arg3) + (nonzero? (-> s2-2 prim-core collide-with)) + ) + (set! (-> (scratchpad-object region-prim-area) pos quad) (-> s2-2 prim-core world-sphere quad)) + (if (and (within-area? arg1 (scratchpad-object region-prim-area)) + (begin + (set! (-> arg0 flags) (logior (water-flags over-water) (-> arg0 flags))) + (>= (-> arg0 trans y) (- (-> s2-2 prim-core world-sphere y) (-> s2-2 prim-core world-sphere w))) + ) + ) + (set! (-> arg0 flags) (logior (water-flags touch-water) (-> arg0 flags))) + ) + ) + (&+! s2-2 80) + ) + ) + (if (and (logtest? (water-flags event) (-> arg0 flags)) (logtest? (water-flags touch-water) (-> arg0 flags))) + (send-event (handle->process (-> arg0 handle)) 'water arg0 (-> arg2 process)) + ) ) ) ) - arg0 ) + arg0 ) (defmethod water-info-init! collide-shape ((obj collide-shape) (arg0 water-info) (arg1 collide-action)) diff --git a/goal_src/jak2/engine/game/effect-control.gc b/goal_src/jak2/engine/game/effect-control.gc index dfee597779..ccdf0a872e 100644 --- a/goal_src/jak2/engine/game/effect-control.gc +++ b/goal_src/jak2/engine/game/effect-control.gc @@ -1,13 +1,12 @@ ;;-*-Lisp-*- (in-package goal) -;; definition for symbol *footstep-surface*, type pat-surface +;; decomp begins + (define *footstep-surface* (new 'static 'pat-surface :material (pat-material grass))) -;; definition for symbol *debug-effect-control*, type symbol (define *debug-effect-control* #f) -;; definition for function sound-name-with-material (defun sound-name-with-material ((arg0 string) (arg1 pat-surface) (arg2 string)) (format (clear *temp-string*) @@ -51,7 +50,6 @@ (string->sound-name *temp-string*) ) -;; definition for function effect-param->sound-spec (defun effect-param->sound-spec ((arg0 sound-spec) (arg1 (pointer float)) (arg2 int) (arg3 process-focusable)) (while (> arg2 0) (case (the int (-> arg1 0)) @@ -146,9 +144,6 @@ arg0 ) -;; definition for method 9 of type effect-control -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod update-effects effect-control ((obj effect-control)) (let* ((a0-1 (-> obj process skel)) (v1-3 (if (< (the-as uint (-> obj channel-offset)) (-> a0-1 active-channels)) @@ -250,9 +245,6 @@ (none) ) -;; definition for method 14 of type effect-control -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod play-effects-from-res-lump effect-control ((obj effect-control) (arg0 float) (arg1 float) (arg2 float)) ;; note: this check was added. I believe in the original game name could be false, and then the ;; effect-name check below would fail. This did not cause a crash on original hardware because @@ -285,9 +277,6 @@ (none) ) -;; definition for method 10 of type effect-control -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 257] ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 317] ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 337] @@ -319,22 +308,18 @@ (return #f) ) ((= arg0 'script) - (let ((gp-1 - (get-property-struct - (-> obj res) - 'effect-script - 'exact - arg1 - (the-as structure #f) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) + (let ((gp-1 (get-property-struct + (-> obj res) + 'effect-script + 'exact + arg1 + (the-as structure #f) + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) ) - (eval! - (new 'stack 'script-context (the-as basic (process->ppointer pp)) pp (the-as vector #f)) - (the-as pair gp-1) - ) + (script-eval (the-as pair gp-1)) ) (return #f) ) @@ -640,9 +625,6 @@ ) ) -;; definition for method 11 of type effect-control -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod do-effect-for-surface effect-control ((obj effect-control) (arg0 symbol) (arg1 float) (arg2 int) (arg3 basic) (arg4 pat-surface)) (local-vars (sv-64 @@ -1074,8 +1056,6 @@ (none) ) -;; definition for method 12 of type effect-control -;; INFO: Used lq/sq (defmethod play-effect-sound effect-control ((obj effect-control) (arg0 symbol) (arg1 float) (arg2 int) (arg3 basic) (arg4 sound-name)) (local-vars (sv-112 res-tag) (sv-128 sound-name) (sv-144 basic) (sv-160 (function vector vector float))) (with-pp @@ -1164,8 +1144,6 @@ ) ) -;; definition for function target-land-effect -;; WARN: Return type mismatch int vs none. (defbehavior target-land-effect target () (cond ((logtest? (-> self focus-status) (focus-status flut)) @@ -1194,7 +1172,3 @@ 0 (none) ) - - - - diff --git a/goal_src/jak2/engine/game/task/task-control.gc b/goal_src/jak2/engine/game/task/task-control.gc index dff5149686..cd0881f107 100644 --- a/goal_src/jak2/engine/game/task/task-control.gc +++ b/goal_src/jak2/engine/game/task/task-control.gc @@ -70,125 +70,123 @@ ) (defun update-task-masks ((arg0 symbol)) - (with-pp - (if (= arg0 'none) - (return 0) - ) - (cond - ((or (= arg0 'debug) (= arg0 'level)) - ) - ((logtest? (-> *game-info* secrets) (game-secrets hero-mode)) - (set! (-> *game-info* features) (game-feature gun gun-yellow gun-red gun-blue gun-dark)) - ) - (else - (set! (-> *game-info* features) (game-feature)) - 0 - ) + (if (= arg0 'none) + (return 0) ) - (let ((s5-0 (the-as connection-pers (-> *minimap* engine alive-list-override)))) - (while s5-0 - (let ((s4-0 (the-as connection-minimap s5-0))) - (if (and (logtest? (-> s4-0 flags) (minimap-flag task-graph)) - (not (open? (-> *game-info* sub-task-list (-> s4-0 node)))) - ) - (logior! (-> s4-0 flags) (minimap-flag fade-out)) + (cond + ((or (= arg0 'debug) (= arg0 'level)) + ) + ((logtest? (-> *game-info* secrets) (game-secrets hero-mode)) + (set! (-> *game-info* features) (game-feature gun gun-yellow gun-red gun-blue gun-dark)) + ) + (else + (set! (-> *game-info* features) (game-feature)) + 0 + ) + ) + (let ((s5-0 (the-as connection-pers (-> *minimap* engine alive-list-override)))) + (while s5-0 + (let ((s4-0 (the-as connection-minimap s5-0))) + (if (and (logtest? (-> s4-0 flags) (minimap-flag task-graph)) + (not (open? (-> *game-info* sub-task-list (-> s4-0 node)))) + ) + (logior! (-> s4-0 flags) (minimap-flag fade-out)) + ) + ) + (set! s5-0 (-> s5-0 next)) + ) + ) + (let ((borrow-eval (lambda ((arg0 pair)) + (let ((a0-1 (car arg0))) + (while (not (null? arg0)) + (let* ((v1-0 (car a0-1)) + (s5-0 (/ (the-as int (car (cdr a0-1))) 8)) + (s4-0 (car (cdr (cdr a0-1)))) + (s3-0 (car (cdr (cdr (cdr a0-1))))) + (s2-0 (-> (the-as symbol v1-0) value)) + (v1-1 (if (type? s2-0 level-load-info) + (the-as level-load-info s2-0) + ) + ) + ) + (when v1-1 + (set! (-> v1-1 borrow-level s5-0) (the-as symbol s4-0)) + (set! (-> v1-1 borrow-display? s5-0) (the-as symbol s3-0)) + ) + ) + (set! arg0 (cdr arg0)) + (set! a0-1 (car arg0)) + ) + ) + #f + ) + ) + ) + (borrow-eval (-> *game-info* sub-task-list 1 borrow)) + (let ((game-nodes (-> *game-info* sub-task-list))) + (dotimes (i (-> game-nodes length)) + (when (nonzero? i) + (let ((node (-> game-nodes i))) + (case arg0 + (('debug 'level) + ) + (else + (if (logtest? (-> node flags) (game-task-node-flag closed)) + (eval-add node) + ) + ) ) - ) - (set! s5-0 (-> s5-0 next)) - ) - ) - (let ((borrow-eval (lambda ((arg0 pair)) - (let ((a0-1 (car arg0))) - (while (not (null? arg0)) - (let* ((v1-0 (car a0-1)) - (s5-0 (/ (the-as int (car (cdr a0-1))) 8)) - (s4-0 (car (cdr (cdr a0-1)))) - (s3-0 (car (cdr (cdr (cdr a0-1))))) - (s2-0 (-> (the-as symbol v1-0) value)) - (v1-1 (if (type? s2-0 level-load-info) - (the-as level-load-info s2-0) - ) - ) - ) - (when v1-1 - (set! (-> v1-1 borrow-level s5-0) (the-as symbol s4-0)) - (set! (-> v1-1 borrow-display? s5-0) (the-as symbol s3-0)) + (let ((node-open? (open? node))) + (if (and (logtest? (-> node flags) (game-task-node-flag task-manager)) + (and (-> node info) (or node-open? (and (logtest? (-> node flags) (game-task-node-flag closed)) + (not (task-node-closed? (-> node info final-node))) + ) + ) + ) + ) + (script-eval '(task-manager) :key node) + ) + (when node-open? + (if (-> node on-open) + (script-eval (-> node on-open) :key node) + ) + (when (-> node when-open) + (countdown (node-ev-i (-> node when-open length)) + (let ((node-open-ev (-> node when-open node-ev-i))) + (case (-> node-open-ev actor) + (((game-task-actor minimap)) + (let ((v1-67 + (add-icon! *minimap* *dproc* (-> node-open-ev icon) (the-as int (-> node-open-ev icon)) (the-as vector #f) i) ) ) - (set! arg0 (cdr arg0)) - (set! a0-1 (car arg0)) - ) + (if v1-67 + (logior! (-> v1-67 flags) (minimap-flag task-graph)) + ) ) - #f ) - ) - ) - (borrow-eval (-> *game-info* sub-task-list 1 borrow)) - (let ((game-nodes (-> *game-info* sub-task-list))) - (dotimes (i (-> game-nodes length)) - (when (nonzero? i) - (let ((node (-> game-nodes i))) - (case arg0 - (('debug 'level) - ) - (else - (if (logtest? (-> node flags) (game-task-node-flag closed)) - (eval-add node) - ) - ) - ) - (let ((node-open? (open? node))) - (if (and (logtest? (-> node flags) (game-task-node-flag task-manager)) - (and (-> node info) (or node-open? (and (logtest? (-> node flags) (game-task-node-flag closed)) - (not (task-node-closed? (-> node info final-node))) - ) - ) - ) - ) - (eval! (new 'stack 'script-context node pp (the-as vector #f)) '(task-manager)) - ) - (when node-open? - (if (-> node on-open) - (eval! (new 'stack 'script-context node pp (the-as vector #f)) (-> node on-open)) - ) - (when (-> node when-open) - (countdown (node-ev-i (-> node when-open length)) - (let ((node-open-ev (-> node when-open node-ev-i))) - (case (-> node-open-ev actor) - (((game-task-actor minimap)) - (let ((v1-67 - (add-icon! *minimap* *dproc* (-> node-open-ev icon) (the-as int (-> node-open-ev icon)) (the-as vector #f) i) - ) - ) - (if v1-67 - (logior! (-> v1-67 flags) (minimap-flag task-graph)) - ) - ) - ) - ) ) ) ) - (borrow-eval (-> node borrow)) ) + (borrow-eval (-> node borrow)) ) ) ) ) ) - (logior! (-> *game-info* features) (-> *game-info* debug-features)) - (borrow-eval (-> *setting-control* user-current borrow)) ) - (add-borrow-levels *load-state*) - (dotimes (lev-i (-> *level* length)) - (let ((lev (-> *level* level lev-i))) - (if (= (-> lev status) 'active) - (level-method-22 lev arg0) - ) - ) - ) - 0 + (logior! (-> *game-info* features) (-> *game-info* debug-features)) + (borrow-eval (-> *setting-control* user-current borrow)) ) + (add-borrow-levels *load-state*) + (dotimes (lev-i (-> *level* length)) + (let ((lev (-> *level* level lev-i))) + (if (= (-> lev status) 'active) + (level-method-22 lev arg0) + ) + ) + ) + 0 ) (defmethod level-method-22 level ((obj level) (arg0 symbol)) @@ -706,28 +704,26 @@ (when (not (logtest? (-> obj flags) (game-task-node-flag closed))) (let ((task-node-close-func (lambda ((arg0 game-task-node-info)) - (with-pp - (logior! (-> arg0 flags) (game-task-node-flag closed)) - (+! (-> *game-info* task-counter) 1) - (when (zero? (-> arg0 close-time)) - (set! (-> arg0 gem-count) (the-as uint (the int (-> *game-info* gem)))) - (set! (-> arg0 skill-count) (the-as uint (the int (-> *game-info* skill)))) - (set! (-> arg0 close-time) (-> *display* game-clock frame-counter)) - ) - (if (-> arg0 on-close) - (eval! (new 'stack 'script-context arg0 pp (the-as vector #f)) (-> arg0 on-close)) - ) - (if (logtest? (-> arg0 flags) (game-task-node-flag close-task)) - ((lambda ((arg0 game-task-node-info)) - (if *target* - (send-event *target* 'get-pickup 10 (the float (-> arg0 task))) - (give *game-info* 'fuel-cell (the float (-> arg0 task)) (the-as handle #f)) - ) - ) - arg0 - ) - ) + (logior! (-> arg0 flags) (game-task-node-flag closed)) + (+! (-> *game-info* task-counter) 1) + (when (zero? (-> arg0 close-time)) + (set! (-> arg0 gem-count) (the-as uint (the int (-> *game-info* gem)))) + (set! (-> arg0 skill-count) (the-as uint (the int (-> *game-info* skill)))) + (set! (-> arg0 close-time) (-> *display* game-clock frame-counter)) ) + (if (-> arg0 on-close) + (script-eval (-> arg0 on-close) :key arg0) + ) + (if (logtest? (-> arg0 flags) (game-task-node-flag close-task)) + ((lambda ((arg0 game-task-node-info)) + (if *target* + (send-event *target* 'get-pickup 10 (the float (-> arg0 task))) + (give *game-info* 'fuel-cell (the float (-> arg0 task)) (the-as handle #f)) + ) + ) + arg0 + ) + ) ) ) ) @@ -1827,7 +1823,7 @@ ) (defbehavior task-manager-init-by-other task-manager ((arg0 game-task-node-info) (arg1 symbol)) - (stack-size-set! (-> self main-thread) 2048) + (stack-size-set! (-> self main-thread) 1024) (add-connection *task-manager-engine* self nothing self arg0 #f) (set! (-> self node-info) arg0) (set! (-> self lev-name) arg1) @@ -2171,7 +2167,7 @@ ) (let ((gp-3 (-> self info on-complete))) (if gp-3 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) gp-3) + (script-eval gp-3) ) ) (task-node-close! (-> self info final-node)) @@ -2204,7 +2200,7 @@ ) (let ((gp-1 (-> self info on-fail))) (if gp-1 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) gp-1) + (script-eval gp-1) ) ) (let ((a0-10 (-> self info retry-continue)) diff --git a/goal_src/jak2/engine/level/region.gc b/goal_src/jak2/engine/level/region.gc index 689eee74e0..e0d3baeaf8 100644 --- a/goal_src/jak2/engine/level/region.gc +++ b/goal_src/jak2/engine/level/region.gc @@ -518,34 +518,32 @@ otherwise, add the [[drawable-region-sphere]] to `region-start-prim-list` and in (defun region-tree-execute ((arg0 symbol) (arg1 vector) (arg2 vector)) (local-vars (sv-32 vector)) - (with-pp - (set! sv-32 (vector-average! (new 'stack-no-clear 'vector) arg1 arg2)) - (set! (-> sv-32 w) (* 0.5 (vector-vector-distance arg1 arg2))) - (set! (-> (scratchpad-object region-prim-area) region-prim-list num-items) 0) - (set! (-> (scratchpad-object region-prim-area) region-enter-count) 0) - (set! (-> (scratchpad-object region-prim-area) region-exit-count) 0) - (set! (-> (scratchpad-object region-prim-area) region-inside-count) 0) - (set! (-> (scratchpad-object region-prim-area) region-start-count) 0) - (sphere<-vector+r! (the-as sphere (-> (scratchpad-object region-prim-area) pos)) arg1 0.0) - (sphere<-vector+r! (the-as sphere (-> (scratchpad-object region-prim-area) unknown-vector-uiyb1)) arg2 0.0) - (vector-! (-> (scratchpad-object region-prim-area) ray) arg2 arg1) - (vector-! (-> (scratchpad-object region-prim-area) unknown-vector-t3edh) arg1 arg2) - (dotimes (s5-1 (-> *level* length)) - (let ((v1-17 (-> *level* level s5-1))) - (when (= (-> v1-17 status) 'active) - (let ((s4-1 (-> v1-17 bsp region-trees))) - (when (nonzero? s4-1) - (let* ((s3-0 (-> s4-1 length)) - (s2-0 0) - (a0-14 (-> s4-1 s2-0)) - ) - (while (< s2-0 s3-0) - (if (= (-> a0-14 name) arg0) - (collect-regions a0-14 (the-as sphere sv-32) 0 (-> (scratchpad-object region-prim-area) region-prim-list)) - ) - (+! s2-0 1) - (set! a0-14 (-> s4-1 s2-0)) - ) + (set! sv-32 (vector-average! (new 'stack-no-clear 'vector) arg1 arg2)) + (set! (-> sv-32 w) (* 0.5 (vector-vector-distance arg1 arg2))) + (set! (-> (scratchpad-object region-prim-area) region-prim-list num-items) 0) + (set! (-> (scratchpad-object region-prim-area) region-enter-count) 0) + (set! (-> (scratchpad-object region-prim-area) region-exit-count) 0) + (set! (-> (scratchpad-object region-prim-area) region-inside-count) 0) + (set! (-> (scratchpad-object region-prim-area) region-start-count) 0) + (sphere<-vector+r! (the-as sphere (-> (scratchpad-object region-prim-area) pos)) arg1 0.0) + (sphere<-vector+r! (the-as sphere (-> (scratchpad-object region-prim-area) unknown-vector-uiyb1)) arg2 0.0) + (vector-! (the-as vector (-> (scratchpad-object region-prim-area) ray)) arg2 arg1) + (vector-! (the-as vector (-> (scratchpad-object region-prim-area) unknown-vector-t3edh)) arg1 arg2) + (dotimes (s5-1 (-> *level* length)) + (let ((v1-17 (-> *level* level s5-1))) + (when (= (-> v1-17 status) 'active) + (let ((s4-1 (-> v1-17 bsp region-trees))) + (when (nonzero? s4-1) + (let* ((s3-0 (-> s4-1 length)) + (s2-0 0) + (a0-14 (-> s4-1 s2-0)) + ) + (while (< s2-0 s3-0) + (if (= (-> a0-14 name) arg0) + (collect-regions a0-14 (the-as sphere sv-32) 0 (-> (scratchpad-object region-prim-area) region-prim-list)) + ) + (+! s2-0 1) + (set! a0-14 (-> s4-1 s2-0)) ) ) ) @@ -558,61 +556,64 @@ otherwise, add the [[drawable-region-sphere]] to `region-start-prim-list` and in (the-as region-prim-area (-> (scratchpad-object region-prim-area) region-prim-list)) ) ) - (let ((gp-2 (-> (scratchpad-object region-prim-area) region-enter-count))) - (while (begin (label cfg-22) (nonzero? gp-2)) - (+! gp-2 -1) - (let* ((a2-5 (-> (scratchpad-object region-prim-area) region-enter-list gp-2)) - (s5-2 (-> a2-5 region-prim-list items 0)) - ) - (when s5-2 - (countdown (v1-47 (-> (scratchpad-object region-prim-area) region-start-count)) - (if (= a2-5 (-> (scratchpad-object region-prim-area) region-start-list v1-47)) - (goto cfg-22) - ) - ) - (eval! - (new 'stack 'script-context a2-5 pp (-> (scratchpad-object region-prim-area) region-enter-prim-list gp-2 bsphere)) - (the-as pair s5-2) - ) - ) - ) - ) - ) - (let ((gp-3 (-> (scratchpad-object region-prim-area) region-exit-count))) - (while (begin (label cfg-31) (nonzero? gp-3)) - (+! gp-3 -1) - (let* ((a2-6 (-> (scratchpad-object region-prim-area) region-exit-list gp-3)) - (s5-3 (-> a2-6 region-prim-list items 2)) - ) - (when s5-3 - (countdown (v1-64 (-> (scratchpad-object region-prim-area) region-inside-count)) - (if (= a2-6 (-> (scratchpad-object region-prim-area) region-inside-list v1-64)) - (goto cfg-31) - ) - ) - (eval! - (new 'stack 'script-context a2-6 pp (-> (scratchpad-object region-prim-area) region-exit-prim-list gp-3 bsphere)) - (the-as pair s5-3) - ) - ) - ) - ) - ) - (countdown (gp-4 (-> (scratchpad-object region-prim-area) region-inside-count)) - (let* ((a2-7 (-> (scratchpad-object region-prim-area) region-inside-list gp-4)) - (s5-4 (-> a2-7 region-prim-list items 1)) - ) - (if s5-4 - (eval! - (new 'stack 'script-context a2-7 pp (-> (scratchpad-object region-prim-area) region-inside-prim-list gp-4 bsphere)) - (the-as pair s5-4) - ) - ) - ) - ) - 0 - (none) ) + (let ((gp-2 (-> (scratchpad-object region-prim-area) region-enter-count))) + (while (begin (label cfg-22) (nonzero? gp-2)) + (+! gp-2 -1) + (let* ((a2-5 (-> (scratchpad-object region-prim-area) region-enter-list gp-2)) + (s5-2 (-> a2-5 region-prim-list items 0)) + ) + (when s5-2 + (countdown (v1-47 (-> (scratchpad-object region-prim-area) region-start-count)) + (if (= a2-5 (-> (scratchpad-object region-prim-area) region-start-list v1-47)) + (goto cfg-22) + ) + ) + (script-eval + (the-as pair s5-2) + :key a2-5 + :vector (-> (scratchpad-object region-prim-area) region-enter-prim-list gp-2 bsphere) + ) + ) + ) + ) + ) + (let ((gp-3 (-> (scratchpad-object region-prim-area) region-exit-count))) + (while (begin (label cfg-31) (nonzero? gp-3)) + (+! gp-3 -1) + (let* ((a2-6 (-> (scratchpad-object region-prim-area) region-exit-list gp-3)) + (s5-3 (-> a2-6 region-prim-list items 2)) + ) + (when s5-3 + (countdown (v1-64 (-> (scratchpad-object region-prim-area) region-inside-count)) + (if (= a2-6 (-> (scratchpad-object region-prim-area) region-inside-list v1-64)) + (goto cfg-31) + ) + ) + (script-eval + (the-as pair s5-3) + :key a2-6 + :vector (-> (scratchpad-object region-prim-area) region-exit-prim-list gp-3 bsphere) + ) + ) + ) + ) + ) + (countdown (gp-4 (-> (scratchpad-object region-prim-area) region-inside-count)) + (let* ((a2-7 (-> (scratchpad-object region-prim-area) region-inside-list gp-4)) + (s5-4 (-> a2-7 region-prim-list items 1)) + ) + (if s5-4 + (script-eval + (the-as pair s5-4) + :key a2-7 + :vector (-> (scratchpad-object region-prim-area) region-inside-prim-list gp-4 bsphere) + ) + ) + ) + ) + 0 + (none) ) (defun region-execute () diff --git a/goal_src/jak2/engine/target/target-death.gc b/goal_src/jak2/engine/target/target-death.gc index 11bab567a8..be491c847d 100644 --- a/goal_src/jak2/engine/target/target-death.gc +++ b/goal_src/jak2/engine/target/target-death.gc @@ -221,8 +221,8 @@ (set-setting! 'allow-continue #t 0 0) (set-setting! 'border-mode #t 0 0) (apply-settings *setting-control*) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) '(teleport)) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (-> arg0 on-goto)) + (script-eval '(teleport)) + (script-eval (-> arg0 on-goto)) (set-setting! 'allow-continue #f 0 0) (set-setting! 'border-mode #f 0 0) (apply-settings *setting-control*) diff --git a/goal_src/jak2/engine/target/target-turret.gc b/goal_src/jak2/engine/target/target-turret.gc index 2986202f51..001f8a618f 100644 --- a/goal_src/jak2/engine/target/target-turret.gc +++ b/goal_src/jak2/engine/target/target-turret.gc @@ -998,7 +998,7 @@ (set! (-> self rider) (process->handle *target*)) (let ((gp-2 (res-lump-struct (-> self entity) 'on-exit structure))) (if (and gp-2 (not *scene-player*)) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-2)) + (script-eval (the-as pair gp-2)) ) ) (go-virtual setup) @@ -2054,54 +2054,49 @@ ) (defmethod base-turret-method-39 base-turret ((obj base-turret) (arg0 turret-path-event)) - (with-pp - (case (-> arg0 event-type) - (('script) - (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (the-as pair (-> arg0 param)) - ) + (case (-> arg0 event-type) + (('script) + (script-eval (the-as pair (-> arg0 param))) + ) + (('cue-chase) + (let ((a0-4 (process-by-name (the-as string (-> arg0 param)) *active-pool*))) + (if a0-4 + (send-event a0-4 'cue-chase) + ) ) - (('cue-chase) - (let ((a0-4 (process-by-name (the-as string (-> arg0 param)) *active-pool*))) - (if a0-4 - (send-event a0-4 'cue-chase) - ) - ) - ) - (('pause-until) - (set! (-> obj path-mode) (the-as uint 3)) - (set! (-> obj pause-proc) (the-as (function base-turret symbol) (-> arg0 param))) - (set! (-> obj path-speed-mult-final) 0.0) - ) - (('pause-while) - (set! (-> obj path-mode) (the-as uint 4)) - (set! (-> obj pause-proc) (the-as (function base-turret symbol) (-> arg0 param))) - (set! (-> obj path-speed-mult-final) 0.0) - ) - (('set-speed-mult) - ;; NOTE: cast to (array int32) has been added because the turret-path params were changed to boxed int arrays - (set! (-> obj path-speed-mult-final) (* 0.1 (the float (/ (-> (the-as (array int32) (-> arg0 param)) 0) 8)))) - ) - (('enable-controls) - (set! (-> obj enable-controls) #t) - ) - (('disable-controls) - (set! (-> obj enable-controls) #f) - ) - (('set-roty-min) - (set! (-> obj roty-min) (* 182.04445 (the float (/ (the-as int (-> arg0 param)) 8)))) - ) - (('set-roty-max) - (set! (-> obj roty-max) (* 182.04445 (the float (/ (the-as int (-> arg0 param)) 8)))) - ) - (('set-rotyvv) - (set! (-> obj rotyvv) (* 182.04445 (the float (/ (the-as int (-> arg0 param)) 8)))) - ) - ) - 0 - (none) + ) + (('pause-until) + (set! (-> obj path-mode) (the-as uint 3)) + (set! (-> obj pause-proc) (the-as (function base-turret symbol) (-> arg0 param))) + (set! (-> obj path-speed-mult-final) 0.0) + ) + (('pause-while) + (set! (-> obj path-mode) (the-as uint 4)) + (set! (-> obj pause-proc) (the-as (function base-turret symbol) (-> arg0 param))) + (set! (-> obj path-speed-mult-final) 0.0) + ) + (('set-speed-mult) + ;; NOTE: cast to (array int32) has been added because the turret-path params were changed to boxed int arrays + (set! (-> obj path-speed-mult-final) (* 0.1 (the float (/ (-> (the-as (array int32) (-> arg0 param)) 0) 8)))) + ) + (('enable-controls) + (set! (-> obj enable-controls) #t) + ) + (('disable-controls) + (set! (-> obj enable-controls) #f) + ) + (('set-roty-min) + (set! (-> obj roty-min) (* 182.04445 (the float (/ (the-as int (-> arg0 param)) 8)))) + ) + (('set-roty-max) + (set! (-> obj roty-max) (* 182.04445 (the float (/ (the-as int (-> arg0 param)) 8)))) + ) + (('set-rotyvv) + (set! (-> obj rotyvv) (* 182.04445 (the float (/ (the-as int (-> arg0 param)) 8)))) + ) ) + 0 + (none) ) (defmethod base-turret-method-38 base-turret ((obj base-turret)) diff --git a/goal_src/jak2/engine/util/script-h.gc b/goal_src/jak2/engine/util/script-h.gc index 1e284902b6..7ef71a105c 100644 --- a/goal_src/jak2/engine/util/script-h.gc +++ b/goal_src/jak2/engine/util/script-h.gc @@ -16,6 +16,9 @@ (define-extern command-get-int (function object int int)) (define-extern command-get-float (function object float float)) +(defmacro script-eval (script &key (key (process->ppointer PP)) &key (proc PP) &key (vector (the-as vector #f))) + `(eval! (new 'stack 'script-context ,key ,proc ,vector) ,script)) + ;; DECOMP BEGINS (deftype script-form (structure) diff --git a/goal_src/jak2/kernel/gkernel-h.gc b/goal_src/jak2/kernel/gkernel-h.gc index e5365df2d2..df7ad01311 100644 --- a/goal_src/jak2/kernel/gkernel-h.gc +++ b/goal_src/jak2/kernel/gkernel-h.gc @@ -666,6 +666,8 @@ ,@body) ) +(defconstant PP (with-pp pp)) + (defmacro process-mask? (mask enum-value) "Are any of the given bits set in the process mask?" `(!= 0 (logand ,mask (process-mask ,enum-value))) diff --git a/goal_src/jak2/levels/atoll/sniper.gc b/goal_src/jak2/levels/atoll/sniper.gc index 11fbd17fa7..7414104dbe 100644 --- a/goal_src/jak2/levels/atoll/sniper.gc +++ b/goal_src/jak2/levels/atoll/sniper.gc @@ -326,19 +326,14 @@ ;; WARN: Return type mismatch object vs none. (defmethod go-idle sniper ((obj sniper)) - (with-pp - (cond - ((eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (res-lump-struct (-> obj entity) 'on-activate pair) - ) - (cleanup-for-death obj) - (go (method-of-object obj die-fast)) - ) - (else - (go (method-of-object obj idle)) - ) + (cond + ((script-eval (res-lump-struct (-> obj entity) 'on-activate pair)) + (cleanup-for-death obj) + (go (method-of-object obj die-fast)) + ) + (else + (go (method-of-object obj idle)) ) - (none) ) + (none) ) diff --git a/goal_src/jak2/levels/city/common/ctywide-tasks.gc b/goal_src/jak2/levels/city/common/ctywide-tasks.gc index 7536400838..0f99a162e2 100644 --- a/goal_src/jak2/levels/city/common/ctywide-tasks.gc +++ b/goal_src/jak2/levels/city/common/ctywide-tasks.gc @@ -514,10 +514,7 @@ (while (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 2)) (suspend) ) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(send-event "keira-npc-1" 'say) - ) + (script-eval '(send-event "keira-npc-1" 'say)) (none) ) ) diff --git a/goal_src/jak2/levels/city/common/metalhead-flitter.gc b/goal_src/jak2/levels/city/common/metalhead-flitter.gc index 09741a54f3..294d5bd426 100644 --- a/goal_src/jak2/levels/city/common/metalhead-flitter.gc +++ b/goal_src/jak2/levels/city/common/metalhead-flitter.gc @@ -283,10 +283,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/goal_src/jak2/levels/city/common/metalhead-grunt.gc b/goal_src/jak2/levels/city/common/metalhead-grunt.gc index 9f21872da5..ee3d84ecf1 100644 --- a/goal_src/jak2/levels/city/common/metalhead-grunt.gc +++ b/goal_src/jak2/levels/city/common/metalhead-grunt.gc @@ -340,10 +340,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/goal_src/jak2/levels/city/onin_tent/onin-game.gc b/goal_src/jak2/levels/city/onin_tent/onin-game.gc index 0d7add26c4..5ee05f616e 100644 --- a/goal_src/jak2/levels/city/onin_tent/onin-game.gc +++ b/goal_src/jak2/levels/city/onin_tent/onin-game.gc @@ -2701,10 +2701,7 @@ (suspend) ) ) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(birth-pickup ("pecker-npc-1" "head") skill FACT_SUPER_SKILL_INC flags (suck-in)) - ) + (script-eval '(birth-pickup ("pecker-npc-1" "head") skill FACT_SUPER_SKILL_INC flags (suck-in))) (task-node-close! (game-task-node city-play-onin-game-skill)) ) (let* ((s5-1 (if (zero? (rand-vu-int-count 2)) diff --git a/goal_src/jak2/levels/city/port/mines/portrun.gc b/goal_src/jak2/levels/city/port/mines/portrun.gc index 2d47954483..23b98d8224 100644 --- a/goal_src/jak2/levels/city/port/mines/portrun.gc +++ b/goal_src/jak2/levels/city/port/mines/portrun.gc @@ -1845,10 +1845,7 @@ (let ((v1-130 (level-get *level* 'ctyport))) (when (or (not v1-130) (!= (-> v1-130 display?) 'display)) (backup-load-state-and-set-cmds *load-state* '()) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(want-display 'ctyport 'display) - ) + (script-eval '(want-display 'ctyport 'display)) (restore-load-state-and-cleanup *load-state*) (go-virtual fail) ) diff --git a/goal_src/jak2/levels/common/airlock.gc b/goal_src/jak2/levels/common/airlock.gc index 099285c050..30f05f97d4 100644 --- a/goal_src/jak2/levels/common/airlock.gc +++ b/goal_src/jak2/levels/common/airlock.gc @@ -151,7 +151,7 @@ (when (and (< f30-0 0.0) (< 0.0 (-> obj last-distance))) (let ((s5-1 (res-lump-struct (-> obj entity) 'on-cross structure))) (if s5-1 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair s5-1)) + (script-eval (the-as pair s5-1)) ) ) ) @@ -202,12 +202,7 @@ ) (logtest? (-> a0-12 extra perm status) (entity-perm-status subtask-complete)) ) - (and (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - (the-as pair (-> obj open-test)) - ) - (-> *setting-control* user-current airlock) - ) + (and (script-eval (the-as pair (-> obj open-test))) (-> *setting-control* user-current airlock)) ) ) s5-0 @@ -229,80 +224,74 @@ ) (defmethod destination-loaded? com-airlock ((obj com-airlock) (arg0 symbol)) - (with-pp - (let ((gp-1 (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (the-as pair (-> obj level-name)) - ) - ) - (s4-0 #f) - ) - (cond - ((not gp-1) - (if arg0 - 'unknown - #f - ) - ) - (arg0 - (let* ((s3-0 gp-1) - (s2-0 (car s3-0)) - ) - (while (not (null? s3-0)) - (let ((v1-4 (level-status *level* (the-as symbol s2-0)))) - (if (not (or (= v1-4 'loaded) (= v1-4 'active))) - (return #f) - ) - ) - (if (= s2-0 'ctywide) - (set! s4-0 (-> ctywide borrow-level 1)) - ) - (set! s3-0 (cdr s3-0)) - (set! s2-0 (car (the-as pair s3-0))) - ) - ) - (when s4-0 - (let ((v1-17 (level-status *level* s4-0))) - (if (not (or (= v1-17 'loaded) (= v1-17 'active))) + (let ((gp-1 (script-eval (the-as pair (-> obj level-name)))) + (s4-0 #f) + ) + (cond + ((not gp-1) + (if arg0 + 'unknown + #f + ) + ) + (arg0 + (let* ((s3-0 gp-1) + (s2-0 (car s3-0)) + ) + (while (not (null? s3-0)) + (let ((v1-4 (level-status *level* (the-as symbol s2-0)))) + (if (not (or (= v1-4 'loaded) (= v1-4 'active))) (return #f) ) ) - ) - (if (!= arg0 'display) - (return #t) - ) - (let ((a1-7 (car gp-1))) - (while (not (null? gp-1)) - (let ((v1-26 (level-get *level* (the-as symbol a1-7)))) - (if (not (and v1-26 (= (-> v1-26 status) 'active) (-> v1-26 display?))) - (return #f) - ) + (if (= s2-0 'ctywide) + (set! s4-0 (-> ctywide borrow-level 1)) ) - (set! gp-1 (cdr gp-1)) - (set! a1-7 (car (the-as pair gp-1))) - ) + (set! s3-0 (cdr s3-0)) + (set! s2-0 (car (the-as pair s3-0))) ) - #t ) - (else - (let* ((v1-33 gp-1) - (a0-11 (car v1-33)) - ) - (while (not (null? v1-33)) - (dotimes (a1-10 6) - (if (= a0-11 (-> *load-state* want a1-10 name)) - (goto cfg-50) - ) + (when s4-0 + (let ((v1-17 (level-status *level* s4-0))) + (if (not (or (= v1-17 'loaded) (= v1-17 'active))) + (return #f) ) - #t - (return #f) - (label cfg-50) - (set! v1-33 (cdr v1-33)) - (set! a0-11 (car (the-as pair v1-33))) - ) ) - #t ) + (if (!= arg0 'display) + (return #t) + ) + (let ((a1-7 (car gp-1))) + (while (not (null? gp-1)) + (let ((v1-26 (level-get *level* (the-as symbol a1-7)))) + (if (not (and v1-26 (= (-> v1-26 status) 'active) (-> v1-26 display?))) + (return #f) + ) + ) + (set! gp-1 (cdr gp-1)) + (set! a1-7 (car (the-as pair gp-1))) + ) + ) + #t + ) + (else + (let* ((v1-33 gp-1) + (a0-11 (car v1-33)) + ) + (while (not (null? v1-33)) + (dotimes (a1-10 6) + (if (= a0-11 (-> *load-state* want a1-10 name)) + (goto cfg-50) + ) + ) + #t + (return #f) + (label cfg-50) + (set! v1-33 (cdr v1-33)) + (set! a0-11 (car (the-as pair v1-33))) + ) + ) + #t ) ) ) @@ -461,15 +450,14 @@ (if (logtest? (-> self draw status) (draw-control-status on-screen)) (set! (-> self visible-move?) #t) ) - (when (and (want-cross-airlock? self) - (begin - (let ((gp-0 (res-lump-struct (-> self entity) 'on-activate structure))) - (if gp-0 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-0)) - ) - ) - (destination-loaded? self #f) - ) + (when (and (want-cross-airlock? self) (begin + (let ((gp-0 (res-lump-struct (-> self entity) 'on-activate structure))) + (if gp-0 + (script-eval (the-as pair gp-0)) + ) + ) + (destination-loaded? self #f) + ) ) (when (nonzero? (-> self sound-id)) (let ((v1-17 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) @@ -530,20 +518,18 @@ () (let ((gp-0 (res-lump-struct (-> self entity) 'on-exit structure))) (if (and gp-0 (not *scene-player*)) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-0)) + (script-eval (the-as pair gp-0)) ) ) - (the-as - pair - (when (-> self were-behind?) - (let ((gp-1 (res-lump-struct (-> self entity) 'on-inside structure))) - (set! (-> self were-behind?) #f) - (if (and gp-1 (not *scene-player*)) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-1)) - ) - ) - ) - ) + (the-as pair (when (-> self were-behind?) + (let ((gp-1 (res-lump-struct (-> self entity) 'on-inside structure))) + (set! (-> self were-behind?) #f) + (if (and gp-1 (not *scene-player*)) + (script-eval (the-as pair gp-1)) + ) + ) + ) + ) ) ) ) @@ -596,7 +582,7 @@ (when (< 0.0 (check-crossing-distance self (target-pos 0) #f)) (let ((gp-3 (res-lump-struct (-> self entity) 'on-deactivate structure))) (if (and gp-3 (not *scene-player*)) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-3)) + (script-eval (the-as pair gp-3)) ) ) ) @@ -730,7 +716,7 @@ (process-entity-status! self (entity-perm-status subtask-complete) #t) (let ((s5-10 (res-lump-struct (-> self entity) 'on-enter structure))) (if s5-10 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair s5-10)) + (script-eval (the-as pair s5-10)) ) ) (if (and (-> self sound-open) diff --git a/goal_src/jak2/levels/common/battle.gc b/goal_src/jak2/levels/common/battle.gc index 2578a59c9a..6b2bc82e5a 100644 --- a/goal_src/jak2/levels/common/battle.gc +++ b/goal_src/jak2/levels/common/battle.gc @@ -1392,7 +1392,7 @@ (set! (-> self state-time) (-> self clock frame-counter)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! (new 'stack 'script-context (process->ppointer self) self (-> self root trans)) (the-as pair gp-0)) + (script-eval (the-as pair gp-0) :vector (-> self root trans)) ) ) (battle-method-47 self) @@ -1526,7 +1526,7 @@ (battle-method-47 self) (let ((gp-0 (-> self on-hostile))) (if gp-0 - (eval! (new 'stack 'script-context (process->ppointer self) self (-> self root trans)) (the-as pair gp-0)) + (script-eval (the-as pair gp-0) :vector (-> self root trans)) ) ) (none) @@ -1550,7 +1550,7 @@ (process-entity-status! self (entity-perm-status subtask-complete) #t) (let ((gp-0 (-> self on-beaten))) (if gp-0 - (eval! (new 'stack 'script-context (process->ppointer self) self (-> self root trans)) (the-as pair gp-0)) + (script-eval (the-as pair gp-0) :vector (-> self root trans)) ) ) (battle-method-48 self) diff --git a/goal_src/jak2/levels/common/elec-gate.gc b/goal_src/jak2/levels/common/elec-gate.gc index c220048ac7..0a6038de9e 100644 --- a/goal_src/jak2/levels/common/elec-gate.gc +++ b/goal_src/jak2/levels/common/elec-gate.gc @@ -256,10 +256,7 @@ :enter (behavior () (process-entity-status! self (entity-perm-status subtask-complete) #f) (if (-> self on-start) - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root trans)) - (the-as pair (-> self on-start)) - ) + (script-eval (the-as pair (-> self on-start)) :vector (-> self root trans)) ) (dotimes (bolt-idx 5) (let* ((curr-bolt (-> self l-bolt bolt-idx bolt)) @@ -638,10 +635,7 @@ (sound-play "elec-gate-off") (blocking-plane-destroy) (if (-> self on-stop) - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root trans)) - (the-as pair (-> self on-stop)) - ) + (script-eval (the-as pair (-> self on-stop)) :vector (-> self root trans)) ) (none) ) diff --git a/goal_src/jak2/levels/common/enemy/guards/crimson-guard-level.gc b/goal_src/jak2/levels/common/enemy/guards/crimson-guard-level.gc index 214fab4887..e4605d2562 100644 --- a/goal_src/jak2/levels/common/enemy/guards/crimson-guard-level.gc +++ b/goal_src/jak2/levels/common/enemy/guards/crimson-guard-level.gc @@ -1583,10 +1583,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-1 (-> self on-notice))) (if gp-1 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-1) - ) + (script-eval (the-as pair gp-1) :vector (-> self root-override2 trans)) ) ) ) diff --git a/goal_src/jak2/levels/common/enemy/hopper.gc b/goal_src/jak2/levels/common/enemy/hopper.gc index 8a406b8ac9..ee16c10787 100644 --- a/goal_src/jak2/levels/common/enemy/hopper.gc +++ b/goal_src/jak2/levels/common/enemy/hopper.gc @@ -872,10 +872,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/goal_src/jak2/levels/common/entities/com-elevator.gc b/goal_src/jak2/levels/common/entities/com-elevator.gc index 3a4aa70aec..2e7e11cc0b 100644 --- a/goal_src/jak2/levels/common/entities/com-elevator.gc +++ b/goal_src/jak2/levels/common/entities/com-elevator.gc @@ -53,29 +53,27 @@ (defmethod commited-to-ride? com-elevator ((obj com-elevator)) "@returns if the target is considered within the elevator area enough to begin descending/ascending" - (with-pp - (let* ((s5-0 *target*) - (a0-2 (if (type? s5-0 process-focusable) - s5-0 - ) - ) - ) - (and (when a0-2 - (let* ((v1-2 (get-trans a0-2 0)) - (s5-2 (vector-! (new 'stack-no-clear 'vector) v1-2 (-> obj root-override trans))) - ) - (vector-inv-orient-by-quat! s5-2 s5-2 (-> obj root-override quat)) - (and (< (fabs (-> s5-2 x)) 20480.0) (< 0.0 (-> s5-2 z)) (< (-> s5-2 z) 40960.0)) + (let* ((s5-0 *target*) + (a0-2 (if (type? s5-0 process-focusable) + s5-0 + ) ) - ) - (let ((gp-1 (res-lump-struct (-> obj entity) 'on-notice structure))) - (not (if gp-1 - (eval! (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) (the-as pair gp-1)) - ) + ) + (and (when a0-2 + (let* ((v1-2 (get-trans a0-2 0)) + (s5-2 (vector-! (new 'stack-no-clear 'vector) v1-2 (-> obj root-override trans))) ) + (vector-inv-orient-by-quat! s5-2 s5-2 (-> obj root-override quat)) + (and (< (fabs (-> s5-2 x)) 20480.0) (< 0.0 (-> s5-2 z)) (< (-> s5-2 z) 40960.0)) ) ) - ) + (let ((gp-1 (res-lump-struct (-> obj entity) 'on-notice structure))) + (not (if gp-1 + (script-eval (the-as pair gp-1)) + ) + ) + ) + ) ) ) diff --git a/goal_src/jak2/levels/common/flitter.gc b/goal_src/jak2/levels/common/flitter.gc index a037936537..c2e9fc25a4 100644 --- a/goal_src/jak2/levels/common/flitter.gc +++ b/goal_src/jak2/levels/common/flitter.gc @@ -657,10 +657,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/goal_src/jak2/levels/common/grunt.gc b/goal_src/jak2/levels/common/grunt.gc index d8d95b9168..ab9ef42dac 100644 --- a/goal_src/jak2/levels/common/grunt.gc +++ b/goal_src/jak2/levels/common/grunt.gc @@ -420,10 +420,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/goal_src/jak2/levels/common/warp-gate.gc b/goal_src/jak2/levels/common/warp-gate.gc index 36f8999b9a..db5fa2f573 100644 --- a/goal_src/jak2/levels/common/warp-gate.gc +++ b/goal_src/jak2/levels/common/warp-gate.gc @@ -478,27 +478,25 @@ (defmethod handle-notice warp-gate ((obj warp-gate)) - (with-pp - (let ((s5-0 (eval! (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) (-> obj on-notice)))) - (cond - ((= s5-0 'hide) - (logior! (-> obj draw status) (draw-control-status no-draw)) - (set! (-> obj continue) #f) - ) - (s5-0 - (logclear! (-> obj draw status) (draw-control-status no-draw)) - (set! (-> obj continue) (get-continue-by-name *game-info* (the-as string (car s5-0)))) - (set! (-> obj on-activate) (the-as pair (car (cdr s5-0)))) - (set! (-> obj wait-for) (the-as pair (car (cdr (cdr s5-0))))) - (set! (-> obj on-close) (the-as pair (car (cdr (cdr (cdr s5-0)))))) - ) - (else - (set! (-> obj continue) #f) - ) + (let ((s5-0 (script-eval (-> obj on-notice)))) + (cond + ((= s5-0 'hide) + (logior! (-> obj draw status) (draw-control-status no-draw)) + (set! (-> obj continue) #f) + ) + (s5-0 + (logclear! (-> obj draw status) (draw-control-status no-draw)) + (set! (-> obj continue) (get-continue-by-name *game-info* (the-as string (car s5-0)))) + (set! (-> obj on-activate) (the-as pair (car (cdr s5-0)))) + (set! (-> obj wait-for) (the-as pair (car (cdr (cdr s5-0))))) + (set! (-> obj on-close) (the-as pair (car (cdr (cdr (cdr s5-0)))))) + ) + (else + (set! (-> obj continue) #f) ) ) - (-> obj continue) ) + (-> obj continue) ) (defstate hidden (warp-gate) @@ -565,7 +563,7 @@ (if (and (cpad-pressed? 0 triangle) (process-grab? *target* #f)) (go-virtual use (-> self continue)) ) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (-> self on-close)) + (script-eval (-> self on-close)) (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 32 320 0.0 (font-color default) (font-flags shadow kerning)) ) @@ -661,7 +659,7 @@ (set! (-> s5-0 param 3) (the-as uint (process->handle self))) (send-event-function *target* s5-0) ) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (-> self on-activate)) + (script-eval (-> self on-activate)) (while (begin (set! v1-38 (when (-> self wait-for) (let* ((s5-1 (-> self wait-for)) @@ -1260,7 +1258,7 @@ This commonly includes things such as: (apply-settings *setting-control*) (sound-stop (-> self hover-sound)) (set! (-> self hover-sound) (new 'static 'sound-id)) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (-> self on-activate)) + (script-eval (-> self on-activate)) (sleep-code) (none) ) diff --git a/goal_src/jak2/levels/demo/demo-obs.gc b/goal_src/jak2/levels/demo/demo-obs.gc index 8bbe11b55d..8041edc9ef 100644 --- a/goal_src/jak2/levels/demo/demo-obs.gc +++ b/goal_src/jak2/levels/demo/demo-obs.gc @@ -793,10 +793,7 @@ (remove-setting! 'allow-timeout) (set! (-> *setting-control* user-default allow-timeout) #t) (let ((gp-24 (demo-menu))) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(fadeout (seconds (new 'static 'bfloat :data 0.3))) - ) + (script-eval '(fadeout (seconds (new 'static 'bfloat :data 0.3)))) (let ((s5-8 (-> self clock frame-counter))) (while (or (!= (-> *setting-control* user-current bg-a) (-> *setting-control* user-target bg-a)) (< (- (-> self clock frame-counter) s5-8) (seconds 0.3)) diff --git a/goal_src/jak2/levels/dig/dig-digger.gc b/goal_src/jak2/levels/dig/dig-digger.gc index c7757275f9..8066966c5e 100644 --- a/goal_src/jak2/levels/dig/dig-digger.gc +++ b/goal_src/jak2/levels/dig/dig-digger.gc @@ -1273,10 +1273,7 @@ This commonly includes things such as: ) ) ((>= 4 s5-0) - (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - '(want-anim "dig-digger-explode") - ) + (script-eval '(want-anim "dig-digger-explode")) ) ) ) diff --git a/goal_src/jak2/levels/dig/dig-obs.gc b/goal_src/jak2/levels/dig/dig-obs.gc index bb4f684dbd..b750a8d063 100644 --- a/goal_src/jak2/levels/dig/dig-obs.gc +++ b/goal_src/jak2/levels/dig/dig-obs.gc @@ -786,7 +786,7 @@ This commonly includes things such as: (process-entity-status! self (entity-perm-status subtask-complete) #t) (let ((gp-1 (res-lump-struct (-> self entity) 'on-activate structure))) (if gp-1 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-1)) + (script-eval (the-as pair gp-1)) ) ) (go-virtual idle-down) diff --git a/goal_src/jak2/levels/drill_platform/drill-obs.gc b/goal_src/jak2/levels/drill_platform/drill-obs.gc index ae995247c0..e81d010da6 100644 --- a/goal_src/jak2/levels/drill_platform/drill-obs.gc +++ b/goal_src/jak2/levels/drill_platform/drill-obs.gc @@ -1209,7 +1209,7 @@ This commonly includes things such as: (send-event! self (-> self event-down)) (let ((gp-0 (res-lump-struct (-> self entity) 'on-activate structure))) (if gp-0 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-0)) + (script-eval (the-as pair gp-0)) ) ) (go-virtual down-idle) diff --git a/goal_src/jak2/levels/forest/lifeseed/protect.gc b/goal_src/jak2/levels/forest/lifeseed/protect.gc index 292b03f6f9..ad953b8484 100644 --- a/goal_src/jak2/levels/forest/lifeseed/protect.gc +++ b/goal_src/jak2/levels/forest/lifeseed/protect.gc @@ -608,10 +608,7 @@ This commonly includes things such as: ) ) ((< f0-0 163840.0) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(want-anim "city-protect-slums-intro") - ) + (script-eval '(want-anim "city-protect-slums-intro")) ) ) ) diff --git a/goal_src/jak2/levels/landing_pad/roboguard-level.gc b/goal_src/jak2/levels/landing_pad/roboguard-level.gc index 4dd4abb98c..dd7c34fc61 100644 --- a/goal_src/jak2/levels/landing_pad/roboguard-level.gc +++ b/goal_src/jak2/levels/landing_pad/roboguard-level.gc @@ -569,10 +569,7 @@ (logclear! (-> self enemy-flags) (enemy-flag drawn-mirrored)) (let ((gp-0 (-> self on-hostile))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/goal_src/jak2/levels/mars_tomb/monster-frog.gc b/goal_src/jak2/levels/mars_tomb/monster-frog.gc index 0bd1232991..39efd0d998 100644 --- a/goal_src/jak2/levels/mars_tomb/monster-frog.gc +++ b/goal_src/jak2/levels/mars_tomb/monster-frog.gc @@ -289,10 +289,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/goal_src/jak2/levels/mars_tomb/tomb-scenes.gc b/goal_src/jak2/levels/mars_tomb/tomb-scenes.gc index 96129b320d..2601863c49 100644 --- a/goal_src/jak2/levels/mars_tomb/tomb-scenes.gc +++ b/goal_src/jak2/levels/mars_tomb/tomb-scenes.gc @@ -19,82 +19,79 @@ :origin-joint-index 3 ) -(scene-method-16 - (new 'static 'scene - :name "tomb-unlock-start" - :extra #f - :info #f - :mask-to-clear #x1282000 - :entity "scene-stage-73" - :art-group "scenecamera" - :anim "tomb-unlock-start" - :parts 3 - :command-list '((120 (task-close! "tomb-boss-torches")) - (10000 - (apply ,(lambda :behavior scene-player - () - (if (-> self aborted?) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(cond - ((task-closed? "tomb-water-resolution") - (send-event "tomb-sphinx-2" 'trigger) - (send-event "tomb-plat-return-2" 'trigger) - ) - ((task-closed? "tomb-poles-resolution") - (send-event "tomb-sphinx-1" 'trigger) - (send-event "tomb-plat-return-1" 'trigger) - ) - ) - ) - ) - (none) - ) - ) - (want-continue "tomb-start-bottom") - ) - ) - :cut-list '() - :wait-ground-time (seconds 1) - :draw-target #f - :abort #t - :actor (new 'static 'boxed-array :type scene-actor - (new 'static 'scene-actor - :name "scenecamera" - :level #f - :art-group "skel-scenecamera" - :prefix "" - :draw-frames '((min max)) - :scissor-frames '() - :camera 4 - :shadow-flags -1 - :shadow-volume-joint #f - ) - (new 'static 'scene-actor - :name "tomb-boss-door" - :level 'tomba - :art-group "skel-tomb-boss-door" - :prefix "" - :draw-frames '((min max)) - :scissor-frames '() - :light-index #x11 - :flags #x1 - :shadow-flags -1 - :shadow-volume-joint #f - ) - ) - :load-point-obj #f - :end-point-obj #f - :borrow '() - :sfx-volume -1.0 - :ambient-volume -1.0 - :music-volume -1.0 - :blackout-end #t - :peaceful #t - :music-delay 1500.0 - :save #t - ) - ) +(scene-method-16 (new 'static 'scene + :name "tomb-unlock-start" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-73" + :art-group "scenecamera" + :anim "tomb-unlock-start" + :parts 3 + :command-list '((120 (task-close! "tomb-boss-torches")) + (10000 + (apply ,(lambda :behavior scene-player + () + (if (-> self aborted?) + (script-eval '(cond + ((task-closed? "tomb-water-resolution") + (send-event "tomb-sphinx-2" 'trigger) + (send-event "tomb-plat-return-2" 'trigger) + ) + ((task-closed? "tomb-poles-resolution") + (send-event "tomb-sphinx-1" 'trigger) + (send-event "tomb-plat-return-1" 'trigger) + ) + ) + ) + ) + (none) + ) + ) + (want-continue "tomb-start-bottom") + ) + ) + :cut-list '() + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "tomb-boss-door" + :level 'tomba + :art-group "skel-tomb-boss-door" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #x11 + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj #f + :end-point-obj #f + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) (scene-method-16 (new 'static 'scene diff --git a/goal_src/jak2/levels/mars_tomb/tomb-water.gc b/goal_src/jak2/levels/mars_tomb/tomb-water.gc index 416f1ce719..16830b8814 100644 --- a/goal_src/jak2/levels/mars_tomb/tomb-water.gc +++ b/goal_src/jak2/levels/mars_tomb/tomb-water.gc @@ -1596,7 +1596,7 @@ This commonly includes things such as: :trans (behavior () (let ((gp-0 (-> self on-notice))) (when gp-0 - (if (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-0)) + (if (script-eval (the-as pair gp-0)) (go-virtual open #f) ) ) @@ -1712,7 +1712,7 @@ This commonly includes things such as: ) (let ((gp-2 (-> self on-activate))) (if gp-2 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-2)) + (script-eval (the-as pair gp-2)) ) ) ) @@ -1750,97 +1750,95 @@ This commonly includes things such as: - collision information - loading the skeleton group / bones - sounds" - (with-pp - (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0))) - (set! (-> s4-0 total-prims) (the-as uint 6)) - (set! (-> s3-0 prim-core collide-as) (collide-spec pusher)) - (set! (-> s3-0 prim-core collide-with) (collide-spec jak player-list)) - (set! (-> s3-0 prim-core action) (collide-action solid rideable pull-rider-can-collide)) - (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 122880.0) - (set! (-> s4-0 root-prim) s3-0) - ) - (pusher-init s4-0) - (let ((v1-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> v1-10 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-10 prim-core collide-with) (collide-spec jak bot player-list)) - (set! (-> v1-10 prim-core action) (collide-action solid rideable)) - (set! (-> v1-10 transform-index) 3) - (set-vector! (-> v1-10 local-sphere) 0.0 0.0 0.0 12288.0) - ) - (let ((v1-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> v1-12 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-12 prim-core collide-with) (collide-spec jak bot player-list)) - (set! (-> v1-12 prim-core action) (collide-action solid)) - (set! (-> v1-12 transform-index) 4) - (set-vector! (-> v1-12 local-sphere) 0.0 0.0 0.0 11059.2) - ) - (let ((v1-14 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> v1-14 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-14 prim-core collide-with) (collide-spec jak bot player-list)) - (set! (-> v1-14 prim-core action) (collide-action solid)) - (set! (-> v1-14 transform-index) 5) - (set-vector! (-> v1-14 local-sphere) 0.0 0.0 0.0 11059.2) - ) - (let ((v1-16 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 0)))) - (set! (-> v1-16 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-16 prim-core collide-with) (collide-spec jak bot player-list)) - (set! (-> v1-16 prim-core action) (collide-action solid)) - (set! (-> v1-16 transform-index) 6) - (set-vector! (-> v1-16 local-sphere) 0.0 0.0 0.0 11059.2) - ) - (let ((v1-18 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 4) (the-as uint 0)))) - (set! (-> v1-18 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-18 prim-core collide-with) (collide-spec jak bot player-list)) - (set! (-> v1-18 prim-core action) (collide-action solid)) - (set! (-> v1-18 transform-index) 7) - (set-vector! (-> v1-18 local-sphere) 0.0 0.0 0.0 11059.2) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (let ((v1-21 (-> s4-0 root-prim))) - (set! (-> s4-0 backup-collide-as) (-> v1-21 prim-core collide-as)) - (set! (-> s4-0 backup-collide-with) (-> v1-21 prim-core collide-with)) - ) - (set! (-> obj root) s4-0) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0))) + (set! (-> s4-0 total-prims) (the-as uint 6)) + (set! (-> s3-0 prim-core collide-as) (collide-spec pusher)) + (set! (-> s3-0 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> s3-0 prim-core action) (collide-action solid rideable pull-rider-can-collide)) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 122880.0) + (set! (-> s4-0 root-prim) s3-0) ) - (process-drawable-from-entity! obj arg0) - (initialize-skeleton - obj - (the-as skeleton-group (art-group-get-by-name *level* "skel-tomb-simon-button" (the-as (pointer uint32) #f))) - (the-as pair 0) + (pusher-init s4-0) + (let ((v1-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) + (set! (-> v1-10 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-10 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-10 prim-core action) (collide-action solid rideable)) + (set! (-> v1-10 transform-index) 3) + (set-vector! (-> v1-10 local-sphere) 0.0 0.0 0.0 12288.0) ) - (set! (-> obj notify-actor) (entity-actor-lookup arg0 'alt-actor 0)) - (set! (-> obj on-notice) (res-lump-struct (-> obj entity) 'on-notice (function none))) - (set! (-> obj on-activate) (res-lump-struct (-> obj entity) 'on-activate (function none))) - (let ((a0-42 (-> obj skel root-channel 0))) - (set! (-> a0-42 frame-group) (the-as art-joint-anim (-> obj draw art-group data 3))) - (set! (-> a0-42 param 0) 1.0) - (set! (-> a0-42 frame-num) 0.0) - (joint-control-channel-group! a0-42 (the-as art-joint-anim (-> obj draw art-group data 3)) num-func-loop!) + (let ((v1-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) + (set! (-> v1-12 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-12 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-12 prim-core action) (collide-action solid)) + (set! (-> v1-12 transform-index) 4) + (set-vector! (-> v1-12 local-sphere) 0.0 0.0 0.0 11059.2) ) - (transform-post) - (let ((s5-1 (-> obj on-notice))) - (when s5-1 - (if (eval! (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) (the-as pair s5-1)) - (go (method-of-object obj open) #t) - ) - ) + (let ((v1-14 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) + (set! (-> v1-14 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-14 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-14 prim-core action) (collide-action solid)) + (set! (-> v1-14 transform-index) 5) + (set-vector! (-> v1-14 local-sphere) 0.0 0.0 0.0 11059.2) ) - (let ((v1-49 (-> obj entity extra perm user-uint8 0))) - (cond - ((zero? v1-49) - (go (method-of-object obj idle)) - ) - ((= v1-49 1) - (go (method-of-object obj open) #t) - ) - ((= v1-49 2) - (go (method-of-object obj pressed) #t) - ) - ) + (let ((v1-16 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 0)))) + (set! (-> v1-16 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-16 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-16 prim-core action) (collide-action solid)) + (set! (-> v1-16 transform-index) 6) + (set-vector! (-> v1-16 local-sphere) 0.0 0.0 0.0 11059.2) ) - (none) + (let ((v1-18 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 4) (the-as uint 0)))) + (set! (-> v1-18 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-18 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-18 prim-core action) (collide-action solid)) + (set! (-> v1-18 transform-index) 7) + (set-vector! (-> v1-18 local-sphere) 0.0 0.0 0.0 11059.2) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (let ((v1-21 (-> s4-0 root-prim))) + (set! (-> s4-0 backup-collide-as) (-> v1-21 prim-core collide-as)) + (set! (-> s4-0 backup-collide-with) (-> v1-21 prim-core collide-with)) + ) + (set! (-> obj root) s4-0) ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-tomb-simon-button" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj notify-actor) (entity-actor-lookup arg0 'alt-actor 0)) + (set! (-> obj on-notice) (res-lump-struct (-> obj entity) 'on-notice (function none))) + (set! (-> obj on-activate) (res-lump-struct (-> obj entity) 'on-activate (function none))) + (let ((a0-42 (-> obj skel root-channel 0))) + (set! (-> a0-42 frame-group) (the-as art-joint-anim (-> obj draw art-group data 3))) + (set! (-> a0-42 param 0) 1.0) + (set! (-> a0-42 frame-num) 0.0) + (joint-control-channel-group! a0-42 (the-as art-joint-anim (-> obj draw art-group data 3)) num-func-loop!) + ) + (transform-post) + (let ((s5-1 (-> obj on-notice))) + (when s5-1 + (if (script-eval (the-as pair s5-1)) + (go (method-of-object obj open) #t) + ) + ) + ) + (let ((v1-49 (-> obj entity extra perm user-uint8 0))) + (cond + ((zero? v1-49) + (go (method-of-object obj idle)) + ) + ((= v1-49 1) + (go (method-of-object obj open) #t) + ) + ((= v1-49 2) + (go (method-of-object obj pressed) #t) + ) + ) + ) + (none) ) (deftype tomb-vibe (process-drawable) diff --git a/goal_src/jak2/levels/nest/boss/metalkor-states.gc b/goal_src/jak2/levels/nest/boss/metalkor-states.gc index 52e54cdf95..37992d5e43 100644 --- a/goal_src/jak2/levels/nest/boss/metalkor-states.gc +++ b/goal_src/jak2/levels/nest/boss/metalkor-states.gc @@ -251,16 +251,10 @@ ) (case (-> self stage) ((2) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(want-anim "nest-kor-boss-fight-mid") - ) + (script-eval '(want-anim "nest-kor-boss-fight-mid")) ) ((3) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(want-anim "outro-nest") - ) + (script-eval '(want-anim "outro-nest")) ) ) (when (nonzero? (-> self neck)) diff --git a/goal_src/jak2/levels/nest/flying-spider.gc b/goal_src/jak2/levels/nest/flying-spider.gc index a0efe04ada..fcdbe3c362 100644 --- a/goal_src/jak2/levels/nest/flying-spider.gc +++ b/goal_src/jak2/levels/nest/flying-spider.gc @@ -191,10 +191,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/goal_src/jak2/levels/nest/mantis.gc b/goal_src/jak2/levels/nest/mantis.gc index 3bcbb75758..511a1e6fac 100644 --- a/goal_src/jak2/levels/nest/mantis.gc +++ b/goal_src/jak2/levels/nest/mantis.gc @@ -473,10 +473,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/goal_src/jak2/levels/palace/boss/squid-setup.gc b/goal_src/jak2/levels/palace/boss/squid-setup.gc index dab15bdde6..e12c411d91 100644 --- a/goal_src/jak2/levels/palace/boss/squid-setup.gc +++ b/goal_src/jak2/levels/palace/boss/squid-setup.gc @@ -2386,10 +2386,7 @@ This commonly includes things such as: ) (with-pp (if (= (-> obj stage) 2) - (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - '(want-anim "palace-boss-res") - ) + (script-eval '(want-anim "palace-boss-res")) ) (when (-> obj force-onto-mesh) (let ((s5-0 (new 'stack-no-clear 'vector))) diff --git a/goal_src/jak2/levels/ruins/rapid-gunner.gc b/goal_src/jak2/levels/ruins/rapid-gunner.gc index 91a94a4901..7dc9031056 100644 --- a/goal_src/jak2/levels/ruins/rapid-gunner.gc +++ b/goal_src/jak2/levels/ruins/rapid-gunner.gc @@ -607,10 +607,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/goal_src/jak2/levels/sewer/hosehead.gc b/goal_src/jak2/levels/sewer/hosehead.gc index c7b734a3b4..adf006ec72 100644 --- a/goal_src/jak2/levels/sewer/hosehead.gc +++ b/goal_src/jak2/levels/sewer/hosehead.gc @@ -989,10 +989,7 @@ (set! (-> self focus collide-with) (collide-spec jak bot player-list jak-vehicle)) (let ((gp-1 (-> self on-stop-sentry))) (if gp-1 - (eval! - (new 'stack 'script-context (the-as basic (process->ppointer self)) self (-> self root-override2 trans)) - (the-as pair gp-1) - ) + (script-eval (the-as pair gp-1) :vector (-> self root-override2 trans)) ) ) (go-virtual active) @@ -1084,10 +1081,7 @@ (set! (-> self focus collide-with) (collide-spec jak bot player-list jak-vehicle)) (let ((gp-2 (-> self on-stop-sentry))) (if gp-2 - (eval! - (new 'stack 'script-context (the-as basic (process->ppointer self)) self (-> self root-override2 trans)) - (the-as pair gp-2) - ) + (script-eval (the-as pair gp-2) :vector (-> self root-override2 trans)) ) ) (go-hostile self) @@ -1331,10 +1325,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (the-as basic (process->ppointer self)) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/goal_src/jak2/levels/sewer/sewer-obs2.gc b/goal_src/jak2/levels/sewer/sewer-obs2.gc index abeb7b7b08..2b11938875 100644 --- a/goal_src/jak2/levels/sewer/sewer-obs2.gc +++ b/goal_src/jak2/levels/sewer/sewer-obs2.gc @@ -278,7 +278,7 @@ For example for an elevator pre-compute the distance between the first and last ) (let ((data (res-lump-struct (-> self entity) 'on-activate structure))) (if data - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair data)) + (script-eval (the-as pair data)) ) ) (none) @@ -1268,117 +1268,112 @@ This commonly includes things such as: - collision information - loading the skeleton group / bones - sounds" - (with-pp - (stack-size-set! (-> obj main-thread) 512) - (set! (-> obj mask) (logior (process-mask collectable) (-> obj mask))) - (let ((data ((method-of-type res-lump get-property-struct) - (-> obj entity) - 'art-name - 'interp - -1000000000.0 - "sew-wall-1" - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (art-group (art-group-get-by-name *level* "skel-sew-wall" (the-as (pointer uint32) #f))) - ) - (set! (-> obj art-name) (the-as string data)) - (let ((cshape (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) - (set! (-> cshape dynam) (copy *standard-dynamics* 'process)) - (set! (-> cshape reaction) cshape-reaction-default) - (set! (-> cshape no-reaction) - (the-as (function collide-shape-moving collide-query vector vector object) nothing) + (stack-size-set! (-> obj main-thread) 512) + (set! (-> obj mask) (logior (process-mask collectable) (-> obj mask))) + (let ((data ((method-of-type res-lump get-property-struct) + (-> obj entity) + 'art-name + 'interp + -1000000000.0 + "sew-wall-1" + (the-as (pointer res-tag) #f) + *res-static-buf* + ) ) - (let ((prim-group (new 'process 'collide-shape-prim-group cshape (the-as uint 5) 0))) - (set! (-> cshape total-prims) (the-as uint 6)) - (set! (-> prim-group prim-core collide-as) (collide-spec obstacle)) - (set! (-> prim-group prim-core collide-with) (collide-spec jak player-list)) - (set! (-> prim-group prim-core action) (collide-action solid)) - (set! (-> prim-group transform-index) 4) - (set-vector! (-> prim-group local-sphere) 0.0 0.0 0.0 40960.0) - (set! (-> cshape root-prim) prim-group) - ) - (let ((prim-mesh-1 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 0) (the-as uint 0)))) - (set! (-> prim-mesh-1 prim-core collide-as) (collide-spec obstacle)) - (set! (-> prim-mesh-1 prim-core collide-with) (collide-spec jak player-list)) - (set! (-> prim-mesh-1 prim-core action) (collide-action solid)) - (set! (-> prim-mesh-1 transform-index) 4) - (set-vector! (-> prim-mesh-1 local-sphere) 0.0 0.0 0.0 40960.0) - ) - (let ((prim-mesh-2 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 1) (the-as uint 0)))) - (set! (-> prim-mesh-2 prim-core action) (collide-action solid)) - (set! (-> prim-mesh-2 transform-index) 4) - (set-vector! (-> prim-mesh-2 local-sphere) 77824.0 -16384.0 282624.0 36864.0) - ) - (let ((prim-mesh-3 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 2) (the-as uint 0)))) - (set! (-> prim-mesh-3 prim-core action) (collide-action solid)) - (set! (-> prim-mesh-3 transform-index) 4) - (set-vector! (-> prim-mesh-3 local-sphere) 61440.0 -16384.0 112640.0 151552.0) - ) - (let ((prim-mesh-4 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 3) (the-as uint 0)))) - (set! (-> prim-mesh-4 prim-core action) (collide-action solid)) - (set! (-> prim-mesh-4 transform-index) 4) - (set-vector! (-> prim-mesh-4 local-sphere) 0.0 -16384.0 40960.0 122880.0) - ) - (let ((prim-mesh-5 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 4) (the-as uint 0)))) - (set! (-> prim-mesh-5 prim-core action) (collide-action solid)) - (set! (-> prim-mesh-5 transform-index) 4) - (set-vector! (-> prim-mesh-5 local-sphere) 81920.0 0.0 204800.0 143360.0) - ) - (set! (-> cshape nav-radius) (* 0.75 (-> cshape root-prim local-sphere w))) - (let ((root-prim (-> cshape root-prim))) - (set! (-> cshape backup-collide-as) (-> root-prim prim-core collide-as)) - (set! (-> cshape backup-collide-with) (-> root-prim prim-core collide-with)) - ) - (set! (-> obj root-override) cshape) + (art-group (art-group-get-by-name *level* "skel-sew-wall" (the-as (pointer uint32) #f))) ) - (process-drawable-from-entity! obj entity) - (logclear! (-> obj mask) (process-mask actor-pause)) - (cond - ((string= (-> obj art-name) "sew-wall-1") - (set! (-> obj anim) - (new 'static 'spool-anim :name "sew-wall-1" :anim-name "1-break" :parts 1 :command-list '()) - ) - (set! (-> obj first-wall?) #t) - ) - ((string= (-> obj art-name) "sew-wall-2") - (set! (-> obj anim) - (new 'static 'spool-anim :name "sew-wall-2" :anim-name "2-break" :parts 1 :command-list '()) - ) - (set! (-> obj root-override trans z) (+ 26624.0 (-> obj root-override trans z))) - (set! (-> obj first-wall?) #f) - ) - (else - (go process-drawable-art-error (the-as string data)) - ) + (set! (-> obj art-name) (the-as string data)) + (let ((cshape (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) + (set! (-> cshape dynam) (copy *standard-dynamics* 'process)) + (set! (-> cshape reaction) cshape-reaction-default) + (set! (-> cshape no-reaction) + (the-as (function collide-shape-moving collide-query vector vector object) nothing) + ) + (let ((prim-group (new 'process 'collide-shape-prim-group cshape (the-as uint 5) 0))) + (set! (-> cshape total-prims) (the-as uint 6)) + (set! (-> prim-group prim-core collide-as) (collide-spec obstacle)) + (set! (-> prim-group prim-core collide-with) (collide-spec jak player-list)) + (set! (-> prim-group prim-core action) (collide-action solid)) + (set! (-> prim-group transform-index) 4) + (set-vector! (-> prim-group local-sphere) 0.0 0.0 0.0 40960.0) + (set! (-> cshape root-prim) prim-group) ) - (initialize-skeleton obj (the-as skeleton-group art-group) (the-as pair 0)) - ) - (set! (-> obj draw force-lod) 0) - (ja-channel-set! 1) - (let* ((channel (-> obj skel root-channel 0)) - (_art-group (-> obj draw art-group)) - (s3-1 (method-of-object _art-group get-art-by-name-method)) - ) - (format (clear *temp-string*) "~S-idle" (-> obj art-name)) - (set! (-> channel frame-group) (the-as art-joint-anim (s3-1 _art-group *temp-string* (the-as type #f)))) - ) - (let* ((game-info *game-info*) - (id (+ (-> game-info attack-id) 1)) - ) - (set! (-> game-info attack-id) id) - (set! (-> obj attack-id) id) - ) - (if (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (res-lump-struct (-> obj entity) 'on-activate pair) - ) - (go (method-of-object obj hit) #t) - (go (method-of-object obj idle)) + (let ((prim-mesh-1 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 0) (the-as uint 0)))) + (set! (-> prim-mesh-1 prim-core collide-as) (collide-spec obstacle)) + (set! (-> prim-mesh-1 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> prim-mesh-1 prim-core action) (collide-action solid)) + (set! (-> prim-mesh-1 transform-index) 4) + (set-vector! (-> prim-mesh-1 local-sphere) 0.0 0.0 0.0 40960.0) ) - (none) + (let ((prim-mesh-2 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 1) (the-as uint 0)))) + (set! (-> prim-mesh-2 prim-core action) (collide-action solid)) + (set! (-> prim-mesh-2 transform-index) 4) + (set-vector! (-> prim-mesh-2 local-sphere) 77824.0 -16384.0 282624.0 36864.0) + ) + (let ((prim-mesh-3 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 2) (the-as uint 0)))) + (set! (-> prim-mesh-3 prim-core action) (collide-action solid)) + (set! (-> prim-mesh-3 transform-index) 4) + (set-vector! (-> prim-mesh-3 local-sphere) 61440.0 -16384.0 112640.0 151552.0) + ) + (let ((prim-mesh-4 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 3) (the-as uint 0)))) + (set! (-> prim-mesh-4 prim-core action) (collide-action solid)) + (set! (-> prim-mesh-4 transform-index) 4) + (set-vector! (-> prim-mesh-4 local-sphere) 0.0 -16384.0 40960.0 122880.0) + ) + (let ((prim-mesh-5 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 4) (the-as uint 0)))) + (set! (-> prim-mesh-5 prim-core action) (collide-action solid)) + (set! (-> prim-mesh-5 transform-index) 4) + (set-vector! (-> prim-mesh-5 local-sphere) 81920.0 0.0 204800.0 143360.0) + ) + (set! (-> cshape nav-radius) (* 0.75 (-> cshape root-prim local-sphere w))) + (let ((root-prim (-> cshape root-prim))) + (set! (-> cshape backup-collide-as) (-> root-prim prim-core collide-as)) + (set! (-> cshape backup-collide-with) (-> root-prim prim-core collide-with)) + ) + (set! (-> obj root-override) cshape) + ) + (process-drawable-from-entity! obj entity) + (logclear! (-> obj mask) (process-mask actor-pause)) + (cond + ((string= (-> obj art-name) "sew-wall-1") + (set! (-> obj anim) + (new 'static 'spool-anim :name "sew-wall-1" :anim-name "1-break" :parts 1 :command-list '()) + ) + (set! (-> obj first-wall?) #t) + ) + ((string= (-> obj art-name) "sew-wall-2") + (set! (-> obj anim) + (new 'static 'spool-anim :name "sew-wall-2" :anim-name "2-break" :parts 1 :command-list '()) + ) + (set! (-> obj root-override trans z) (+ 26624.0 (-> obj root-override trans z))) + (set! (-> obj first-wall?) #f) + ) + (else + (go process-drawable-art-error (the-as string data)) + ) + ) + (initialize-skeleton obj (the-as skeleton-group art-group) (the-as pair 0)) ) + (set! (-> obj draw force-lod) 0) + (ja-channel-set! 1) + (let* ((channel (-> obj skel root-channel 0)) + (_art-group (-> obj draw art-group)) + (s3-1 (method-of-object _art-group get-art-by-name-method)) + ) + (format (clear *temp-string*) "~S-idle" (-> obj art-name)) + (set! (-> channel frame-group) (the-as art-joint-anim (s3-1 _art-group *temp-string* (the-as type #f)))) + ) + (let* ((game-info *game-info*) + (id (+ (-> game-info attack-id) 1)) + ) + (set! (-> game-info attack-id) id) + (set! (-> obj attack-id) id) + ) + (if (script-eval (res-lump-struct (-> obj entity) 'on-activate pair)) + (go (method-of-object obj hit) #t) + (go (method-of-object obj idle)) + ) + (none) ) (deftype sew-grill (process-drawable) diff --git a/goal_src/jak2/levels/temple/mountain-obs.gc b/goal_src/jak2/levels/temple/mountain-obs.gc index e89d76e56c..962762713c 100644 --- a/goal_src/jak2/levels/temple/mountain-obs.gc +++ b/goal_src/jak2/levels/temple/mountain-obs.gc @@ -2893,7 +2893,7 @@ This commonly includes things such as: (when (not arg0) (let ((gp-0 (-> self on-activate))) (if gp-0 - (eval! (new 'stack 'script-context (process->ppointer self) self (-> self root trans)) (the-as pair gp-0)) + (script-eval (the-as pair gp-0) :vector (-> self root trans)) ) ) (ja-no-eval :group! (-> self draw art-group data 3) diff --git a/goal_src/jak2/levels/underport/under-laser.gc b/goal_src/jak2/levels/underport/under-laser.gc index ec9d878cb5..d18080f316 100644 --- a/goal_src/jak2/levels/underport/under-laser.gc +++ b/goal_src/jak2/levels/underport/under-laser.gc @@ -310,11 +310,7 @@ (none) ) :trans (behavior () - (if (not (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - (the-as pair (-> self draw-test-script)) - ) - ) + (if (not (script-eval (the-as pair (-> self draw-test-script)))) (go-virtual idle) ) (none) @@ -404,131 +400,124 @@ This commonly includes things such as: - loading the skeleton group / bones - sounds" (local-vars (sv-64 res-tag)) - (with-pp - (set! (-> obj root-override) (the-as collide-shape-moving (new 'process 'trsqv))) - (process-drawable-from-entity! obj arg0) - (logclear! (-> obj mask) (process-mask actor-pause)) - (initialize-skeleton - obj - (the-as skeleton-group (art-group-get-by-name *level* "skel-under-laser" (the-as (pointer uint32) #f))) - (the-as pair 0) - ) - (let ((v1-7 (res-lump-value (-> obj entity) 'extra-id uint128 :time -1000000000.0))) - (set! (-> obj id) (the-as int v1-7)) - (set! (-> obj info) (-> *under-laser-infos* v1-7)) - ) - (let ((a1-6 (new 'stack-no-clear 'sync-info-params))) - (let ((v1-11 0)) - (if #t - (set! v1-11 (logior v1-11 1)) - ) - (set! (-> a1-6 sync-type) 'sync-eased) - (set! (-> a1-6 sync-flags) (the-as sync-flags v1-11)) - ) - (set! (-> a1-6 period) (the-as uint 1800)) - (set! (-> a1-6 entity) arg0) - (set! (-> a1-6 percent) 0.0) - (set! (-> a1-6 ease-in) 0.15) - (set! (-> a1-6 ease-out) 0.15) - (set! (-> a1-6 pause-in) 0.0) - (set! (-> a1-6 pause-out) 0.0) - (initialize! (-> obj sync) a1-6) - ) - (set! (-> obj clock) (-> *display* user0-clock)) - (let ((s5-1 (-> obj root-override))) - (set-vector! (-> s5-1 scale) 1.25 1.25 1.25 1.0) - (set! sv-64 (new 'static 'res-tag)) - (let ((v1-22 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-64)))) - (when v1-22 - (+! (-> s5-1 trans x) (-> v1-22 0)) - (+! (-> s5-1 trans y) (-> v1-22 1)) - (+! (-> s5-1 trans z) (-> v1-22 2)) - ) - ) - (let ((f0-15 (res-lump-float arg0 'rotoffset))) - (if (!= f0-15 0.0) - (quaternion-rotate-y! (-> s5-1 quat) (-> s5-1 quat) f0-15) - ) - ) - (vector-z-quaternion! (-> obj laser-dir) (-> s5-1 quat)) - (vector-normalize! (-> obj laser-dir) 1.0) - (quaternion-rotate-y! (-> s5-1 quat) (-> s5-1 quat) -16384.0) - (when (logtest? (-> obj info options) 1) - (let ((s4-1 (new 'stack-no-clear 'quaternion))) - (quaternion-vector-angle! s4-1 (-> obj laser-dir) 16384.0) - (quaternion*! (-> s5-1 quat) s4-1 (-> s5-1 quat)) - ) - ) - (let ((f30-0 (-> obj info laser-radius))) - (let ((s4-2 (new 'stack-no-clear 'vector))) - (vector-normalize-copy! s4-2 (-> obj laser-dir) (- f30-0)) - (vector+! (-> s5-1 trans) (-> s5-1 trans) s4-2) - ) - (vector-normalize-copy! (-> obj slave-trans-offset) (-> obj laser-dir) (* 2.0 f30-0)) - ) - (set! (-> obj zero-pos quad) (-> s5-1 trans quad)) - (let ((f30-1 (-> obj info laser-move-dist))) - (cond - ((logtest? (-> obj info options) 1) - (set! (-> obj one-pos quad) (-> obj zero-pos quad)) - (+! (-> obj one-pos y) f30-1) - ) - (else - (let ((s4-3 (new 'stack-no-clear 'vector))) - (vector-rotate-around-y! s4-3 (-> obj laser-dir) 16384.0) - (vector-normalize! s4-3 f30-1) - (vector+! (-> obj one-pos) (-> obj zero-pos) s4-3) - ) - ) - ) - ) - (vector-lerp! (-> s5-1 trans) (-> obj zero-pos) (-> obj one-pos) (get-norm! (-> obj sync) 0)) - ) - (let ((a2-13 (new 'static 'lightning-spec - :name #f - :flags (lightning-spec-flags lsf2) - :start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - :end-color (new 'static 'rgba :a #x80) - :fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5) - :fade-start-factor 0.2 - :fade-time 120.0 - :texture (new 'static 'texture-id :index #x83 :page #xc) - :reduction 0.42 - :num-points 16 - :box-size 8192.0 - :merge-factor 0.1 - :merge-count 4 - :radius 2048.0 - :duration -1.0 - :sound #f - ) - ) - ) - (set! (-> obj lightning) (new 'process 'lightning-control a2-13 obj 0.0)) - ) - (let ((a3-5 (new 'stack-no-clear 'vector))) - (vector-float*! a3-5 (-> obj slave-trans-offset) 0.5) - (vector+! a3-5 a3-5 (-> obj root-override trans)) - (if (zero? (-> obj id)) - (set! (-> obj sound) (new 'process 'ambient-sound (static-sound-spec "und-laser-near" :fo-max 40) a3-5)) - (set! (-> obj sound) (new 'process 'ambient-sound (static-sound-spec "und-laser-beam" :fo-max 40) a3-5)) - ) - ) - (set! (-> obj draw-test-script) (res-lump-struct (-> obj entity) 'on-activate script-context)) - (cond - ((and (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (the-as pair (-> obj draw-test-script)) - ) - (= *bot-record-path* -1) - ) - (update-vol! (-> obj sound) 0.0) - (go (method-of-object obj dormant)) - ) - (else - (go (method-of-object obj idle)) - ) - ) - (none) + (set! (-> obj root-override) (the-as collide-shape-moving (new 'process 'trsqv))) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-under-laser" (the-as (pointer uint32) #f))) + (the-as pair 0) ) + (let ((v1-7 (res-lump-value (-> obj entity) 'extra-id uint128 :time -1000000000.0))) + (set! (-> obj id) (the-as int v1-7)) + (set! (-> obj info) (-> *under-laser-infos* v1-7)) + ) + (let ((a1-6 (new 'stack-no-clear 'sync-info-params))) + (let ((v1-11 0)) + (if #t + (set! v1-11 (logior v1-11 1)) + ) + (set! (-> a1-6 sync-type) 'sync-eased) + (set! (-> a1-6 sync-flags) (the-as sync-flags v1-11)) + ) + (set! (-> a1-6 period) (the-as uint 1800)) + (set! (-> a1-6 entity) arg0) + (set! (-> a1-6 percent) 0.0) + (set! (-> a1-6 ease-in) 0.15) + (set! (-> a1-6 ease-out) 0.15) + (set! (-> a1-6 pause-in) 0.0) + (set! (-> a1-6 pause-out) 0.0) + (initialize! (-> obj sync) a1-6) + ) + (set! (-> obj clock) (-> *display* user0-clock)) + (let ((s5-1 (-> obj root-override))) + (set-vector! (-> s5-1 scale) 1.25 1.25 1.25 1.0) + (set! sv-64 (new 'static 'res-tag)) + (let ((v1-22 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-64)))) + (when v1-22 + (+! (-> s5-1 trans x) (-> v1-22 0)) + (+! (-> s5-1 trans y) (-> v1-22 1)) + (+! (-> s5-1 trans z) (-> v1-22 2)) + ) + ) + (let ((f0-15 (res-lump-float arg0 'rotoffset))) + (if (!= f0-15 0.0) + (quaternion-rotate-y! (-> s5-1 quat) (-> s5-1 quat) f0-15) + ) + ) + (vector-z-quaternion! (-> obj laser-dir) (-> s5-1 quat)) + (vector-normalize! (-> obj laser-dir) 1.0) + (quaternion-rotate-y! (-> s5-1 quat) (-> s5-1 quat) -16384.0) + (when (logtest? (-> obj info options) 1) + (let ((s4-1 (new 'stack-no-clear 'quaternion))) + (quaternion-vector-angle! s4-1 (-> obj laser-dir) 16384.0) + (quaternion*! (-> s5-1 quat) s4-1 (-> s5-1 quat)) + ) + ) + (let ((f30-0 (-> obj info laser-radius))) + (let ((s4-2 (new 'stack-no-clear 'vector))) + (vector-normalize-copy! s4-2 (-> obj laser-dir) (- f30-0)) + (vector+! (-> s5-1 trans) (-> s5-1 trans) s4-2) + ) + (vector-normalize-copy! (-> obj slave-trans-offset) (-> obj laser-dir) (* 2.0 f30-0)) + ) + (set! (-> obj zero-pos quad) (-> s5-1 trans quad)) + (let ((f30-1 (-> obj info laser-move-dist))) + (cond + ((logtest? (-> obj info options) 1) + (set! (-> obj one-pos quad) (-> obj zero-pos quad)) + (+! (-> obj one-pos y) f30-1) + ) + (else + (let ((s4-3 (new 'stack-no-clear 'vector))) + (vector-rotate-around-y! s4-3 (-> obj laser-dir) 16384.0) + (vector-normalize! s4-3 f30-1) + (vector+! (-> obj one-pos) (-> obj zero-pos) s4-3) + ) + ) + ) + ) + (vector-lerp! (-> s5-1 trans) (-> obj zero-pos) (-> obj one-pos) (get-norm! (-> obj sync) 0)) + ) + (let ((a2-13 (new 'static 'lightning-spec + :name #f + :flags (lightning-spec-flags lsf2) + :start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + :end-color (new 'static 'rgba :a #x80) + :fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5) + :fade-start-factor 0.2 + :fade-time 120.0 + :texture (new 'static 'texture-id :index #x83 :page #xc) + :reduction 0.42 + :num-points 16 + :box-size 8192.0 + :merge-factor 0.1 + :merge-count 4 + :radius 2048.0 + :duration -1.0 + :sound #f + ) + ) + ) + (set! (-> obj lightning) (new 'process 'lightning-control a2-13 obj 0.0)) + ) + (let ((a3-5 (new 'stack-no-clear 'vector))) + (vector-float*! a3-5 (-> obj slave-trans-offset) 0.5) + (vector+! a3-5 a3-5 (-> obj root-override trans)) + (if (zero? (-> obj id)) + (set! (-> obj sound) (new 'process 'ambient-sound (static-sound-spec "und-laser-near" :fo-max 40) a3-5)) + (set! (-> obj sound) (new 'process 'ambient-sound (static-sound-spec "und-laser-beam" :fo-max 40) a3-5)) + ) + ) + (set! (-> obj draw-test-script) (res-lump-struct (-> obj entity) 'on-activate script-context)) + (cond + ((and (script-eval (the-as pair (-> obj draw-test-script))) (= *bot-record-path* -1)) + (update-vol! (-> obj sound) 0.0) + (go (method-of-object obj dormant)) + ) + (else + (go (method-of-object obj idle)) + ) + ) + (none) ) diff --git a/goal_src/jak2/levels/underport/under-sig-obs.gc b/goal_src/jak2/levels/underport/under-sig-obs.gc index bb6c9c2b64..29213336f4 100644 --- a/goal_src/jak2/levels/underport/under-sig-obs.gc +++ b/goal_src/jak2/levels/underport/under-sig-obs.gc @@ -150,11 +150,7 @@ For example for an elevator pre-compute the distance between the first and last (none) ) :trans (behavior () - (when (not (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - (the-as pair (-> self draw-test-script)) - ) - ) + (when (not (script-eval (the-as pair (-> self draw-test-script)))) enter-state #t (go-virtual plat-path-active) @@ -438,21 +434,14 @@ For example for an elevator pre-compute the distance between the first and last otherwise, [[plat::34]] @see [[sync-eased]]" - (with-pp - (cond - ((and (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (the-as pair (-> obj draw-test-script)) - ) - (= *bot-record-path* -1) - ) - (go (method-of-object obj dormant)) - ) - (else - enter-state - #t - (go (method-of-object obj plat-path-active)) - ) + (cond + ((and (script-eval (the-as pair (-> obj draw-test-script))) (= *bot-record-path* -1)) + (go (method-of-object obj dormant)) + ) + (else + enter-state + #t + (go (method-of-object obj plat-path-active)) ) ) ) @@ -680,61 +669,56 @@ This commonly includes things such as: - loading the skeleton group / bones - sounds" (local-vars (sv-16 res-tag)) - (with-pp - (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) - (let ((v1-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> v1-2 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-2 prim-core action) (collide-action solid)) - (set! (-> v1-2 transform-index) 4) - (set-vector! (-> v1-2 local-sphere) 5324.8 -18432.0 -8192.0 32768.0) - (set! (-> s4-0 total-prims) (the-as uint 1)) - (set! (-> s4-0 root-prim) v1-2) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (let ((v1-5 (-> s4-0 root-prim))) - (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) s4-0) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (let ((v1-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-2 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-2 prim-core action) (collide-action solid)) + (set! (-> v1-2 transform-index) 4) + (set-vector! (-> v1-2 local-sphere) 5324.8 -18432.0 -8192.0 32768.0) + (set! (-> s4-0 total-prims) (the-as uint 1)) + (set! (-> s4-0 root-prim) v1-2) ) - (process-drawable-from-entity! obj arg0) - (if (= (res-lump-value (-> obj entity) 'extra-id uint :time -1000000000.0) 2) - (initialize-skeleton - obj - (the-as skeleton-group (art-group-get-by-name *level* "skel-under-break-wall2" (the-as (pointer uint32) #f))) - (the-as pair 0) - ) - (initialize-skeleton - obj - (the-as skeleton-group (art-group-get-by-name *level* "skel-under-break-wall1" (the-as (pointer uint32) #f))) - (the-as pair 0) - ) - ) - (let ((s4-4 (-> obj root))) - (set! sv-16 (new 'static 'res-tag)) - (let ((v1-15 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16)))) - (when v1-15 - (+! (-> obj root trans x) (-> v1-15 0)) - (+! (-> obj root trans y) (-> v1-15 1)) - (+! (-> obj root trans z) (-> v1-15 2)) - ) - ) - (let ((f0-12 (res-lump-float arg0 'rotoffset))) - (if (!= f0-12 0.0) - (quaternion-rotate-y! (-> s4-4 quat) (-> s4-4 quat) f0-12) - ) - ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (let ((v1-5 (-> s4-0 root-prim))) + (set! (-> s4-0 backup-collide-as) (-> v1-5 prim-core collide-as)) + (set! (-> s4-0 backup-collide-with) (-> v1-5 prim-core collide-with)) ) - (transform-post) - (if (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (res-lump-struct (-> obj entity) 'on-activate pair) - ) - (go (method-of-object obj die)) - (go (method-of-object obj idle)) - ) - (none) + (set! (-> obj root) s4-0) ) + (process-drawable-from-entity! obj arg0) + (if (= (res-lump-value (-> obj entity) 'extra-id uint :time -1000000000.0) 2) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-under-break-wall2" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-under-break-wall1" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + ) + (let ((s4-4 (-> obj root))) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-15 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16)))) + (when v1-15 + (+! (-> obj root trans x) (-> v1-15 0)) + (+! (-> obj root trans y) (-> v1-15 1)) + (+! (-> obj root trans z) (-> v1-15 2)) + ) + ) + (let ((f0-12 (res-lump-float arg0 'rotoffset))) + (if (!= f0-12 0.0) + (quaternion-rotate-y! (-> s4-4 quat) (-> s4-4 quat) f0-12) + ) + ) + ) + (transform-post) + (if (script-eval (res-lump-struct (-> obj entity) 'on-activate pair)) + (go (method-of-object obj die)) + (go (method-of-object obj idle)) + ) + (none) ) (deftype under-break-bridge (process-drawable) @@ -809,80 +793,75 @@ This commonly includes things such as: - loading the skeleton group / bones - sounds" (local-vars (sv-16 res-tag)) - (with-pp - (set! (-> obj bridge-id) (res-lump-value (-> obj entity) 'extra-id int :time -1000000000.0)) - (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s4-0 total-prims) (the-as uint 3)) - (set! (-> s3-0 prim-core collide-as) (collide-spec obstacle)) - (set! (-> s3-0 prim-core action) (collide-action solid)) - (set! (-> s3-0 transform-index) 3) - (set-vector! (-> s3-0 local-sphere) 12288.0 0.0 -26624.0 57344.0) - (set! (-> s4-0 root-prim) s3-0) - ) - (let ((v1-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> v1-9 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-9 prim-core action) (collide-action solid)) - (set! (-> v1-9 transform-index) 3) - (set-vector! (-> v1-9 local-sphere) 12288.0 0.0 -26624.0 57344.0) - ) - (let ((v1-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> v1-11 prim-core action) (collide-action solid)) - (set! (-> v1-11 transform-index) 54) - (set-vector! (-> v1-11 local-sphere) 0.0 0.0 49152.0 61440.0) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (let ((v1-14 (-> s4-0 root-prim))) - (set! (-> s4-0 backup-collide-as) (-> v1-14 prim-core collide-as)) - (set! (-> s4-0 backup-collide-with) (-> v1-14 prim-core collide-with)) - ) - (set! (-> obj root-override) (the-as collide-shape-moving s4-0)) + (set! (-> obj bridge-id) (res-lump-value (-> obj entity) 'extra-id int :time -1000000000.0)) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) + (set! (-> s4-0 total-prims) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-spec obstacle)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 12288.0 0.0 -26624.0 57344.0) + (set! (-> s4-0 root-prim) s3-0) ) - (process-drawable-from-entity! obj arg0) - (if (= (res-lump-value (-> obj entity) 'extra-id uint :time -1000000000.0) 1) - (initialize-skeleton - obj - (the-as skeleton-group (art-group-get-by-name *level* "skel-under-bridge2" (the-as (pointer uint32) #f))) - (the-as pair 0) - ) - (initialize-skeleton - obj - (the-as skeleton-group (art-group-get-by-name *level* "skel-under-bridge1" (the-as (pointer uint32) #f))) - (the-as pair 0) - ) - ) - (let ((s4-4 (-> obj root-override))) - (set! sv-16 (new 'static 'res-tag)) - (let ((v1-24 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16)))) - (when v1-24 - (+! (-> obj root-override trans x) (-> v1-24 0)) - (+! (-> obj root-override trans y) (-> v1-24 1)) - (+! (-> obj root-override trans z) (-> v1-24 2)) - ) - ) - (let ((f0-20 (res-lump-float arg0 'rotoffset))) - (if (!= f0-20 0.0) - (quaternion-rotate-y! (-> s4-4 quat) (-> s4-4 quat) f0-20) - ) - ) + (let ((v1-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-9 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-9 prim-core action) (collide-action solid)) + (set! (-> v1-9 transform-index) 3) + (set-vector! (-> v1-9 local-sphere) 12288.0 0.0 -26624.0 57344.0) ) - (transform-post) - (cond - ((eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (res-lump-struct (-> obj entity) 'on-activate pair) - ) - (if (= (-> obj bridge-id) 1) - (go (method-of-object obj broken)) - (go (method-of-object obj die)) - ) - ) - (else - (go (method-of-object obj idle)) - ) + (let ((v1-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) + (set! (-> v1-11 prim-core action) (collide-action solid)) + (set! (-> v1-11 transform-index) 54) + (set-vector! (-> v1-11 local-sphere) 0.0 0.0 49152.0 61440.0) ) - (none) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (let ((v1-14 (-> s4-0 root-prim))) + (set! (-> s4-0 backup-collide-as) (-> v1-14 prim-core collide-as)) + (set! (-> s4-0 backup-collide-with) (-> v1-14 prim-core collide-with)) + ) + (set! (-> obj root-override) (the-as collide-shape-moving s4-0)) ) + (process-drawable-from-entity! obj arg0) + (if (= (res-lump-value (-> obj entity) 'extra-id uint :time -1000000000.0) 1) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-under-bridge2" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-under-bridge1" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + ) + (let ((s4-4 (-> obj root-override))) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-24 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16)))) + (when v1-24 + (+! (-> obj root-override trans x) (-> v1-24 0)) + (+! (-> obj root-override trans y) (-> v1-24 1)) + (+! (-> obj root-override trans z) (-> v1-24 2)) + ) + ) + (let ((f0-20 (res-lump-float arg0 'rotoffset))) + (if (!= f0-20 0.0) + (quaternion-rotate-y! (-> s4-4 quat) (-> s4-4 quat) f0-20) + ) + ) + ) + (transform-post) + (cond + ((script-eval (res-lump-struct (-> obj entity) 'on-activate pair)) + (if (= (-> obj bridge-id) 1) + (go (method-of-object obj broken)) + (go (method-of-object obj die)) + ) + ) + (else + (go (method-of-object obj idle)) + ) + ) + (none) ) (deftype under-int-door (process-drawable) @@ -951,93 +930,88 @@ This commonly includes things such as: - loading the skeleton group / bones - sounds" (local-vars (sv-16 res-tag)) - (with-pp - (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s4-0 total-prims) (the-as uint 3)) - (set! (-> s3-0 prim-core collide-as) (collide-spec obstacle)) - (set! (-> s3-0 prim-core action) (collide-action solid)) - (set-vector! (-> s3-0 local-sphere) 0.0 24576.0 0.0 57344.0) - (set! (-> s4-0 root-prim) s3-0) - ) - (let ((v1-7 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> v1-7 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-7 prim-core collide-with) (collide-spec jak bot player-list)) - (set! (-> v1-7 prim-core action) (collide-action solid)) - (set! (-> v1-7 transform-index) 3) - (set-vector! (-> v1-7 local-sphere) 8192.0 24576.0 0.0 28672.0) - ) - (let ((v1-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> v1-9 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-9 prim-core collide-with) (collide-spec jak bot player-list)) - (set! (-> v1-9 prim-core action) (collide-action solid)) - (set! (-> v1-9 transform-index) 4) - (set-vector! (-> v1-9 local-sphere) -8192.0 24576.0 0.0 28672.0) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (let ((v1-12 (-> s4-0 root-prim))) - (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) s4-0) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) + (set! (-> s4-0 total-prims) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-spec obstacle)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set-vector! (-> s3-0 local-sphere) 0.0 24576.0 0.0 57344.0) + (set! (-> s4-0 root-prim) s3-0) ) - (process-drawable-from-entity! obj arg0) - (initialize-skeleton - obj - (the-as skeleton-group (art-group-get-by-name *level* "skel-under-int-door" (the-as (pointer uint32) #f))) - (the-as pair 0) + (let ((v1-7 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-7 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-7 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-7 prim-core action) (collide-action solid)) + (set! (-> v1-7 transform-index) 3) + (set-vector! (-> v1-7 local-sphere) 8192.0 24576.0 0.0 28672.0) ) - (set! sv-16 (new 'static 'res-tag)) - (let ((v1-18 (res-lump-data (-> obj entity) 'actor-groups (pointer actor-group) :tag-ptr (& sv-16)))) - (when (and v1-18 (nonzero? (-> sv-16 elt-count))) - (let ((a0-25 (-> v1-18 0 data 0 actor))) - (if (and a0-25 (logtest? (-> a0-25 extra perm status) (entity-perm-status subtask-complete))) - (process-entity-status! obj (entity-perm-status subtask-complete) #t) - ) - ) - ) + (let ((v1-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) + (set! (-> v1-9 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-9 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-9 prim-core action) (collide-action solid)) + (set! (-> v1-9 transform-index) 4) + (set-vector! (-> v1-9 local-sphere) -8192.0 24576.0 0.0 28672.0) ) - (ja-channel-push! 1 0) - (let ((s5-2 #t)) - (cond - ((eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (res-lump-struct (-> obj entity) 'on-activate pair) - ) - (set! s5-2 #f) - ) - ((not (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status subtask-complete)))) - (set! s5-2 #f) - ) - ) - (cond - (s5-2 - (let ((a0-40 (-> obj skel root-channel 0))) - (set! (-> a0-40 frame-group) (the-as art-joint-anim (-> obj draw art-group data 2))) - (set! (-> a0-40 param 0) 1.0) - (set! (-> a0-40 frame-num) - (the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 2)) frames num-frames) -1)) - ) - (joint-control-channel-group! a0-40 (the-as art-joint-anim (-> obj draw art-group data 2)) num-func-loop!) - ) - ) - (else - (let ((a0-41 (-> obj skel root-channel 0))) - (set! (-> a0-41 frame-group) (the-as art-joint-anim (-> obj draw art-group data 2))) - (set! (-> a0-41 param 0) 1.0) - (set! (-> a0-41 frame-num) 0.0) - (joint-control-channel-group! a0-41 (the-as art-joint-anim (-> obj draw art-group data 2)) num-func-loop!) - ) - ) - ) - (transform-post) - (if s5-2 - (go (method-of-object obj idle-open)) - (go (method-of-object obj idle-closed)) - ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (let ((v1-12 (-> s4-0 root-prim))) + (set! (-> s4-0 backup-collide-as) (-> v1-12 prim-core collide-as)) + (set! (-> s4-0 backup-collide-with) (-> v1-12 prim-core collide-with)) ) - (none) + (set! (-> obj root) s4-0) ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-under-int-door" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-18 (res-lump-data (-> obj entity) 'actor-groups (pointer actor-group) :tag-ptr (& sv-16)))) + (when (and v1-18 (nonzero? (-> sv-16 elt-count))) + (let ((a0-25 (-> v1-18 0 data 0 actor))) + (if (and a0-25 (logtest? (-> a0-25 extra perm status) (entity-perm-status subtask-complete))) + (process-entity-status! obj (entity-perm-status subtask-complete) #t) + ) + ) + ) + ) + (ja-channel-push! 1 0) + (let ((s5-2 #t)) + (cond + ((script-eval (res-lump-struct (-> obj entity) 'on-activate pair)) + (set! s5-2 #f) + ) + ((not (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status subtask-complete)))) + (set! s5-2 #f) + ) + ) + (cond + (s5-2 + (let ((a0-40 (-> obj skel root-channel 0))) + (set! (-> a0-40 frame-group) (the-as art-joint-anim (-> obj draw art-group data 2))) + (set! (-> a0-40 param 0) 1.0) + (set! (-> a0-40 frame-num) + (the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 2)) frames num-frames) -1)) + ) + (joint-control-channel-group! a0-40 (the-as art-joint-anim (-> obj draw art-group data 2)) num-func-loop!) + ) + ) + (else + (let ((a0-41 (-> obj skel root-channel 0))) + (set! (-> a0-41 frame-group) (the-as art-joint-anim (-> obj draw art-group data 2))) + (set! (-> a0-41 param 0) 1.0) + (set! (-> a0-41 frame-num) 0.0) + (joint-control-channel-group! a0-41 (the-as art-joint-anim (-> obj draw art-group data 2)) num-func-loop!) + ) + ) + ) + (transform-post) + (if s5-2 + (go (method-of-object obj idle-open)) + (go (method-of-object obj idle-closed)) + ) + ) + (none) ) (deftype under-plat-long (base-plat) diff --git a/scripts/batch/update-gsrc-via-refs-jak2.bat b/scripts/batch/update-gsrc-via-refs-jak2.bat deleted file mode 100644 index 942179ecb9..0000000000 --- a/scripts/batch/update-gsrc-via-refs-jak2.bat +++ /dev/null @@ -1,4 +0,0 @@ -@echo off -cd ..\.. -python3 scripts\gsrc\update-gsrc-via-refs.py --game jak2 --decompiler out\build\Release\bin\decompiler.exe --decompiler_config .\decompiler\config\jak2\jak2_config.jsonc --version ntsc_v1 -pause diff --git a/test/decompiler/reference/jak2/decompiler-macros.gc b/test/decompiler/reference/jak2/decompiler-macros.gc index 032aa1989a..7d327be241 100644 --- a/test/decompiler/reference/jak2/decompiler-macros.gc +++ b/test/decompiler/reference/jak2/decompiler-macros.gc @@ -81,6 +81,7 @@ `(rlet ((pp :reg r13 :reset-here #t :type process)) ,@body) ) +(defconstant PP (with-pp pp)) (defmacro fabs (x) `(if (< (the float ,x) 0) @@ -1295,3 +1296,7 @@ "Define a mips2c method." `(method-set! ,method-type ,method-id (__pc-get-mips2c ,name)) ) + +(defmacro script-eval (script &key (key (process->ppointer PP)) &key (proc PP) &key (vector (the-as vector #f))) + `(eval! (new 'stack 'script-context ,key ,proc ,vector) ,script)) + diff --git a/test/decompiler/reference/jak2/engine/ai/enemy_REF.gc b/test/decompiler/reference/jak2/engine/ai/enemy_REF.gc index efa8cc172b..4e24ceaffe 100644 --- a/test/decompiler/reference/jak2/engine/ai/enemy_REF.gc +++ b/test/decompiler/reference/jak2/engine/ai/enemy_REF.gc @@ -1967,10 +1967,7 @@ This commonly includes things such as: (drop-pickup (-> obj fact-info-override) #t *entity-pool* (-> obj fact-info-override) 0) (let ((s5-1 (-> obj on-death))) (if s5-1 - (eval! - (new 'stack 'script-context (process->ppointer pp) pp (-> obj root-override2 trans)) - (the-as pair s5-1) - ) + (script-eval (the-as pair s5-1) :vector (-> obj root-override2 trans)) ) ) ) @@ -2012,10 +2009,7 @@ This commonly includes things such as: (send-event (ppointer->process (-> obj parent)) 'child-die) (let ((s5-3 (-> obj on-death))) (if s5-3 - (eval! - (new 'stack 'script-context (process->ppointer pp) pp (-> obj root-override2 trans)) - (the-as pair s5-3) - ) + (script-eval (the-as pair s5-3) :vector (-> obj root-override2 trans)) ) ) (cleanup-for-death obj) @@ -2456,10 +2450,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 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) @@ -2513,10 +2504,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 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) @@ -2581,10 +2569,7 @@ This commonly includes things such as: (logclear! (-> self enemy-flags) (enemy-flag drawn-mirrored)) (let ((gp-0 (-> self on-hostile))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/ambient/ambient_REF.gc b/test/decompiler/reference/jak2/engine/ambient/ambient_REF.gc index bdbd87c4f0..75bf456b3f 100644 --- a/test/decompiler/reference/jak2/engine/ambient/ambient_REF.gc +++ b/test/decompiler/reference/jak2/engine/ambient/ambient_REF.gc @@ -426,13 +426,10 @@ ) ) ) - (eval! - (new 'stack 'script-context (process->ppointer self) self (if v1-5 - (-> v1-5 root trans) - ) - ) - gp-0 - ) + (script-eval gp-0 :vector (if v1-5 + (-> v1-5 root trans) + ) + ) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/common_objs/basebutton_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/basebutton_REF.gc index f53d4e7eb7..08728f5c98 100644 --- a/test/decompiler/reference/jak2/engine/common_objs/basebutton_REF.gc +++ b/test/decompiler/reference/jak2/engine/common_objs/basebutton_REF.gc @@ -187,10 +187,7 @@ (send-event! self (-> self event-down)) (let ((activation-script (res-lump-struct (-> self entity) 'on-activate structure))) (if activation-script - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - (the-as pair activation-script) - ) + (script-eval (the-as pair activation-script)) ) ) (go-virtual down-idle) diff --git a/test/decompiler/reference/jak2/engine/common_objs/elevator_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/elevator_REF.gc index 56c0dd81d5..3f9d096331 100644 --- a/test/decompiler/reference/jak2/engine/common_objs/elevator_REF.gc +++ b/test/decompiler/reference/jak2/engine/common_objs/elevator_REF.gc @@ -678,10 +678,7 @@ do so. (set-setting! 'board #f 0 0) (let ((gp-0 (-> self on-activate))) (if gp-0 - (eval! - (new 'stack 'script-context (* (the int (-> self move-pos 0)) 8) self (-> self root-override trans)) - gp-0 - ) + (script-eval gp-0 :key (* (the int (-> self move-pos 0)) 8) :vector (-> self root-override trans)) ) ) (set! (-> self path-pos) 0.0) @@ -771,10 +768,7 @@ do so. ) (let ((gp-0 (-> self on-deactivate))) (if gp-0 - (eval! - (new 'stack 'script-context (* (the int (-> self move-pos 1)) 8) self (-> self root-override trans)) - gp-0 - ) + (script-eval gp-0 :key (* (the int (-> self move-pos 1)) 8) :vector (-> self root-override trans)) ) ) (none) diff --git a/test/decompiler/reference/jak2/engine/common_objs/water_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/water_REF.gc index a0d73eda1b..3f27fce646 100644 --- a/test/decompiler/reference/jak2/engine/common_objs/water_REF.gc +++ b/test/decompiler/reference/jak2/engine/common_objs/water_REF.gc @@ -1539,141 +1539,138 @@ ;; definition for function water-info<-region ;; INFO: Used lq/sq (defun water-info<-region ((arg0 water-info) (arg1 drawable-region-prim) (arg2 collide-shape) (arg3 collide-action)) - (with-pp - (set! (-> arg0 flags) (water-flags)) - (set! (-> arg0 handle) (the-as handle #f)) - (set! (-> arg0 depth) 0.0) - (let ((s2-0 (the-as object (-> arg1 region on-inside)))) - (set! s2-0 - (cond - ((= (the-as symbol (-> (the-as pair s2-0) car)) 'water) - (empty) - s2-0 - ) - (else - (eval! (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) (the-as pair s2-0)) - ) - ) - ) - (let ((a0-4 (-> arg2 root-prim))) - (when s2-0 - (set! (-> arg0 trans quad) (-> a0-4 prim-core world-sphere quad)) - (set-vector! (-> arg0 normal) 0.0 1.0 0.0 1.0) - (set! (-> arg0 prim) arg1) - (case (-> (the-as pair (-> (the-as pair s2-0) cdr)) car) - (('height) - (set! (-> arg0 flags) (water-flags active)) - (set! (-> arg0 trans y) - (* 4096.0 (command-get-float (-> (the-as pair (-> (the-as pair (-> (the-as pair s2-0) cdr)) cdr)) car) 0.0)) - ) - (set! (-> arg0 base-height) (-> arg0 trans y)) - ) - (('ocean) - (set! (-> arg0 flags) (water-flags active use-ocean)) - (set! (-> arg0 trans y) (get-height *ocean* (-> arg0 trans) #f)) - (set! (-> arg0 base-height) (get-base-height *ocean-map*)) - (when (= (-> arg0 trans y) 4095996000.0) - (set! (-> arg0 flags) (water-flags)) - 0 - ) - ) - (('water-anim) - (let* ((s0-0 (command-get-process - (-> (the-as pair (-> (the-as pair (-> (the-as pair s2-0) cdr)) cdr)) car) - (the-as process #f) - ) - ) - (s1-0 (if (type? s0-0 process-drawable) - s0-0 - ) - ) - ) - (cond - (s1-0 - (set! (-> arg0 flags) (water-flags active use-water-anim)) - (set! (-> arg0 trans y) (ripple-find-height (the-as process-drawable s1-0) 0 (-> arg0 trans))) - (set! (-> arg0 handle) (process->handle s1-0)) - (set! (-> arg0 base-height) (-> (the-as process-drawable s1-0) root trans y)) - ) + (set! (-> arg0 flags) (water-flags)) + (set! (-> arg0 handle) (the-as handle #f)) + (set! (-> arg0 depth) 0.0) + (let ((s2-0 (the-as object (-> arg1 region on-inside)))) + (set! s2-0 (cond + ((= (the-as symbol (-> (the-as pair s2-0) car)) 'water) + (empty) + s2-0 + ) (else - (set! (-> arg0 flags) (water-flags)) - 0 + (script-eval (the-as pair s2-0)) ) ) + ) + (let ((a0-4 (-> arg2 root-prim))) + (when s2-0 + (set! (-> arg0 trans quad) (-> a0-4 prim-core world-sphere quad)) + (set-vector! (-> arg0 normal) 0.0 1.0 0.0 1.0) + (set! (-> arg0 prim) arg1) + (case (-> (the-as pair (-> (the-as pair s2-0) cdr)) car) + (('height) + (set! (-> arg0 flags) (water-flags active)) + (set! (-> arg0 trans y) + (* 4096.0 (command-get-float (-> (the-as pair (-> (the-as pair (-> (the-as pair s2-0) cdr)) cdr)) car) 0.0)) + ) + (set! (-> arg0 base-height) (-> arg0 trans y)) + ) + (('ocean) + (set! (-> arg0 flags) (water-flags active use-ocean)) + (set! (-> arg0 trans y) (get-height *ocean* (-> arg0 trans) #f)) + (set! (-> arg0 base-height) (get-base-height *ocean-map*)) + (when (= (-> arg0 trans y) 4095996000.0) + (set! (-> arg0 flags) (water-flags)) + 0 + ) + ) + (('water-anim) + (let* ((s0-0 (command-get-process + (-> (the-as pair (-> (the-as pair (-> (the-as pair s2-0) cdr)) cdr)) car) + (the-as process #f) + ) + ) + (s1-0 (if (type? s0-0 process-drawable) + s0-0 + ) + ) + ) + (cond + (s1-0 + (set! (-> arg0 flags) (water-flags active use-water-anim)) + (set! (-> arg0 trans y) (ripple-find-height (the-as process-drawable s1-0) 0 (-> arg0 trans))) + (set! (-> arg0 handle) (process->handle s1-0)) + (set! (-> arg0 base-height) (-> (the-as process-drawable s1-0) root trans y)) + ) + (else + (set! (-> arg0 flags) (water-flags)) + 0 + ) ) ) - ) - (when (logtest? (-> arg0 flags) (water-flags active)) - (let* ((s2-1 (-> (the-as pair (-> (the-as pair (-> (the-as pair (-> (the-as pair s2-0) cdr)) cdr)) cdr)) car)) - (v1-39 (-> (the-as pair s2-1) car)) - ) - (while (not (null? s2-1)) - (cond - ((= v1-39 'swim) - (logior! (-> arg0 flags) (water-flags can-swim can-ground)) - ) - ((= v1-39 'wade) - (logior! (-> arg0 flags) (water-flags can-wade can-ground)) - ) - ((= v1-39 'event) - (set! (-> arg0 flags) (logior (water-flags event) (-> arg0 flags))) - ) - ((= v1-39 'tar) - (logior! (-> arg0 flags) (water-flags tar)) - ) - ((= v1-39 'darkeco) - (logior! (-> arg0 flags) (water-flags dark-eco)) - ) - ((= v1-39 'lava) - (logior! (-> arg0 flags) (water-flags lava)) - ) - ((= v1-39 'mech) - (let* ((s1-1 (-> arg2 process)) - (a0-39 (if (type? s1-1 process-focusable) - s1-1 - ) - ) - ) - (when (and a0-39 (zero? (logand (focus-status mech) (-> (the-as process-focusable a0-39) focus-status)))) - (set! (-> arg0 flags) (water-flags)) - 0 - ) + ) + ) + (when (logtest? (-> arg0 flags) (water-flags active)) + (let* ((s2-1 (-> (the-as pair (-> (the-as pair (-> (the-as pair (-> (the-as pair s2-0) cdr)) cdr)) cdr)) car)) + (v1-39 (-> (the-as pair s2-1) car)) + ) + (while (not (null? s2-1)) + (cond + ((= v1-39 'swim) + (logior! (-> arg0 flags) (water-flags can-swim can-ground)) + ) + ((= v1-39 'wade) + (logior! (-> arg0 flags) (water-flags can-wade can-ground)) + ) + ((= v1-39 'event) + (set! (-> arg0 flags) (logior (water-flags event) (-> arg0 flags))) + ) + ((= v1-39 'tar) + (logior! (-> arg0 flags) (water-flags tar)) + ) + ((= v1-39 'darkeco) + (logior! (-> arg0 flags) (water-flags dark-eco)) + ) + ((= v1-39 'lava) + (logior! (-> arg0 flags) (water-flags lava)) + ) + ((= v1-39 'mech) + (let* ((s1-1 (-> arg2 process)) + (a0-39 (if (type? s1-1 process-focusable) + s1-1 + ) + ) + ) + (when (and a0-39 (zero? (logand (focus-status mech) (-> (the-as process-focusable a0-39) focus-status)))) + (set! (-> arg0 flags) (water-flags)) + 0 ) - (logior! (-> arg0 extra-flags) 1) ) - ) - (set! s2-1 (-> (the-as pair s2-1) cdr)) - (set! v1-39 (-> (the-as pair s2-1) car)) + (logior! (-> arg0 extra-flags) 1) + ) ) + (set! s2-1 (-> (the-as pair s2-1) cdr)) + (set! v1-39 (-> (the-as pair s2-1) car)) ) - (let ((s2-2 (-> arg2 root-prim))) - (countdown (s1-2 (-> arg2 total-prims)) - (when (and (nonzero? (-> s2-2 prim-core prim-type)) - (logtest? (-> s2-2 prim-core action) arg3) - (nonzero? (-> s2-2 prim-core collide-with)) - ) - (set! (-> (the-as region-prim-area #x70000000) pos quad) (-> s2-2 prim-core world-sphere quad)) - (if (and (within-area? arg1 (the-as region-prim-area (+ #x70000000 0))) - (begin - (set! (-> arg0 flags) (logior (water-flags over-water) (-> arg0 flags))) - (>= (-> arg0 trans y) (- (-> s2-2 prim-core world-sphere y) (-> s2-2 prim-core world-sphere w))) - ) - ) - (set! (-> arg0 flags) (logior (water-flags touch-water) (-> arg0 flags))) - ) - ) - (&+! s2-2 80) - ) - ) - (if (and (logtest? (water-flags event) (-> arg0 flags)) (logtest? (water-flags touch-water) (-> arg0 flags))) - (send-event (handle->process (-> arg0 handle)) 'water arg0 (-> arg2 process)) - ) ) + (let ((s2-2 (-> arg2 root-prim))) + (countdown (s1-2 (-> arg2 total-prims)) + (when (and (nonzero? (-> s2-2 prim-core prim-type)) + (logtest? (-> s2-2 prim-core action) arg3) + (nonzero? (-> s2-2 prim-core collide-with)) + ) + (set! (-> (the-as region-prim-area #x70000000) pos quad) (-> s2-2 prim-core world-sphere quad)) + (if (and (within-area? arg1 (the-as region-prim-area (+ #x70000000 0))) + (begin + (set! (-> arg0 flags) (logior (water-flags over-water) (-> arg0 flags))) + (>= (-> arg0 trans y) (- (-> s2-2 prim-core world-sphere y) (-> s2-2 prim-core world-sphere w))) + ) + ) + (set! (-> arg0 flags) (logior (water-flags touch-water) (-> arg0 flags))) + ) + ) + (&+! s2-2 80) + ) + ) + (if (and (logtest? (water-flags event) (-> arg0 flags)) (logtest? (water-flags touch-water) (-> arg0 flags))) + (send-event (handle->process (-> arg0 handle)) 'water arg0 (-> arg2 process)) + ) ) ) ) - arg0 ) + arg0 ) ;; definition for method 52 of type collide-shape diff --git a/test/decompiler/reference/jak2/engine/game/effect-control_REF.gc b/test/decompiler/reference/jak2/engine/game/effect-control_REF.gc index 0ed1f89bfc..14e995c139 100644 --- a/test/decompiler/reference/jak2/engine/game/effect-control_REF.gc +++ b/test/decompiler/reference/jak2/engine/game/effect-control_REF.gc @@ -324,7 +324,7 @@ ) ) ) - (eval! (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) (the-as pair gp-1)) + (script-eval (the-as pair gp-1)) ) (return #f) ) diff --git a/test/decompiler/reference/jak2/engine/game/task/task-control_REF.gc b/test/decompiler/reference/jak2/engine/game/task/task-control_REF.gc index 570d7364c8..1238d4a96d 100644 --- a/test/decompiler/reference/jak2/engine/game/task/task-control_REF.gc +++ b/test/decompiler/reference/jak2/engine/game/task/task-control_REF.gc @@ -73,125 +73,123 @@ ;; definition for function update-task-masks (defun update-task-masks ((arg0 symbol)) - (with-pp - (if (= arg0 'none) - (return 0) - ) - (cond - ((or (= arg0 'debug) (= arg0 'level)) - ) - ((logtest? (-> *game-info* secrets) (game-secrets hero-mode)) - (set! (-> *game-info* features) (game-feature gun gun-yellow gun-red gun-blue gun-dark)) - ) - (else - (set! (-> *game-info* features) (game-feature)) - 0 - ) + (if (= arg0 'none) + (return 0) ) - (let ((s5-0 (the-as connection-pers (-> *minimap* engine alive-list-override)))) - (while s5-0 - (let ((s4-0 (the-as connection-minimap s5-0))) - (if (and (logtest? (-> s4-0 flags) (minimap-flag task-graph)) - (not (open? (-> *game-info* sub-task-list (-> s4-0 node)))) - ) - (logior! (-> s4-0 flags) (minimap-flag fade-out)) + (cond + ((or (= arg0 'debug) (= arg0 'level)) + ) + ((logtest? (-> *game-info* secrets) (game-secrets hero-mode)) + (set! (-> *game-info* features) (game-feature gun gun-yellow gun-red gun-blue gun-dark)) + ) + (else + (set! (-> *game-info* features) (game-feature)) + 0 + ) + ) + (let ((s5-0 (the-as connection-pers (-> *minimap* engine alive-list-override)))) + (while s5-0 + (let ((s4-0 (the-as connection-minimap s5-0))) + (if (and (logtest? (-> s4-0 flags) (minimap-flag task-graph)) + (not (open? (-> *game-info* sub-task-list (-> s4-0 node)))) + ) + (logior! (-> s4-0 flags) (minimap-flag fade-out)) + ) + ) + (set! s5-0 (-> s5-0 next)) + ) + ) + (let ((borrow-eval (lambda ((arg0 pair)) + (let ((a0-1 (car arg0))) + (while (not (null? arg0)) + (let* ((v1-0 (car a0-1)) + (s5-0 (/ (the-as int (car (cdr a0-1))) 8)) + (s4-0 (car (cdr (cdr a0-1)))) + (s3-0 (car (cdr (cdr (cdr a0-1))))) + (s2-0 (-> (the-as symbol v1-0) value)) + (v1-1 (if (type? s2-0 level-load-info) + (the-as level-load-info s2-0) + ) + ) + ) + (when v1-1 + (set! (-> v1-1 borrow-level s5-0) (the-as symbol s4-0)) + (set! (-> v1-1 borrow-display? s5-0) (the-as symbol s3-0)) + ) + ) + (set! arg0 (cdr arg0)) + (set! a0-1 (car arg0)) + ) + ) + #f + ) + ) + ) + (borrow-eval (-> *game-info* sub-task-list 1 borrow)) + (let ((game-nodes (-> *game-info* sub-task-list))) + (dotimes (i (-> game-nodes length)) + (when (nonzero? i) + (let ((node (-> game-nodes i))) + (case arg0 + (('debug 'level) + ) + (else + (if (logtest? (-> node flags) (game-task-node-flag closed)) + (eval-add node) + ) + ) ) - ) - (set! s5-0 (-> s5-0 next)) - ) - ) - (let ((borrow-eval (lambda ((arg0 pair)) - (let ((a0-1 (car arg0))) - (while (not (null? arg0)) - (let* ((v1-0 (car a0-1)) - (s5-0 (/ (the-as int (car (cdr a0-1))) 8)) - (s4-0 (car (cdr (cdr a0-1)))) - (s3-0 (car (cdr (cdr (cdr a0-1))))) - (s2-0 (-> (the-as symbol v1-0) value)) - (v1-1 (if (type? s2-0 level-load-info) - (the-as level-load-info s2-0) - ) - ) - ) - (when v1-1 - (set! (-> v1-1 borrow-level s5-0) (the-as symbol s4-0)) - (set! (-> v1-1 borrow-display? s5-0) (the-as symbol s3-0)) + (let ((node-open? (open? node))) + (if (and (logtest? (-> node flags) (game-task-node-flag task-manager)) + (and (-> node info) (or node-open? (and (logtest? (-> node flags) (game-task-node-flag closed)) + (not (task-node-closed? (-> node info final-node))) + ) + ) + ) + ) + (script-eval '(task-manager) :key node) + ) + (when node-open? + (if (-> node on-open) + (script-eval (-> node on-open) :key node) + ) + (when (-> node when-open) + (countdown (node-ev-i (-> node when-open length)) + (let ((node-open-ev (-> node when-open node-ev-i))) + (case (-> node-open-ev actor) + (((game-task-actor minimap)) + (let ((v1-67 + (add-icon! *minimap* *dproc* (-> node-open-ev icon) (the-as int (-> node-open-ev icon)) (the-as vector #f) i) ) ) - (set! arg0 (cdr arg0)) - (set! a0-1 (car arg0)) - ) + (if v1-67 + (logior! (-> v1-67 flags) (minimap-flag task-graph)) + ) ) - #f ) - ) - ) - (borrow-eval (-> *game-info* sub-task-list 1 borrow)) - (let ((game-nodes (-> *game-info* sub-task-list))) - (dotimes (i (-> game-nodes length)) - (when (nonzero? i) - (let ((node (-> game-nodes i))) - (case arg0 - (('debug 'level) - ) - (else - (if (logtest? (-> node flags) (game-task-node-flag closed)) - (eval-add node) - ) - ) - ) - (let ((node-open? (open? node))) - (if (and (logtest? (-> node flags) (game-task-node-flag task-manager)) - (and (-> node info) (or node-open? (and (logtest? (-> node flags) (game-task-node-flag closed)) - (not (task-node-closed? (-> node info final-node))) - ) - ) - ) - ) - (eval! (new 'stack 'script-context node pp (the-as vector #f)) '(task-manager)) - ) - (when node-open? - (if (-> node on-open) - (eval! (new 'stack 'script-context node pp (the-as vector #f)) (-> node on-open)) - ) - (when (-> node when-open) - (countdown (node-ev-i (-> node when-open length)) - (let ((node-open-ev (-> node when-open node-ev-i))) - (case (-> node-open-ev actor) - (((game-task-actor minimap)) - (let ((v1-67 - (add-icon! *minimap* *dproc* (-> node-open-ev icon) (the-as int (-> node-open-ev icon)) (the-as vector #f) i) - ) - ) - (if v1-67 - (logior! (-> v1-67 flags) (minimap-flag task-graph)) - ) - ) - ) - ) ) ) ) - (borrow-eval (-> node borrow)) ) + (borrow-eval (-> node borrow)) ) ) ) ) ) - (logior! (-> *game-info* features) (-> *game-info* debug-features)) - (borrow-eval (-> *setting-control* user-current borrow)) ) - (add-borrow-levels *load-state*) - (dotimes (lev-i (-> *level* length)) - (let ((lev (-> *level* level lev-i))) - (if (= (-> lev status) 'active) - (level-method-22 lev arg0) - ) - ) - ) - 0 + (logior! (-> *game-info* features) (-> *game-info* debug-features)) + (borrow-eval (-> *setting-control* user-current borrow)) ) + (add-borrow-levels *load-state*) + (dotimes (lev-i (-> *level* length)) + (let ((lev (-> *level* level lev-i))) + (if (= (-> lev status) 'active) + (level-method-22 lev arg0) + ) + ) + ) + 0 ) ;; definition for method 22 of type level @@ -720,28 +718,26 @@ (when (not (logtest? (-> obj flags) (game-task-node-flag closed))) (let ((task-node-close-func (lambda ((arg0 game-task-node-info)) - (with-pp - (logior! (-> arg0 flags) (game-task-node-flag closed)) - (+! (-> *game-info* task-counter) 1) - (when (zero? (-> arg0 close-time)) - (set! (-> arg0 gem-count) (the-as uint (the int (-> *game-info* gem)))) - (set! (-> arg0 skill-count) (the-as uint (the int (-> *game-info* skill)))) - (set! (-> arg0 close-time) (-> *display* game-clock frame-counter)) - ) - (if (-> arg0 on-close) - (eval! (new 'stack 'script-context arg0 pp (the-as vector #f)) (-> arg0 on-close)) - ) - (if (logtest? (-> arg0 flags) (game-task-node-flag close-task)) - ((lambda ((arg0 game-task-node-info)) - (if *target* - (send-event *target* 'get-pickup 10 (the float (-> arg0 task))) - (give *game-info* 'fuel-cell (the float (-> arg0 task)) (the-as handle #f)) - ) - ) - arg0 - ) - ) + (logior! (-> arg0 flags) (game-task-node-flag closed)) + (+! (-> *game-info* task-counter) 1) + (when (zero? (-> arg0 close-time)) + (set! (-> arg0 gem-count) (the-as uint (the int (-> *game-info* gem)))) + (set! (-> arg0 skill-count) (the-as uint (the int (-> *game-info* skill)))) + (set! (-> arg0 close-time) (-> *display* game-clock frame-counter)) ) + (if (-> arg0 on-close) + (script-eval (-> arg0 on-close) :key arg0) + ) + (if (logtest? (-> arg0 flags) (game-task-node-flag close-task)) + ((lambda ((arg0 game-task-node-info)) + (if *target* + (send-event *target* 'get-pickup 10 (the float (-> arg0 task))) + (give *game-info* 'fuel-cell (the float (-> arg0 task)) (the-as handle #f)) + ) + ) + arg0 + ) + ) ) ) ) @@ -2243,7 +2239,7 @@ ) (let ((gp-3 (-> self info on-complete))) (if gp-3 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) gp-3) + (script-eval gp-3) ) ) (task-node-close! (-> self info final-node)) @@ -2277,7 +2273,7 @@ ) (let ((gp-1 (-> self info on-fail))) (if gp-1 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) gp-1) + (script-eval gp-1) ) ) (let ((a0-10 (-> self info retry-continue)) diff --git a/test/decompiler/reference/jak2/engine/level/region_REF.gc b/test/decompiler/reference/jak2/engine/level/region_REF.gc index b6a9cd8501..14b774878c 100644 --- a/test/decompiler/reference/jak2/engine/level/region_REF.gc +++ b/test/decompiler/reference/jak2/engine/level/region_REF.gc @@ -553,119 +553,102 @@ otherwise, add the [[drawable-region-sphere]] to `region-start-prim-list` and in ;; WARN: Return type mismatch int vs none. (defun region-tree-execute ((arg0 symbol) (arg1 vector) (arg2 vector)) (local-vars (sv-32 vector)) - (with-pp - (set! sv-32 (vector-average! (new 'stack-no-clear 'vector) arg1 arg2)) - (set! (-> sv-32 w) (* 0.5 (vector-vector-distance arg1 arg2))) - (set! (-> (the-as region-prim-area #x70000000) region-prim-list num-items) 0) - (set! (-> (the-as region-prim-area #x70000000) region-enter-count) 0) - (set! (-> (the-as region-prim-area #x70000000) region-exit-count) 0) - (set! (-> (the-as region-prim-area #x70000000) region-inside-count) 0) - (set! (-> (the-as region-prim-area #x70000000) region-start-count) 0) - (sphere<-vector+r! (the-as sphere (+ 1296 #x70000000)) arg1 0.0) - (sphere<-vector+r! (the-as sphere (+ 1312 #x70000000)) arg2 0.0) - (vector-! (the-as vector (+ 1328 #x70000000)) arg2 arg1) - (vector-! (the-as vector (+ 1344 #x70000000)) arg1 arg2) - (dotimes (s5-1 (-> *level* length)) - (let ((v1-17 (-> *level* level s5-1))) - (when (= (-> v1-17 status) 'active) - (let ((s4-1 (-> v1-17 bsp region-trees))) - (when (nonzero? s4-1) - (let* ((s3-0 (-> s4-1 length)) - (s2-0 0) - (a0-14 (-> s4-1 s2-0)) - ) - (while (< s2-0 s3-0) - (if (= (-> a0-14 name) arg0) - (collect-regions a0-14 (the-as sphere sv-32) 0 (the-as region-prim-list (+ #x70000000 0))) - ) - (+! s2-0 1) - (set! a0-14 (-> s4-1 s2-0)) - ) + (set! sv-32 (vector-average! (new 'stack-no-clear 'vector) arg1 arg2)) + (set! (-> sv-32 w) (* 0.5 (vector-vector-distance arg1 arg2))) + (set! (-> (the-as region-prim-area #x70000000) region-prim-list num-items) 0) + (set! (-> (the-as region-prim-area #x70000000) region-enter-count) 0) + (set! (-> (the-as region-prim-area #x70000000) region-exit-count) 0) + (set! (-> (the-as region-prim-area #x70000000) region-inside-count) 0) + (set! (-> (the-as region-prim-area #x70000000) region-start-count) 0) + (sphere<-vector+r! (the-as sphere (+ 1296 #x70000000)) arg1 0.0) + (sphere<-vector+r! (the-as sphere (+ 1312 #x70000000)) arg2 0.0) + (vector-! (the-as vector (+ 1328 #x70000000)) arg2 arg1) + (vector-! (the-as vector (+ 1344 #x70000000)) arg1 arg2) + (dotimes (s5-1 (-> *level* length)) + (let ((v1-17 (-> *level* level s5-1))) + (when (= (-> v1-17 status) 'active) + (let ((s4-1 (-> v1-17 bsp region-trees))) + (when (nonzero? s4-1) + (let* ((s3-0 (-> s4-1 length)) + (s2-0 0) + (a0-14 (-> s4-1 s2-0)) + ) + (while (< s2-0 s3-0) + (if (= (-> a0-14 name) arg0) + (collect-regions a0-14 (the-as sphere sv-32) 0 (the-as region-prim-list (+ #x70000000 0))) + ) + (+! s2-0 1) + (set! a0-14 (-> s4-1 s2-0)) ) ) ) ) ) ) - (countdown (gp-1 (-> (the-as region-prim-area #x70000000) region-prim-list num-items)) - (track-region - (-> (the-as region-prim-area (+ (* gp-1 4) #x70000000)) region-prim-list items 0) - (the-as region-prim-area (-> (the-as region-prim-area #x70000000) region-prim-list)) - ) - ) - (let ((gp-2 (-> (the-as region-prim-area #x70000000) region-enter-count))) - (while (begin (label cfg-22) (nonzero? gp-2)) - (+! gp-2 -1) - (let* ((a2-5 (-> (the-as region-prim-area (+ (* gp-2 4) #x70000000)) region-enter-list 0)) - (s5-2 (-> a2-5 region-prim-list items 0)) - ) - (when s5-2 - (countdown (v1-47 (-> (the-as region-prim-area #x70000000) region-start-count)) - (if (= a2-5 (-> (the-as region-prim-area #x70000000) region-start-list v1-47)) - (goto cfg-22) - ) - ) - (eval! - (new - 'stack - 'script-context - a2-5 - pp - (-> (the-as region-prim-area (+ (* gp-2 4) #x70000000)) region-enter-prim-list 0 bsphere) - ) - (the-as pair s5-2) - ) - ) - ) - ) - ) - (let ((gp-3 (-> (the-as region-prim-area #x70000000) region-exit-count))) - (while (begin (label cfg-31) (nonzero? gp-3)) - (+! gp-3 -1) - (let* ((a2-6 (-> (the-as region-prim-area (+ (* gp-3 4) #x70000000)) region-exit-list 0)) - (s5-3 (-> a2-6 region-prim-list items 2)) - ) - (when s5-3 - (countdown (v1-64 (-> (the-as region-prim-area #x70000000) region-inside-count)) - (if (= a2-6 (-> (the-as region-prim-area (+ (* v1-64 4) #x70000000)) region-inside-list 0)) - (goto cfg-31) - ) - ) - (eval! - (new - 'stack - 'script-context - a2-6 - pp - (-> (the-as region-prim-area (+ (* gp-3 4) #x70000000)) region-exit-prim-list 0 bsphere) - ) - (the-as pair s5-3) - ) - ) - ) - ) - ) - (countdown (gp-4 (-> (the-as region-prim-area #x70000000) region-inside-count)) - (let* ((a2-7 (-> (the-as region-prim-area (+ (* gp-4 4) #x70000000)) region-inside-list 0)) - (s5-4 (-> a2-7 region-prim-list items 1)) - ) - (if s5-4 - (eval! - (new - 'stack - 'script-context - a2-7 - pp - (-> (the-as region-prim-area (+ (* gp-4 4) #x70000000)) region-inside-prim-list 0 bsphere) - ) - (the-as pair s5-4) - ) - ) - ) - ) - 0 - (none) ) + (countdown (gp-1 (-> (the-as region-prim-area #x70000000) region-prim-list num-items)) + (track-region + (-> (the-as region-prim-area (+ (* gp-1 4) #x70000000)) region-prim-list items 0) + (the-as region-prim-area (-> (the-as region-prim-area #x70000000) region-prim-list)) + ) + ) + (let ((gp-2 (-> (the-as region-prim-area #x70000000) region-enter-count))) + (while (begin (label cfg-22) (nonzero? gp-2)) + (+! gp-2 -1) + (let* ((a2-5 (-> (the-as region-prim-area (+ (* gp-2 4) #x70000000)) region-enter-list 0)) + (s5-2 (-> a2-5 region-prim-list items 0)) + ) + (when s5-2 + (countdown (v1-47 (-> (the-as region-prim-area #x70000000) region-start-count)) + (if (= a2-5 (-> (the-as region-prim-area #x70000000) region-start-list v1-47)) + (goto cfg-22) + ) + ) + (script-eval + (the-as pair s5-2) + :key a2-5 + :vector (-> (the-as region-prim-area (+ (* gp-2 4) #x70000000)) region-enter-prim-list 0 bsphere) + ) + ) + ) + ) + ) + (let ((gp-3 (-> (the-as region-prim-area #x70000000) region-exit-count))) + (while (begin (label cfg-31) (nonzero? gp-3)) + (+! gp-3 -1) + (let* ((a2-6 (-> (the-as region-prim-area (+ (* gp-3 4) #x70000000)) region-exit-list 0)) + (s5-3 (-> a2-6 region-prim-list items 2)) + ) + (when s5-3 + (countdown (v1-64 (-> (the-as region-prim-area #x70000000) region-inside-count)) + (if (= a2-6 (-> (the-as region-prim-area (+ (* v1-64 4) #x70000000)) region-inside-list 0)) + (goto cfg-31) + ) + ) + (script-eval + (the-as pair s5-3) + :key a2-6 + :vector (-> (the-as region-prim-area (+ (* gp-3 4) #x70000000)) region-exit-prim-list 0 bsphere) + ) + ) + ) + ) + ) + (countdown (gp-4 (-> (the-as region-prim-area #x70000000) region-inside-count)) + (let* ((a2-7 (-> (the-as region-prim-area (+ (* gp-4 4) #x70000000)) region-inside-list 0)) + (s5-4 (-> a2-7 region-prim-list items 1)) + ) + (if s5-4 + (script-eval + (the-as pair s5-4) + :key a2-7 + :vector (-> (the-as region-prim-area (+ (* gp-4 4) #x70000000)) region-inside-prim-list 0 bsphere) + ) + ) + ) + ) + 0 + (none) ) ;; definition for function region-execute diff --git a/test/decompiler/reference/jak2/engine/target/target-death_REF.gc b/test/decompiler/reference/jak2/engine/target/target-death_REF.gc index 4db2487a99..2ccd4b56a0 100644 --- a/test/decompiler/reference/jak2/engine/target/target-death_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/target-death_REF.gc @@ -214,8 +214,8 @@ (set-setting! 'allow-continue #t 0 0) (set-setting! 'border-mode #t 0 0) (apply-settings *setting-control*) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) '(teleport)) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (-> arg0 on-goto)) + (script-eval '(teleport)) + (script-eval (-> arg0 on-goto)) (set-setting! 'allow-continue #f 0 0) (set-setting! 'border-mode #f 0 0) (apply-settings *setting-control*) diff --git a/test/decompiler/reference/jak2/engine/target/target-turret_REF.gc b/test/decompiler/reference/jak2/engine/target/target-turret_REF.gc index 26c00e3e31..035c556b41 100644 --- a/test/decompiler/reference/jak2/engine/target/target-turret_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/target-turret_REF.gc @@ -1185,7 +1185,7 @@ (set! (-> self rider) (process->handle *target*)) (let ((gp-2 (res-lump-struct (-> self entity) 'on-exit structure))) (if (and gp-2 (not *scene-player*)) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-2)) + (script-eval (the-as pair gp-2)) ) ) (go-virtual setup) @@ -2268,53 +2268,48 @@ ;; definition for method 39 of type base-turret ;; WARN: Return type mismatch int vs none. (defmethod base-turret-method-39 base-turret ((obj base-turret) (arg0 turret-path-event)) - (with-pp - (case (-> arg0 event-type) - (('script) - (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (the-as pair (-> arg0 param)) - ) + (case (-> arg0 event-type) + (('script) + (script-eval (the-as pair (-> arg0 param))) + ) + (('cue-chase) + (let ((a0-4 (process-by-name (the-as string (-> arg0 param)) *active-pool*))) + (if a0-4 + (send-event a0-4 'cue-chase) + ) ) - (('cue-chase) - (let ((a0-4 (process-by-name (the-as string (-> arg0 param)) *active-pool*))) - (if a0-4 - (send-event a0-4 'cue-chase) - ) - ) - ) - (('pause-until) - (set! (-> obj path-mode) (the-as uint 3)) - (set! (-> obj pause-proc) (the-as (function base-turret symbol) (-> arg0 param))) - (set! (-> obj path-speed-mult-final) 0.0) - ) - (('pause-while) - (set! (-> obj path-mode) (the-as uint 4)) - (set! (-> obj pause-proc) (the-as (function base-turret symbol) (-> arg0 param))) - (set! (-> obj path-speed-mult-final) 0.0) - ) - (('set-speed-mult) - (set! (-> obj path-speed-mult-final) (* 0.1 (the float (/ (the-as int (-> arg0 param)) 8)))) - ) - (('enable-controls) - (set! (-> obj enable-controls) #t) - ) - (('disable-controls) - (set! (-> obj enable-controls) #f) - ) - (('set-roty-min) - (set! (-> obj roty-min) (* 182.04445 (the float (/ (the-as int (-> arg0 param)) 8)))) - ) - (('set-roty-max) - (set! (-> obj roty-max) (* 182.04445 (the float (/ (the-as int (-> arg0 param)) 8)))) - ) - (('set-rotyvv) - (set! (-> obj rotyvv) (* 182.04445 (the float (/ (the-as int (-> arg0 param)) 8)))) - ) - ) - 0 - (none) + ) + (('pause-until) + (set! (-> obj path-mode) (the-as uint 3)) + (set! (-> obj pause-proc) (the-as (function base-turret symbol) (-> arg0 param))) + (set! (-> obj path-speed-mult-final) 0.0) + ) + (('pause-while) + (set! (-> obj path-mode) (the-as uint 4)) + (set! (-> obj pause-proc) (the-as (function base-turret symbol) (-> arg0 param))) + (set! (-> obj path-speed-mult-final) 0.0) + ) + (('set-speed-mult) + (set! (-> obj path-speed-mult-final) (* 0.1 (the float (/ (the-as int (-> arg0 param)) 8)))) + ) + (('enable-controls) + (set! (-> obj enable-controls) #t) + ) + (('disable-controls) + (set! (-> obj enable-controls) #f) + ) + (('set-roty-min) + (set! (-> obj roty-min) (* 182.04445 (the float (/ (the-as int (-> arg0 param)) 8)))) + ) + (('set-roty-max) + (set! (-> obj roty-max) (* 182.04445 (the float (/ (the-as int (-> arg0 param)) 8)))) + ) + (('set-rotyvv) + (set! (-> obj rotyvv) (* 182.04445 (the float (/ (the-as int (-> arg0 param)) 8)))) + ) ) + 0 + (none) ) ;; definition for method 38 of type base-turret diff --git a/test/decompiler/reference/jak2/levels/atoll/sniper_REF.gc b/test/decompiler/reference/jak2/levels/atoll/sniper_REF.gc index 2159982f40..bb791c54d5 100644 --- a/test/decompiler/reference/jak2/levels/atoll/sniper_REF.gc +++ b/test/decompiler/reference/jak2/levels/atoll/sniper_REF.gc @@ -348,19 +348,14 @@ ;; definition for method 116 of type sniper ;; WARN: Return type mismatch object vs none. (defmethod go-idle sniper ((obj sniper)) - (with-pp - (cond - ((eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (res-lump-struct (-> obj entity) 'on-activate pair) - ) - (cleanup-for-death obj) - (go (method-of-object obj die-fast)) - ) - (else - (go (method-of-object obj idle)) - ) + (cond + ((script-eval (res-lump-struct (-> obj entity) 'on-activate pair)) + (cleanup-for-death obj) + (go (method-of-object obj die-fast)) + ) + (else + (go (method-of-object obj idle)) ) - (none) ) + (none) ) diff --git a/test/decompiler/reference/jak2/levels/city/common/ctywide-tasks_REF.gc b/test/decompiler/reference/jak2/levels/city/common/ctywide-tasks_REF.gc index e8aa6d1116..ad3a1d4d87 100644 --- a/test/decompiler/reference/jak2/levels/city/common/ctywide-tasks_REF.gc +++ b/test/decompiler/reference/jak2/levels/city/common/ctywide-tasks_REF.gc @@ -529,10 +529,7 @@ (while (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 2)) (suspend) ) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(send-event "keira-npc-1" 'say) - ) + (script-eval '(send-event "keira-npc-1" 'say)) (none) ) ) diff --git a/test/decompiler/reference/jak2/levels/city/common/metalhead-flitter_REF.gc b/test/decompiler/reference/jak2/levels/city/common/metalhead-flitter_REF.gc index 448b057fd7..cc5c517935 100644 --- a/test/decompiler/reference/jak2/levels/city/common/metalhead-flitter_REF.gc +++ b/test/decompiler/reference/jak2/levels/city/common/metalhead-flitter_REF.gc @@ -307,10 +307,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/city/common/metalhead-grunt_REF.gc b/test/decompiler/reference/jak2/levels/city/common/metalhead-grunt_REF.gc index 3c9f9502d6..1fb206d013 100644 --- a/test/decompiler/reference/jak2/levels/city/common/metalhead-grunt_REF.gc +++ b/test/decompiler/reference/jak2/levels/city/common/metalhead-grunt_REF.gc @@ -368,10 +368,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/city/onin_tent/onin-game_REF.gc b/test/decompiler/reference/jak2/levels/city/onin_tent/onin-game_REF.gc index 01f8450e5e..524905bd17 100644 --- a/test/decompiler/reference/jak2/levels/city/onin_tent/onin-game_REF.gc +++ b/test/decompiler/reference/jak2/levels/city/onin_tent/onin-game_REF.gc @@ -2868,10 +2868,7 @@ (suspend) ) ) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(birth-pickup ("pecker-npc-1" "head") skill FACT_SUPER_SKILL_INC flags (suck-in)) - ) + (script-eval '(birth-pickup ("pecker-npc-1" "head") skill FACT_SUPER_SKILL_INC flags (suck-in))) (task-node-close! (game-task-node city-play-onin-game-skill)) ) (let* ((s5-1 (if (zero? (rand-vu-int-count 2)) diff --git a/test/decompiler/reference/jak2/levels/city/port/mines/portrun_REF.gc b/test/decompiler/reference/jak2/levels/city/port/mines/portrun_REF.gc index e3db870a48..f603962d14 100644 --- a/test/decompiler/reference/jak2/levels/city/port/mines/portrun_REF.gc +++ b/test/decompiler/reference/jak2/levels/city/port/mines/portrun_REF.gc @@ -1977,10 +1977,7 @@ (let ((v1-130 (level-get *level* 'ctyport))) (when (or (not v1-130) (!= (-> v1-130 display?) 'display)) (backup-load-state-and-set-cmds *load-state* '()) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(want-display 'ctyport 'display) - ) + (script-eval '(want-display 'ctyport 'display)) (restore-load-state-and-cleanup *load-state*) (go-virtual fail) ) diff --git a/test/decompiler/reference/jak2/levels/common/airlock_REF.gc b/test/decompiler/reference/jak2/levels/common/airlock_REF.gc index bf5c69fd82..46d09cae00 100644 --- a/test/decompiler/reference/jak2/levels/common/airlock_REF.gc +++ b/test/decompiler/reference/jak2/levels/common/airlock_REF.gc @@ -197,7 +197,7 @@ (when (and (< f30-0 0.0) (< 0.0 (-> obj last-distance))) (let ((s5-1 (res-lump-struct (-> obj entity) 'on-cross structure))) (if s5-1 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair s5-1)) + (script-eval (the-as pair s5-1)) ) ) ) @@ -249,12 +249,7 @@ ) (logtest? (-> a0-12 extra perm status) (entity-perm-status subtask-complete)) ) - (and (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - (the-as pair (-> obj open-test)) - ) - (-> *setting-control* user-current airlock) - ) + (and (script-eval (the-as pair (-> obj open-test))) (-> *setting-control* user-current airlock)) ) ) s5-0 @@ -277,80 +272,74 @@ ;; definition for method 24 of type com-airlock (defmethod destination-loaded? com-airlock ((obj com-airlock) (arg0 symbol)) - (with-pp - (let ((gp-1 (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (the-as pair (-> obj level-name)) - ) - ) - (s4-0 #f) - ) - (cond - ((not gp-1) - (if arg0 - 'unknown - #f - ) - ) - (arg0 - (let* ((s3-0 gp-1) - (s2-0 (car s3-0)) - ) - (while (not (null? s3-0)) - (let ((v1-4 (level-status *level* (the-as symbol s2-0)))) - (if (not (or (= v1-4 'loaded) (= v1-4 'active))) - (return #f) - ) - ) - (if (= s2-0 'ctywide) - (set! s4-0 (-> ctywide borrow-level 1)) - ) - (set! s3-0 (cdr s3-0)) - (set! s2-0 (car (the-as pair s3-0))) - ) - ) - (when s4-0 - (let ((v1-17 (level-status *level* s4-0))) - (if (not (or (= v1-17 'loaded) (= v1-17 'active))) + (let ((gp-1 (script-eval (the-as pair (-> obj level-name)))) + (s4-0 #f) + ) + (cond + ((not gp-1) + (if arg0 + 'unknown + #f + ) + ) + (arg0 + (let* ((s3-0 gp-1) + (s2-0 (car s3-0)) + ) + (while (not (null? s3-0)) + (let ((v1-4 (level-status *level* (the-as symbol s2-0)))) + (if (not (or (= v1-4 'loaded) (= v1-4 'active))) (return #f) ) ) - ) - (if (!= arg0 'display) - (return #t) - ) - (let ((a1-7 (car gp-1))) - (while (not (null? gp-1)) - (let ((v1-26 (level-get *level* (the-as symbol a1-7)))) - (if (not (and v1-26 (= (-> v1-26 status) 'active) (-> v1-26 display?))) - (return #f) - ) + (if (= s2-0 'ctywide) + (set! s4-0 (-> ctywide borrow-level 1)) ) - (set! gp-1 (cdr gp-1)) - (set! a1-7 (car (the-as pair gp-1))) - ) + (set! s3-0 (cdr s3-0)) + (set! s2-0 (car (the-as pair s3-0))) ) - #t ) - (else - (let* ((v1-33 gp-1) - (a0-11 (car v1-33)) - ) - (while (not (null? v1-33)) - (dotimes (a1-10 6) - (if (= a0-11 (-> *load-state* want a1-10 name)) - (goto cfg-50) - ) + (when s4-0 + (let ((v1-17 (level-status *level* s4-0))) + (if (not (or (= v1-17 'loaded) (= v1-17 'active))) + (return #f) ) - #t - (return #f) - (label cfg-50) - (set! v1-33 (cdr v1-33)) - (set! a0-11 (car (the-as pair v1-33))) - ) ) - #t ) + (if (!= arg0 'display) + (return #t) + ) + (let ((a1-7 (car gp-1))) + (while (not (null? gp-1)) + (let ((v1-26 (level-get *level* (the-as symbol a1-7)))) + (if (not (and v1-26 (= (-> v1-26 status) 'active) (-> v1-26 display?))) + (return #f) + ) + ) + (set! gp-1 (cdr gp-1)) + (set! a1-7 (car (the-as pair gp-1))) + ) + ) + #t + ) + (else + (let* ((v1-33 gp-1) + (a0-11 (car v1-33)) + ) + (while (not (null? v1-33)) + (dotimes (a1-10 6) + (if (= a0-11 (-> *load-state* want a1-10 name)) + (goto cfg-50) + ) + ) + #t + (return #f) + (label cfg-50) + (set! v1-33 (cdr v1-33)) + (set! a0-11 (car (the-as pair v1-33))) + ) + ) + #t ) ) ) @@ -515,15 +504,14 @@ (if (logtest? (-> self draw status) (draw-control-status on-screen)) (set! (-> self visible-move?) #t) ) - (when (and (want-cross-airlock? self) - (begin - (let ((gp-0 (res-lump-struct (-> self entity) 'on-activate structure))) - (if gp-0 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-0)) - ) - ) - (destination-loaded? self #f) - ) + (when (and (want-cross-airlock? self) (begin + (let ((gp-0 (res-lump-struct (-> self entity) 'on-activate structure))) + (if gp-0 + (script-eval (the-as pair gp-0)) + ) + ) + (destination-loaded? self #f) + ) ) (when (nonzero? (-> self sound-id)) (let ((v1-17 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) @@ -584,20 +572,18 @@ () (let ((gp-0 (res-lump-struct (-> self entity) 'on-exit structure))) (if (and gp-0 (not *scene-player*)) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-0)) + (script-eval (the-as pair gp-0)) ) ) - (the-as - pair - (when (-> self were-behind?) - (let ((gp-1 (res-lump-struct (-> self entity) 'on-inside structure))) - (set! (-> self were-behind?) #f) - (if (and gp-1 (not *scene-player*)) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-1)) - ) - ) - ) - ) + (the-as pair (when (-> self were-behind?) + (let ((gp-1 (res-lump-struct (-> self entity) 'on-inside structure))) + (set! (-> self were-behind?) #f) + (if (and gp-1 (not *scene-player*)) + (script-eval (the-as pair gp-1)) + ) + ) + ) + ) ) ) ) @@ -650,7 +636,7 @@ (when (< 0.0 (check-crossing-distance self (target-pos 0) #f)) (let ((gp-3 (res-lump-struct (-> self entity) 'on-deactivate structure))) (if (and gp-3 (not *scene-player*)) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-3)) + (script-eval (the-as pair gp-3)) ) ) ) @@ -785,7 +771,7 @@ (process-entity-status! self (entity-perm-status subtask-complete) #t) (let ((s5-10 (res-lump-struct (-> self entity) 'on-enter structure))) (if s5-10 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair s5-10)) + (script-eval (the-as pair s5-10)) ) ) (if (and (-> self sound-open) diff --git a/test/decompiler/reference/jak2/levels/common/battle_REF.gc b/test/decompiler/reference/jak2/levels/common/battle_REF.gc index ebfa237785..cc3e2db29c 100644 --- a/test/decompiler/reference/jak2/levels/common/battle_REF.gc +++ b/test/decompiler/reference/jak2/levels/common/battle_REF.gc @@ -1564,7 +1564,7 @@ (set! (-> self state-time) (-> self clock frame-counter)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! (new 'stack 'script-context (process->ppointer self) self (-> self root trans)) (the-as pair gp-0)) + (script-eval (the-as pair gp-0) :vector (-> self root trans)) ) ) (battle-method-47 self) @@ -1701,7 +1701,7 @@ (battle-method-47 self) (let ((gp-0 (-> self on-hostile))) (if gp-0 - (eval! (new 'stack 'script-context (process->ppointer self) self (-> self root trans)) (the-as pair gp-0)) + (script-eval (the-as pair gp-0) :vector (-> self root trans)) ) ) (none) @@ -1726,7 +1726,7 @@ (process-entity-status! self (entity-perm-status subtask-complete) #t) (let ((gp-0 (-> self on-beaten))) (if gp-0 - (eval! (new 'stack 'script-context (process->ppointer self) self (-> self root trans)) (the-as pair gp-0)) + (script-eval (the-as pair gp-0) :vector (-> self root trans)) ) ) (battle-method-48 self) diff --git a/test/decompiler/reference/jak2/levels/common/elec-gate_REF.gc b/test/decompiler/reference/jak2/levels/common/elec-gate_REF.gc index b43f7da833..d3d082a504 100644 --- a/test/decompiler/reference/jak2/levels/common/elec-gate_REF.gc +++ b/test/decompiler/reference/jak2/levels/common/elec-gate_REF.gc @@ -328,10 +328,7 @@ :enter (behavior () (process-entity-status! self (entity-perm-status subtask-complete) #f) (if (-> self on-start) - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root trans)) - (the-as pair (-> self on-start)) - ) + (script-eval (the-as pair (-> self on-start)) :vector (-> self root trans)) ) (dotimes (bolt-idx 5) (let* ((curr-bolt (-> self l-bolt bolt-idx bolt)) @@ -711,10 +708,7 @@ (sound-play "elec-gate-off") (blocking-plane-destroy) (if (-> self on-stop) - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root trans)) - (the-as pair (-> self on-stop)) - ) + (script-eval (the-as pair (-> self on-stop)) :vector (-> self root trans)) ) (none) ) diff --git a/test/decompiler/reference/jak2/levels/common/enemy/guards/crimson-guard-level_REF.gc b/test/decompiler/reference/jak2/levels/common/enemy/guards/crimson-guard-level_REF.gc index a09d33d956..1574f4ae97 100644 --- a/test/decompiler/reference/jak2/levels/common/enemy/guards/crimson-guard-level_REF.gc +++ b/test/decompiler/reference/jak2/levels/common/enemy/guards/crimson-guard-level_REF.gc @@ -1707,10 +1707,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-1 (-> self on-notice))) (if gp-1 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-1) - ) + (script-eval (the-as pair gp-1) :vector (-> self root-override2 trans)) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/common/enemy/hopper_REF.gc b/test/decompiler/reference/jak2/levels/common/enemy/hopper_REF.gc index aa59977d3f..8f010019bc 100644 --- a/test/decompiler/reference/jak2/levels/common/enemy/hopper_REF.gc +++ b/test/decompiler/reference/jak2/levels/common/enemy/hopper_REF.gc @@ -812,10 +812,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/common/entities/com-elevator_REF.gc b/test/decompiler/reference/jak2/levels/common/entities/com-elevator_REF.gc index 046aeb490f..230360d92b 100644 --- a/test/decompiler/reference/jak2/levels/common/entities/com-elevator_REF.gc +++ b/test/decompiler/reference/jak2/levels/common/entities/com-elevator_REF.gc @@ -67,29 +67,27 @@ ;; definition for method 45 of type com-elevator (defmethod commited-to-ride? com-elevator ((obj com-elevator)) "@returns if the target is considered within the elevator area enough to begin descending/ascending" - (with-pp - (let* ((s5-0 *target*) - (a0-2 (if (type? s5-0 process-focusable) - s5-0 - ) - ) - ) - (and (when a0-2 - (let* ((v1-2 (get-trans a0-2 0)) - (s5-2 (vector-! (new 'stack-no-clear 'vector) v1-2 (-> obj root-override trans))) - ) - (vector-inv-orient-by-quat! s5-2 s5-2 (-> obj root-override quat)) - (and (< (fabs (-> s5-2 x)) 20480.0) (< 0.0 (-> s5-2 z)) (< (-> s5-2 z) 40960.0)) + (let* ((s5-0 *target*) + (a0-2 (if (type? s5-0 process-focusable) + s5-0 + ) ) - ) - (let ((gp-1 (res-lump-struct (-> obj entity) 'on-notice structure))) - (not (if gp-1 - (eval! (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) (the-as pair gp-1)) - ) + ) + (and (when a0-2 + (let* ((v1-2 (get-trans a0-2 0)) + (s5-2 (vector-! (new 'stack-no-clear 'vector) v1-2 (-> obj root-override trans))) ) + (vector-inv-orient-by-quat! s5-2 s5-2 (-> obj root-override quat)) + (and (< (fabs (-> s5-2 x)) 20480.0) (< 0.0 (-> s5-2 z)) (< (-> s5-2 z) 40960.0)) ) ) - ) + (let ((gp-1 (res-lump-struct (-> obj entity) 'on-notice structure))) + (not (if gp-1 + (script-eval (the-as pair gp-1)) + ) + ) + ) + ) ) ) diff --git a/test/decompiler/reference/jak2/levels/common/flitter_REF.gc b/test/decompiler/reference/jak2/levels/common/flitter_REF.gc index 47ee55cdb6..435976f765 100644 --- a/test/decompiler/reference/jak2/levels/common/flitter_REF.gc +++ b/test/decompiler/reference/jak2/levels/common/flitter_REF.gc @@ -697,10 +697,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/common/grunt_REF.gc b/test/decompiler/reference/jak2/levels/common/grunt_REF.gc index 0fa250a3cd..e37fd0f6ff 100644 --- a/test/decompiler/reference/jak2/levels/common/grunt_REF.gc +++ b/test/decompiler/reference/jak2/levels/common/grunt_REF.gc @@ -485,10 +485,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/common/warp-gate_REF.gc b/test/decompiler/reference/jak2/levels/common/warp-gate_REF.gc index 3432758908..ff6310703f 100644 --- a/test/decompiler/reference/jak2/levels/common/warp-gate_REF.gc +++ b/test/decompiler/reference/jak2/levels/common/warp-gate_REF.gc @@ -523,27 +523,25 @@ ;; definition for method 25 of type warp-gate (defmethod handle-notice warp-gate ((obj warp-gate)) - (with-pp - (let ((s5-0 (eval! (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) (-> obj on-notice)))) - (cond - ((= s5-0 'hide) - (logior! (-> obj draw status) (draw-control-status no-draw)) - (set! (-> obj continue) #f) - ) - (s5-0 - (logclear! (-> obj draw status) (draw-control-status no-draw)) - (set! (-> obj continue) (get-continue-by-name *game-info* (the-as string (car s5-0)))) - (set! (-> obj on-activate) (the-as pair (car (cdr s5-0)))) - (set! (-> obj wait-for) (the-as pair (car (cdr (cdr s5-0))))) - (set! (-> obj on-close) (the-as pair (car (cdr (cdr (cdr s5-0)))))) - ) - (else - (set! (-> obj continue) #f) - ) + (let ((s5-0 (script-eval (-> obj on-notice)))) + (cond + ((= s5-0 'hide) + (logior! (-> obj draw status) (draw-control-status no-draw)) + (set! (-> obj continue) #f) + ) + (s5-0 + (logclear! (-> obj draw status) (draw-control-status no-draw)) + (set! (-> obj continue) (get-continue-by-name *game-info* (the-as string (car s5-0)))) + (set! (-> obj on-activate) (the-as pair (car (cdr s5-0)))) + (set! (-> obj wait-for) (the-as pair (car (cdr (cdr s5-0))))) + (set! (-> obj on-close) (the-as pair (car (cdr (cdr (cdr s5-0)))))) + ) + (else + (set! (-> obj continue) #f) ) ) - (-> obj continue) ) + (-> obj continue) ) ;; failed to figure out what this is: @@ -612,7 +610,7 @@ (if (and (cpad-pressed? 0 triangle) (process-grab? *target* #f)) (go-virtual use (-> self continue)) ) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (-> self on-close)) + (script-eval (-> self on-close)) (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 32 320 0.0 (font-color default) (font-flags shadow kerning)) ) @@ -709,7 +707,7 @@ (set! (-> s5-0 param 3) (the-as uint (process->handle self))) (send-event-function *target* s5-0) ) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (-> self on-activate)) + (script-eval (-> self on-activate)) (while (begin (set! v1-38 (when (-> self wait-for) (let* ((s5-1 (-> self wait-for)) @@ -1344,7 +1342,7 @@ This commonly includes things such as: (apply-settings *setting-control*) (sound-stop (-> self hover-sound)) (set! (-> self hover-sound) (new 'static 'sound-id)) - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (-> self on-activate)) + (script-eval (-> self on-activate)) (sleep-code) (none) ) diff --git a/test/decompiler/reference/jak2/levels/demo/demo-obs_REF.gc b/test/decompiler/reference/jak2/levels/demo/demo-obs_REF.gc index 2c4f508144..2828a37e2a 100644 --- a/test/decompiler/reference/jak2/levels/demo/demo-obs_REF.gc +++ b/test/decompiler/reference/jak2/levels/demo/demo-obs_REF.gc @@ -823,10 +823,7 @@ (remove-setting! 'allow-timeout) (set! (-> *setting-control* user-default allow-timeout) #t) (let ((gp-24 (demo-menu))) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(fadeout (seconds (new 'static 'bfloat :data 0.3))) - ) + (script-eval '(fadeout (seconds (new 'static 'bfloat :data 0.3)))) (let ((s5-8 (-> self clock frame-counter))) (while (or (!= (-> *setting-control* user-current bg-a) (-> *setting-control* user-target bg-a)) (< (- (-> self clock frame-counter) s5-8) (seconds 0.3)) diff --git a/test/decompiler/reference/jak2/levels/dig/dig-digger_REF.gc b/test/decompiler/reference/jak2/levels/dig/dig-digger_REF.gc index 30050ef84c..d87a8b2222 100644 --- a/test/decompiler/reference/jak2/levels/dig/dig-digger_REF.gc +++ b/test/decompiler/reference/jak2/levels/dig/dig-digger_REF.gc @@ -1445,10 +1445,7 @@ This commonly includes things such as: ) ) ((>= 4 s5-0) - (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - '(want-anim "dig-digger-explode") - ) + (script-eval '(want-anim "dig-digger-explode")) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/dig/dig-obs_REF.gc b/test/decompiler/reference/jak2/levels/dig/dig-obs_REF.gc index 81797b2d26..837b88bbc3 100644 --- a/test/decompiler/reference/jak2/levels/dig/dig-obs_REF.gc +++ b/test/decompiler/reference/jak2/levels/dig/dig-obs_REF.gc @@ -883,7 +883,7 @@ This commonly includes things such as: (process-entity-status! self (entity-perm-status subtask-complete) #t) (let ((gp-1 (res-lump-struct (-> self entity) 'on-activate structure))) (if gp-1 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-1)) + (script-eval (the-as pair gp-1)) ) ) (go-virtual idle-down) diff --git a/test/decompiler/reference/jak2/levels/drill_platform/drill-obs_REF.gc b/test/decompiler/reference/jak2/levels/drill_platform/drill-obs_REF.gc index aa4c78624a..52b9b11d5a 100644 --- a/test/decompiler/reference/jak2/levels/drill_platform/drill-obs_REF.gc +++ b/test/decompiler/reference/jak2/levels/drill_platform/drill-obs_REF.gc @@ -1389,7 +1389,7 @@ This commonly includes things such as: (send-event! self (-> self event-down)) (let ((gp-0 (res-lump-struct (-> self entity) 'on-activate structure))) (if gp-0 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-0)) + (script-eval (the-as pair gp-0)) ) ) (go-virtual down-idle) diff --git a/test/decompiler/reference/jak2/levels/forest/lifeseed/protect_REF.gc b/test/decompiler/reference/jak2/levels/forest/lifeseed/protect_REF.gc index 91aac97ac1..66d95dd73e 100644 --- a/test/decompiler/reference/jak2/levels/forest/lifeseed/protect_REF.gc +++ b/test/decompiler/reference/jak2/levels/forest/lifeseed/protect_REF.gc @@ -657,10 +657,7 @@ This commonly includes things such as: ) ) ((< f0-0 163840.0) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(want-anim "city-protect-slums-intro") - ) + (script-eval '(want-anim "city-protect-slums-intro")) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/landing_pad/roboguard-level_REF.gc b/test/decompiler/reference/jak2/levels/landing_pad/roboguard-level_REF.gc index 98d733c03b..be69cbae48 100644 --- a/test/decompiler/reference/jak2/levels/landing_pad/roboguard-level_REF.gc +++ b/test/decompiler/reference/jak2/levels/landing_pad/roboguard-level_REF.gc @@ -601,10 +601,7 @@ (logclear! (-> self enemy-flags) (enemy-flag drawn-mirrored)) (let ((gp-0 (-> self on-hostile))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/mars_tomb/monster-frog_REF.gc b/test/decompiler/reference/jak2/levels/mars_tomb/monster-frog_REF.gc index 3cc97b417b..241fdbf141 100644 --- a/test/decompiler/reference/jak2/levels/mars_tomb/monster-frog_REF.gc +++ b/test/decompiler/reference/jak2/levels/mars_tomb/monster-frog_REF.gc @@ -302,10 +302,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/mars_tomb/tomb-scenes_REF.gc b/test/decompiler/reference/jak2/levels/mars_tomb/tomb-scenes_REF.gc index 4791507525..4ef170e2a9 100644 --- a/test/decompiler/reference/jak2/levels/mars_tomb/tomb-scenes_REF.gc +++ b/test/decompiler/reference/jak2/levels/mars_tomb/tomb-scenes_REF.gc @@ -16,82 +16,79 @@ ) ;; failed to figure out what this is: -(scene-method-16 - (new 'static 'scene - :name "tomb-unlock-start" - :extra #f - :info #f - :mask-to-clear #x1282000 - :entity "scene-stage-73" - :art-group "scenecamera" - :anim "tomb-unlock-start" - :parts 3 - :command-list '((120 (task-close! "tomb-boss-torches")) - (10000 - (apply ,(lambda :behavior scene-player - () - (if (-> self aborted?) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(cond - ((task-closed? "tomb-water-resolution") - (send-event "tomb-sphinx-2" 'trigger) - (send-event "tomb-plat-return-2" 'trigger) - ) - ((task-closed? "tomb-poles-resolution") - (send-event "tomb-sphinx-1" 'trigger) - (send-event "tomb-plat-return-1" 'trigger) - ) - ) - ) - ) - (none) - ) - ) - (want-continue "tomb-start-bottom") - ) - ) - :cut-list '() - :wait-ground-time (seconds 1) - :draw-target #f - :abort #t - :actor (new 'static 'boxed-array :type scene-actor - (new 'static 'scene-actor - :name "scenecamera" - :level #f - :art-group "skel-scenecamera" - :prefix "" - :draw-frames '((min max)) - :scissor-frames '() - :camera 4 - :shadow-flags -1 - :shadow-volume-joint #f - ) - (new 'static 'scene-actor - :name "tomb-boss-door" - :level 'tomba - :art-group "skel-tomb-boss-door" - :prefix "" - :draw-frames '((min max)) - :scissor-frames '() - :light-index #x11 - :flags #x1 - :shadow-flags -1 - :shadow-volume-joint #f - ) - ) - :load-point-obj #f - :end-point-obj #f - :borrow '() - :sfx-volume -1.0 - :ambient-volume -1.0 - :music-volume -1.0 - :blackout-end #t - :peaceful #t - :music-delay 1500.0 - :save #t - ) - ) +(scene-method-16 (new 'static 'scene + :name "tomb-unlock-start" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-73" + :art-group "scenecamera" + :anim "tomb-unlock-start" + :parts 3 + :command-list '((120 (task-close! "tomb-boss-torches")) + (10000 + (apply ,(lambda :behavior scene-player + () + (if (-> self aborted?) + (script-eval '(cond + ((task-closed? "tomb-water-resolution") + (send-event "tomb-sphinx-2" 'trigger) + (send-event "tomb-plat-return-2" 'trigger) + ) + ((task-closed? "tomb-poles-resolution") + (send-event "tomb-sphinx-1" 'trigger) + (send-event "tomb-plat-return-1" 'trigger) + ) + ) + ) + ) + (none) + ) + ) + (want-continue "tomb-start-bottom") + ) + ) + :cut-list '() + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "tomb-boss-door" + :level 'tomba + :art-group "skel-tomb-boss-door" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #x11 + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj #f + :end-point-obj #f + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) ;; failed to figure out what this is: (scene-method-16 diff --git a/test/decompiler/reference/jak2/levels/mars_tomb/tomb-water_REF.gc b/test/decompiler/reference/jak2/levels/mars_tomb/tomb-water_REF.gc index f94737fcf6..0fa305d038 100644 --- a/test/decompiler/reference/jak2/levels/mars_tomb/tomb-water_REF.gc +++ b/test/decompiler/reference/jak2/levels/mars_tomb/tomb-water_REF.gc @@ -1746,7 +1746,7 @@ This commonly includes things such as: :trans (behavior () (let ((gp-0 (-> self on-notice))) (when gp-0 - (if (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-0)) + (if (script-eval (the-as pair gp-0)) (go-virtual open #f) ) ) @@ -1865,7 +1865,7 @@ This commonly includes things such as: ) (let ((gp-2 (-> self on-activate))) (if gp-2 - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair gp-2)) + (script-eval (the-as pair gp-2)) ) ) ) @@ -1905,97 +1905,95 @@ This commonly includes things such as: - collision information - loading the skeleton group / bones - sounds" - (with-pp - (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0))) - (set! (-> s4-0 total-prims) (the-as uint 6)) - (set! (-> s3-0 prim-core collide-as) (collide-spec pusher)) - (set! (-> s3-0 prim-core collide-with) (collide-spec jak player-list)) - (set! (-> s3-0 prim-core action) (collide-action solid rideable pull-rider-can-collide)) - (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 122880.0) - (set! (-> s4-0 root-prim) s3-0) - ) - (pusher-init s4-0) - (let ((v1-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> v1-10 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-10 prim-core collide-with) (collide-spec jak bot player-list)) - (set! (-> v1-10 prim-core action) (collide-action solid rideable)) - (set! (-> v1-10 transform-index) 3) - (set-vector! (-> v1-10 local-sphere) 0.0 0.0 0.0 12288.0) - ) - (let ((v1-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> v1-12 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-12 prim-core collide-with) (collide-spec jak bot player-list)) - (set! (-> v1-12 prim-core action) (collide-action solid)) - (set! (-> v1-12 transform-index) 4) - (set-vector! (-> v1-12 local-sphere) 0.0 0.0 0.0 11059.2) - ) - (let ((v1-14 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> v1-14 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-14 prim-core collide-with) (collide-spec jak bot player-list)) - (set! (-> v1-14 prim-core action) (collide-action solid)) - (set! (-> v1-14 transform-index) 5) - (set-vector! (-> v1-14 local-sphere) 0.0 0.0 0.0 11059.2) - ) - (let ((v1-16 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 0)))) - (set! (-> v1-16 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-16 prim-core collide-with) (collide-spec jak bot player-list)) - (set! (-> v1-16 prim-core action) (collide-action solid)) - (set! (-> v1-16 transform-index) 6) - (set-vector! (-> v1-16 local-sphere) 0.0 0.0 0.0 11059.2) - ) - (let ((v1-18 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 4) (the-as uint 0)))) - (set! (-> v1-18 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-18 prim-core collide-with) (collide-spec jak bot player-list)) - (set! (-> v1-18 prim-core action) (collide-action solid)) - (set! (-> v1-18 transform-index) 7) - (set-vector! (-> v1-18 local-sphere) 0.0 0.0 0.0 11059.2) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (let ((v1-21 (-> s4-0 root-prim))) - (set! (-> s4-0 backup-collide-as) (-> v1-21 prim-core collide-as)) - (set! (-> s4-0 backup-collide-with) (-> v1-21 prim-core collide-with)) - ) - (set! (-> obj root) s4-0) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0))) + (set! (-> s4-0 total-prims) (the-as uint 6)) + (set! (-> s3-0 prim-core collide-as) (collide-spec pusher)) + (set! (-> s3-0 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> s3-0 prim-core action) (collide-action solid rideable pull-rider-can-collide)) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 122880.0) + (set! (-> s4-0 root-prim) s3-0) ) - (process-drawable-from-entity! obj arg0) - (initialize-skeleton - obj - (the-as skeleton-group (art-group-get-by-name *level* "skel-tomb-simon-button" (the-as (pointer uint32) #f))) - (the-as pair 0) + (pusher-init s4-0) + (let ((v1-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) + (set! (-> v1-10 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-10 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-10 prim-core action) (collide-action solid rideable)) + (set! (-> v1-10 transform-index) 3) + (set-vector! (-> v1-10 local-sphere) 0.0 0.0 0.0 12288.0) ) - (set! (-> obj notify-actor) (entity-actor-lookup arg0 'alt-actor 0)) - (set! (-> obj on-notice) (res-lump-struct (-> obj entity) 'on-notice (function none))) - (set! (-> obj on-activate) (res-lump-struct (-> obj entity) 'on-activate (function none))) - (let ((a0-42 (-> obj skel root-channel 0))) - (set! (-> a0-42 frame-group) (the-as art-joint-anim (-> obj draw art-group data 3))) - (set! (-> a0-42 param 0) 1.0) - (set! (-> a0-42 frame-num) 0.0) - (joint-control-channel-group! a0-42 (the-as art-joint-anim (-> obj draw art-group data 3)) num-func-loop!) + (let ((v1-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) + (set! (-> v1-12 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-12 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-12 prim-core action) (collide-action solid)) + (set! (-> v1-12 transform-index) 4) + (set-vector! (-> v1-12 local-sphere) 0.0 0.0 0.0 11059.2) ) - (transform-post) - (let ((s5-1 (-> obj on-notice))) - (when s5-1 - (if (eval! (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) (the-as pair s5-1)) - (go (method-of-object obj open) #t) - ) - ) + (let ((v1-14 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) + (set! (-> v1-14 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-14 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-14 prim-core action) (collide-action solid)) + (set! (-> v1-14 transform-index) 5) + (set-vector! (-> v1-14 local-sphere) 0.0 0.0 0.0 11059.2) ) - (let ((v1-49 (-> obj entity extra perm user-uint8 0))) - (cond - ((zero? v1-49) - (go (method-of-object obj idle)) - ) - ((= v1-49 1) - (go (method-of-object obj open) #t) - ) - ((= v1-49 2) - (go (method-of-object obj pressed) #t) - ) - ) + (let ((v1-16 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 0)))) + (set! (-> v1-16 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-16 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-16 prim-core action) (collide-action solid)) + (set! (-> v1-16 transform-index) 6) + (set-vector! (-> v1-16 local-sphere) 0.0 0.0 0.0 11059.2) ) - (none) + (let ((v1-18 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 4) (the-as uint 0)))) + (set! (-> v1-18 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-18 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-18 prim-core action) (collide-action solid)) + (set! (-> v1-18 transform-index) 7) + (set-vector! (-> v1-18 local-sphere) 0.0 0.0 0.0 11059.2) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (let ((v1-21 (-> s4-0 root-prim))) + (set! (-> s4-0 backup-collide-as) (-> v1-21 prim-core collide-as)) + (set! (-> s4-0 backup-collide-with) (-> v1-21 prim-core collide-with)) + ) + (set! (-> obj root) s4-0) ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-tomb-simon-button" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj notify-actor) (entity-actor-lookup arg0 'alt-actor 0)) + (set! (-> obj on-notice) (res-lump-struct (-> obj entity) 'on-notice (function none))) + (set! (-> obj on-activate) (res-lump-struct (-> obj entity) 'on-activate (function none))) + (let ((a0-42 (-> obj skel root-channel 0))) + (set! (-> a0-42 frame-group) (the-as art-joint-anim (-> obj draw art-group data 3))) + (set! (-> a0-42 param 0) 1.0) + (set! (-> a0-42 frame-num) 0.0) + (joint-control-channel-group! a0-42 (the-as art-joint-anim (-> obj draw art-group data 3)) num-func-loop!) + ) + (transform-post) + (let ((s5-1 (-> obj on-notice))) + (when s5-1 + (if (script-eval (the-as pair s5-1)) + (go (method-of-object obj open) #t) + ) + ) + ) + (let ((v1-49 (-> obj entity extra perm user-uint8 0))) + (cond + ((zero? v1-49) + (go (method-of-object obj idle)) + ) + ((= v1-49 1) + (go (method-of-object obj open) #t) + ) + ((= v1-49 2) + (go (method-of-object obj pressed) #t) + ) + ) + ) + (none) ) ;; definition of type tomb-vibe diff --git a/test/decompiler/reference/jak2/levels/nest/boss/metalkor-states_REF.gc b/test/decompiler/reference/jak2/levels/nest/boss/metalkor-states_REF.gc index 5b3f844965..defe379ad0 100644 --- a/test/decompiler/reference/jak2/levels/nest/boss/metalkor-states_REF.gc +++ b/test/decompiler/reference/jak2/levels/nest/boss/metalkor-states_REF.gc @@ -262,16 +262,10 @@ ) (case (-> self stage) ((2) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(want-anim "nest-kor-boss-fight-mid") - ) + (script-eval '(want-anim "nest-kor-boss-fight-mid")) ) ((3) - (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - '(want-anim "outro-nest") - ) + (script-eval '(want-anim "outro-nest")) ) ) (when (nonzero? (-> self neck)) diff --git a/test/decompiler/reference/jak2/levels/nest/flying-spider_REF.gc b/test/decompiler/reference/jak2/levels/nest/flying-spider_REF.gc index 0e77474167..e983123565 100644 --- a/test/decompiler/reference/jak2/levels/nest/flying-spider_REF.gc +++ b/test/decompiler/reference/jak2/levels/nest/flying-spider_REF.gc @@ -223,10 +223,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/nest/mantis_REF.gc b/test/decompiler/reference/jak2/levels/nest/mantis_REF.gc index 4eac9355f8..96ed5945ee 100644 --- a/test/decompiler/reference/jak2/levels/nest/mantis_REF.gc +++ b/test/decompiler/reference/jak2/levels/nest/mantis_REF.gc @@ -518,10 +518,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/palace/boss/squid-setup_REF.gc b/test/decompiler/reference/jak2/levels/palace/boss/squid-setup_REF.gc index a302d26bdd..0f666bf431 100644 --- a/test/decompiler/reference/jak2/levels/palace/boss/squid-setup_REF.gc +++ b/test/decompiler/reference/jak2/levels/palace/boss/squid-setup_REF.gc @@ -2657,10 +2657,7 @@ This commonly includes things such as: ) (with-pp (if (= (-> obj stage) 2) - (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - '(want-anim "palace-boss-res") - ) + (script-eval '(want-anim "palace-boss-res")) ) (when (-> obj force-onto-mesh) (let ((s5-0 (new 'stack-no-clear 'vector))) diff --git a/test/decompiler/reference/jak2/levels/ruins/rapid-gunner_REF.gc b/test/decompiler/reference/jak2/levels/ruins/rapid-gunner_REF.gc index 04e09c9653..1cb2372c2a 100644 --- a/test/decompiler/reference/jak2/levels/ruins/rapid-gunner_REF.gc +++ b/test/decompiler/reference/jak2/levels/ruins/rapid-gunner_REF.gc @@ -655,10 +655,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/sewer/hosehead_REF.gc b/test/decompiler/reference/jak2/levels/sewer/hosehead_REF.gc index afc408be03..58bc54c370 100644 --- a/test/decompiler/reference/jak2/levels/sewer/hosehead_REF.gc +++ b/test/decompiler/reference/jak2/levels/sewer/hosehead_REF.gc @@ -436,6 +436,7 @@ ) ;; definition for method 3 of type ik-setup +;; INFO: this function exists in multiple non-identical object files (defmethod inspect ik-setup ((obj ik-setup)) (when (not obj) (set! obj obj) @@ -1097,10 +1098,7 @@ (set! (-> self focus collide-with) (collide-spec jak bot player-list jak-vehicle)) (let ((gp-1 (-> self on-stop-sentry))) (if gp-1 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-1) - ) + (script-eval (the-as pair gp-1) :vector (-> self root-override2 trans)) ) ) (go-virtual active) @@ -1193,10 +1191,7 @@ (set! (-> self focus collide-with) (collide-spec jak bot player-list jak-vehicle)) (let ((gp-2 (-> self on-stop-sentry))) (if gp-2 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-2) - ) + (script-eval (the-as pair gp-2) :vector (-> self root-override2 trans)) ) ) (go-hostile self) @@ -1446,10 +1441,7 @@ (logclear! (-> self enemy-flags) (enemy-flag auto-reset-penetrate)) (let ((gp-0 (-> self on-notice))) (if gp-0 - (eval! - (new 'stack 'script-context (process->ppointer self) self (-> self root-override2 trans)) - (the-as pair gp-0) - ) + (script-eval (the-as pair gp-0) :vector (-> self root-override2 trans)) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/sewer/sewer-obs2_REF.gc b/test/decompiler/reference/jak2/levels/sewer/sewer-obs2_REF.gc index 2f4920672e..014898b2ce 100644 --- a/test/decompiler/reference/jak2/levels/sewer/sewer-obs2_REF.gc +++ b/test/decompiler/reference/jak2/levels/sewer/sewer-obs2_REF.gc @@ -325,7 +325,7 @@ For example for an elevator pre-compute the distance between the first and last ) (let ((data (res-lump-struct (-> self entity) 'on-activate structure))) (if data - (eval! (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) (the-as pair data)) + (script-eval (the-as pair data)) ) ) (none) @@ -1470,117 +1470,112 @@ This commonly includes things such as: - collision information - loading the skeleton group / bones - sounds" - (with-pp - (stack-size-set! (-> obj main-thread) 512) - (set! (-> obj mask) (logior (process-mask collectable) (-> obj mask))) - (let ((data ((method-of-type res-lump get-property-struct) - (-> obj entity) - 'art-name - 'interp - -1000000000.0 - "sew-wall-1" - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (art-group (art-group-get-by-name *level* "skel-sew-wall" (the-as (pointer uint32) #f))) - ) - (set! (-> obj art-name) (the-as string data)) - (let ((cshape (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) - (set! (-> cshape dynam) (copy *standard-dynamics* 'process)) - (set! (-> cshape reaction) cshape-reaction-default) - (set! (-> cshape no-reaction) - (the-as (function collide-shape-moving collide-query vector vector object) nothing) + (stack-size-set! (-> obj main-thread) 512) + (set! (-> obj mask) (logior (process-mask collectable) (-> obj mask))) + (let ((data ((method-of-type res-lump get-property-struct) + (-> obj entity) + 'art-name + 'interp + -1000000000.0 + "sew-wall-1" + (the-as (pointer res-tag) #f) + *res-static-buf* + ) ) - (let ((prim-group (new 'process 'collide-shape-prim-group cshape (the-as uint 5) 0))) - (set! (-> cshape total-prims) (the-as uint 6)) - (set! (-> prim-group prim-core collide-as) (collide-spec obstacle)) - (set! (-> prim-group prim-core collide-with) (collide-spec jak player-list)) - (set! (-> prim-group prim-core action) (collide-action solid)) - (set! (-> prim-group transform-index) 4) - (set-vector! (-> prim-group local-sphere) 0.0 0.0 0.0 40960.0) - (set! (-> cshape root-prim) prim-group) - ) - (let ((prim-mesh-1 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 0) (the-as uint 0)))) - (set! (-> prim-mesh-1 prim-core collide-as) (collide-spec obstacle)) - (set! (-> prim-mesh-1 prim-core collide-with) (collide-spec jak player-list)) - (set! (-> prim-mesh-1 prim-core action) (collide-action solid)) - (set! (-> prim-mesh-1 transform-index) 4) - (set-vector! (-> prim-mesh-1 local-sphere) 0.0 0.0 0.0 40960.0) - ) - (let ((prim-mesh-2 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 1) (the-as uint 0)))) - (set! (-> prim-mesh-2 prim-core action) (collide-action solid)) - (set! (-> prim-mesh-2 transform-index) 4) - (set-vector! (-> prim-mesh-2 local-sphere) 77824.0 -16384.0 282624.0 36864.0) - ) - (let ((prim-mesh-3 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 2) (the-as uint 0)))) - (set! (-> prim-mesh-3 prim-core action) (collide-action solid)) - (set! (-> prim-mesh-3 transform-index) 4) - (set-vector! (-> prim-mesh-3 local-sphere) 61440.0 -16384.0 112640.0 151552.0) - ) - (let ((prim-mesh-4 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 3) (the-as uint 0)))) - (set! (-> prim-mesh-4 prim-core action) (collide-action solid)) - (set! (-> prim-mesh-4 transform-index) 4) - (set-vector! (-> prim-mesh-4 local-sphere) 0.0 -16384.0 40960.0 122880.0) - ) - (let ((prim-mesh-5 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 4) (the-as uint 0)))) - (set! (-> prim-mesh-5 prim-core action) (collide-action solid)) - (set! (-> prim-mesh-5 transform-index) 4) - (set-vector! (-> prim-mesh-5 local-sphere) 81920.0 0.0 204800.0 143360.0) - ) - (set! (-> cshape nav-radius) (* 0.75 (-> cshape root-prim local-sphere w))) - (let ((root-prim (-> cshape root-prim))) - (set! (-> cshape backup-collide-as) (-> root-prim prim-core collide-as)) - (set! (-> cshape backup-collide-with) (-> root-prim prim-core collide-with)) - ) - (set! (-> obj root-override) cshape) + (art-group (art-group-get-by-name *level* "skel-sew-wall" (the-as (pointer uint32) #f))) ) - (process-drawable-from-entity! obj entity) - (logclear! (-> obj mask) (process-mask actor-pause)) - (cond - ((string= (-> obj art-name) "sew-wall-1") - (set! (-> obj anim) - (new 'static 'spool-anim :name "sew-wall-1" :anim-name "1-break" :parts 1 :command-list '()) - ) - (set! (-> obj first-wall?) #t) - ) - ((string= (-> obj art-name) "sew-wall-2") - (set! (-> obj anim) - (new 'static 'spool-anim :name "sew-wall-2" :anim-name "2-break" :parts 1 :command-list '()) - ) - (set! (-> obj root-override trans z) (+ 26624.0 (-> obj root-override trans z))) - (set! (-> obj first-wall?) #f) - ) - (else - (go process-drawable-art-error (the-as string data)) - ) + (set! (-> obj art-name) (the-as string data)) + (let ((cshape (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) + (set! (-> cshape dynam) (copy *standard-dynamics* 'process)) + (set! (-> cshape reaction) cshape-reaction-default) + (set! (-> cshape no-reaction) + (the-as (function collide-shape-moving collide-query vector vector object) nothing) + ) + (let ((prim-group (new 'process 'collide-shape-prim-group cshape (the-as uint 5) 0))) + (set! (-> cshape total-prims) (the-as uint 6)) + (set! (-> prim-group prim-core collide-as) (collide-spec obstacle)) + (set! (-> prim-group prim-core collide-with) (collide-spec jak player-list)) + (set! (-> prim-group prim-core action) (collide-action solid)) + (set! (-> prim-group transform-index) 4) + (set-vector! (-> prim-group local-sphere) 0.0 0.0 0.0 40960.0) + (set! (-> cshape root-prim) prim-group) ) - (initialize-skeleton obj (the-as skeleton-group art-group) (the-as pair 0)) - ) - (set! (-> obj draw force-lod) 0) - (ja-channel-set! 1) - (let* ((channel (-> obj skel root-channel 0)) - (_art-group (-> obj draw art-group)) - (s3-1 (method-of-object _art-group get-art-by-name-method)) - ) - (format (clear *temp-string*) "~S-idle" (-> obj art-name)) - (set! (-> channel frame-group) (the-as art-joint-anim (s3-1 _art-group *temp-string* (the-as type #f)))) - ) - (let* ((game-info *game-info*) - (id (+ (-> game-info attack-id) 1)) - ) - (set! (-> game-info attack-id) id) - (set! (-> obj attack-id) id) - ) - (if (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (res-lump-struct (-> obj entity) 'on-activate pair) - ) - (go (method-of-object obj hit) #t) - (go (method-of-object obj idle)) + (let ((prim-mesh-1 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 0) (the-as uint 0)))) + (set! (-> prim-mesh-1 prim-core collide-as) (collide-spec obstacle)) + (set! (-> prim-mesh-1 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> prim-mesh-1 prim-core action) (collide-action solid)) + (set! (-> prim-mesh-1 transform-index) 4) + (set-vector! (-> prim-mesh-1 local-sphere) 0.0 0.0 0.0 40960.0) ) - (none) + (let ((prim-mesh-2 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 1) (the-as uint 0)))) + (set! (-> prim-mesh-2 prim-core action) (collide-action solid)) + (set! (-> prim-mesh-2 transform-index) 4) + (set-vector! (-> prim-mesh-2 local-sphere) 77824.0 -16384.0 282624.0 36864.0) + ) + (let ((prim-mesh-3 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 2) (the-as uint 0)))) + (set! (-> prim-mesh-3 prim-core action) (collide-action solid)) + (set! (-> prim-mesh-3 transform-index) 4) + (set-vector! (-> prim-mesh-3 local-sphere) 61440.0 -16384.0 112640.0 151552.0) + ) + (let ((prim-mesh-4 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 3) (the-as uint 0)))) + (set! (-> prim-mesh-4 prim-core action) (collide-action solid)) + (set! (-> prim-mesh-4 transform-index) 4) + (set-vector! (-> prim-mesh-4 local-sphere) 0.0 -16384.0 40960.0 122880.0) + ) + (let ((prim-mesh-5 (new 'process 'collide-shape-prim-mesh cshape (the-as uint 4) (the-as uint 0)))) + (set! (-> prim-mesh-5 prim-core action) (collide-action solid)) + (set! (-> prim-mesh-5 transform-index) 4) + (set-vector! (-> prim-mesh-5 local-sphere) 81920.0 0.0 204800.0 143360.0) + ) + (set! (-> cshape nav-radius) (* 0.75 (-> cshape root-prim local-sphere w))) + (let ((root-prim (-> cshape root-prim))) + (set! (-> cshape backup-collide-as) (-> root-prim prim-core collide-as)) + (set! (-> cshape backup-collide-with) (-> root-prim prim-core collide-with)) + ) + (set! (-> obj root-override) cshape) + ) + (process-drawable-from-entity! obj entity) + (logclear! (-> obj mask) (process-mask actor-pause)) + (cond + ((string= (-> obj art-name) "sew-wall-1") + (set! (-> obj anim) + (new 'static 'spool-anim :name "sew-wall-1" :anim-name "1-break" :parts 1 :command-list '()) + ) + (set! (-> obj first-wall?) #t) + ) + ((string= (-> obj art-name) "sew-wall-2") + (set! (-> obj anim) + (new 'static 'spool-anim :name "sew-wall-2" :anim-name "2-break" :parts 1 :command-list '()) + ) + (set! (-> obj root-override trans z) (+ 26624.0 (-> obj root-override trans z))) + (set! (-> obj first-wall?) #f) + ) + (else + (go process-drawable-art-error (the-as string data)) + ) + ) + (initialize-skeleton obj (the-as skeleton-group art-group) (the-as pair 0)) ) + (set! (-> obj draw force-lod) 0) + (ja-channel-set! 1) + (let* ((channel (-> obj skel root-channel 0)) + (_art-group (-> obj draw art-group)) + (s3-1 (method-of-object _art-group get-art-by-name-method)) + ) + (format (clear *temp-string*) "~S-idle" (-> obj art-name)) + (set! (-> channel frame-group) (the-as art-joint-anim (s3-1 _art-group *temp-string* (the-as type #f)))) + ) + (let* ((game-info *game-info*) + (id (+ (-> game-info attack-id) 1)) + ) + (set! (-> game-info attack-id) id) + (set! (-> obj attack-id) id) + ) + (if (script-eval (res-lump-struct (-> obj entity) 'on-activate pair)) + (go (method-of-object obj hit) #t) + (go (method-of-object obj idle)) + ) + (none) ) ;; definition of type sew-grill diff --git a/test/decompiler/reference/jak2/levels/temple/mountain-obs_REF.gc b/test/decompiler/reference/jak2/levels/temple/mountain-obs_REF.gc index eb2d7be98a..76a25f18a9 100644 --- a/test/decompiler/reference/jak2/levels/temple/mountain-obs_REF.gc +++ b/test/decompiler/reference/jak2/levels/temple/mountain-obs_REF.gc @@ -3185,7 +3185,7 @@ This commonly includes things such as: (when (not arg0) (let ((gp-0 (-> self on-activate))) (if gp-0 - (eval! (new 'stack 'script-context (process->ppointer self) self (-> self root trans)) (the-as pair gp-0)) + (script-eval (the-as pair gp-0) :vector (-> self root trans)) ) ) (ja-no-eval :group! (-> self draw art-group data 3) diff --git a/test/decompiler/reference/jak2/levels/underport/under-laser_REF.gc b/test/decompiler/reference/jak2/levels/underport/under-laser_REF.gc index c48d678cf0..21714f44f1 100644 --- a/test/decompiler/reference/jak2/levels/underport/under-laser_REF.gc +++ b/test/decompiler/reference/jak2/levels/underport/under-laser_REF.gc @@ -383,11 +383,7 @@ (none) ) :trans (behavior () - (if (not (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - (the-as pair (-> self draw-test-script)) - ) - ) + (if (not (script-eval (the-as pair (-> self draw-test-script)))) (go-virtual idle) ) (none) @@ -481,131 +477,124 @@ This commonly includes things such as: - loading the skeleton group / bones - sounds" (local-vars (sv-64 res-tag)) - (with-pp - (set! (-> obj root-override) (the-as collide-shape-moving (new 'process 'trsqv))) - (process-drawable-from-entity! obj arg0) - (logclear! (-> obj mask) (process-mask actor-pause)) - (initialize-skeleton - obj - (the-as skeleton-group (art-group-get-by-name *level* "skel-under-laser" (the-as (pointer uint32) #f))) - (the-as pair 0) - ) - (let ((v1-7 (res-lump-value (-> obj entity) 'extra-id uint128 :time -1000000000.0))) - (set! (-> obj id) (the-as int v1-7)) - (set! (-> obj info) (-> *under-laser-infos* v1-7)) - ) - (let ((a1-6 (new 'stack-no-clear 'sync-info-params))) - (let ((v1-11 0)) - (if #t - (set! v1-11 (logior v1-11 1)) - ) - (set! (-> a1-6 sync-type) 'sync-eased) - (set! (-> a1-6 sync-flags) (the-as sync-flags v1-11)) - ) - (set! (-> a1-6 period) (the-as uint 1800)) - (set! (-> a1-6 entity) arg0) - (set! (-> a1-6 percent) 0.0) - (set! (-> a1-6 ease-in) 0.15) - (set! (-> a1-6 ease-out) 0.15) - (set! (-> a1-6 pause-in) 0.0) - (set! (-> a1-6 pause-out) 0.0) - (initialize! (-> obj sync) a1-6) - ) - (set! (-> obj clock) (-> *display* user0-clock)) - (let ((s5-1 (-> obj root-override))) - (set-vector! (-> s5-1 scale) 1.25 1.25 1.25 1.0) - (set! sv-64 (new 'static 'res-tag)) - (let ((v1-22 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-64)))) - (when v1-22 - (+! (-> s5-1 trans x) (-> v1-22 0)) - (+! (-> s5-1 trans y) (-> v1-22 1)) - (+! (-> s5-1 trans z) (-> v1-22 2)) - ) - ) - (let ((f0-15 (res-lump-float arg0 'rotoffset))) - (if (!= f0-15 0.0) - (quaternion-rotate-y! (-> s5-1 quat) (-> s5-1 quat) f0-15) - ) - ) - (vector-z-quaternion! (-> obj laser-dir) (-> s5-1 quat)) - (vector-normalize! (-> obj laser-dir) 1.0) - (quaternion-rotate-y! (-> s5-1 quat) (-> s5-1 quat) -16384.0) - (when (logtest? (-> obj info options) 1) - (let ((s4-1 (new 'stack-no-clear 'quaternion))) - (quaternion-vector-angle! s4-1 (-> obj laser-dir) 16384.0) - (quaternion*! (-> s5-1 quat) s4-1 (-> s5-1 quat)) - ) - ) - (let ((f30-0 (-> obj info laser-radius))) - (let ((s4-2 (new 'stack-no-clear 'vector))) - (vector-normalize-copy! s4-2 (-> obj laser-dir) (- f30-0)) - (vector+! (-> s5-1 trans) (-> s5-1 trans) s4-2) - ) - (vector-normalize-copy! (-> obj slave-trans-offset) (-> obj laser-dir) (* 2.0 f30-0)) - ) - (set! (-> obj zero-pos quad) (-> s5-1 trans quad)) - (let ((f30-1 (-> obj info laser-move-dist))) - (cond - ((logtest? (-> obj info options) 1) - (set! (-> obj one-pos quad) (-> obj zero-pos quad)) - (+! (-> obj one-pos y) f30-1) - ) - (else - (let ((s4-3 (new 'stack-no-clear 'vector))) - (vector-rotate-around-y! s4-3 (-> obj laser-dir) 16384.0) - (vector-normalize! s4-3 f30-1) - (vector+! (-> obj one-pos) (-> obj zero-pos) s4-3) - ) - ) - ) - ) - (vector-lerp! (-> s5-1 trans) (-> obj zero-pos) (-> obj one-pos) (get-norm! (-> obj sync) 0)) - ) - (let ((a2-13 (new 'static 'lightning-spec - :name #f - :flags (lightning-spec-flags lsf2) - :start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - :end-color (new 'static 'rgba :a #x80) - :fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5) - :fade-start-factor 0.2 - :fade-time 120.0 - :texture (new 'static 'texture-id :index #x83 :page #xc) - :reduction 0.42 - :num-points 16 - :box-size 8192.0 - :merge-factor 0.1 - :merge-count 4 - :radius 2048.0 - :duration -1.0 - :sound #f - ) - ) - ) - (set! (-> obj lightning) (new 'process 'lightning-control a2-13 obj 0.0)) - ) - (let ((a3-5 (new 'stack-no-clear 'vector))) - (vector-float*! a3-5 (-> obj slave-trans-offset) 0.5) - (vector+! a3-5 a3-5 (-> obj root-override trans)) - (if (zero? (-> obj id)) - (set! (-> obj sound) (new 'process 'ambient-sound (static-sound-spec "und-laser-near" :fo-max 40) a3-5)) - (set! (-> obj sound) (new 'process 'ambient-sound (static-sound-spec "und-laser-beam" :fo-max 40) a3-5)) - ) - ) - (set! (-> obj draw-test-script) (res-lump-struct (-> obj entity) 'on-activate script-context)) - (cond - ((and (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (the-as pair (-> obj draw-test-script)) - ) - (= *bot-record-path* -1) - ) - (update-vol! (-> obj sound) 0.0) - (go (method-of-object obj dormant)) - ) - (else - (go (method-of-object obj idle)) - ) - ) - (none) + (set! (-> obj root-override) (the-as collide-shape-moving (new 'process 'trsqv))) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-under-laser" (the-as (pointer uint32) #f))) + (the-as pair 0) ) + (let ((v1-7 (res-lump-value (-> obj entity) 'extra-id uint128 :time -1000000000.0))) + (set! (-> obj id) (the-as int v1-7)) + (set! (-> obj info) (-> *under-laser-infos* v1-7)) + ) + (let ((a1-6 (new 'stack-no-clear 'sync-info-params))) + (let ((v1-11 0)) + (if #t + (set! v1-11 (logior v1-11 1)) + ) + (set! (-> a1-6 sync-type) 'sync-eased) + (set! (-> a1-6 sync-flags) (the-as sync-flags v1-11)) + ) + (set! (-> a1-6 period) (the-as uint 1800)) + (set! (-> a1-6 entity) arg0) + (set! (-> a1-6 percent) 0.0) + (set! (-> a1-6 ease-in) 0.15) + (set! (-> a1-6 ease-out) 0.15) + (set! (-> a1-6 pause-in) 0.0) + (set! (-> a1-6 pause-out) 0.0) + (initialize! (-> obj sync) a1-6) + ) + (set! (-> obj clock) (-> *display* user0-clock)) + (let ((s5-1 (-> obj root-override))) + (set-vector! (-> s5-1 scale) 1.25 1.25 1.25 1.0) + (set! sv-64 (new 'static 'res-tag)) + (let ((v1-22 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-64)))) + (when v1-22 + (+! (-> s5-1 trans x) (-> v1-22 0)) + (+! (-> s5-1 trans y) (-> v1-22 1)) + (+! (-> s5-1 trans z) (-> v1-22 2)) + ) + ) + (let ((f0-15 (res-lump-float arg0 'rotoffset))) + (if (!= f0-15 0.0) + (quaternion-rotate-y! (-> s5-1 quat) (-> s5-1 quat) f0-15) + ) + ) + (vector-z-quaternion! (-> obj laser-dir) (-> s5-1 quat)) + (vector-normalize! (-> obj laser-dir) 1.0) + (quaternion-rotate-y! (-> s5-1 quat) (-> s5-1 quat) -16384.0) + (when (logtest? (-> obj info options) 1) + (let ((s4-1 (new 'stack-no-clear 'quaternion))) + (quaternion-vector-angle! s4-1 (-> obj laser-dir) 16384.0) + (quaternion*! (-> s5-1 quat) s4-1 (-> s5-1 quat)) + ) + ) + (let ((f30-0 (-> obj info laser-radius))) + (let ((s4-2 (new 'stack-no-clear 'vector))) + (vector-normalize-copy! s4-2 (-> obj laser-dir) (- f30-0)) + (vector+! (-> s5-1 trans) (-> s5-1 trans) s4-2) + ) + (vector-normalize-copy! (-> obj slave-trans-offset) (-> obj laser-dir) (* 2.0 f30-0)) + ) + (set! (-> obj zero-pos quad) (-> s5-1 trans quad)) + (let ((f30-1 (-> obj info laser-move-dist))) + (cond + ((logtest? (-> obj info options) 1) + (set! (-> obj one-pos quad) (-> obj zero-pos quad)) + (+! (-> obj one-pos y) f30-1) + ) + (else + (let ((s4-3 (new 'stack-no-clear 'vector))) + (vector-rotate-around-y! s4-3 (-> obj laser-dir) 16384.0) + (vector-normalize! s4-3 f30-1) + (vector+! (-> obj one-pos) (-> obj zero-pos) s4-3) + ) + ) + ) + ) + (vector-lerp! (-> s5-1 trans) (-> obj zero-pos) (-> obj one-pos) (get-norm! (-> obj sync) 0)) + ) + (let ((a2-13 (new 'static 'lightning-spec + :name #f + :flags (lightning-spec-flags lsf2) + :start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + :end-color (new 'static 'rgba :a #x80) + :fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5) + :fade-start-factor 0.2 + :fade-time 120.0 + :texture (new 'static 'texture-id :index #x83 :page #xc) + :reduction 0.42 + :num-points 16 + :box-size 8192.0 + :merge-factor 0.1 + :merge-count 4 + :radius 2048.0 + :duration -1.0 + :sound #f + ) + ) + ) + (set! (-> obj lightning) (new 'process 'lightning-control a2-13 obj 0.0)) + ) + (let ((a3-5 (new 'stack-no-clear 'vector))) + (vector-float*! a3-5 (-> obj slave-trans-offset) 0.5) + (vector+! a3-5 a3-5 (-> obj root-override trans)) + (if (zero? (-> obj id)) + (set! (-> obj sound) (new 'process 'ambient-sound (static-sound-spec "und-laser-near" :fo-max 40) a3-5)) + (set! (-> obj sound) (new 'process 'ambient-sound (static-sound-spec "und-laser-beam" :fo-max 40) a3-5)) + ) + ) + (set! (-> obj draw-test-script) (res-lump-struct (-> obj entity) 'on-activate script-context)) + (cond + ((and (script-eval (the-as pair (-> obj draw-test-script))) (= *bot-record-path* -1)) + (update-vol! (-> obj sound) 0.0) + (go (method-of-object obj dormant)) + ) + (else + (go (method-of-object obj idle)) + ) + ) + (none) ) diff --git a/test/decompiler/reference/jak2/levels/underport/under-sig-obs_REF.gc b/test/decompiler/reference/jak2/levels/underport/under-sig-obs_REF.gc index 27482e70e6..b157ce5ac8 100644 --- a/test/decompiler/reference/jak2/levels/underport/under-sig-obs_REF.gc +++ b/test/decompiler/reference/jak2/levels/underport/under-sig-obs_REF.gc @@ -180,11 +180,7 @@ For example for an elevator pre-compute the distance between the first and last (none) ) :trans (behavior () - (when (not (eval! - (new 'stack 'script-context (process->ppointer self) self (the-as vector #f)) - (the-as pair (-> self draw-test-script)) - ) - ) + (when (not (script-eval (the-as pair (-> self draw-test-script)))) enter-state #t (go-virtual plat-path-active) @@ -471,21 +467,14 @@ For example for an elevator pre-compute the distance between the first and last otherwise, [[plat::34]] @see [[sync-eased]]" - (with-pp - (cond - ((and (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (the-as pair (-> obj draw-test-script)) - ) - (= *bot-record-path* -1) - ) - (go (method-of-object obj dormant)) - ) - (else - enter-state - #t - (go (method-of-object obj plat-path-active)) - ) + (cond + ((and (script-eval (the-as pair (-> obj draw-test-script))) (= *bot-record-path* -1)) + (go (method-of-object obj dormant)) + ) + (else + enter-state + #t + (go (method-of-object obj plat-path-active)) ) ) ) @@ -752,61 +741,56 @@ This commonly includes things such as: - loading the skeleton group / bones - sounds" (local-vars (sv-16 res-tag)) - (with-pp - (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) - (let ((v1-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> v1-2 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-2 prim-core action) (collide-action solid)) - (set! (-> v1-2 transform-index) 4) - (set-vector! (-> v1-2 local-sphere) 5324.8 -18432.0 -8192.0 32768.0) - (set! (-> s4-0 total-prims) (the-as uint 1)) - (set! (-> s4-0 root-prim) v1-2) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (let ((v1-5 (-> s4-0 root-prim))) - (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) s4-0) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (let ((v1-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-2 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-2 prim-core action) (collide-action solid)) + (set! (-> v1-2 transform-index) 4) + (set-vector! (-> v1-2 local-sphere) 5324.8 -18432.0 -8192.0 32768.0) + (set! (-> s4-0 total-prims) (the-as uint 1)) + (set! (-> s4-0 root-prim) v1-2) ) - (process-drawable-from-entity! obj arg0) - (if (= (res-lump-value (-> obj entity) 'extra-id uint :time -1000000000.0) 2) - (initialize-skeleton - obj - (the-as skeleton-group (art-group-get-by-name *level* "skel-under-break-wall2" (the-as (pointer uint32) #f))) - (the-as pair 0) - ) - (initialize-skeleton - obj - (the-as skeleton-group (art-group-get-by-name *level* "skel-under-break-wall1" (the-as (pointer uint32) #f))) - (the-as pair 0) - ) - ) - (let ((s4-4 (-> obj root))) - (set! sv-16 (new 'static 'res-tag)) - (let ((v1-15 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16)))) - (when v1-15 - (+! (-> obj root trans x) (-> v1-15 0)) - (+! (-> obj root trans y) (-> v1-15 1)) - (+! (-> obj root trans z) (-> v1-15 2)) - ) - ) - (let ((f0-12 (res-lump-float arg0 'rotoffset))) - (if (!= f0-12 0.0) - (quaternion-rotate-y! (-> s4-4 quat) (-> s4-4 quat) f0-12) - ) - ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (let ((v1-5 (-> s4-0 root-prim))) + (set! (-> s4-0 backup-collide-as) (-> v1-5 prim-core collide-as)) + (set! (-> s4-0 backup-collide-with) (-> v1-5 prim-core collide-with)) ) - (transform-post) - (if (eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (res-lump-struct (-> obj entity) 'on-activate pair) - ) - (go (method-of-object obj die)) - (go (method-of-object obj idle)) - ) - (none) + (set! (-> obj root) s4-0) ) + (process-drawable-from-entity! obj arg0) + (if (= (res-lump-value (-> obj entity) 'extra-id uint :time -1000000000.0) 2) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-under-break-wall2" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-under-break-wall1" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + ) + (let ((s4-4 (-> obj root))) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-15 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16)))) + (when v1-15 + (+! (-> obj root trans x) (-> v1-15 0)) + (+! (-> obj root trans y) (-> v1-15 1)) + (+! (-> obj root trans z) (-> v1-15 2)) + ) + ) + (let ((f0-12 (res-lump-float arg0 'rotoffset))) + (if (!= f0-12 0.0) + (quaternion-rotate-y! (-> s4-4 quat) (-> s4-4 quat) f0-12) + ) + ) + ) + (transform-post) + (if (script-eval (res-lump-struct (-> obj entity) 'on-activate pair)) + (go (method-of-object obj die)) + (go (method-of-object obj idle)) + ) + (none) ) ;; definition of type under-break-bridge @@ -902,80 +886,75 @@ This commonly includes things such as: - loading the skeleton group / bones - sounds" (local-vars (sv-16 res-tag)) - (with-pp - (set! (-> obj bridge-id) (res-lump-value (-> obj entity) 'extra-id int :time -1000000000.0)) - (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s4-0 total-prims) (the-as uint 3)) - (set! (-> s3-0 prim-core collide-as) (collide-spec obstacle)) - (set! (-> s3-0 prim-core action) (collide-action solid)) - (set! (-> s3-0 transform-index) 3) - (set-vector! (-> s3-0 local-sphere) 12288.0 0.0 -26624.0 57344.0) - (set! (-> s4-0 root-prim) s3-0) - ) - (let ((v1-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> v1-9 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-9 prim-core action) (collide-action solid)) - (set! (-> v1-9 transform-index) 3) - (set-vector! (-> v1-9 local-sphere) 12288.0 0.0 -26624.0 57344.0) - ) - (let ((v1-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> v1-11 prim-core action) (collide-action solid)) - (set! (-> v1-11 transform-index) 54) - (set-vector! (-> v1-11 local-sphere) 0.0 0.0 49152.0 61440.0) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (let ((v1-14 (-> s4-0 root-prim))) - (set! (-> s4-0 backup-collide-as) (-> v1-14 prim-core collide-as)) - (set! (-> s4-0 backup-collide-with) (-> v1-14 prim-core collide-with)) - ) - (set! (-> obj root-override) (the-as collide-shape-moving s4-0)) + (set! (-> obj bridge-id) (res-lump-value (-> obj entity) 'extra-id int :time -1000000000.0)) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) + (set! (-> s4-0 total-prims) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-spec obstacle)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 12288.0 0.0 -26624.0 57344.0) + (set! (-> s4-0 root-prim) s3-0) ) - (process-drawable-from-entity! obj arg0) - (if (= (res-lump-value (-> obj entity) 'extra-id uint :time -1000000000.0) 1) - (initialize-skeleton - obj - (the-as skeleton-group (art-group-get-by-name *level* "skel-under-bridge2" (the-as (pointer uint32) #f))) - (the-as pair 0) - ) - (initialize-skeleton - obj - (the-as skeleton-group (art-group-get-by-name *level* "skel-under-bridge1" (the-as (pointer uint32) #f))) - (the-as pair 0) - ) - ) - (let ((s4-4 (-> obj root-override))) - (set! sv-16 (new 'static 'res-tag)) - (let ((v1-24 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16)))) - (when v1-24 - (+! (-> obj root-override trans x) (-> v1-24 0)) - (+! (-> obj root-override trans y) (-> v1-24 1)) - (+! (-> obj root-override trans z) (-> v1-24 2)) - ) - ) - (let ((f0-20 (res-lump-float arg0 'rotoffset))) - (if (!= f0-20 0.0) - (quaternion-rotate-y! (-> s4-4 quat) (-> s4-4 quat) f0-20) - ) - ) + (let ((v1-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-9 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-9 prim-core action) (collide-action solid)) + (set! (-> v1-9 transform-index) 3) + (set-vector! (-> v1-9 local-sphere) 12288.0 0.0 -26624.0 57344.0) ) - (transform-post) - (cond - ((eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (res-lump-struct (-> obj entity) 'on-activate pair) - ) - (if (= (-> obj bridge-id) 1) - (go (method-of-object obj broken)) - (go (method-of-object obj die)) - ) - ) - (else - (go (method-of-object obj idle)) - ) + (let ((v1-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) + (set! (-> v1-11 prim-core action) (collide-action solid)) + (set! (-> v1-11 transform-index) 54) + (set-vector! (-> v1-11 local-sphere) 0.0 0.0 49152.0 61440.0) ) - (none) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (let ((v1-14 (-> s4-0 root-prim))) + (set! (-> s4-0 backup-collide-as) (-> v1-14 prim-core collide-as)) + (set! (-> s4-0 backup-collide-with) (-> v1-14 prim-core collide-with)) + ) + (set! (-> obj root-override) (the-as collide-shape-moving s4-0)) ) + (process-drawable-from-entity! obj arg0) + (if (= (res-lump-value (-> obj entity) 'extra-id uint :time -1000000000.0) 1) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-under-bridge2" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-under-bridge1" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + ) + (let ((s4-4 (-> obj root-override))) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-24 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16)))) + (when v1-24 + (+! (-> obj root-override trans x) (-> v1-24 0)) + (+! (-> obj root-override trans y) (-> v1-24 1)) + (+! (-> obj root-override trans z) (-> v1-24 2)) + ) + ) + (let ((f0-20 (res-lump-float arg0 'rotoffset))) + (if (!= f0-20 0.0) + (quaternion-rotate-y! (-> s4-4 quat) (-> s4-4 quat) f0-20) + ) + ) + ) + (transform-post) + (cond + ((script-eval (res-lump-struct (-> obj entity) 'on-activate pair)) + (if (= (-> obj bridge-id) 1) + (go (method-of-object obj broken)) + (go (method-of-object obj die)) + ) + ) + (else + (go (method-of-object obj idle)) + ) + ) + (none) ) ;; definition of type under-int-door @@ -1063,93 +1042,88 @@ This commonly includes things such as: - loading the skeleton group / bones - sounds" (local-vars (sv-16 res-tag)) - (with-pp - (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s4-0 total-prims) (the-as uint 3)) - (set! (-> s3-0 prim-core collide-as) (collide-spec obstacle)) - (set! (-> s3-0 prim-core action) (collide-action solid)) - (set-vector! (-> s3-0 local-sphere) 0.0 24576.0 0.0 57344.0) - (set! (-> s4-0 root-prim) s3-0) - ) - (let ((v1-7 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> v1-7 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-7 prim-core collide-with) (collide-spec jak bot player-list)) - (set! (-> v1-7 prim-core action) (collide-action solid)) - (set! (-> v1-7 transform-index) 3) - (set-vector! (-> v1-7 local-sphere) 8192.0 24576.0 0.0 28672.0) - ) - (let ((v1-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> v1-9 prim-core collide-as) (collide-spec obstacle)) - (set! (-> v1-9 prim-core collide-with) (collide-spec jak bot player-list)) - (set! (-> v1-9 prim-core action) (collide-action solid)) - (set! (-> v1-9 transform-index) 4) - (set-vector! (-> v1-9 local-sphere) -8192.0 24576.0 0.0 28672.0) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (let ((v1-12 (-> s4-0 root-prim))) - (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) s4-0) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) + (set! (-> s4-0 total-prims) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-spec obstacle)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set-vector! (-> s3-0 local-sphere) 0.0 24576.0 0.0 57344.0) + (set! (-> s4-0 root-prim) s3-0) ) - (process-drawable-from-entity! obj arg0) - (initialize-skeleton - obj - (the-as skeleton-group (art-group-get-by-name *level* "skel-under-int-door" (the-as (pointer uint32) #f))) - (the-as pair 0) + (let ((v1-7 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-7 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-7 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-7 prim-core action) (collide-action solid)) + (set! (-> v1-7 transform-index) 3) + (set-vector! (-> v1-7 local-sphere) 8192.0 24576.0 0.0 28672.0) ) - (set! sv-16 (new 'static 'res-tag)) - (let ((v1-18 (res-lump-data (-> obj entity) 'actor-groups (pointer actor-group) :tag-ptr (& sv-16)))) - (when (and v1-18 (nonzero? (-> sv-16 elt-count))) - (let ((a0-25 (-> v1-18 0 data 0 actor))) - (if (and a0-25 (logtest? (-> a0-25 extra perm status) (entity-perm-status subtask-complete))) - (process-entity-status! obj (entity-perm-status subtask-complete) #t) - ) - ) - ) + (let ((v1-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) + (set! (-> v1-9 prim-core collide-as) (collide-spec obstacle)) + (set! (-> v1-9 prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> v1-9 prim-core action) (collide-action solid)) + (set! (-> v1-9 transform-index) 4) + (set-vector! (-> v1-9 local-sphere) -8192.0 24576.0 0.0 28672.0) ) - (ja-channel-push! 1 0) - (let ((s5-2 #t)) - (cond - ((eval! - (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f)) - (res-lump-struct (-> obj entity) 'on-activate pair) - ) - (set! s5-2 #f) - ) - ((not (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status subtask-complete)))) - (set! s5-2 #f) - ) - ) - (cond - (s5-2 - (let ((a0-40 (-> obj skel root-channel 0))) - (set! (-> a0-40 frame-group) (the-as art-joint-anim (-> obj draw art-group data 2))) - (set! (-> a0-40 param 0) 1.0) - (set! (-> a0-40 frame-num) - (the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 2)) frames num-frames) -1)) - ) - (joint-control-channel-group! a0-40 (the-as art-joint-anim (-> obj draw art-group data 2)) num-func-loop!) - ) - ) - (else - (let ((a0-41 (-> obj skel root-channel 0))) - (set! (-> a0-41 frame-group) (the-as art-joint-anim (-> obj draw art-group data 2))) - (set! (-> a0-41 param 0) 1.0) - (set! (-> a0-41 frame-num) 0.0) - (joint-control-channel-group! a0-41 (the-as art-joint-anim (-> obj draw art-group data 2)) num-func-loop!) - ) - ) - ) - (transform-post) - (if s5-2 - (go (method-of-object obj idle-open)) - (go (method-of-object obj idle-closed)) - ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (let ((v1-12 (-> s4-0 root-prim))) + (set! (-> s4-0 backup-collide-as) (-> v1-12 prim-core collide-as)) + (set! (-> s4-0 backup-collide-with) (-> v1-12 prim-core collide-with)) ) - (none) + (set! (-> obj root) s4-0) ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-under-int-door" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-18 (res-lump-data (-> obj entity) 'actor-groups (pointer actor-group) :tag-ptr (& sv-16)))) + (when (and v1-18 (nonzero? (-> sv-16 elt-count))) + (let ((a0-25 (-> v1-18 0 data 0 actor))) + (if (and a0-25 (logtest? (-> a0-25 extra perm status) (entity-perm-status subtask-complete))) + (process-entity-status! obj (entity-perm-status subtask-complete) #t) + ) + ) + ) + ) + (ja-channel-push! 1 0) + (let ((s5-2 #t)) + (cond + ((script-eval (res-lump-struct (-> obj entity) 'on-activate pair)) + (set! s5-2 #f) + ) + ((not (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status subtask-complete)))) + (set! s5-2 #f) + ) + ) + (cond + (s5-2 + (let ((a0-40 (-> obj skel root-channel 0))) + (set! (-> a0-40 frame-group) (the-as art-joint-anim (-> obj draw art-group data 2))) + (set! (-> a0-40 param 0) 1.0) + (set! (-> a0-40 frame-num) + (the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 2)) frames num-frames) -1)) + ) + (joint-control-channel-group! a0-40 (the-as art-joint-anim (-> obj draw art-group data 2)) num-func-loop!) + ) + ) + (else + (let ((a0-41 (-> obj skel root-channel 0))) + (set! (-> a0-41 frame-group) (the-as art-joint-anim (-> obj draw art-group data 2))) + (set! (-> a0-41 param 0) 1.0) + (set! (-> a0-41 frame-num) 0.0) + (joint-control-channel-group! a0-41 (the-as art-joint-anim (-> obj draw art-group data 2)) num-func-loop!) + ) + ) + ) + (transform-post) + (if s5-2 + (go (method-of-object obj idle-open)) + (go (method-of-object obj idle-closed)) + ) + ) + (none) ) ;; definition of type under-plat-long