mirror of
https://github.com/open-goal/jak-project
synced 2026-09-02 02:02:51 -04:00
decomp: merge all s6-* remappings and finish training-obs | villagep-obs | lavatube-obs | rolling-robber | snow-obs (#1018)
* decompiler: merge all `s6-*` usages * decomp: finish `training-obs` * decomp: finish `rolling-robber` * decomp: finish `villagep-obs` * decomp: finish `lavatube-obs` * skip function in `lavatube-obs` over #1029 * closes #1029 * kick nasm * merge s6 and sp in variable naming pass * revert my fix * fix mistakes and a bad method signature Co-authored-by: water111 <awaterford111445@gmail.com>
This commit is contained in:
@@ -566,4 +566,4 @@ void Env::set_stack_structure_hints(const std::vector<StackStructureHint>& hints
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace decompiler
|
||||
} // namespace decompiler
|
||||
|
||||
@@ -1572,7 +1572,7 @@ FormElement* SimpleExpressionElement::update_from_stack_logor_or_logand_helper(
|
||||
if (m_expr.get_arg(1).is_var()) {
|
||||
auto eti = env.dts->ts.try_enum_lookup(arg1_type.base_type());
|
||||
if (eti) {
|
||||
auto integer = get_goal_integer_constant(args.at(0), env);
|
||||
auto integer = get_goal_integer_constant(strip_int_or_uint_cast(args.at(0)), env);
|
||||
if (integer && ((s64)*integer) < 0) {
|
||||
// clearing a bitfield.
|
||||
auto elts = decompile_bitfield_enum_from_int(arg1_type, env.dts->ts, ~*integer);
|
||||
|
||||
@@ -86,6 +86,14 @@ void VarMapSSA::merge(const VarSSA& var_a, const VarSSA& var_b) {
|
||||
}
|
||||
}
|
||||
|
||||
void VarMapSSA::merge_reg(Register reg) {
|
||||
for (auto& entry : m_entries) {
|
||||
if (entry.reg == reg) {
|
||||
entry.var_id = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* Make all Bs A.
|
||||
*/
|
||||
@@ -491,6 +499,13 @@ std::string SSA::print() const {
|
||||
return result;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Merge all variables in the same register to the given register.
|
||||
*/
|
||||
void SSA::merge_reg_to_single_variable(Register reg) {
|
||||
map.merge_reg(reg);
|
||||
}
|
||||
|
||||
/*!
|
||||
* Simplify the SSA while still keeping it in SSA form.
|
||||
* This does only a single pass of simplifications and returns true if it made changes.
|
||||
@@ -1070,6 +1085,10 @@ std::optional<VariableNames> run_variable_renaming(const Function& function,
|
||||
fmt::print("Simplified SSA\n{}-------------------------------\n", ssa.print());
|
||||
}
|
||||
|
||||
// merge special registers
|
||||
ssa.merge_reg_to_single_variable(Register(Reg::GPR, Reg::SP));
|
||||
ssa.merge_reg_to_single_variable(Register(Reg::GPR, Reg::S6));
|
||||
|
||||
// remember what the SSA mapping was:
|
||||
auto ssa_mapping = ssa.get_ssa_mapping();
|
||||
|
||||
|
||||
@@ -77,6 +77,7 @@ class VarMapSSA {
|
||||
bool same(const VarSSA& var_a, const VarSSA& var_b) const;
|
||||
int var_id(const VarSSA& var) const;
|
||||
void remap_reg(Register reg, const std::unordered_map<int, int>& remap);
|
||||
void merge_reg(Register reg);
|
||||
void debug_print_map() const;
|
||||
|
||||
private:
|
||||
@@ -143,6 +144,7 @@ struct SSA {
|
||||
RegAccessMap<int> get_ssa_mapping();
|
||||
|
||||
bool simplify();
|
||||
void merge_reg_to_single_variable(Register reg);
|
||||
void merge_all_phis();
|
||||
void remap(int nargs);
|
||||
void make_vars(const Function& function, const DecompilerTypeSystem& dts);
|
||||
|
||||
@@ -1155,12 +1155,12 @@
|
||||
(dark-crystal-run-away #x439)
|
||||
(cave-trap-nest-hint #x440)
|
||||
(snow-fort-reminder #x443)
|
||||
|
||||
|
||||
(ram-boss-red-eco-hint #x444)
|
||||
|
||||
(ice-cube-hint #x448)
|
||||
|
||||
(snowy-turned-on-yellow-vents #x44c)
|
||||
|
||||
(village3-warp-gate-reminder #x452)
|
||||
(village3-warp-gate-reminder=annoyed #x453)
|
||||
(village3-warp-gate-reminder-very-annoyed #x454)
|
||||
@@ -12077,7 +12077,7 @@
|
||||
(target-clone-anim handle)
|
||||
target-title
|
||||
target-demo
|
||||
target-warp-in
|
||||
(target-warp-in vector vector)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -18644,7 +18644,7 @@
|
||||
(:methods
|
||||
(water-vol-idle () _type_ :state 20)
|
||||
(water-vol-startup () _type_ :state 21)
|
||||
(TODO-RENAME-22 (_type_) ripple-wave-set 22) ;; can also return an obs?
|
||||
(TODO-RENAME-22 (_type_) none 22) ;; can also return an obs?
|
||||
(reset-root! (_type_) none 23)
|
||||
(set-stack-size! (_type_) none 24)
|
||||
(TODO-RENAME-25 (_type_) object 25)
|
||||
@@ -34264,13 +34264,23 @@
|
||||
:size-assert #x118
|
||||
:heap-base #xb0
|
||||
:flag-assert #x1400b00118
|
||||
(:states
|
||||
robber-die
|
||||
robber-dead
|
||||
robber-initial
|
||||
robber-initial-notice
|
||||
robber-flee
|
||||
robber-got-away
|
||||
robber-tired
|
||||
robber-idle
|
||||
robber-debug)
|
||||
)
|
||||
|
||||
;; - Functions
|
||||
|
||||
(define-extern robber-find-ground (function symbol :behavior robber))
|
||||
(define-extern robber-move (function float :behavior robber))
|
||||
(define-extern robber-calc-speed (function float float vector vector symbol float :behavior robber))
|
||||
(define-extern robber-calc-speed (function float float float float symbol float :behavior robber))
|
||||
(define-extern robber-rotate (function target float vector :behavior robber))
|
||||
(define-extern robber-calc-anim-speed (function float :behavior robber))
|
||||
(define-extern robber-task-complete? (function symbol :behavior robber))
|
||||
@@ -34280,16 +34290,7 @@
|
||||
;; - Unknowns
|
||||
|
||||
(define-extern *robber-sg* skeleton-group)
|
||||
(define-extern robber-die (state robber)) ;; unknown type
|
||||
(define-extern robber-dead (state robber)) ;; unknown type
|
||||
(define-extern robber-initial (state robber)) ;; unknown type
|
||||
(define-extern robber-initial-notice (state robber)) ;; unknown type
|
||||
(define-extern robber-flee (state robber)) ;; unknown type
|
||||
(define-extern robber-got-away (state robber)) ;; unknown type
|
||||
(define-extern robber-tired (state robber)) ;; unknown type
|
||||
(define-extern robber-idle (state robber)) ;; unknown type
|
||||
(define-extern fuel-cell-spline-slider (state handle float float fuel-cell)) ;; unknown type
|
||||
(define-extern robber-debug (state robber)) ;; unknown type
|
||||
|
||||
|
||||
;; ----------------------
|
||||
@@ -35369,19 +35370,25 @@
|
||||
:size-assert #xc4
|
||||
:heap-base #x60
|
||||
:flag-assert #x14006000c4
|
||||
(:states
|
||||
snow-eggtop-idle-down
|
||||
snow-eggtop-idle-up
|
||||
snow-eggtop-activate)
|
||||
)
|
||||
|
||||
(deftype snowpusher (process-drawable)
|
||||
((root-override collide-shape-moving :score 100 :offset 112)
|
||||
(max-frame float :offset-assert 176)
|
||||
(open-sound uint128 :offset-assert 192)
|
||||
(close-sound uint128 :offset-assert 208)
|
||||
(open-sound sound-name :offset-assert 192)
|
||||
(close-sound sound-name :offset-assert 208)
|
||||
(sync sync-info-paused :inline :offset-assert 224)
|
||||
)
|
||||
:method-count-assert 20
|
||||
:size-assert #xf0
|
||||
:heap-base #x80
|
||||
:flag-assert #x14008000f0
|
||||
(:states
|
||||
snowpusher-idle)
|
||||
)
|
||||
|
||||
(deftype snow-spatula (baseplat)
|
||||
@@ -35392,6 +35399,8 @@
|
||||
:size-assert #x130
|
||||
:heap-base #xc0
|
||||
:flag-assert #x1b00c00130
|
||||
(:states
|
||||
snow-spatula-idle)
|
||||
)
|
||||
|
||||
(deftype snow-fort-gate (process-drawable)
|
||||
@@ -35405,6 +35414,10 @@
|
||||
:size-assert #xe0
|
||||
:heap-base #x70
|
||||
:flag-assert #x14007000e0
|
||||
(:states
|
||||
snow-fort-gate-idle-open
|
||||
snow-fort-gate-idle-closed
|
||||
snow-fort-gate-activate)
|
||||
)
|
||||
|
||||
(deftype snow-gears (process-drawable)
|
||||
@@ -35416,6 +35429,11 @@
|
||||
(:methods
|
||||
(TODO-RENAME-20 (_type_) none 20)
|
||||
)
|
||||
(:states
|
||||
snow-gears-idle
|
||||
snow-gears-stopped
|
||||
snow-gears-halt
|
||||
snow-gears-activate)
|
||||
)
|
||||
|
||||
(deftype snow-switch (process-drawable)
|
||||
@@ -35428,6 +35446,10 @@
|
||||
:size-assert #xd0
|
||||
:heap-base #x60
|
||||
:flag-assert #x14006000d0
|
||||
(:states
|
||||
snow-switch-idle-down
|
||||
snow-switch-idle-up
|
||||
snow-switch-activate)
|
||||
)
|
||||
|
||||
(deftype snow-log (process-drawable)
|
||||
@@ -35438,6 +35460,11 @@
|
||||
:size-assert #xb4
|
||||
:heap-base #x50
|
||||
:flag-assert #x14005000b4
|
||||
(:states
|
||||
snow-log-wait-for-master
|
||||
snow-log-active
|
||||
snow-log-activate
|
||||
snow-log-hidden)
|
||||
)
|
||||
|
||||
(deftype snow-log-button (process-drawable)
|
||||
@@ -35449,6 +35476,10 @@
|
||||
:size-assert #xd0
|
||||
:heap-base #x60
|
||||
:flag-assert #x14006000d0
|
||||
(:states
|
||||
snow-log-button-idle-down
|
||||
snow-log-button-idle-up
|
||||
snow-log-button-activate)
|
||||
)
|
||||
|
||||
;; - Functions
|
||||
@@ -35459,35 +35490,13 @@
|
||||
;; - Unknowns
|
||||
|
||||
(define-extern *snow-switch-sg* skeleton-group)
|
||||
(define-extern snow-log-button-idle-down (state snow-log-button)) ;; unknown type
|
||||
(define-extern snow-log-button-idle-up (state snow-log-button)) ;; unknown type
|
||||
(define-extern snow-log-button-activate (state snow-log-button)) ;; unknown type
|
||||
(define-extern *snow-log-sg* skeleton-group)
|
||||
(define-extern snow-log-wait-for-master (state snow-log)) ;; unknown type
|
||||
(define-extern snow-log-active (state snow-log)) ;; unknown type
|
||||
(define-extern snow-log-activate (state snow-log)) ;; unknown type
|
||||
(define-extern snow-log-hidden (state snow-log)) ;; unknown type
|
||||
(define-extern snow-switch-idle-down (state snow-switch)) ;; unknown type
|
||||
(define-extern snow-switch-idle-up (state snow-switch)) ;; unknown type
|
||||
(define-extern *snowcam-sg* skeleton-group)
|
||||
(define-extern snow-switch-activate (state snow-switch)) ;; unknown type
|
||||
(define-extern *snow-gears-sg* skeleton-group)
|
||||
(define-extern snow-gears-idle (state snow-gears)) ;; unknown type
|
||||
(define-extern snow-gears-stopped (state snow-gears)) ;; unknown type
|
||||
(define-extern snow-gears-halt (state snow-gears)) ;; unknown type
|
||||
(define-extern snow-gears-activate (state snow-gears)) ;; unknown type
|
||||
(define-extern *snow-fort-gate-sg* skeleton-group)
|
||||
(define-extern snow-fort-gate-idle-open (state snow-fort-gate)) ;; unknown type
|
||||
(define-extern snow-fort-gate-idle-closed (state snow-fort-gate)) ;; unknown type
|
||||
(define-extern snow-fort-gate-activate (state snow-fort-gate)) ;; unknown type
|
||||
(define-extern *snow-spatula-sg* skeleton-group)
|
||||
(define-extern snow-spatula-idle (state snow-spatula)) ;; unknown type
|
||||
(define-extern *snowpusher-sg* skeleton-group)
|
||||
(define-extern snowpusher-idle (state snowpusher)) ;; unknown type
|
||||
(define-extern *snow-eggtop-sg* skeleton-group)
|
||||
(define-extern snow-eggtop-idle-down (state snow-eggtop)) ;; unknown type
|
||||
(define-extern snow-eggtop-idle-up (state snow-eggtop)) ;; unknown type
|
||||
(define-extern snow-eggtop-activate (state snow-eggtop)) ;; unknown type
|
||||
|
||||
|
||||
;; ----------------------
|
||||
@@ -35916,7 +35925,7 @@
|
||||
|
||||
(deftype darkecobarrel (darkecobarrel-base)
|
||||
((self-override darkecobarrel :score 100 :offset 28)
|
||||
(spawn-array (array handle) :offset-assert 192) ;; likely to darkecobarrels
|
||||
(spawn-array (array int64) :offset-assert 192) ;; likely to darkecobarrels
|
||||
(cur-spawn int32 :offset-assert 196)
|
||||
)
|
||||
:method-count-assert 20
|
||||
@@ -35987,12 +35996,12 @@
|
||||
|
||||
(define-extern darkecobarrel-base-init (function res-lump path-control-flag :behavior darkecobarrel-base))
|
||||
(define-extern darkecobarrel-base-time (function int :behavior darkecobarrel-base))
|
||||
(define-extern darkecobarrel-cycle-time (function handle :behavior darkecobarrel)) ;; likely to darkecobarrels
|
||||
(define-extern darkecobarrel-cycle-time (function int :behavior darkecobarrel)) ;; likely to darkecobarrels
|
||||
(define-extern darkecobarrel-advance-curspawn (function none :behavior darkecobarrel))
|
||||
(define-extern darkecobarrel-mover-init-by-other (function res-lump float uint uint none :behavior darkecobarrel-mover))
|
||||
(define-extern darkecobarrel-base-done? (function float symbol :behavior darkecobarrel-base))
|
||||
(define-extern darkecobarrel-base-pos (function int float :behavior darkecobarrel-base))
|
||||
(define-extern darkecobarrel-mover-pos (function uint :behavior darkecobarrel-mover))
|
||||
(define-extern darkecobarrel-mover-pos (function none :behavior darkecobarrel-mover))
|
||||
|
||||
;; - Unknowns
|
||||
|
||||
|
||||
@@ -4682,7 +4682,7 @@
|
||||
|
||||
"robber-find-ground": [
|
||||
[16, "vector"],
|
||||
[32, "collide-mesh-cache-tri"],
|
||||
[32, "collide-tri-result"],
|
||||
[128, "vector"]
|
||||
],
|
||||
|
||||
|
||||
@@ -4779,6 +4779,7 @@
|
||||
],
|
||||
|
||||
"(code snow-eggtop-activate)": [
|
||||
[56, "v1", "snowcam"],
|
||||
[87, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
@@ -4808,8 +4809,7 @@
|
||||
[12, "v1", "art-joint-anim"],
|
||||
[62, "v1", "art-joint-anim"],
|
||||
[112, "v1", "art-joint-anim"],
|
||||
[242, "gp", "handle"],
|
||||
[245, "gp", "handle"],
|
||||
[[242, 249], "gp", "handle"],
|
||||
[274, "v1", "art-joint-anim"],
|
||||
[346, "v1", "art-joint-anim"]
|
||||
],
|
||||
@@ -7356,13 +7356,24 @@
|
||||
"ray-cylinder-intersect": [
|
||||
[20, "v1", "uint"],
|
||||
[20, "a0", "uint"]
|
||||
// [25, "v1", "uint"],
|
||||
// [25, "a0", "uint"]
|
||||
],
|
||||
|
||||
"(anon-function 15 pelican)": [
|
||||
[24, "v1", "collectable"]
|
||||
],
|
||||
|
||||
"(method 11 darkecobarrel)": [
|
||||
["_stack_", 16, "res-tag"]
|
||||
],
|
||||
|
||||
"(method 11 snowpusher)": [
|
||||
["_stack_", 16, "res-tag"],
|
||||
[19, "v0", "(pointer int32)"]
|
||||
],
|
||||
|
||||
"(code snow-switch-activate)": [
|
||||
[53, "v1", "snowcam"]
|
||||
],
|
||||
|
||||
"placeholder-do-not-add-below": []
|
||||
}
|
||||
|
||||
@@ -3857,5 +3857,11 @@
|
||||
}
|
||||
},
|
||||
|
||||
"(code pov-camera-playing snowcam)": {
|
||||
"vars": {
|
||||
"gp-2": ["gp-2", "handle"]
|
||||
}
|
||||
},
|
||||
|
||||
"aaaaaaaaaaaaaaaaaaaaaaa": {}
|
||||
}
|
||||
|
||||
@@ -221,8 +221,7 @@
|
||||
(when (and (and *display-vol-marks* (logtest? (-> a0-1 flags) 1)) (logtest? (-> obj flags) 2))
|
||||
(when (zero? (-> obj debug-point))
|
||||
(let ((s5-0 pp))
|
||||
(let ((s6-1 (-> obj process)))
|
||||
)
|
||||
(set! pp (-> obj process))
|
||||
(let ((s4-0 0))
|
||||
(dotimes (v1-8 (-> obj pos-vol-count))
|
||||
(+! s4-0 (-> obj pos-vol v1-8 num-planes))
|
||||
@@ -233,8 +232,7 @@
|
||||
(set! (-> obj debug-point) (new 'debug 'vector-array (* 10 s4-0)))
|
||||
(set! (-> obj debug-normal) (new 'debug 'vector-array (* 10 s4-0)))
|
||||
)
|
||||
(let ((s6-2 s5-0))
|
||||
)
|
||||
(set! pp s5-0)
|
||||
)
|
||||
(set! (-> obj debug-point length) 0)
|
||||
(set! (-> obj debug-normal length) 0)
|
||||
|
||||
@@ -113,33 +113,19 @@
|
||||
(and *display-water-marks* (logtest? (-> obj flags) 1))
|
||||
)
|
||||
|
||||
(defmethod
|
||||
new
|
||||
water-control
|
||||
((allocation symbol)
|
||||
(type-to-make type)
|
||||
(arg0 process)
|
||||
(arg1 int)
|
||||
(arg2 float)
|
||||
(arg3 float)
|
||||
(arg4 float)
|
||||
)
|
||||
(let
|
||||
((v0-0
|
||||
(object-new allocation type-to-make (the-as int (-> type-to-make size)))
|
||||
)
|
||||
(defmethod new water-control ((allocation symbol) (type-to-make type) (arg0 process) (arg1 int) (arg2 float) (arg3 float) (arg4 float))
|
||||
(let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
|
||||
(set! (-> v0-0 process) (the-as process-drawable arg0))
|
||||
(set! (-> v0-0 joint-index) arg1)
|
||||
(set! (-> v0-0 wade-height) arg4)
|
||||
(set! (-> v0-0 swim-height) arg3)
|
||||
(set! (-> v0-0 bottom-height) 32768.0)
|
||||
(set! (-> v0-0 ripple-size) 1638.4)
|
||||
(set! (-> v0-0 volume) (the-as handle #f))
|
||||
(set! (-> v0-0 drip-mult) 1.0)
|
||||
(set! (-> v0-0 top-y-offset) arg2)
|
||||
v0-0
|
||||
)
|
||||
(set! (-> v0-0 process) (the-as process-drawable arg0))
|
||||
(set! (-> v0-0 joint-index) arg1)
|
||||
(set! (-> v0-0 wade-height) arg4)
|
||||
(set! (-> v0-0 swim-height) arg3)
|
||||
(set! (-> v0-0 bottom-height) 32768.0)
|
||||
(set! (-> v0-0 ripple-size) 1638.4)
|
||||
(set! (-> v0-0 volume) (the-as handle #f))
|
||||
(set! (-> v0-0 drip-mult) 1.0)
|
||||
(set! (-> v0-0 top-y-offset) arg2)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod distance-from-surface water-control ((obj water-control))
|
||||
@@ -162,7 +148,7 @@
|
||||
(:methods
|
||||
(water-vol-idle () _type_ :state 20)
|
||||
(water-vol-startup () _type_ :state 21)
|
||||
(TODO-RENAME-22 (_type_) ripple-wave-set 22)
|
||||
(TODO-RENAME-22 (_type_) none 22)
|
||||
(reset-root! (_type_) none 23)
|
||||
(set-stack-size! (_type_) none 24)
|
||||
(TODO-RENAME-25 (_type_) object 25)
|
||||
|
||||
+1384
-2074
File diff suppressed because it is too large
Load Diff
@@ -5,16 +5,6 @@
|
||||
;; name in dgo: target-death
|
||||
;; dgos: GAME, ENGINE
|
||||
|
||||
;; TODO - for target-flut
|
||||
; (define-extern target-hit-effect (function attack-info none :behavior target))
|
||||
; (define-extern *smack-mods* surface) ;; unknown type
|
||||
; (define-extern target-hit-orient (function attack-info vector symbol :behavior target))
|
||||
; (define-extern target-hit-move (function attack-info symbol (function none :behavior target) float none :behavior target))
|
||||
|
||||
(define-extern target-title (state target)) ;; unknown type
|
||||
(define-extern target-demo (state target)) ;; unknown type
|
||||
(define-extern target-warp-in (state target)) ;; unknown type
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defskelgroup *deathcam-sg* deathcam
|
||||
@@ -454,10 +444,8 @@
|
||||
(set-continue! *game-info* "lavatube-end")
|
||||
)
|
||||
)
|
||||
(go target-warp-in s5-6 (-> arg0 trans))
|
||||
)
|
||||
enter-state
|
||||
(-> arg0 trans)
|
||||
(go target-warp-in)
|
||||
)
|
||||
(else
|
||||
(let ((s5-7 (-> *display* base-frame-counter)))
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
(:states
|
||||
(target-clone-anim handle)
|
||||
(target-death symbol)
|
||||
target-demo
|
||||
(target-hit-ground symbol)
|
||||
(target-racing-bounce float float symbol)
|
||||
(target-racing-clone-anim handle)
|
||||
@@ -103,8 +104,7 @@
|
||||
(target-racing-hit handle attack-info)
|
||||
(target-racing-jump float float symbol)
|
||||
target-title
|
||||
target-demo
|
||||
target-warp-in
|
||||
(target-warp-in vector vector)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -368,12 +368,12 @@
|
||||
(dark-crystal-run-away #x439)
|
||||
(cave-trap-nest-hint #x440)
|
||||
(snow-fort-reminder #x443)
|
||||
|
||||
|
||||
(ram-boss-red-eco-hint #x444)
|
||||
|
||||
(ice-cube-hint #x448)
|
||||
|
||||
(snowy-turned-on-yellow-vents #x44c)
|
||||
|
||||
(village3-warp-gate-reminder #x452)
|
||||
(village3-warp-gate-reminder=annoyed #x453)
|
||||
(village3-warp-gate-reminder-very-annoyed #x454)
|
||||
|
||||
@@ -741,22 +741,15 @@ battlecontroller-default-event-handler
|
||||
|
||||
(defmethod deactivate battlecontroller ((obj battlecontroller))
|
||||
(with-pp
|
||||
(let ((gp-0 pp))
|
||||
(let ((s6-1 obj))
|
||||
)
|
||||
(battlecontroller-off)
|
||||
(let ((s6-2 gp-0))
|
||||
)
|
||||
(let ((gp-0 pp))
|
||||
(set! pp obj)
|
||||
(battlecontroller-off)
|
||||
(set! pp gp-0)
|
||||
)
|
||||
((the-as (function process-drawable none) (find-parent-method battlecontroller 10)) obj)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
((the-as
|
||||
(function process-drawable none)
|
||||
(find-parent-method battlecontroller 10)
|
||||
)
|
||||
obj
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod TODO-RENAME-27 battlecontroller ((obj battlecontroller))
|
||||
|
||||
@@ -16,485 +16,430 @@
|
||||
)
|
||||
|
||||
|
||||
(define
|
||||
ripple-for-misty-dark-eco-pool
|
||||
(new 'static 'ripple-wave-set
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 3.0
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 40.0 :xdiv 2 :speed 0.5)
|
||||
(new 'static 'ripple-wave :scale 15.0 :xdiv -2 :zdiv 2 :speed 2.0)
|
||||
(new 'static 'ripple-wave :scale 3.0 :xdiv 5 :zdiv 3 :speed 2.0)
|
||||
(new 'static 'ripple-wave)
|
||||
)
|
||||
)
|
||||
)
|
||||
(define ripple-for-misty-dark-eco-pool (new 'static 'ripple-wave-set
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 3.0
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 40.0 :xdiv 2 :speed 0.5)
|
||||
(new 'static 'ripple-wave :scale 15.0 :xdiv -2 :zdiv 2 :speed 2.0)
|
||||
(new 'static 'ripple-wave :scale 3.0 :xdiv 5 :zdiv 3 :speed 2.0)
|
||||
(new 'static 'ripple-wave)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(define
|
||||
ripple-for-maincave-dark-eco-pool
|
||||
(new 'static 'ripple-wave-set
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 8.57
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 14.0 :xdiv 1 :speed 1.0)
|
||||
(new 'static 'ripple-wave :scale 5.25 :xdiv -1 :zdiv 1 :speed 4.0)
|
||||
(new 'static 'ripple-wave :scale 0.7 :xdiv 5 :zdiv 3 :speed 2.0)
|
||||
(new 'static 'ripple-wave)
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 8.57
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 14.0 :xdiv 1 :speed 1.0)
|
||||
(new 'static 'ripple-wave :scale 5.25 :xdiv -1 :zdiv 1 :speed 4.0)
|
||||
(new 'static 'ripple-wave :scale 0.7 :xdiv 5 :zdiv 3 :speed 2.0)
|
||||
(new 'static 'ripple-wave)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(define
|
||||
ripple-for-finalboss-dark-eco-pool
|
||||
(new 'static 'ripple-wave-set
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 4.0
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 25.0 :xdiv 2 :speed -2.0)
|
||||
(new 'static 'ripple-wave :scale 15.0 :xdiv -2 :zdiv 2 :speed 3.0)
|
||||
(new 'static 'ripple-wave :scale 4.0 :xdiv 5 :zdiv 3 :speed 4.0)
|
||||
(new 'static 'ripple-wave)
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 4.0
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 25.0 :xdiv 2 :speed -2.0)
|
||||
(new 'static 'ripple-wave :scale 15.0 :xdiv -2 :zdiv 2 :speed 3.0)
|
||||
(new 'static 'ripple-wave :scale 4.0 :xdiv 5 :zdiv 3 :speed 4.0)
|
||||
(new 'static 'ripple-wave)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(define
|
||||
ripple-for-dark-eco-pool
|
||||
(new 'static 'ripple-wave-set
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 3.0
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.0)
|
||||
(new 'static 'ripple-wave :scale 15.0 :xdiv -1 :zdiv 1 :speed 4.0)
|
||||
(new 'static 'ripple-wave :scale 2.0 :xdiv 5 :zdiv 3 :speed 2.0)
|
||||
(new 'static 'ripple-wave)
|
||||
)
|
||||
)
|
||||
)
|
||||
(define ripple-for-dark-eco-pool (new 'static 'ripple-wave-set
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 3.0
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.0)
|
||||
(new 'static 'ripple-wave :scale 15.0 :xdiv -1 :zdiv 1 :speed 4.0)
|
||||
(new 'static 'ripple-wave :scale 2.0 :xdiv 5 :zdiv 3 :speed 2.0)
|
||||
(new 'static 'ripple-wave)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(define
|
||||
ripple-for-sunken-dark-eco-helix-room
|
||||
(new 'static 'ripple-wave-set
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 8.0
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 15.0 :xdiv 1 :speed 1.0)
|
||||
(new 'static 'ripple-wave :scale 5.625 :xdiv -1 :zdiv 1 :speed 4.0)
|
||||
(new 'static 'ripple-wave :scale 0.75 :xdiv 5 :zdiv 3 :speed 2.0)
|
||||
(new 'static 'ripple-wave)
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 8.0
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 15.0 :xdiv 1 :speed 1.0)
|
||||
(new 'static 'ripple-wave :scale 5.625 :xdiv -1 :zdiv 1 :speed 4.0)
|
||||
(new 'static 'ripple-wave :scale 0.75 :xdiv 5 :zdiv 3 :speed 2.0)
|
||||
(new 'static 'ripple-wave)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod TODO-RENAME-25 dark-eco-pool ((obj dark-eco-pool))
|
||||
(let ((t9-0 (method-of-type water-anim TODO-RENAME-25)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(t9-0 obj)
|
||||
)
|
||||
(set! (-> obj flags) (logand -8388609 (-> obj flags)))
|
||||
(set! (-> obj flags) (logior #x1000000 (-> obj flags)))
|
||||
(let
|
||||
((v0-1
|
||||
((the-as
|
||||
(function res-lump symbol symbol float structure (pointer res-tag) pointer object)
|
||||
(method-of-type res-lump get-property-struct)
|
||||
)
|
||||
(-> obj entity)
|
||||
'attack-event
|
||||
'interp
|
||||
-1000000000.0
|
||||
'dark-eco-pool
|
||||
(the-as (pointer res-tag) #f)
|
||||
*res-static-buf*
|
||||
)
|
||||
)
|
||||
(let ((v0-1 ((the-as
|
||||
(function res-lump symbol symbol float structure (pointer res-tag) pointer object)
|
||||
(method-of-type res-lump get-property-struct)
|
||||
)
|
||||
(-> obj entity)
|
||||
'attack-event
|
||||
'interp
|
||||
-1000000000.0
|
||||
'dark-eco-pool
|
||||
(the-as (pointer res-tag) #f)
|
||||
*res-static-buf*
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> obj attack-event) (the-as symbol v0-1))
|
||||
v0-1
|
||||
)
|
||||
(set! (-> obj attack-event) (the-as symbol v0-1))
|
||||
v0-1
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod TODO-RENAME-22 dark-eco-pool ((obj dark-eco-pool))
|
||||
(local-vars (v0-3 ripple-wave-set))
|
||||
(let ((t9-0 (method-of-type water-anim TODO-RENAME-22)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(t9-0 obj)
|
||||
)
|
||||
(let ((gp-0 (new 'process 'ripple-control)))
|
||||
(set! (-> obj draw ripple) gp-0)
|
||||
(set! (-> gp-0 global-scale) 3072.0)
|
||||
(set! (-> gp-0 close-fade-dist) 163840.0)
|
||||
(set! (-> gp-0 far-fade-dist) 245760.0)
|
||||
(set! (-> gp-0 waveform) ripple-for-dark-eco-pool)
|
||||
(set! (-> gp-0 query) (new 'process 'ripple-merc-query 100))
|
||||
(case (-> obj look)
|
||||
((32)
|
||||
(set! v0-3 ripple-for-misty-dark-eco-pool)
|
||||
(set! (-> gp-0 waveform) v0-3)
|
||||
v0-3
|
||||
(set! (-> obj draw ripple) gp-0)
|
||||
(set! (-> gp-0 global-scale) 3072.0)
|
||||
(set! (-> gp-0 close-fade-dist) 163840.0)
|
||||
(set! (-> gp-0 far-fade-dist) 245760.0)
|
||||
(set! (-> gp-0 waveform) ripple-for-dark-eco-pool)
|
||||
(set! (-> gp-0 query) (new 'process 'ripple-merc-query 100))
|
||||
(case (-> obj look)
|
||||
((32)
|
||||
(set! (-> gp-0 waveform) ripple-for-misty-dark-eco-pool)
|
||||
)
|
||||
((15 16 17 18 19 20)
|
||||
(set! (-> gp-0 waveform) ripple-for-maincave-dark-eco-pool)
|
||||
)
|
||||
((40)
|
||||
(set! (-> gp-0 waveform) ripple-for-sunken-dark-eco-helix-room)
|
||||
)
|
||||
((41)
|
||||
(set! (-> gp-0 waveform) ripple-for-finalboss-dark-eco-pool)
|
||||
)
|
||||
)
|
||||
((15 16 17 18 19 20)
|
||||
(set! v0-3 ripple-for-maincave-dark-eco-pool)
|
||||
(set! (-> gp-0 waveform) v0-3)
|
||||
v0-3
|
||||
)
|
||||
((40)
|
||||
(set! v0-3 ripple-for-sunken-dark-eco-helix-room)
|
||||
(set! (-> gp-0 waveform) v0-3)
|
||||
v0-3
|
||||
)
|
||||
((41)
|
||||
(set! v0-3 ripple-for-finalboss-dark-eco-pool)
|
||||
(set! (-> gp-0 waveform) v0-3)
|
||||
v0-3
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-group-id-table* 444)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 1
|
||||
:duration #xbb8
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-dark-eco-nasty"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 1
|
||||
(sp-item 2020 :fade-after (meters 50.0))
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-group-id-table* 444)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 1
|
||||
:duration #xbb8
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-dark-eco-nasty"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 1 (sp-item 2020 :fade-after (meters 50.0)))
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 2020)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 17
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-y (meters 0.0))
|
||||
(sp-rnd-flt spt-scale-x (meters 1.0) (meters 4.0) 1.0)
|
||||
(sp-flt spt-scale-y (meters 0.25))
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-rnd-flt spt-a 96.0 32.0 1.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.1875))
|
||||
(sp-flt spt-scalevel-y (meters -0.001875))
|
||||
(sp-flt spt-fade-a -3.2)
|
||||
(sp-int spt-timer 10)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-int spt-next-time 15)
|
||||
(sp-launcher-by-id spt-next-launcher 2021)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-id-table* 2020) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 17
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-y (meters 0.0))
|
||||
(sp-rnd-flt spt-scale-x (meters 1.0) (meters 4.0) 1.0)
|
||||
(sp-flt spt-scale-y (meters 0.25))
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-rnd-flt spt-a 96.0 32.0 1.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.1875))
|
||||
(sp-flt spt-scalevel-y (meters -0.001875))
|
||||
(sp-flt spt-fade-a -3.2)
|
||||
(sp-int spt-timer 10)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-int spt-next-time 15)
|
||||
(sp-launcher-by-id spt-next-launcher 2021)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 2021)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 5
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 128.0 128.0 1.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-flt spt-fade-a -1.28)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-id-table* 2021)
|
||||
(new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 128.0 128.0 1.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-flt spt-fade-a -1.28)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-group-id-table* 445)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 19
|
||||
:duration #x258
|
||||
:linger-duration #x258
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-dark-eco-pool-nasty"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 19
|
||||
(sp-item 2056 :fade-after (meters 100.0) :period 600 :length 5)
|
||||
(sp-item 2057 :fade-after (meters 100.0) :period 600 :length 5 :binding 2052)
|
||||
(sp-item 2052 :flags (start-dead launch-asap) :binding 2053)
|
||||
(sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2052 :flags (start-dead launch-asap) :binding 2053)
|
||||
(sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2052 :flags (start-dead launch-asap) :binding 2053)
|
||||
(sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2052 :flags (start-dead launch-asap) :binding 2053)
|
||||
(sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2058 :fade-after (meters 100.0) :period 600 :length 5 :binding 2054)
|
||||
(sp-item 2054 :flags (start-dead launch-asap) :binding 2055)
|
||||
(sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2054 :flags (start-dead launch-asap) :binding 2055)
|
||||
(sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2054 :flags (start-dead launch-asap) :binding 2055)
|
||||
(sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2054 :flags (start-dead launch-asap) :binding 2055)
|
||||
(sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 49152.0)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-group-id-table* 445)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 19
|
||||
:duration #x258
|
||||
:linger-duration #x258
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-dark-eco-pool-nasty"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 19
|
||||
(sp-item 2056 :fade-after (meters 100.0) :period 600 :length 5)
|
||||
(sp-item 2057 :fade-after (meters 100.0) :period 600 :length 5 :binding 2052)
|
||||
(sp-item 2052 :flags (start-dead launch-asap) :binding 2053)
|
||||
(sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2052 :flags (start-dead launch-asap) :binding 2053)
|
||||
(sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2052 :flags (start-dead launch-asap) :binding 2053)
|
||||
(sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2052 :flags (start-dead launch-asap) :binding 2053)
|
||||
(sp-item 2053 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2058 :fade-after (meters 100.0) :period 600 :length 5 :binding 2054)
|
||||
(sp-item 2054 :flags (start-dead launch-asap) :binding 2055)
|
||||
(sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2054 :flags (start-dead launch-asap) :binding 2055)
|
||||
(sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2054 :flags (start-dead launch-asap) :binding 2055)
|
||||
(sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2054 :flags (start-dead launch-asap) :binding 2055)
|
||||
(sp-item 2055 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 49152.0)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 2056)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 13
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 8.0))
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 0.0 96.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 64.0 32.0 1.0)
|
||||
(sp-flt spt-a 64.0)
|
||||
(sp-flt spt-fade-a -1.8285716)
|
||||
(sp-int spt-timer 54)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-id-table* 2056) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 13
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 8.0))
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 0.0 96.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 64.0 32.0 1.0)
|
||||
(sp-flt spt-a 64.0)
|
||||
(sp-flt spt-fade-a -1.8285716)
|
||||
(sp-int spt-timer 54)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 2057)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 14
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
|
||||
(sp-rnd-flt spt-num 1.0 6.0 1.0)
|
||||
(sp-flt spt-y (meters 1.0))
|
||||
(sp-flt spt-scale-x (meters 0.1))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-a 0.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0)
|
||||
(sp-flt spt-accel-y -3.4133334)
|
||||
(sp-flt spt-friction 0.94)
|
||||
(sp-int spt-timer 240)
|
||||
(sp-cpuinfo-flags bit3)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-id-table* 2057) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 14
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
|
||||
(sp-rnd-flt spt-num 1.0 6.0 1.0)
|
||||
(sp-flt spt-y (meters 1.0))
|
||||
(sp-flt spt-scale-x (meters 0.1))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-a 0.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0)
|
||||
(sp-flt spt-accel-y -3.4133334)
|
||||
(sp-flt spt-friction 0.94)
|
||||
(sp-int spt-timer 240)
|
||||
(sp-cpuinfo-flags bit3)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 2052)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 21
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0)
|
||||
(sp-rnd-flt spt-z 1228.8 1228.8 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 0.0 96.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 64.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-omega 0.0 65536.0 1.0)
|
||||
(sp-rnd-flt spt-vel-x (meters 0.026666667) (meters 0.10666667) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters -0.000909091))
|
||||
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.26666668)
|
||||
(sp-flt spt-fade-a -0.19393939)
|
||||
(sp-int-plain-rnd spt-timer 60 179 1)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit7 bit14)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-id-table* 2052) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 21
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0)
|
||||
(sp-rnd-flt spt-z 1228.8 1228.8 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 0.0 96.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 64.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-omega 0.0 65536.0 1.0)
|
||||
(sp-rnd-flt spt-vel-x (meters 0.026666667) (meters 0.10666667) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters -0.000909091))
|
||||
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.26666668)
|
||||
(sp-flt spt-fade-a -0.19393939)
|
||||
(sp-int-plain-rnd spt-timer 60 179 1)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit7 bit14)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 2053)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 17
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.1) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 32.0 96.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 64.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 32.0 1.0)
|
||||
(sp-flt spt-scalevel-x (meters -0.0006190476))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-a -0.01904762)
|
||||
(sp-rnd-flt spt-accel-y -0.40960002 -0.6144 1.0)
|
||||
(sp-int-plain-rnd spt-timer 30 239 1)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-int spt-next-time 240)
|
||||
(sp-launcher-by-id spt-next-launcher 198)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-id-table* 2053) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 17
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.1) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 32.0 96.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 64.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 32.0 1.0)
|
||||
(sp-flt spt-scalevel-x (meters -0.0006190476))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-a -0.01904762)
|
||||
(sp-rnd-flt spt-accel-y -0.40960002 -0.6144 1.0)
|
||||
(sp-int-plain-rnd spt-timer 30 239 1)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-int spt-next-time 240)
|
||||
(sp-launcher-by-id spt-next-launcher 198)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 2058)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 14
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
|
||||
(sp-rnd-flt spt-num 1.0 6.0 1.0)
|
||||
(sp-flt spt-y (meters 1.0))
|
||||
(sp-flt spt-scale-x (meters 0.1))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-a 0.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0)
|
||||
(sp-flt spt-accel-y -3.4133334)
|
||||
(sp-flt spt-friction 0.94)
|
||||
(sp-int spt-timer 240)
|
||||
(sp-cpuinfo-flags bit3)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-id-table* 2058) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 14
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
|
||||
(sp-rnd-flt spt-num 1.0 6.0 1.0)
|
||||
(sp-flt spt-y (meters 1.0))
|
||||
(sp-flt spt-scale-x (meters 0.1))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-a 0.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0)
|
||||
(sp-flt spt-accel-y -3.4133334)
|
||||
(sp-flt spt-friction 0.94)
|
||||
(sp-int spt-timer 240)
|
||||
(sp-cpuinfo-flags bit3)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 2054)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 21
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0)
|
||||
(sp-rnd-flt spt-z 1228.8 1228.8 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 16.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 16.0 1.0)
|
||||
(sp-rnd-flt spt-b 192.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-omega 0.0 65536.0 1.0)
|
||||
(sp-rnd-flt spt-vel-x (meters 0.026666667) (meters 0.10666667) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters -0.000909091))
|
||||
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.26666668)
|
||||
(sp-flt spt-fade-a -0.19393939)
|
||||
(sp-int-plain-rnd spt-timer 60 179 1)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit7 bit14)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-id-table* 2054) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 21
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0)
|
||||
(sp-rnd-flt spt-z 1228.8 1228.8 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 16.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 16.0 1.0)
|
||||
(sp-rnd-flt spt-b 192.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-omega 0.0 65536.0 1.0)
|
||||
(sp-rnd-flt spt-vel-x (meters 0.026666667) (meters 0.10666667) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters -0.000909091))
|
||||
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.26666668)
|
||||
(sp-flt spt-fade-a -0.19393939)
|
||||
(sp-int-plain-rnd spt-timer 60 179 1)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit7 bit14)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 2055)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 17
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.1) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 16.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 16.0 1.0)
|
||||
(sp-rnd-flt spt-b 192.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 32.0 1.0)
|
||||
(sp-flt spt-scalevel-x (meters -0.0006190476))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-a -0.01904762)
|
||||
(sp-rnd-flt spt-accel-y -0.40960002 -0.6144 1.0)
|
||||
(sp-int-plain-rnd spt-timer 30 239 1)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-int spt-next-time 240)
|
||||
(sp-launcher-by-id spt-next-launcher 198)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-id-table* 2055) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 17
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.1) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 16.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 16.0 1.0)
|
||||
(sp-rnd-flt spt-b 192.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 32.0 1.0)
|
||||
(sp-flt spt-scalevel-x (meters -0.0006190476))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-a -0.01904762)
|
||||
(sp-rnd-flt spt-accel-y -0.40960002 -0.6144 1.0)
|
||||
(sp-int-plain-rnd spt-timer 30 239 1)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-int spt-next-time 240)
|
||||
(sp-launcher-by-id spt-next-launcher 198)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate water-vol-idle (dark-eco-pool)
|
||||
:virtual #t
|
||||
:trans
|
||||
(behavior ()
|
||||
(let ((t9-0 (-> (method-of-type water-anim water-vol-idle) trans)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(let* ((gp-0 (-> self draw ripple))
|
||||
(f0-1 (the float (logand (-> *display* base-frame-counter) #xffff)))
|
||||
(f0-3 (cos (* 5.0 f0-1)))
|
||||
(f30-0 (* f0-3 f0-3))
|
||||
(let ((t9-0 (-> (method-of-type water-anim water-vol-idle) trans)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
(let ((s5-0 (-> self draw ripple query)))
|
||||
(set! (-> self draw ripple send-query) #t)
|
||||
(set! (-> s5-0 start-vertex) (rand-vu-int-range 0 255))
|
||||
(set! (-> s5-0 vertex-skip) 256)
|
||||
(when (zero? (rand-vu-int-range 0 15))
|
||||
(when
|
||||
(and
|
||||
(nonzero? (-> s5-0 vertex-count))
|
||||
(< #x32000 (memory-free *nk-dead-pool*))
|
||||
)
|
||||
(let ((s3-0 (rand-vu-int-range 0 (+ (-> s5-0 vertex-count) -1)))
|
||||
(s4-1 (get-process *default-dead-pool* part-tracker #x4000))
|
||||
)
|
||||
(when s4-1
|
||||
(let ((t9-7 (method-of-type part-tracker activate)))
|
||||
(t9-7
|
||||
(the-as part-tracker s4-1)
|
||||
*entity-pool*
|
||||
'part-tracker
|
||||
(the-as pointer #x70004000)
|
||||
)
|
||||
(let* ((gp-0 (-> self draw ripple))
|
||||
(f0-1 (the float (logand (-> *display* base-frame-counter) #xffff)))
|
||||
(f0-3 (cos (* 5.0 f0-1)))
|
||||
(f30-0 (* f0-3 f0-3))
|
||||
)
|
||||
(let ((s5-0 (-> self draw ripple query)))
|
||||
(set! (-> self draw ripple send-query) #t)
|
||||
(set! (-> s5-0 start-vertex) (rand-vu-int-range 0 255))
|
||||
(set! (-> s5-0 vertex-skip) 256)
|
||||
(when (zero? (rand-vu-int-range 0 15))
|
||||
(when (and (nonzero? (-> s5-0 vertex-count)) (< #x32000 (memory-free *nk-dead-pool*)))
|
||||
(let ((s3-0 (rand-vu-int-range 0 (+ (-> s5-0 vertex-count) -1)))
|
||||
(s4-1 (get-process *default-dead-pool* part-tracker #x4000))
|
||||
)
|
||||
(when s4-1
|
||||
(let ((t9-7 (method-of-type part-tracker activate)))
|
||||
(t9-7 (the-as part-tracker s4-1) *entity-pool* 'part-tracker (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process s4-1 part-tracker-init (-> *part-group-id-table* 445) -1 #f #f #f (-> s5-0 data s3-0))
|
||||
(-> s4-1 ppointer)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(case (-> self look)
|
||||
((32)
|
||||
(set! (-> gp-0 global-scale) (* 4096.0 (* 1.5 (+ 1.0 f30-0))))
|
||||
(set! (-> gp-0 individual-normal-scale) (+ 0.5 (* 0.5 f30-0)))
|
||||
)
|
||||
(else
|
||||
(set! (-> gp-0 global-scale) (* 4096.0 (* 3.0 (+ 1.0 f30-0))))
|
||||
(set! (-> gp-0 individual-normal-scale) (+ 0.5 (* 0.5 f30-0)))
|
||||
)
|
||||
(run-now-in-process
|
||||
s4-1
|
||||
part-tracker-init
|
||||
(-> *part-group-id-table* 445)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> s5-0 data s3-0)
|
||||
)
|
||||
(-> s4-1 ppointer)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(case (-> self look)
|
||||
((32)
|
||||
(set! (-> gp-0 global-scale) (* 4096.0 (* 1.5 (+ 1.0 f30-0))))
|
||||
(set! (-> gp-0 individual-normal-scale) (+ 0.5 (* 0.5 f30-0)))
|
||||
)
|
||||
(else
|
||||
(set! (-> gp-0 global-scale) (* 4096.0 (* 3.0 (+ 1.0 f30-0))))
|
||||
(set! (-> gp-0 individual-normal-scale) (+ 0.5 (* 0.5 f30-0)))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -964,7 +964,8 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(the-as ripple-wave-set (ja-post))
|
||||
(ja-post)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -1493,11 +1493,9 @@
|
||||
(set! (-> v1-2 global-scale) 3072.0)
|
||||
(set! (-> v1-2 close-fade-dist) 163840.0)
|
||||
(set! (-> v1-2 far-fade-dist) 245760.0)
|
||||
(let ((v0-2 ripple-for-jungle-water))
|
||||
(set! (-> v1-2 waveform) v0-2)
|
||||
v0-2
|
||||
)
|
||||
(set! (-> v1-2 waveform) ripple-for-jungle-water)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,7 +5,8 @@
|
||||
;; name in dgo: mud
|
||||
;; dgos: L1, MIS
|
||||
|
||||
;; definition of type mud
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype mud (water-anim)
|
||||
()
|
||||
:heap-base #x70
|
||||
@@ -14,74 +15,66 @@
|
||||
:flag-assert #x1e007000dc
|
||||
)
|
||||
|
||||
;; definition for symbol ripple-for-mud, type ripple-wave-set
|
||||
(define
|
||||
ripple-for-mud
|
||||
(new 'static 'ripple-wave-set
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 1.0
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5)
|
||||
(new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5)
|
||||
(new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75)
|
||||
(new 'static 'ripple-wave)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for symbol ripple-for-small-mud, type ripple-wave-set
|
||||
(define
|
||||
ripple-for-small-mud
|
||||
(new 'static 'ripple-wave-set
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 1.0
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 20.0 :xdiv 2 :speed 0.5)
|
||||
(new 'static 'ripple-wave :scale 20.0 :xdiv -2 :zdiv 2 :speed 0.5)
|
||||
(new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75)
|
||||
(new 'static 'ripple-wave)
|
||||
)
|
||||
)
|
||||
)
|
||||
(define ripple-for-mud (new 'static 'ripple-wave-set
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 1.0
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5)
|
||||
(new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5)
|
||||
(new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75)
|
||||
(new 'static 'ripple-wave)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(define ripple-for-small-mud (new 'static 'ripple-wave-set
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 1.0
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 20.0 :xdiv 2 :speed 0.5)
|
||||
(new 'static 'ripple-wave :scale 20.0 :xdiv -2 :zdiv 2 :speed 0.5)
|
||||
(new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75)
|
||||
(new 'static 'ripple-wave)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 22 of type mud
|
||||
(defmethod TODO-RENAME-22 mud ((obj mud))
|
||||
(let ((t9-0 (method-of-type water-anim TODO-RENAME-22)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(t9-0 obj)
|
||||
)
|
||||
(set! (-> obj flags) (logand -8388609 (-> obj flags)))
|
||||
(set! (-> obj flags) (logior #x40000 (-> obj flags)))
|
||||
(let ((gp-0 (new 'process 'ripple-control)))
|
||||
(set! (-> obj draw ripple) gp-0)
|
||||
(set! (-> gp-0 global-scale) 3072.0)
|
||||
(set! (-> gp-0 waveform) ripple-for-mud)
|
||||
(let
|
||||
((v1-9
|
||||
(res-lump-data (-> obj entity) 'water-anim-fade-dist (pointer float))
|
||||
(set! (-> obj draw ripple) gp-0)
|
||||
(set! (-> gp-0 global-scale) 3072.0)
|
||||
(set! (-> gp-0 waveform) ripple-for-mud)
|
||||
(let ((v1-9 (res-lump-data (-> obj entity) 'water-anim-fade-dist (pointer float))))
|
||||
(when v1-9
|
||||
(set! (-> gp-0 close-fade-dist) (-> v1-9 0))
|
||||
(set! (-> gp-0 far-fade-dist) (-> v1-9 1))
|
||||
)
|
||||
)
|
||||
)
|
||||
(when v1-9
|
||||
(set! (-> gp-0 close-fade-dist) (-> v1-9 0))
|
||||
(set! (-> gp-0 far-fade-dist) (-> v1-9 1))
|
||||
)
|
||||
)
|
||||
(case (-> obj look)
|
||||
((21 25 29)
|
||||
(set! (-> gp-0 close-fade-dist) 4096000000.0)
|
||||
(set! (-> gp-0 far-fade-dist) 8192000000.0)
|
||||
(case (-> obj look)
|
||||
((21 25 29)
|
||||
(set! (-> gp-0 close-fade-dist) 4096000000.0)
|
||||
(set! (-> gp-0 far-fade-dist) 8192000000.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(case (-> obj look)
|
||||
((22 25 24 27 26 31)
|
||||
(let ((v0-3 ripple-for-small-mud))
|
||||
(set! (-> gp-0 waveform) v0-3)
|
||||
v0-3
|
||||
(case (-> obj look)
|
||||
((22 25 24 27 26 31)
|
||||
(set! (-> gp-0 waveform) ripple-for-small-mud)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1572,10 +1572,8 @@
|
||||
)
|
||||
(set! (-> obj flags) (logand -8388609 (-> obj flags)))
|
||||
(set! (-> obj flags) (logior #x2000000 (-> obj flags)))
|
||||
(let ((v0-2 'lava))
|
||||
(set! (-> obj attack-event) v0-2)
|
||||
(the-as ripple-wave-set v0-2)
|
||||
)
|
||||
(set! (-> obj attack-event) 'lava)
|
||||
(none)
|
||||
)
|
||||
|
||||
(deftype shortcut-boulder (process-drawable)
|
||||
|
||||
@@ -5,3 +5,907 @@
|
||||
;; name in dgo: rolling-robber
|
||||
;; dgos: L1, ROL
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defstate fuel-cell-spline-slider (fuel-cell)
|
||||
:trans
|
||||
(the-as (function none :behavior fuel-cell) hide-hud-quick)
|
||||
:code
|
||||
(behavior ((arg0 handle) (arg1 float) (arg2 float))
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(let ((v1-4 (-> self skel root-channel 0)))
|
||||
(set! (-> v1-4 frame-group) (the-as art-joint-anim (-> self draw art-group data 2)))
|
||||
)
|
||||
(if *target*
|
||||
(process-grab? *target*)
|
||||
)
|
||||
(hide-hud-quick)
|
||||
(set! *camera-look-through-other* 2)
|
||||
(set! (-> *camera-other-fov* data) 11650.845)
|
||||
(set! (-> *camera-other-trans* quad) (-> *math-camera* trans quad))
|
||||
(set! (-> *camera-other-root* quad) (-> *math-camera* trans quad))
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(while #t
|
||||
(dotimes (v1-14 (the int (-> *display* time-adjust-ratio)))
|
||||
(set! arg2 (* 0.95 arg2))
|
||||
)
|
||||
(when (and (< (fabs arg2) 13.653334) (>= (- (-> *display* base-frame-counter) (-> self state-time)) 450))
|
||||
(if *target*
|
||||
(process-release? *target*)
|
||||
)
|
||||
(go-virtual wait)
|
||||
)
|
||||
(set! arg1 (+ arg1 (/ (* arg2 (-> *display* seconds-per-frame)) (path-distance (-> self path)))))
|
||||
(cond
|
||||
((< 1.0 arg1)
|
||||
(set! arg1 (+ -1.0 arg1))
|
||||
)
|
||||
((< arg1 0.0)
|
||||
(set! arg1 (+ 1.0 arg1))
|
||||
)
|
||||
)
|
||||
(eval-path-curve! (-> self path) (-> self root-override trans) arg1 'interp)
|
||||
(set! (-> self root-override trans y) (+ 8192.0 (-> self root-override trans y)))
|
||||
(set! (-> self root-override trans y) (fmax 106496.0 (-> self root-override trans y)))
|
||||
(set! (-> self base quad) (-> self root-override trans quad))
|
||||
(transform-post)
|
||||
(animate self)
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector)))
|
||||
(vector-! s4-0 (-> self root-override trans) *camera-other-trans*)
|
||||
(vector-normalize! s4-0 1.0)
|
||||
(forward-down->inv-matrix *camera-other-matrix* s4-0 (new 'static 'vector :y -1.0 :w 1.0))
|
||||
)
|
||||
(set! *camera-look-through-other* 2)
|
||||
(set-letterbox-frames 10)
|
||||
(suspend)
|
||||
(let ((a0-27 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-27 param 0) 0.5)
|
||||
(joint-control-channel-group-eval! a0-27 (the-as art-joint-anim #f) num-func-loop!)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defbehavior fuel-cell-init-as-spline-slider fuel-cell ((arg0 handle) (arg1 float) (arg2 float) (arg3 int))
|
||||
(initialize self)
|
||||
(set! (-> self fact pickup-type) (pickup-type fuel-cell))
|
||||
(set! (-> self fact pickup-amount) (the float arg3))
|
||||
(initialize-params self 0 1024.0)
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(set! (-> self actor-pause) #f)
|
||||
(set! (-> self entity) (-> arg0 process 0 entity))
|
||||
(set! (-> self path) (new 'process 'curve-control self 'path -1000000000.0))
|
||||
(set! (-> self movie-pos-index) -1)
|
||||
(go fuel-cell-spline-slider arg0 arg1 arg2)
|
||||
(none)
|
||||
)
|
||||
|
||||
(deftype robber (process-drawable)
|
||||
((root-override collide-shape-moving :offset 112)
|
||||
(curve-position float :offset-assert 176)
|
||||
(speed float :offset-assert 180)
|
||||
(facing vector :inline :offset-assert 192)
|
||||
(tangent vector :inline :offset-assert 208)
|
||||
(run-blend-interp float :offset-assert 224)
|
||||
(near-timer int32 :offset-assert 228)
|
||||
(far-time uint64 :offset-assert 232)
|
||||
(y-offset float :offset-assert 240)
|
||||
(y-offset-desired float :offset-assert 244)
|
||||
(y-vel float :offset-assert 248)
|
||||
(water-height float :offset-assert 252)
|
||||
(timeout uint64 :offset-assert 256)
|
||||
(last-ambient-time uint64 :offset-assert 264)
|
||||
(time-to-next-ambient uint64 :offset-assert 272)
|
||||
)
|
||||
:heap-base #xb0
|
||||
:method-count-assert 20
|
||||
:size-assert #x118
|
||||
:flag-assert #x1400b00118
|
||||
(:states
|
||||
robber-dead
|
||||
robber-debug
|
||||
robber-die
|
||||
robber-flee
|
||||
robber-got-away
|
||||
robber-idle
|
||||
robber-initial
|
||||
robber-initial-notice
|
||||
robber-tired
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defskelgroup *robber-sg* robber
|
||||
0
|
||||
10
|
||||
((1 (meters 20)) (2 (meters 40)) (3 (meters 999999)))
|
||||
:bounds (static-spherem 0 0 0 4)
|
||||
:longest-edge (meters 0)
|
||||
:shadow 4
|
||||
)
|
||||
|
||||
(defbehavior robber-event-handler robber ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('attack)
|
||||
(go robber-die)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defbehavior robber-task-complete? robber ()
|
||||
(local-vars (sv-16 symbol))
|
||||
(process-entity-status! self (entity-perm-status complete) #t)
|
||||
(when (or (-> self link prev) (-> self link next))
|
||||
(set! sv-16 (the-as symbol #f))
|
||||
(apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16))
|
||||
(cond
|
||||
(sv-16
|
||||
(close-specific-task! (-> self entity extra perm task) (task-status need-reminder))
|
||||
(format #t "robber task is complete~%")
|
||||
)
|
||||
(else
|
||||
)
|
||||
)
|
||||
sv-16
|
||||
)
|
||||
)
|
||||
|
||||
(defbehavior robber-find-ground robber ()
|
||||
(let ((gp-0 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> gp-0 quad) (-> self root-override trans quad))
|
||||
(let ((t2-0 (new 'stack-no-clear 'collide-tri-result)))
|
||||
(set! (-> gp-0 y) (+ 8192.0 (-> gp-0 y)))
|
||||
(let ((f0-2 (dummy-10 *collide-cache* gp-0 (new 'static 'vector :y -81920.0 :w 1.0) 40.96 1 self t2-0 1))
|
||||
(v1-5 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set! (-> v1-5 quad) (-> self root-override trans quad))
|
||||
(set! (-> v1-5 y) (+ (-> gp-0 y) (* -81920.0 f0-2)))
|
||||
(cond
|
||||
((and (>= f0-2 0.0) (< 204.8 (fabs (- (-> v1-5 y) (-> self water-height)))))
|
||||
(set! (-> self y-offset-desired)
|
||||
(- (+ (-> gp-0 y) (* -81920.0 f0-2)) (- (-> self root-override trans y) (-> self y-offset)))
|
||||
)
|
||||
#t
|
||||
)
|
||||
(else
|
||||
(set! (-> self y-offset-desired) 0.0)
|
||||
#f
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defbehavior robber-rotate robber ((arg0 target) (arg1 float))
|
||||
(let ((s5-0 (new 'stack-no-clear 'matrix))
|
||||
(gp-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(TODO-RENAME-14 (-> self path) (-> self tangent) (-> self curve-position))
|
||||
(cond
|
||||
((and arg0 *target*)
|
||||
(vector-! gp-0 (-> self root-override trans) (target-pos 0))
|
||||
(vector-normalize! gp-0 1.0)
|
||||
)
|
||||
((< (-> self speed) 0.0)
|
||||
(vector-negate! gp-0 (-> self tangent))
|
||||
)
|
||||
(else
|
||||
(set! (-> gp-0 quad) (-> self tangent quad))
|
||||
)
|
||||
)
|
||||
(matrix-from-two-vectors-max-angle-partial! s5-0 (-> self facing) gp-0 arg1 0.25)
|
||||
(vector-matrix*! gp-0 (-> self facing) s5-0)
|
||||
(vector-normalize! gp-0 1.0)
|
||||
(forward-down->inv-matrix s5-0 gp-0 (new 'static 'vector :y -1.0))
|
||||
(matrix->quaternion (-> self root-override quat) s5-0)
|
||||
(set! (-> self run-blend-interp) (acos (vector-dot gp-0 (-> self facing))))
|
||||
(set! (-> self run-blend-interp) (* 0.0002746582 (-> self run-blend-interp)))
|
||||
(if (< (vector-dot (-> self facing) (the-as vector (-> s5-0 vector))) 0.0)
|
||||
(set! (-> self run-blend-interp) (- (-> self run-blend-interp)))
|
||||
)
|
||||
(let ((v0-10 (-> self facing)))
|
||||
(set! (-> v0-10 quad) (-> gp-0 quad))
|
||||
v0-10
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defbehavior robber-move robber ()
|
||||
(+!
|
||||
(-> self curve-position)
|
||||
(/ (the float
|
||||
(* (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)) (the int (-> self speed)))
|
||||
)
|
||||
(path-distance (-> self path))
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((< 1.0 (-> self curve-position))
|
||||
(set! (-> self curve-position) (+ -1.0 (-> self curve-position)))
|
||||
)
|
||||
((< (-> self curve-position) 0.0)
|
||||
(set! (-> self curve-position) (+ 1.0 (-> self curve-position)))
|
||||
)
|
||||
)
|
||||
(eval-path-curve! (-> self path) (-> self root-override trans) (-> self curve-position) 'interp)
|
||||
(cond
|
||||
((< (-> self y-offset-desired) (-> self y-offset))
|
||||
(set! (-> self y-vel) (* 0.25 (- (-> self y-offset-desired) (-> self y-offset))))
|
||||
(set! (-> self y-vel) (fmax -3.4133334 (-> self y-vel)))
|
||||
(+! (-> self y-offset) (-> self y-vel))
|
||||
(when (>= (-> self y-offset-desired) (-> self y-offset))
|
||||
(set! (-> self y-offset) (-> self y-offset-desired))
|
||||
(set! (-> self y-vel) 0.0)
|
||||
)
|
||||
)
|
||||
((< (-> self y-offset) (-> self y-offset-desired))
|
||||
(set! (-> self y-vel) (* 0.5 (- (-> self y-offset-desired) (-> self y-offset))))
|
||||
(set! (-> self y-vel) (fmin 13.653334 (-> self y-vel)))
|
||||
(+! (-> self y-offset) (-> self y-vel))
|
||||
(when (>= (-> self y-offset) (-> self y-offset-desired))
|
||||
(set! (-> self y-offset) (-> self y-offset-desired))
|
||||
(set! (-> self y-vel) 0.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((f0-34 (+ (-> self root-override trans y) (-> self y-offset))))
|
||||
(set! (-> self root-override trans y) f0-34)
|
||||
f0-34
|
||||
)
|
||||
)
|
||||
|
||||
(defbehavior robber-calc-speed robber ((arg0 float) (arg1 float) (arg2 float) (arg3 float) (arg4 symbol))
|
||||
(let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root-override trans) (target-pos 0))))
|
||||
(set! (-> gp-1 y) 0.0)
|
||||
(let* ((f2-1 (/ (- (vector-length gp-1) arg0) (- arg1 arg0)))
|
||||
(f0-4 (- 1.0 (fmax 0.0 (fmin 1.0 f2-1))))
|
||||
(f0-5 (lerp arg3 arg2 f0-4))
|
||||
(f30-0 (* 0.0033333334 f0-5))
|
||||
)
|
||||
(cond
|
||||
((or (not arg4) (< arg0 (vector-length gp-1)))
|
||||
(if (< (-> self speed) 0.0)
|
||||
(set! f30-0 (- f30-0))
|
||||
)
|
||||
)
|
||||
((< (vector-dot gp-1 (-> self tangent)) 0.0)
|
||||
(set! f30-0 (- f30-0))
|
||||
)
|
||||
)
|
||||
(set! (-> self speed) f30-0)
|
||||
f30-0
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defbehavior robber-calc-anim-speed robber ()
|
||||
(let* ((f0-1 (fabs (-> self speed)))
|
||||
(f0-2 (* 0.07324219 f0-1))
|
||||
(f0-3 (+ -15.0 f0-2))
|
||||
(f1-3 (* 0.13333334 f0-3))
|
||||
)
|
||||
(fmin 1.5 (fmax 0.9 f1-3))
|
||||
)
|
||||
)
|
||||
|
||||
(defstate robber-debug (robber)
|
||||
:code
|
||||
(behavior ()
|
||||
(while #t
|
||||
(let ((a0-0 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-0 param 1) 1.0)
|
||||
(set! (-> a0-0 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-0
|
||||
(if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(let ((gp-0 (new 'stack-no-clear 'vector)))
|
||||
(let ((a1-1 (new 'stack-no-clear 'vector)))
|
||||
(clmf-input gp-0 a1-1 1)
|
||||
)
|
||||
(format *stdcon* "rv ~f ~f ~f~%" (-> gp-0 x) (-> gp-0 y) (-> gp-0 z))
|
||||
(vector-float*! gp-0 gp-0 4096.0)
|
||||
(+! (-> self curve-position) (/ (-> gp-0 y) (path-distance (-> self path))))
|
||||
)
|
||||
(cond
|
||||
((< 1.0 (-> self curve-position))
|
||||
(set! (-> self curve-position) (+ -1.0 (-> self curve-position)))
|
||||
)
|
||||
((< (-> self curve-position) 0.0)
|
||||
(set! (-> self curve-position) (+ 1.0 (-> self curve-position)))
|
||||
)
|
||||
)
|
||||
(eval-path-curve! (-> self path) (-> self root-override trans) (-> self curve-position) 'interp)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(robber-find-ground)
|
||||
(suspend)
|
||||
(let ((a0-7 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-7 param 0) (the float (+ (-> a0-7 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-7 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) ja-post)
|
||||
)
|
||||
|
||||
(defstate robber-dead (robber)
|
||||
:code
|
||||
(behavior () (dummy-18 self) (deactivate self) (none))
|
||||
)
|
||||
|
||||
(defstate robber-die (robber)
|
||||
:event
|
||||
(the-as
|
||||
(function process int symbol event-message-block object :behavior robber)
|
||||
process-drawable-death-event-handler
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(let ((gp-0 #t))
|
||||
(when (robber-task-complete?)
|
||||
(let ((v1-3 (-> self entity extra perm)))
|
||||
(logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage))
|
||||
(cond
|
||||
((zero? (-> v1-3 user-object 1))
|
||||
(set! (-> v1-3 user-object 1) 1)
|
||||
(set! (-> v1-3 user-object 0) (-> self curve-position))
|
||||
(let ((f30-0 (if (>= (-> self speed) 0.0)
|
||||
163840.0
|
||||
-163840.0
|
||||
)
|
||||
)
|
||||
(s5-0 (get-process *default-dead-pool* fuel-cell #x4000))
|
||||
)
|
||||
(when s5-0
|
||||
(let ((t9-2 (method-of-type fuel-cell activate)))
|
||||
(t9-2 (the-as fuel-cell s5-0) self 'fuel-cell (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
s5-0
|
||||
fuel-cell-init-as-spline-slider
|
||||
(process->handle self)
|
||||
(-> self curve-position)
|
||||
f30-0
|
||||
(-> self entity extra perm task)
|
||||
)
|
||||
(-> s5-0 ppointer)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! gp-0 #f)
|
||||
(logior! (-> self draw status) (draw-status drwf01))
|
||||
(let ((s5-1 (new 'stack-no-clear 'vector)))
|
||||
(eval-path-curve! (-> self path) s5-1 (the-as float (-> v1-3 user-object 0)) 'interp)
|
||||
(set! (-> s5-1 y) (+ 8192.0 (-> s5-1 y)))
|
||||
(birth-pickup-at-point
|
||||
s5-1
|
||||
(pickup-type fuel-cell)
|
||||
(the float (-> self entity extra perm task))
|
||||
#f
|
||||
self
|
||||
(the-as fact-info #f)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when gp-0
|
||||
(let ((a0-12 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-12 frame-group) (the-as art-joint-anim (-> self draw art-group data 8)))
|
||||
(set! (-> a0-12 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 8)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-12 param 1) 1.0)
|
||||
(set! (-> a0-12 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-12 (the-as art-joint-anim (-> self draw art-group data 8)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(robber-calc-speed 4096.0 8192.0 122880.0 122880.0 #f)
|
||||
(robber-move)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(suspend)
|
||||
(let ((a0-15 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-15 param 0) (the float (+ (-> a0-15 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-15 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-15 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(while (-> self child)
|
||||
(suspend)
|
||||
)
|
||||
(go robber-dead)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) transform-post)
|
||||
)
|
||||
|
||||
(defstate robber-got-away (robber)
|
||||
:event
|
||||
robber-event-handler
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (and
|
||||
(not (and
|
||||
*target*
|
||||
(>= 204800.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
)
|
||||
(robber-find-ground)
|
||||
)
|
||||
(go robber-idle)
|
||||
)
|
||||
(if (and
|
||||
*target*
|
||||
(>= 122880.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
(go robber-flee)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(when (not (= (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
(-> self draw art-group data 7)
|
||||
)
|
||||
)
|
||||
(ja-channel-push! 1 60)
|
||||
(let ((v1-8 (-> self skel root-channel 0)))
|
||||
(set! (-> v1-8 frame-group) (the-as art-joint-anim (-> self draw art-group data 7)))
|
||||
)
|
||||
)
|
||||
(while #t
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(set! (-> gp-0 param 0) (robber-calc-anim-speed))
|
||||
(joint-control-channel-group-eval! gp-0 (the-as art-joint-anim #f) num-func-loop!)
|
||||
)
|
||||
(if (< 27.306667 (fabs (-> self speed)))
|
||||
(set! (-> self speed) (* 0.95 (-> self speed)))
|
||||
)
|
||||
(robber-move)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) transform-post)
|
||||
)
|
||||
|
||||
(defstate robber-tired (robber)
|
||||
:event
|
||||
robber-event-handler
|
||||
:enter
|
||||
(behavior () (set! (-> self y-offset-desired) -12288.0) (none))
|
||||
:exit
|
||||
(behavior () (set! (-> self y-offset-desired) 0.0) (none))
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (not (and
|
||||
*target*
|
||||
(>= 163840.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
)
|
||||
(go robber-got-away)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(while #t
|
||||
(when (not (= (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
(-> self draw art-group data 7)
|
||||
)
|
||||
)
|
||||
(ja-channel-push! 1 60)
|
||||
(let ((v1-8 (-> self skel root-channel 0)))
|
||||
(set! (-> v1-8 frame-group) (the-as art-joint-anim (-> self draw art-group data 7)))
|
||||
)
|
||||
)
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(set! (-> gp-0 param 0) (robber-calc-anim-speed))
|
||||
(joint-control-channel-group-eval! gp-0 (the-as art-joint-anim #f) num-func-loop!)
|
||||
)
|
||||
(robber-calc-speed 32768.0 122880.0 122060.8 20480.0 #f)
|
||||
(robber-move)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(suspend)
|
||||
(when (>= (- (-> *display* base-frame-counter) (the-as int (-> self last-ambient-time)))
|
||||
(the-as int (-> self time-to-next-ambient))
|
||||
)
|
||||
(ja-channel-push! 1 60)
|
||||
(let ((a0-14 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-14 frame-group) (the-as art-joint-anim (-> self draw art-group data 11)))
|
||||
(set! (-> a0-14 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 11)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-14 param 1) 1.0)
|
||||
(set! (-> a0-14 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-14 (the-as art-joint-anim (-> self draw art-group data 11)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(robber-calc-speed 32768.0 122880.0 122060.8 20480.0 #f)
|
||||
(robber-move)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(suspend)
|
||||
(let ((a0-17 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-17 param 0) (the float (+ (-> a0-17 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-17 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-17 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(set! (-> self last-ambient-time) (the-as uint (-> *display* base-frame-counter)))
|
||||
(let* ((f30-0 300.0)
|
||||
(f28-0 2.0)
|
||||
(f26-0 2.0)
|
||||
(v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
|
||||
(v1-42 (the-as number (logior #x3f800000 v1-41)))
|
||||
)
|
||||
(set! (-> self time-to-next-ambient)
|
||||
(the-as uint (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-42)))))))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) transform-post)
|
||||
)
|
||||
|
||||
(defstate robber-flee (robber)
|
||||
:event
|
||||
robber-event-handler
|
||||
:enter
|
||||
(behavior ()
|
||||
(set! (-> self near-timer) 3000)
|
||||
(set! (-> self far-time) (the-as uint (-> *display* base-frame-counter)))
|
||||
(set! (-> self y-offset-desired) 0.0)
|
||||
(none)
|
||||
)
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (not (and
|
||||
*target*
|
||||
(>= 163840.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
)
|
||||
(go robber-got-away)
|
||||
)
|
||||
(when (and
|
||||
*target*
|
||||
(>= 102400.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
(set! (-> self near-timer)
|
||||
(- (-> self near-timer) (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)))
|
||||
)
|
||||
(if (<= (-> self near-timer) 0)
|
||||
(go robber-tired)
|
||||
)
|
||||
(set! (-> self far-time) (the-as uint (-> *display* base-frame-counter)))
|
||||
)
|
||||
(if (>= (- (-> *display* base-frame-counter) (the-as int (-> self far-time))) 900)
|
||||
(set! (-> self near-timer) (the-as int (-> self timeout)))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(while #t
|
||||
(when (not (= (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
(-> self draw art-group data 7)
|
||||
)
|
||||
)
|
||||
(ja-channel-push! 1 60)
|
||||
(let ((v1-8 (-> self skel root-channel 0)))
|
||||
(set! (-> v1-8 frame-group) (the-as art-joint-anim (-> self draw art-group data 7)))
|
||||
)
|
||||
)
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(set! (-> gp-0 param 0) (robber-calc-anim-speed))
|
||||
(joint-control-channel-group-eval! gp-0 (the-as art-joint-anim #f) num-func-loop!)
|
||||
)
|
||||
(robber-calc-speed 61440.0 122880.0 204800.0 16384.0 #t)
|
||||
(robber-move)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(suspend)
|
||||
(when (>= (- (-> *display* base-frame-counter) (the-as int (-> self last-ambient-time)))
|
||||
(the-as int (-> self time-to-next-ambient))
|
||||
)
|
||||
(ja-channel-push! 1 60)
|
||||
(let ((a0-14 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-14 frame-group) (the-as art-joint-anim (-> self draw art-group data 11)))
|
||||
(set! (-> a0-14 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 11)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-14 param 1) 1.0)
|
||||
(set! (-> a0-14 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-14 (the-as art-joint-anim (-> self draw art-group data 11)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(robber-calc-speed 61440.0 122880.0 204800.0 16384.0 #t)
|
||||
(robber-move)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(suspend)
|
||||
(let ((a0-17 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-17 param 0) (the float (+ (-> a0-17 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-17 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-17 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(set! (-> self last-ambient-time) (the-as uint (-> *display* base-frame-counter)))
|
||||
(let* ((f30-0 300.0)
|
||||
(f28-0 3.0)
|
||||
(f26-0 5.0)
|
||||
(v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
|
||||
(v1-42 (the-as number (logior #x3f800000 v1-41)))
|
||||
)
|
||||
(set! (-> self time-to-next-ambient)
|
||||
(the-as uint (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-42)))))))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) transform-post)
|
||||
)
|
||||
|
||||
(defstate robber-idle (robber)
|
||||
:event
|
||||
robber-event-handler
|
||||
:enter
|
||||
(behavior () (set! (-> self speed) 0.0) (none))
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (and
|
||||
*target*
|
||||
(>= 122880.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
(go robber-flee)
|
||||
)
|
||||
(robber-rotate (the-as target #t) 182.04445)
|
||||
(robber-move)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(ja-channel-push! 1 60)
|
||||
(while #t
|
||||
(let ((a0-1 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 10)))
|
||||
(set! (-> a0-1 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 10)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-1 param 1) 1.0)
|
||||
(set! (-> a0-1 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-1 (the-as art-joint-anim (-> self draw art-group data 10)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-2 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-2 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) transform-post)
|
||||
)
|
||||
|
||||
(defstate robber-initial-notice (robber)
|
||||
:event
|
||||
robber-event-handler
|
||||
:trans
|
||||
(behavior ()
|
||||
(when (logtest? (-> self draw status) (draw-status drwf03))
|
||||
(if (and
|
||||
*target*
|
||||
(>= 163840.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
(level-hint-spawn
|
||||
(game-text-id rolling-flying-lurker-intro)
|
||||
"sksp0116"
|
||||
(the-as entity #f)
|
||||
*entity-pool*
|
||||
(game-task none)
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (and
|
||||
*target*
|
||||
(>= 32768.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
(go robber-flee)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(TODO-RENAME-14 (-> self path) (-> self tangent) (-> self curve-position))
|
||||
(let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root-override trans) (target-pos 0)))
|
||||
(f0-1 6.826667)
|
||||
)
|
||||
(set! (-> gp-1 y) 0.0)
|
||||
(if (< (vector-dot gp-1 (-> self tangent)) 0.0)
|
||||
(set! f0-1 (- f0-1))
|
||||
)
|
||||
(set! (-> self speed) f0-1)
|
||||
)
|
||||
(ja-channel-push! 1 60)
|
||||
(while #t
|
||||
(let ((a0-3 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 6)))
|
||||
(set! (-> a0-3 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 6)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-3 param 1) 2.0)
|
||||
(set! (-> a0-3 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-3 (the-as art-joint-anim (-> self draw art-group data 6)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(robber-calc-speed 61440.0 122880.0 2048.0 2048.0 #t)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(suspend)
|
||||
(let ((a0-6 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-6 param 0) (the float (+ (-> a0-6 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-6 param 1) 2.0)
|
||||
(joint-control-channel-group-eval! a0-6 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(go robber-flee)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) transform-post)
|
||||
)
|
||||
|
||||
(defstate robber-initial (robber)
|
||||
:event
|
||||
robber-event-handler
|
||||
:enter
|
||||
(behavior () (set! (-> self speed) 0.0) (none))
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (and
|
||||
*target*
|
||||
(>= 122880.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
(go robber-initial-notice)
|
||||
)
|
||||
(robber-move)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(ja-channel-push! 1 60)
|
||||
(while #t
|
||||
(let ((a0-1 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 5)))
|
||||
(set! (-> a0-1 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-1 param 1) 1.0)
|
||||
(set! (-> a0-1 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-1 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-2 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-2 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) transform-post)
|
||||
)
|
||||
|
||||
(defmethod init-from-entity! robber ((obj robber) (arg0 entity-actor))
|
||||
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player))))
|
||||
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
|
||||
(set! (-> s4-0 reaction) default-collision-reaction)
|
||||
(set! (-> s4-0 no-reaction)
|
||||
(the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)
|
||||
)
|
||||
(let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
|
||||
(set! (-> s3-0 prim-core collide-as) (the-as uint 256))
|
||||
(set! (-> s3-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s3-0 prim-core action) (the-as uint 3073))
|
||||
(set! (-> s3-0 prim-core offense) 4)
|
||||
(set! (-> s3-0 transform-index) 3)
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 10240.0)
|
||||
(set-root-prim! s4-0 s3-0)
|
||||
)
|
||||
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
|
||||
(backup-collide-with-as s4-0)
|
||||
(set! (-> obj root-override) s4-0)
|
||||
)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(initialize-skeleton obj *robber-sg* '())
|
||||
(set! (-> obj root-override pause-adjust-distance) 122880.0)
|
||||
(set! (-> obj link) (new 'process 'actor-link-info obj))
|
||||
(set! (-> obj path) (new 'process 'curve-control obj 'path -1000000000.0))
|
||||
(logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text))
|
||||
(set! (-> obj fact)
|
||||
(new 'process 'fact-info-enemy obj (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))
|
||||
)
|
||||
(set! (-> obj draw origin-joint-index) (the-as uint 3))
|
||||
(set! (-> obj curve-position) (res-lump-float (-> obj entity) 'initial-spline-pos))
|
||||
(eval-path-curve! (-> obj path) (-> obj root-override trans) (-> obj curve-position) 'interp)
|
||||
(TODO-RENAME-14 (-> obj path) (-> obj tangent) (-> obj curve-position))
|
||||
(set! (-> obj facing quad) (-> obj tangent quad))
|
||||
(let ((s4-1 (new 'stack-no-clear 'matrix)))
|
||||
(forward-down->inv-matrix s4-1 (-> obj facing) (new 'static 'vector :y -1.0))
|
||||
(matrix->quaternion (-> obj root-override quat) s4-1)
|
||||
)
|
||||
(set! (-> obj y-vel) 0.0)
|
||||
(set! (-> obj water-height) (res-lump-float (-> obj entity) 'water-height))
|
||||
(robber-find-ground)
|
||||
(set! (-> obj y-offset) (-> obj y-offset-desired))
|
||||
(let ((f0-14 (res-lump-float arg0 'timeout :default 10.0)))
|
||||
(set! (-> obj timeout) (the-as uint (the int (* 300.0 f0-14))))
|
||||
)
|
||||
(set! (-> obj last-ambient-time) (the-as uint 0))
|
||||
(set! (-> obj time-to-next-ambient) (the-as uint 0))
|
||||
(set! (-> obj speed) 0.0)
|
||||
(let ((v1-42 (-> obj entity extra perm)))
|
||||
(logior! (-> v1-42 status) (entity-perm-status user-set-from-cstage))
|
||||
(if (nonzero? (-> v1-42 user-object 1))
|
||||
(go robber-die)
|
||||
)
|
||||
)
|
||||
(if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)))
|
||||
(go robber-dead)
|
||||
(go robber-initial)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -28,96 +28,86 @@
|
||||
)
|
||||
|
||||
|
||||
(define
|
||||
ripple-for-sunken-water
|
||||
(new 'static 'ripple-wave-set
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 1.0
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5)
|
||||
(new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5)
|
||||
(new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75)
|
||||
(new 'static 'ripple-wave)
|
||||
)
|
||||
)
|
||||
)
|
||||
(define ripple-for-sunken-water (new 'static 'ripple-wave-set
|
||||
:count 3
|
||||
:converted #f
|
||||
:normal-scale 1.0
|
||||
:wave
|
||||
(new 'static 'inline-array ripple-wave 4
|
||||
(new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5)
|
||||
(new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5)
|
||||
(new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75)
|
||||
(new 'static 'ripple-wave)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-group-id-table* 446)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 1
|
||||
:duration #xbb8
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-sunken-water-deadly-water"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 1
|
||||
(sp-item 1736 :fade-after (meters 50.0))
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-group-id-table* 446)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 1
|
||||
:duration #xbb8
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-sunken-water-deadly-water"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 1 (sp-item 1736 :fade-after (meters 50.0)))
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 1736)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 17
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-y (meters 0.0))
|
||||
(sp-rnd-flt spt-scale-x (meters 1.0) (meters 4.0) 1.0)
|
||||
(sp-flt spt-scale-y (meters 0.25))
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-rnd-flt spt-a 96.0 32.0 1.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.1875))
|
||||
(sp-flt spt-scalevel-y (meters -0.001875))
|
||||
(sp-flt spt-fade-a -3.2)
|
||||
(sp-int spt-timer 81)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-int spt-next-time 15)
|
||||
(sp-launcher-by-id spt-next-launcher 2022)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-id-table* 1736) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 17
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-y (meters 0.0))
|
||||
(sp-rnd-flt spt-scale-x (meters 1.0) (meters 4.0) 1.0)
|
||||
(sp-flt spt-scale-y (meters 0.25))
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-rnd-flt spt-a 96.0 32.0 1.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.1875))
|
||||
(sp-flt spt-scalevel-y (meters -0.001875))
|
||||
(sp-flt spt-fade-a -3.2)
|
||||
(sp-int spt-timer 81)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-int spt-next-time 15)
|
||||
(sp-launcher-by-id spt-next-launcher 2022)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 2022)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 5
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 128.0 128.0 1.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-flt spt-fade-a -1.28)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-id-table* 2022)
|
||||
(new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 128.0 128.0 1.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-flt spt-fade-a -1.28)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod draw-ripple sunken-water ((obj sunken-water))
|
||||
(set! (-> obj draw ripple send-query) #t)
|
||||
(let ((gp-0 (-> obj draw ripple query)))
|
||||
(let ((a0-1 (-> *display* base-frame-counter)))
|
||||
(set! (-> gp-0 start-vertex) (logand (* 13 (logand a0-1 127)) 127))
|
||||
(let ((a0-1 (-> *display* base-frame-counter)))
|
||||
(set! (-> gp-0 start-vertex) (logand (* 13 (logand a0-1 127)) 127))
|
||||
)
|
||||
(set! (-> gp-0 vertex-skip) 128)
|
||||
(dotimes (s5-0 (-> gp-0 vertex-count))
|
||||
(sp-launch-particles-var
|
||||
*sp-particle-system-2d*
|
||||
(-> *part-id-table* 1736)
|
||||
(-> gp-0 data s5-0)
|
||||
(the-as sparticle-launch-state #f)
|
||||
(the-as sparticle-launch-control #f)
|
||||
1.0
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> gp-0 vertex-skip) 128)
|
||||
(dotimes (s5-0 (-> gp-0 vertex-count))
|
||||
(sp-launch-particles-var
|
||||
*sp-particle-system-2d*
|
||||
(-> *part-id-table* 1736)
|
||||
(-> gp-0 data s5-0)
|
||||
(the-as sparticle-launch-state #f)
|
||||
(the-as sparticle-launch-control #f)
|
||||
1.0
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
|
||||
@@ -125,142 +115,94 @@
|
||||
:virtual #t
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('notify)
|
||||
(if (= (-> arg3 param 0) 'attack)
|
||||
(sound-play-by-name
|
||||
(static-sound-name "get-shocked")
|
||||
(new-sound-id)
|
||||
1024
|
||||
0
|
||||
0
|
||||
1
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
((-> (method-of-type water-anim water-vol-idle) event) arg0 arg1 arg2 arg3)
|
||||
)
|
||||
)
|
||||
)
|
||||
:trans
|
||||
(behavior ()
|
||||
(let ((t9-0 (-> (method-of-type water-anim water-vol-idle) trans)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((-> self use-sync?)
|
||||
(cond
|
||||
((< (get-current-phase (-> self sync)) (-> self deadly-time))
|
||||
(when (!= (-> self deadly-fade) 1.0)
|
||||
(set!
|
||||
(-> self deadly-fade)
|
||||
(seek
|
||||
(-> self deadly-fade)
|
||||
1.0
|
||||
(* 8.0 (-> *display* seconds-per-frame))
|
||||
)
|
||||
)
|
||||
(let ((f30-0 (-> self deadly-fade)))
|
||||
(vector-lerp!
|
||||
(-> self draw color-mult)
|
||||
(-> self safe-color-mult)
|
||||
(-> self deadly-color-mult)
|
||||
f30-0
|
||||
)
|
||||
(vector-lerp!
|
||||
(-> self draw color-emissive)
|
||||
(-> self safe-color-emissive)
|
||||
(-> self deadly-color-emissive)
|
||||
f30-0
|
||||
)
|
||||
(set! (-> self draw color-mult w) 0.5)
|
||||
(if (= f30-0 1.0)
|
||||
(set! (-> self flags) (logior #x80000 (-> self flags)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(draw-ripple self)
|
||||
(when (not (-> self playing-deadly-sound?))
|
||||
(set! (-> self playing-deadly-sound?) #t)
|
||||
(sound-play-by-name
|
||||
(static-sound-name "water-on")
|
||||
(new-sound-id)
|
||||
1024
|
||||
0
|
||||
0
|
||||
1
|
||||
#t
|
||||
)
|
||||
)
|
||||
(update! (-> self sound))
|
||||
(case arg2
|
||||
(('notify)
|
||||
(if (= (-> arg3 param 0) 'attack)
|
||||
(sound-play-by-name (static-sound-name "get-shocked") (new-sound-id) 1024 0 0 1 #t)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! (-> self flags) (logand -524289 (-> self flags)))
|
||||
(when (!= (-> self deadly-fade) 0.0)
|
||||
(set!
|
||||
(-> self deadly-fade)
|
||||
(seek
|
||||
(-> self deadly-fade)
|
||||
0.0
|
||||
(* 8.0 (-> *display* seconds-per-frame))
|
||||
)
|
||||
)
|
||||
(let ((f30-1 (-> self deadly-fade)))
|
||||
(vector-lerp!
|
||||
(-> self draw color-mult)
|
||||
(-> self safe-color-mult)
|
||||
(-> self deadly-color-mult)
|
||||
f30-1
|
||||
)
|
||||
(vector-lerp!
|
||||
(-> self draw color-emissive)
|
||||
(-> self safe-color-emissive)
|
||||
(-> self deadly-color-emissive)
|
||||
f30-1
|
||||
)
|
||||
(set! (-> self draw color-mult w) 0.5)
|
||||
(if (= f30-1 0.0)
|
||||
(set! (-> self flags) (logand -524289 (-> self flags)))
|
||||
)
|
||||
)
|
||||
((-> (method-of-type water-anim water-vol-idle) event) arg0 arg1 arg2 arg3)
|
||||
)
|
||||
(when (-> self playing-deadly-sound?)
|
||||
(set! (-> self playing-deadly-sound?) #f)
|
||||
(stop! (-> self sound))
|
||||
(sound-play-by-name
|
||||
(static-sound-name "water-off")
|
||||
(new-sound-id)
|
||||
1024
|
||||
0
|
||||
0
|
||||
1
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set-fade!
|
||||
*palette-fade-controls*
|
||||
3
|
||||
(-> self deadly-fade)
|
||||
(vector-vector-distance (-> self root trans) (camera-pos))
|
||||
(the-as vector #f)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(when (logtest? #x80000 (-> self flags))
|
||||
(draw-ripple self)
|
||||
(update! (-> self sound))
|
||||
(set! (-> self playing-deadly-sound?) #t)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:trans
|
||||
(behavior ()
|
||||
(let ((t9-0 (-> (method-of-type water-anim water-vol-idle) trans)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((-> self use-sync?)
|
||||
(cond
|
||||
((< (get-current-phase (-> self sync)) (-> self deadly-time))
|
||||
(when (!= (-> self deadly-fade) 1.0)
|
||||
(set! (-> self deadly-fade) (seek (-> self deadly-fade) 1.0 (* 8.0 (-> *display* seconds-per-frame))))
|
||||
(let ((f30-0 (-> self deadly-fade)))
|
||||
(vector-lerp! (-> self draw color-mult) (-> self safe-color-mult) (-> self deadly-color-mult) f30-0)
|
||||
(vector-lerp!
|
||||
(-> self draw color-emissive)
|
||||
(-> self safe-color-emissive)
|
||||
(-> self deadly-color-emissive)
|
||||
f30-0
|
||||
)
|
||||
(set! (-> self draw color-mult w) 0.5)
|
||||
(if (= f30-0 1.0)
|
||||
(set! (-> self flags) (logior #x80000 (-> self flags)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(draw-ripple self)
|
||||
(when (not (-> self playing-deadly-sound?))
|
||||
(set! (-> self playing-deadly-sound?) #t)
|
||||
(sound-play-by-name (static-sound-name "water-on") (new-sound-id) 1024 0 0 1 #t)
|
||||
)
|
||||
(update! (-> self sound))
|
||||
)
|
||||
(else
|
||||
(set! (-> self flags) (logand -524289 (-> self flags)))
|
||||
(when (!= (-> self deadly-fade) 0.0)
|
||||
(set! (-> self deadly-fade) (seek (-> self deadly-fade) 0.0 (* 8.0 (-> *display* seconds-per-frame))))
|
||||
(let ((f30-1 (-> self deadly-fade)))
|
||||
(vector-lerp! (-> self draw color-mult) (-> self safe-color-mult) (-> self deadly-color-mult) f30-1)
|
||||
(vector-lerp!
|
||||
(-> self draw color-emissive)
|
||||
(-> self safe-color-emissive)
|
||||
(-> self deadly-color-emissive)
|
||||
f30-1
|
||||
)
|
||||
(set! (-> self draw color-mult w) 0.5)
|
||||
(if (= f30-1 0.0)
|
||||
(set! (-> self flags) (logand -524289 (-> self flags)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (-> self playing-deadly-sound?)
|
||||
(set! (-> self playing-deadly-sound?) #f)
|
||||
(stop! (-> self sound))
|
||||
(sound-play-by-name (static-sound-name "water-off") (new-sound-id) 1024 0 0 1 #t)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set-fade!
|
||||
*palette-fade-controls*
|
||||
3
|
||||
(-> self deadly-fade)
|
||||
(vector-vector-distance (-> self root trans) (camera-pos))
|
||||
(the-as vector #f)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(when (logtest? #x80000 (-> self flags))
|
||||
(draw-ripple self)
|
||||
(update! (-> self sound))
|
||||
(set! (-> self playing-deadly-sound?) #t)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior sunken-water) ja-post)
|
||||
)
|
||||
@@ -268,85 +210,82 @@
|
||||
(defmethod TODO-RENAME-25 sunken-water ((obj sunken-water))
|
||||
(local-vars (v0-3 uint))
|
||||
(let ((t9-0 (method-of-type water-anim TODO-RENAME-25)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(t9-0 obj)
|
||||
)
|
||||
(set! (-> obj playing-deadly-sound?) #f)
|
||||
(set-vector! (-> obj safe-color-mult) 0.125 0.225 0.22 0.5)
|
||||
(set-vector! (-> obj safe-color-emissive) 0.0 0.0 0.0 1.0)
|
||||
(set-vector! (-> obj deadly-color-mult) 0.125 0.225 0.22 0.5)
|
||||
(set-vector! (-> obj deadly-color-emissive) 0.33 0.6 0.0 1.0)
|
||||
(let
|
||||
((s5-0 (load-params! (-> obj sync) obj (the-as uint 1500) 0.0 0.15 0.15)))
|
||||
(let ((f0-16 (res-lump-float (-> obj entity) 'percent :default -1.0)))
|
||||
(if (or (< f0-16 0.0) (< 1.0 f0-16))
|
||||
(set! f0-16 (cond
|
||||
(s5-0
|
||||
0.5
|
||||
)
|
||||
((logtest? #x80000 (-> obj flags))
|
||||
1.0
|
||||
)
|
||||
(else
|
||||
0.0
|
||||
)
|
||||
)
|
||||
(let ((s5-0 (load-params! (-> obj sync) obj (the-as uint 1500) 0.0 0.15 0.15)))
|
||||
(let ((f0-16 (res-lump-float (-> obj entity) 'percent :default -1.0)))
|
||||
(if (or (< f0-16 0.0) (< 1.0 f0-16))
|
||||
(set! f0-16 (cond
|
||||
(s5-0
|
||||
0.5
|
||||
)
|
||||
((logtest? #x80000 (-> obj flags))
|
||||
1.0
|
||||
)
|
||||
(else
|
||||
0.0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and s5-0 (or (= f0-16 0.0) (= f0-16 1.0)))
|
||||
(set! s5-0 #f)
|
||||
(if (= f0-16 0.0)
|
||||
(set! (-> obj flags) (logior #x80000 (-> obj flags)))
|
||||
(set! (-> obj flags) (logand -524289 (-> obj flags)))
|
||||
)
|
||||
)
|
||||
(set! (-> obj use-sync?) s5-0)
|
||||
(set! (-> obj deadly-time) f0-16)
|
||||
)
|
||||
)
|
||||
(when (and s5-0 (or (= f0-16 0.0) (= f0-16 1.0)))
|
||||
(set! s5-0 #f)
|
||||
(if (= f0-16 0.0)
|
||||
(set! (-> obj flags) (logior #x80000 (-> obj flags)))
|
||||
(set! (-> obj flags) (logand -524289 (-> obj flags)))
|
||||
)
|
||||
)
|
||||
(set! (-> obj use-sync?) s5-0)
|
||||
(set! (-> obj deadly-time) f0-16)
|
||||
)
|
||||
(the-as object (when s5-0
|
||||
(cond
|
||||
((< (get-current-phase (-> obj sync)) (-> obj deadly-time))
|
||||
(set! v0-3 (logior (the-as uint #x80000) (-> obj flags)))
|
||||
(set! (-> obj flags) v0-3)
|
||||
(the-as object (when s5-0
|
||||
(cond
|
||||
((< (get-current-phase (-> obj sync)) (-> obj deadly-time))
|
||||
(set! v0-3 (logior (the-as uint #x80000) (-> obj flags)))
|
||||
(set! (-> obj flags) v0-3)
|
||||
)
|
||||
(else
|
||||
(set! v0-3 (logand (the-as uint -524289) (-> obj flags)))
|
||||
(set! (-> obj flags) v0-3)
|
||||
)
|
||||
)
|
||||
v0-3
|
||||
)
|
||||
(else
|
||||
(set! v0-3 (logand (the-as uint -524289) (-> obj flags)))
|
||||
(set! (-> obj flags) v0-3)
|
||||
)
|
||||
)
|
||||
v0-3
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod TODO-RENAME-22 sunken-water ((obj sunken-water))
|
||||
(let ((t9-0 (method-of-type water-anim TODO-RENAME-22)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(t9-0 obj)
|
||||
)
|
||||
(set! (-> obj play-ambient-sound?) #f)
|
||||
(cond
|
||||
((logtest? #x80000 (-> obj flags))
|
||||
(set! (-> obj draw color-mult quad) (-> obj deadly-color-mult quad))
|
||||
(set! (-> obj draw color-emissive quad) (-> obj deadly-color-emissive quad))
|
||||
(set! (-> obj deadly-fade) 1.0)
|
||||
((logtest? #x80000 (-> obj flags))
|
||||
(set! (-> obj draw color-mult quad) (-> obj deadly-color-mult quad))
|
||||
(set! (-> obj draw color-emissive quad) (-> obj deadly-color-emissive quad))
|
||||
(set! (-> obj deadly-fade) 1.0)
|
||||
)
|
||||
(else
|
||||
(set! (-> obj draw color-mult quad) (-> obj safe-color-mult quad))
|
||||
(set! (-> obj draw color-emissive quad) (-> obj safe-color-emissive quad))
|
||||
(set! (-> obj deadly-fade) 0.0)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! (-> obj draw color-mult quad) (-> obj safe-color-mult quad))
|
||||
(set! (-> obj draw color-emissive quad) (-> obj safe-color-emissive quad))
|
||||
(set! (-> obj deadly-fade) 0.0)
|
||||
)
|
||||
)
|
||||
(let ((s5-0 (new 'process 'ripple-control)))
|
||||
(set! (-> obj draw ripple) s5-0)
|
||||
(set! (-> s5-0 global-scale) 3072.0)
|
||||
(set! (-> s5-0 close-fade-dist) 163840.0)
|
||||
(set! (-> s5-0 far-fade-dist) 245760.0)
|
||||
(set! (-> s5-0 waveform) ripple-for-sunken-water)
|
||||
(let ((v0-2 (new 'process 'ripple-merc-query 100)))
|
||||
(set! (-> s5-0 query) v0-2)
|
||||
(the-as ripple-wave-set v0-2)
|
||||
(set! (-> obj draw ripple) s5-0)
|
||||
(set! (-> s5-0 global-scale) 3072.0)
|
||||
(set! (-> s5-0 close-fade-dist) 163840.0)
|
||||
(set! (-> s5-0 far-fade-dist) 245760.0)
|
||||
(set! (-> s5-0 waveform) ripple-for-sunken-water)
|
||||
(set! (-> s5-0 query) (new 'process 'ripple-merc-query 100))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1182,11 +1182,9 @@
|
||||
(set! (-> v1-2 global-scale) 3072.0)
|
||||
(set! (-> v1-2 close-fade-dist) 163840.0)
|
||||
(set! (-> v1-2 far-fade-dist) 245760.0)
|
||||
(let ((v0-2 ripple-for-villagea-water))
|
||||
(set! (-> v1-2 waveform) v0-2)
|
||||
v0-2
|
||||
)
|
||||
(set! (-> v1-2 waveform) ripple-for-villagea-water)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -1929,11 +1929,9 @@
|
||||
(set! (-> v1-2 global-scale) 3072.0)
|
||||
(set! (-> v1-2 close-fade-dist) 163840.0)
|
||||
(set! (-> v1-2 far-fade-dist) 245760.0)
|
||||
(let ((v0-2 ripple-for-villageb-water))
|
||||
(set! (-> v1-2 waveform) v0-2)
|
||||
v0-2
|
||||
)
|
||||
(set! (-> v1-2 waveform) ripple-for-villageb-water)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+2
-4
@@ -912,11 +912,9 @@
|
||||
((type-type? (-> gp-0 type) process-drawable)
|
||||
(when (zero? (logand (-> (the-as process-drawable gp-0) skel status) 4))
|
||||
(let ((s5-0 pp))
|
||||
(let ((s6-1 gp-0))
|
||||
)
|
||||
(set! pp gp-0)
|
||||
(let ((v0-1 (the-as object (ja-done? 0))))
|
||||
(let ((s6-2 s5-0))
|
||||
)
|
||||
(set! pp s5-0)
|
||||
v0-1
|
||||
)
|
||||
)
|
||||
|
||||
+2
-8
@@ -223,8 +223,7 @@
|
||||
(when (and (and *display-vol-marks* (logtest? (-> a0-1 flags) 1)) (logtest? (-> obj flags) 2))
|
||||
(when (zero? (-> obj debug-point))
|
||||
(let ((s5-0 pp))
|
||||
(let ((s6-1 (-> obj process)))
|
||||
)
|
||||
(set! pp (-> obj process))
|
||||
(let ((s4-0 0))
|
||||
(dotimes (v1-8 (-> obj pos-vol-count))
|
||||
(+! s4-0 (-> obj pos-vol v1-8 num-planes))
|
||||
@@ -235,8 +234,7 @@
|
||||
(set! (-> obj debug-point) (new 'debug 'vector-array (* 10 s4-0)))
|
||||
(set! (-> obj debug-normal) (new 'debug 'vector-array (* 10 s4-0)))
|
||||
)
|
||||
(let ((s6-2 s5-0))
|
||||
)
|
||||
(set! pp s5-0)
|
||||
)
|
||||
(set! (-> obj debug-point length) 0)
|
||||
(set! (-> obj debug-normal length) 0)
|
||||
@@ -273,7 +271,3 @@
|
||||
)
|
||||
#f
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -137,7 +137,7 @@
|
||||
(:methods
|
||||
(water-vol-idle () _type_ :state 20)
|
||||
(water-vol-startup () _type_ :state 21)
|
||||
(TODO-RENAME-22 (_type_) ripple-wave-set 22)
|
||||
(TODO-RENAME-22 (_type_) none 22)
|
||||
(reset-root! (_type_) none 23)
|
||||
(set-stack-size! (_type_) none 24)
|
||||
(TODO-RENAME-25 (_type_) object 25)
|
||||
|
||||
+3
-2
@@ -1661,9 +1661,10 @@
|
||||
)
|
||||
|
||||
;; definition for method 22 of type water-vol
|
||||
;; INFO: Return type mismatch int vs ripple-wave-set.
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
(defmethod TODO-RENAME-22 water-vol ((obj water-vol))
|
||||
(the-as ripple-wave-set 0)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function water-vol-init-by-other
|
||||
|
||||
+9
-9
@@ -103,12 +103,12 @@
|
||||
|
||||
;; definition for function drawable-load
|
||||
(defun drawable-load ((arg0 drawable) (arg1 kheap))
|
||||
(local-vars (sp-0 none))
|
||||
(local-vars (sp-0 pointer))
|
||||
(cond
|
||||
((type-type? (-> arg0 type) string)
|
||||
sp-0
|
||||
(the-as none sp-0)
|
||||
(if (< (the-as uint sp-0) (the-as uint *stack-top*))
|
||||
(&+ *kernel-sp* -1024)
|
||||
(set! sp-0 (&+ *kernel-sp* -1024))
|
||||
)
|
||||
(let ((s5-1 (the-as drawable (loado (the-as string arg0) arg1))))
|
||||
(if (and s5-1 (type-type? (-> s5-1 type) drawable))
|
||||
@@ -124,10 +124,10 @@
|
||||
|
||||
;; definition for function art-load
|
||||
(defun art-load ((arg0 string) (arg1 kheap))
|
||||
(local-vars (sp-0 none))
|
||||
sp-0
|
||||
(local-vars (sp-0 pointer))
|
||||
(the-as none sp-0)
|
||||
(if (< (the-as uint sp-0) (the-as uint *stack-top*))
|
||||
(&+ *kernel-sp* -1024)
|
||||
(set! sp-0 (&+ *kernel-sp* -1024))
|
||||
)
|
||||
(let ((s5-0 (loado arg0 arg1)))
|
||||
(if (type-type? (-> (the-as art s5-0) type) art)
|
||||
@@ -139,11 +139,11 @@
|
||||
|
||||
;; definition for function art-group-load-check
|
||||
(defun art-group-load-check ((arg0 string) (arg1 kheap) (arg2 int))
|
||||
(local-vars (sp-0 none))
|
||||
(local-vars (sp-0 pointer))
|
||||
(when *debug-segment*
|
||||
sp-0
|
||||
(the-as none sp-0)
|
||||
(if (< (the-as uint sp-0) (the-as uint *stack-top*))
|
||||
(&+ *kernel-sp* -1024)
|
||||
(set! sp-0 (&+ *kernel-sp* -1024))
|
||||
)
|
||||
(let ((s3-1 (the-as art-group (loado (make-file-name (file-kind art-group) arg0 arg2 #f) arg1))))
|
||||
(cond
|
||||
|
||||
+1
-3
@@ -443,10 +443,8 @@
|
||||
(set-continue! *game-info* "lavatube-end")
|
||||
)
|
||||
)
|
||||
(go target-warp-in s5-6 (-> arg0 trans))
|
||||
)
|
||||
enter-state
|
||||
(-> arg0 trans)
|
||||
(go target-warp-in)
|
||||
)
|
||||
(else
|
||||
(let ((s5-7 (-> *display* base-frame-counter)))
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@
|
||||
(target-racing-hit handle attack-info)
|
||||
(target-racing-jump float float symbol)
|
||||
target-title
|
||||
target-warp-in
|
||||
(target-warp-in vector vector)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
+3
-3
@@ -1383,7 +1383,8 @@
|
||||
(entity-deactivate-handler obj (-> obj entity))
|
||||
)
|
||||
(let ((s5-0 pp))
|
||||
(let ((s4-0 (-> obj stack-frame-top)))
|
||||
(set! pp obj)
|
||||
(let ((s4-0 (-> pp stack-frame-top)))
|
||||
(while (the-as protect-frame s4-0)
|
||||
(case (-> s4-0 type)
|
||||
((protect-frame state)
|
||||
@@ -1393,8 +1394,7 @@
|
||||
(set! s4-0 (-> (the-as protect-frame s4-0) next))
|
||||
)
|
||||
)
|
||||
(let ((s6-2 s5-0))
|
||||
)
|
||||
(set! pp s5-0)
|
||||
)
|
||||
(process-disconnect obj)
|
||||
(let ((v1-11 (-> obj child)))
|
||||
|
||||
+5
-7
@@ -47,7 +47,7 @@
|
||||
;; WARN: Unsupported inline assembly instruction kind - [jr t9]
|
||||
;; WARN: Unsupported inline assembly instruction kind - [sw v0, 0(sp)]
|
||||
(defun enter-state ((arg0 object) (arg1 object) (arg2 object) (arg3 object) (arg4 object) (arg5 object))
|
||||
(local-vars (s7-0 none) (sp-0 none) (sp-1 int) (ra-0 int) (sv-0 none))
|
||||
(local-vars (s7-0 none) (sp-0 int) (ra-0 int) (sv-0 none))
|
||||
(with-pp
|
||||
(logclear! (-> pp mask) (process-mask sleep sleep-code))
|
||||
(logior! (-> pp mask) (process-mask going))
|
||||
@@ -99,7 +99,7 @@
|
||||
)
|
||||
)
|
||||
(let ((v1-28 (-> pp main-thread)))
|
||||
(.lwu sp-1 28 v1-28)
|
||||
(.lwu sp-0 28 v1-28)
|
||||
)
|
||||
(let ((t9-6 (-> s0-2 code)))
|
||||
(.lw ra-0 return-from-thread-dead s7-0)
|
||||
@@ -113,7 +113,7 @@
|
||||
(set-to-run (-> pp main-thread) enter-state arg0 arg1 arg2 arg3 arg4 arg5)
|
||||
(when (!= (-> pp top-thread name) 'post)
|
||||
(let ((v0-2 (the-as object return-from-thread)))
|
||||
(.sw (the-as (function none) v0-2) 0 sp-0)
|
||||
(.sw (the-as (function none) v0-2) 0 (the-as none sp-0))
|
||||
v0-2
|
||||
)
|
||||
)
|
||||
@@ -127,11 +127,9 @@
|
||||
(with-pp
|
||||
(when (and arg0 (!= (-> arg0 type) process-tree) (-> (the-as process arg0) event-hook))
|
||||
(let ((gp-0 pp))
|
||||
(let ((s6-1 (the-as process arg0)))
|
||||
)
|
||||
(set! pp (the-as process arg0))
|
||||
(let ((v0-0 ((-> (the-as process arg0) event-hook) (-> arg1 from) (-> arg1 num-params) (-> arg1 message) arg1)))
|
||||
(let ((s6-2 gp-0))
|
||||
)
|
||||
(set! pp gp-0)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
|
||||
+2
-4
@@ -711,11 +711,9 @@ battlecontroller-default-event-handler
|
||||
(defmethod deactivate battlecontroller ((obj battlecontroller))
|
||||
(with-pp
|
||||
(let ((gp-0 pp))
|
||||
(let ((s6-1 obj))
|
||||
)
|
||||
(set! pp obj)
|
||||
(battlecontroller-off)
|
||||
(let ((s6-2 gp-0))
|
||||
)
|
||||
(set! pp gp-0)
|
||||
)
|
||||
((the-as (function process-drawable none) (find-parent-method battlecontroller 10)) obj)
|
||||
0
|
||||
|
||||
+6
-13
@@ -126,8 +126,8 @@
|
||||
)
|
||||
|
||||
;; definition for method 22 of type dark-eco-pool
|
||||
;; INFO: Return type mismatch ripple-wave-set vs none.
|
||||
(defmethod TODO-RENAME-22 dark-eco-pool ((obj dark-eco-pool))
|
||||
(local-vars (v0-3 ripple-wave-set))
|
||||
(let ((t9-0 (method-of-type water-anim TODO-RENAME-22)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
@@ -140,27 +140,20 @@
|
||||
(set! (-> gp-0 query) (new 'process 'ripple-merc-query 100))
|
||||
(case (-> obj look)
|
||||
((32)
|
||||
(set! v0-3 ripple-for-misty-dark-eco-pool)
|
||||
(set! (-> gp-0 waveform) v0-3)
|
||||
v0-3
|
||||
(set! (-> gp-0 waveform) ripple-for-misty-dark-eco-pool)
|
||||
)
|
||||
((15 16 17 18 19 20)
|
||||
(set! v0-3 ripple-for-maincave-dark-eco-pool)
|
||||
(set! (-> gp-0 waveform) v0-3)
|
||||
v0-3
|
||||
(set! (-> gp-0 waveform) ripple-for-maincave-dark-eco-pool)
|
||||
)
|
||||
((40)
|
||||
(set! v0-3 ripple-for-sunken-dark-eco-helix-room)
|
||||
(set! (-> gp-0 waveform) v0-3)
|
||||
v0-3
|
||||
(set! (-> gp-0 waveform) ripple-for-sunken-dark-eco-helix-room)
|
||||
)
|
||||
((41)
|
||||
(set! v0-3 ripple-for-finalboss-dark-eco-pool)
|
||||
(set! (-> gp-0 waveform) v0-3)
|
||||
v0-3
|
||||
(set! (-> gp-0 waveform) ripple-for-finalboss-dark-eco-pool)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
|
||||
+2
-2
@@ -998,7 +998,6 @@
|
||||
)
|
||||
|
||||
;; definition for method 22 of type water-anim
|
||||
;; INFO: Return type mismatch none vs ripple-wave-set.
|
||||
(defmethod TODO-RENAME-22 water-anim ((obj water-anim))
|
||||
(let ((s5-0 (-> obj look)))
|
||||
(if (or (< s5-0 0) (>= s5-0 (-> *water-anim-look* length)))
|
||||
@@ -1035,5 +1034,6 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(the-as ripple-wave-set (ja-post))
|
||||
(ja-post)
|
||||
(none)
|
||||
)
|
||||
|
||||
+3
-4
@@ -1647,6 +1647,7 @@
|
||||
)
|
||||
|
||||
;; definition for method 22 of type jungle-water
|
||||
;; INFO: Return type mismatch ripple-wave-set vs none.
|
||||
(defmethod TODO-RENAME-22 jungle-water ((obj jungle-water))
|
||||
(let ((t9-0 (method-of-type water-anim TODO-RENAME-22)))
|
||||
(t9-0 obj)
|
||||
@@ -1657,9 +1658,7 @@
|
||||
(set! (-> v1-2 global-scale) 3072.0)
|
||||
(set! (-> v1-2 close-fade-dist) 163840.0)
|
||||
(set! (-> v1-2 far-fade-dist) 245760.0)
|
||||
(let ((v0-2 ripple-for-jungle-water))
|
||||
(set! (-> v1-2 waveform) v0-2)
|
||||
v0-2
|
||||
)
|
||||
(set! (-> v1-2 waveform) ripple-for-jungle-water)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
+1995
File diff suppressed because it is too large
Load Diff
+3
-4
@@ -49,6 +49,7 @@
|
||||
)
|
||||
|
||||
;; definition for method 22 of type mud
|
||||
;; INFO: Return type mismatch ripple-wave-set vs none.
|
||||
(defmethod TODO-RENAME-22 mud ((obj mud))
|
||||
(let ((t9-0 (method-of-type water-anim TODO-RENAME-22)))
|
||||
(t9-0 obj)
|
||||
@@ -73,11 +74,9 @@
|
||||
)
|
||||
(case (-> obj look)
|
||||
((22 25 24 27 26 31)
|
||||
(let ((v0-3 ripple-for-small-mud))
|
||||
(set! (-> gp-0 waveform) v0-3)
|
||||
v0-3
|
||||
)
|
||||
(set! (-> gp-0 waveform) ripple-for-small-mud)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
+3
-5
@@ -1734,7 +1734,7 @@
|
||||
)
|
||||
|
||||
;; definition for method 22 of type ogre-lava
|
||||
;; INFO: Return type mismatch symbol vs ripple-wave-set.
|
||||
;; INFO: Return type mismatch symbol vs none.
|
||||
(defmethod TODO-RENAME-22 ogre-lava ((obj ogre-lava))
|
||||
(let ((t9-0 (method-of-type water-anim TODO-RENAME-22)))
|
||||
(t9-0 obj)
|
||||
@@ -1746,10 +1746,8 @@
|
||||
)
|
||||
(set! (-> obj flags) (logand -8388609 (-> obj flags)))
|
||||
(set! (-> obj flags) (logior #x2000000 (-> obj flags)))
|
||||
(let ((v0-2 'lava))
|
||||
(set! (-> obj attack-event) v0-2)
|
||||
(the-as ripple-wave-set v0-2)
|
||||
)
|
||||
(set! (-> obj attack-event) 'lava)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition of type shortcut-boulder
|
||||
|
||||
+948
@@ -0,0 +1,948 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate fuel-cell-spline-slider (fuel-cell)
|
||||
:trans
|
||||
(the-as (function none :behavior fuel-cell) hide-hud-quick)
|
||||
:code
|
||||
(behavior ((arg0 handle) (arg1 float) (arg2 float))
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(let ((v1-4 (-> self skel root-channel 0)))
|
||||
(set! (-> v1-4 frame-group) (the-as art-joint-anim (-> self draw art-group data 2)))
|
||||
)
|
||||
(if *target*
|
||||
(process-grab? *target*)
|
||||
)
|
||||
(hide-hud-quick)
|
||||
(set! *camera-look-through-other* 2)
|
||||
(set! (-> *camera-other-fov* data) 11650.845)
|
||||
(set! (-> *camera-other-trans* quad) (-> *math-camera* trans quad))
|
||||
(set! (-> *camera-other-root* quad) (-> *math-camera* trans quad))
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(while #t
|
||||
(dotimes (v1-14 (the int (-> *display* time-adjust-ratio)))
|
||||
(set! arg2 (* 0.95 arg2))
|
||||
)
|
||||
(when (and (< (fabs arg2) 13.653334) (>= (- (-> *display* base-frame-counter) (-> self state-time)) 450))
|
||||
(if *target*
|
||||
(process-release? *target*)
|
||||
)
|
||||
(go-virtual wait)
|
||||
)
|
||||
(set! arg1 (+ arg1 (/ (* arg2 (-> *display* seconds-per-frame)) (path-distance (-> self path)))))
|
||||
(cond
|
||||
((< 1.0 arg1)
|
||||
(set! arg1 (+ -1.0 arg1))
|
||||
)
|
||||
((< arg1 0.0)
|
||||
(set! arg1 (+ 1.0 arg1))
|
||||
)
|
||||
)
|
||||
(eval-path-curve! (-> self path) (-> self root-override trans) arg1 'interp)
|
||||
(set! (-> self root-override trans y) (+ 8192.0 (-> self root-override trans y)))
|
||||
(set! (-> self root-override trans y) (fmax 106496.0 (-> self root-override trans y)))
|
||||
(set! (-> self base quad) (-> self root-override trans quad))
|
||||
(transform-post)
|
||||
(animate self)
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector)))
|
||||
(vector-! s4-0 (-> self root-override trans) *camera-other-trans*)
|
||||
(vector-normalize! s4-0 1.0)
|
||||
(forward-down->inv-matrix *camera-other-matrix* s4-0 (new 'static 'vector :y -1.0 :w 1.0))
|
||||
)
|
||||
(set! *camera-look-through-other* 2)
|
||||
(set-letterbox-frames 10)
|
||||
(suspend)
|
||||
(let ((a0-27 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-27 param 0) 0.5)
|
||||
(joint-control-channel-group-eval! a0-27 (the-as art-joint-anim #f) num-func-loop!)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function fuel-cell-init-as-spline-slider
|
||||
;; INFO: Return type mismatch object vs none.
|
||||
(defbehavior fuel-cell-init-as-spline-slider fuel-cell ((arg0 handle) (arg1 float) (arg2 float) (arg3 int))
|
||||
(initialize self)
|
||||
(set! (-> self fact pickup-type) (pickup-type fuel-cell))
|
||||
(set! (-> self fact pickup-amount) (the float arg3))
|
||||
(initialize-params self 0 1024.0)
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(set! (-> self actor-pause) #f)
|
||||
(set! (-> self entity) (-> arg0 process 0 entity))
|
||||
(set! (-> self path) (new 'process 'curve-control self 'path -1000000000.0))
|
||||
(set! (-> self movie-pos-index) -1)
|
||||
(go fuel-cell-spline-slider arg0 arg1 arg2)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition of type robber
|
||||
(deftype robber (process-drawable)
|
||||
((root-override collide-shape-moving :offset 112)
|
||||
(curve-position float :offset-assert 176)
|
||||
(speed float :offset-assert 180)
|
||||
(facing vector :inline :offset-assert 192)
|
||||
(tangent vector :inline :offset-assert 208)
|
||||
(run-blend-interp float :offset-assert 224)
|
||||
(near-timer int32 :offset-assert 228)
|
||||
(far-time uint64 :offset-assert 232)
|
||||
(y-offset float :offset-assert 240)
|
||||
(y-offset-desired float :offset-assert 244)
|
||||
(y-vel float :offset-assert 248)
|
||||
(water-height float :offset-assert 252)
|
||||
(timeout uint64 :offset-assert 256)
|
||||
(last-ambient-time uint64 :offset-assert 264)
|
||||
(time-to-next-ambient uint64 :offset-assert 272)
|
||||
)
|
||||
:heap-base #xb0
|
||||
:method-count-assert 20
|
||||
:size-assert #x118
|
||||
:flag-assert #x1400b00118
|
||||
(:states
|
||||
robber-dead
|
||||
robber-debug
|
||||
robber-die
|
||||
robber-flee
|
||||
robber-got-away
|
||||
robber-idle
|
||||
robber-initial
|
||||
robber-initial-notice
|
||||
robber-tired
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type robber
|
||||
(defmethod inspect robber ((obj robber))
|
||||
(let ((t9-0 (method-of-type process-drawable inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~T~Tcurve-position: ~f~%" (-> obj curve-position))
|
||||
(format #t "~T~Tspeed: ~f~%" (-> obj speed))
|
||||
(format #t "~T~Tfacing: #<vector @ #x~X>~%" (-> obj facing))
|
||||
(format #t "~T~Ttangent: #<vector @ #x~X>~%" (-> obj tangent))
|
||||
(format #t "~T~Trun-blend-interp: ~f~%" (-> obj run-blend-interp))
|
||||
(format #t "~T~Tnear-timer: ~D~%" (-> obj near-timer))
|
||||
(format #t "~T~Tfar-time: ~D~%" (-> obj far-time))
|
||||
(format #t "~T~Ty-offset: ~f~%" (-> obj y-offset))
|
||||
(format #t "~T~Ty-offset-desired: ~f~%" (-> obj y-offset-desired))
|
||||
(format #t "~T~Ty-vel: ~f~%" (-> obj y-vel))
|
||||
(format #t "~T~Twater-height: ~f~%" (-> obj water-height))
|
||||
(format #t "~T~Ttimeout: ~D~%" (-> obj timeout))
|
||||
(format #t "~T~Tlast-ambient-time: ~D~%" (-> obj last-ambient-time))
|
||||
(format #t "~T~Ttime-to-next-ambient: ~D~%" (-> obj time-to-next-ambient))
|
||||
obj
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup *robber-sg* robber
|
||||
0
|
||||
10
|
||||
((1 (meters 20)) (2 (meters 40)) (3 (meters 999999)))
|
||||
:bounds (static-spherem 0 0 0 4)
|
||||
:longest-edge (meters 0)
|
||||
:shadow 4
|
||||
)
|
||||
|
||||
;; definition for function robber-event-handler
|
||||
(defbehavior robber-event-handler robber ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('attack)
|
||||
(go robber-die)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function robber-task-complete?
|
||||
(defbehavior robber-task-complete? robber ()
|
||||
(local-vars (sv-16 symbol))
|
||||
(process-entity-status! self (entity-perm-status complete) #t)
|
||||
(when (or (-> self link prev) (-> self link next))
|
||||
(set! sv-16 (the-as symbol #f))
|
||||
(apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16))
|
||||
(cond
|
||||
(sv-16
|
||||
(close-specific-task! (-> self entity extra perm task) (task-status need-reminder))
|
||||
(format #t "robber task is complete~%")
|
||||
)
|
||||
(else
|
||||
)
|
||||
)
|
||||
sv-16
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function robber-find-ground
|
||||
;; Used lq/sq
|
||||
(defbehavior robber-find-ground robber ()
|
||||
(let ((gp-0 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> gp-0 quad) (-> self root-override trans quad))
|
||||
(let ((t2-0 (new 'stack-no-clear 'collide-tri-result)))
|
||||
(set! (-> gp-0 y) (+ 8192.0 (-> gp-0 y)))
|
||||
(let ((f0-2 (dummy-10 *collide-cache* gp-0 (new 'static 'vector :y -81920.0 :w 1.0) 40.96 1 self t2-0 1))
|
||||
(v1-5 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set! (-> v1-5 quad) (-> self root-override trans quad))
|
||||
(set! (-> v1-5 y) (+ (-> gp-0 y) (* -81920.0 f0-2)))
|
||||
(cond
|
||||
((and (>= f0-2 0.0) (< 204.8 (fabs (- (-> v1-5 y) (-> self water-height)))))
|
||||
(set! (-> self y-offset-desired)
|
||||
(- (+ (-> gp-0 y) (* -81920.0 f0-2)) (- (-> self root-override trans y) (-> self y-offset)))
|
||||
)
|
||||
#t
|
||||
)
|
||||
(else
|
||||
(set! (-> self y-offset-desired) 0.0)
|
||||
#f
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function robber-rotate
|
||||
;; Used lq/sq
|
||||
(defbehavior robber-rotate robber ((arg0 target) (arg1 float))
|
||||
(let ((s5-0 (new 'stack-no-clear 'matrix))
|
||||
(gp-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(TODO-RENAME-14 (-> self path) (-> self tangent) (-> self curve-position))
|
||||
(cond
|
||||
((and arg0 *target*)
|
||||
(vector-! gp-0 (-> self root-override trans) (target-pos 0))
|
||||
(vector-normalize! gp-0 1.0)
|
||||
)
|
||||
((< (-> self speed) 0.0)
|
||||
(vector-negate! gp-0 (-> self tangent))
|
||||
)
|
||||
(else
|
||||
(set! (-> gp-0 quad) (-> self tangent quad))
|
||||
)
|
||||
)
|
||||
(matrix-from-two-vectors-max-angle-partial! s5-0 (-> self facing) gp-0 arg1 0.25)
|
||||
(vector-matrix*! gp-0 (-> self facing) s5-0)
|
||||
(vector-normalize! gp-0 1.0)
|
||||
(forward-down->inv-matrix s5-0 gp-0 (new 'static 'vector :y -1.0))
|
||||
(matrix->quaternion (-> self root-override quat) s5-0)
|
||||
(set! (-> self run-blend-interp) (acos (vector-dot gp-0 (-> self facing))))
|
||||
(set! (-> self run-blend-interp) (* 0.0002746582 (-> self run-blend-interp)))
|
||||
(if (< (vector-dot (-> self facing) (the-as vector (-> s5-0 vector))) 0.0)
|
||||
(set! (-> self run-blend-interp) (- (-> self run-blend-interp)))
|
||||
)
|
||||
(let ((v0-10 (-> self facing)))
|
||||
(set! (-> v0-10 quad) (-> gp-0 quad))
|
||||
v0-10
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function robber-move
|
||||
(defbehavior robber-move robber ()
|
||||
(+!
|
||||
(-> self curve-position)
|
||||
(/ (the float
|
||||
(* (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)) (the int (-> self speed)))
|
||||
)
|
||||
(path-distance (-> self path))
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((< 1.0 (-> self curve-position))
|
||||
(set! (-> self curve-position) (+ -1.0 (-> self curve-position)))
|
||||
)
|
||||
((< (-> self curve-position) 0.0)
|
||||
(set! (-> self curve-position) (+ 1.0 (-> self curve-position)))
|
||||
)
|
||||
)
|
||||
(eval-path-curve! (-> self path) (-> self root-override trans) (-> self curve-position) 'interp)
|
||||
(cond
|
||||
((< (-> self y-offset-desired) (-> self y-offset))
|
||||
(set! (-> self y-vel) (* 0.25 (- (-> self y-offset-desired) (-> self y-offset))))
|
||||
(set! (-> self y-vel) (fmax -3.4133334 (-> self y-vel)))
|
||||
(+! (-> self y-offset) (-> self y-vel))
|
||||
(when (>= (-> self y-offset-desired) (-> self y-offset))
|
||||
(set! (-> self y-offset) (-> self y-offset-desired))
|
||||
(set! (-> self y-vel) 0.0)
|
||||
)
|
||||
)
|
||||
((< (-> self y-offset) (-> self y-offset-desired))
|
||||
(set! (-> self y-vel) (* 0.5 (- (-> self y-offset-desired) (-> self y-offset))))
|
||||
(set! (-> self y-vel) (fmin 13.653334 (-> self y-vel)))
|
||||
(+! (-> self y-offset) (-> self y-vel))
|
||||
(when (>= (-> self y-offset) (-> self y-offset-desired))
|
||||
(set! (-> self y-offset) (-> self y-offset-desired))
|
||||
(set! (-> self y-vel) 0.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((f0-34 (+ (-> self root-override trans y) (-> self y-offset))))
|
||||
(set! (-> self root-override trans y) f0-34)
|
||||
f0-34
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function robber-calc-speed
|
||||
(defbehavior robber-calc-speed robber ((arg0 float) (arg1 float) (arg2 float) (arg3 float) (arg4 symbol))
|
||||
(let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root-override trans) (target-pos 0))))
|
||||
(set! (-> gp-1 y) 0.0)
|
||||
(let* ((f2-1 (/ (- (vector-length gp-1) arg0) (- arg1 arg0)))
|
||||
(f0-4 (- 1.0 (fmax 0.0 (fmin 1.0 f2-1))))
|
||||
(f0-5 (lerp arg3 arg2 f0-4))
|
||||
(f30-0 (* 0.0033333334 f0-5))
|
||||
)
|
||||
(cond
|
||||
((or (not arg4) (< arg0 (vector-length gp-1)))
|
||||
(if (< (-> self speed) 0.0)
|
||||
(set! f30-0 (- f30-0))
|
||||
)
|
||||
)
|
||||
((< (vector-dot gp-1 (-> self tangent)) 0.0)
|
||||
(set! f30-0 (- f30-0))
|
||||
)
|
||||
)
|
||||
(set! (-> self speed) f30-0)
|
||||
f30-0
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function robber-calc-anim-speed
|
||||
(defbehavior robber-calc-anim-speed robber ()
|
||||
(let* ((f0-1 (fabs (-> self speed)))
|
||||
(f0-2 (* 0.07324219 f0-1))
|
||||
(f0-3 (+ -15.0 f0-2))
|
||||
(f1-3 (* 0.13333334 f0-3))
|
||||
)
|
||||
(fmin 1.5 (fmax 0.9 f1-3))
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate robber-debug (robber)
|
||||
:code
|
||||
(behavior ()
|
||||
(while #t
|
||||
(let ((a0-0 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-0 param 1) 1.0)
|
||||
(set! (-> a0-0 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-0
|
||||
(if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(let ((gp-0 (new 'stack-no-clear 'vector)))
|
||||
(let ((a1-1 (new 'stack-no-clear 'vector)))
|
||||
(clmf-input gp-0 a1-1 1)
|
||||
)
|
||||
(format *stdcon* "rv ~f ~f ~f~%" (-> gp-0 x) (-> gp-0 y) (-> gp-0 z))
|
||||
(vector-float*! gp-0 gp-0 4096.0)
|
||||
(+! (-> self curve-position) (/ (-> gp-0 y) (path-distance (-> self path))))
|
||||
)
|
||||
(cond
|
||||
((< 1.0 (-> self curve-position))
|
||||
(set! (-> self curve-position) (+ -1.0 (-> self curve-position)))
|
||||
)
|
||||
((< (-> self curve-position) 0.0)
|
||||
(set! (-> self curve-position) (+ 1.0 (-> self curve-position)))
|
||||
)
|
||||
)
|
||||
(eval-path-curve! (-> self path) (-> self root-override trans) (-> self curve-position) 'interp)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(robber-find-ground)
|
||||
(suspend)
|
||||
(let ((a0-7 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-7 param 0) (the float (+ (-> a0-7 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-7 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) ja-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate robber-dead (robber)
|
||||
:code
|
||||
(behavior () (dummy-18 self) (deactivate self) (none))
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate robber-die (robber)
|
||||
:event
|
||||
(the-as
|
||||
(function process int symbol event-message-block object :behavior robber)
|
||||
process-drawable-death-event-handler
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(let ((gp-0 #t))
|
||||
(when (robber-task-complete?)
|
||||
(let ((v1-3 (-> self entity extra perm)))
|
||||
(logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage))
|
||||
(cond
|
||||
((zero? (-> v1-3 user-object 1))
|
||||
(set! (-> v1-3 user-object 1) 1)
|
||||
(set! (-> v1-3 user-object 0) (-> self curve-position))
|
||||
(let ((f30-0 (if (>= (-> self speed) 0.0)
|
||||
163840.0
|
||||
-163840.0
|
||||
)
|
||||
)
|
||||
(s5-0 (get-process *default-dead-pool* fuel-cell #x4000))
|
||||
)
|
||||
(when s5-0
|
||||
(let ((t9-2 (method-of-type fuel-cell activate)))
|
||||
(t9-2 (the-as fuel-cell s5-0) self 'fuel-cell (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
s5-0
|
||||
fuel-cell-init-as-spline-slider
|
||||
(process->handle self)
|
||||
(-> self curve-position)
|
||||
f30-0
|
||||
(-> self entity extra perm task)
|
||||
)
|
||||
(-> s5-0 ppointer)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! gp-0 #f)
|
||||
(logior! (-> self draw status) (draw-status drwf01))
|
||||
(let ((s5-1 (new 'stack-no-clear 'vector)))
|
||||
(eval-path-curve! (-> self path) s5-1 (the-as float (-> v1-3 user-object 0)) 'interp)
|
||||
(set! (-> s5-1 y) (+ 8192.0 (-> s5-1 y)))
|
||||
(birth-pickup-at-point
|
||||
s5-1
|
||||
(pickup-type fuel-cell)
|
||||
(the float (-> self entity extra perm task))
|
||||
#f
|
||||
self
|
||||
(the-as fact-info #f)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when gp-0
|
||||
(let ((a0-12 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-12 frame-group) (the-as art-joint-anim (-> self draw art-group data 8)))
|
||||
(set! (-> a0-12 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 8)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-12 param 1) 1.0)
|
||||
(set! (-> a0-12 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-12 (the-as art-joint-anim (-> self draw art-group data 8)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(robber-calc-speed 4096.0 8192.0 122880.0 122880.0 #f)
|
||||
(robber-move)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(suspend)
|
||||
(let ((a0-15 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-15 param 0) (the float (+ (-> a0-15 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-15 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-15 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(while (-> self child)
|
||||
(suspend)
|
||||
)
|
||||
(go robber-dead)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) transform-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate robber-got-away (robber)
|
||||
:event
|
||||
robber-event-handler
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (and
|
||||
(not (and
|
||||
*target*
|
||||
(>= 204800.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
)
|
||||
(robber-find-ground)
|
||||
)
|
||||
(go robber-idle)
|
||||
)
|
||||
(if (and
|
||||
*target*
|
||||
(>= 122880.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
(go robber-flee)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(when (not (= (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
(-> self draw art-group data 7)
|
||||
)
|
||||
)
|
||||
(ja-channel-push! 1 60)
|
||||
(let ((v1-8 (-> self skel root-channel 0)))
|
||||
(set! (-> v1-8 frame-group) (the-as art-joint-anim (-> self draw art-group data 7)))
|
||||
)
|
||||
)
|
||||
(while #t
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(set! (-> gp-0 param 0) (robber-calc-anim-speed))
|
||||
(joint-control-channel-group-eval! gp-0 (the-as art-joint-anim #f) num-func-loop!)
|
||||
)
|
||||
(if (< 27.306667 (fabs (-> self speed)))
|
||||
(set! (-> self speed) (* 0.95 (-> self speed)))
|
||||
)
|
||||
(robber-move)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) transform-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate robber-tired (robber)
|
||||
:event
|
||||
robber-event-handler
|
||||
:enter
|
||||
(behavior () (set! (-> self y-offset-desired) -12288.0) (none))
|
||||
:exit
|
||||
(behavior () (set! (-> self y-offset-desired) 0.0) (none))
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (not (and
|
||||
*target*
|
||||
(>= 163840.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
)
|
||||
(go robber-got-away)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(while #t
|
||||
(when (not (= (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
(-> self draw art-group data 7)
|
||||
)
|
||||
)
|
||||
(ja-channel-push! 1 60)
|
||||
(let ((v1-8 (-> self skel root-channel 0)))
|
||||
(set! (-> v1-8 frame-group) (the-as art-joint-anim (-> self draw art-group data 7)))
|
||||
)
|
||||
)
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(set! (-> gp-0 param 0) (robber-calc-anim-speed))
|
||||
(joint-control-channel-group-eval! gp-0 (the-as art-joint-anim #f) num-func-loop!)
|
||||
)
|
||||
(robber-calc-speed 32768.0 122880.0 122060.8 20480.0 #f)
|
||||
(robber-move)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(suspend)
|
||||
(when (>= (- (-> *display* base-frame-counter) (the-as int (-> self last-ambient-time)))
|
||||
(the-as int (-> self time-to-next-ambient))
|
||||
)
|
||||
(ja-channel-push! 1 60)
|
||||
(let ((a0-14 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-14 frame-group) (the-as art-joint-anim (-> self draw art-group data 11)))
|
||||
(set! (-> a0-14 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 11)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-14 param 1) 1.0)
|
||||
(set! (-> a0-14 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-14 (the-as art-joint-anim (-> self draw art-group data 11)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(robber-calc-speed 32768.0 122880.0 122060.8 20480.0 #f)
|
||||
(robber-move)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(suspend)
|
||||
(let ((a0-17 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-17 param 0) (the float (+ (-> a0-17 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-17 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-17 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(set! (-> self last-ambient-time) (the-as uint (-> *display* base-frame-counter)))
|
||||
(let* ((f30-0 300.0)
|
||||
(f28-0 2.0)
|
||||
(f26-0 2.0)
|
||||
(v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
|
||||
(v1-42 (the-as number (logior #x3f800000 v1-41)))
|
||||
)
|
||||
(set! (-> self time-to-next-ambient)
|
||||
(the-as uint (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-42)))))))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) transform-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate robber-flee (robber)
|
||||
:event
|
||||
robber-event-handler
|
||||
:enter
|
||||
(behavior ()
|
||||
(set! (-> self near-timer) 3000)
|
||||
(set! (-> self far-time) (the-as uint (-> *display* base-frame-counter)))
|
||||
(set! (-> self y-offset-desired) 0.0)
|
||||
(none)
|
||||
)
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (not (and
|
||||
*target*
|
||||
(>= 163840.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
)
|
||||
(go robber-got-away)
|
||||
)
|
||||
(when (and
|
||||
*target*
|
||||
(>= 102400.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
(set! (-> self near-timer)
|
||||
(- (-> self near-timer) (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)))
|
||||
)
|
||||
(if (<= (-> self near-timer) 0)
|
||||
(go robber-tired)
|
||||
)
|
||||
(set! (-> self far-time) (the-as uint (-> *display* base-frame-counter)))
|
||||
)
|
||||
(if (>= (- (-> *display* base-frame-counter) (the-as int (-> self far-time))) 900)
|
||||
(set! (-> self near-timer) (the-as int (-> self timeout)))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(while #t
|
||||
(when (not (= (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
(-> self draw art-group data 7)
|
||||
)
|
||||
)
|
||||
(ja-channel-push! 1 60)
|
||||
(let ((v1-8 (-> self skel root-channel 0)))
|
||||
(set! (-> v1-8 frame-group) (the-as art-joint-anim (-> self draw art-group data 7)))
|
||||
)
|
||||
)
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(set! (-> gp-0 param 0) (robber-calc-anim-speed))
|
||||
(joint-control-channel-group-eval! gp-0 (the-as art-joint-anim #f) num-func-loop!)
|
||||
)
|
||||
(robber-calc-speed 61440.0 122880.0 204800.0 16384.0 #t)
|
||||
(robber-move)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(suspend)
|
||||
(when (>= (- (-> *display* base-frame-counter) (the-as int (-> self last-ambient-time)))
|
||||
(the-as int (-> self time-to-next-ambient))
|
||||
)
|
||||
(ja-channel-push! 1 60)
|
||||
(let ((a0-14 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-14 frame-group) (the-as art-joint-anim (-> self draw art-group data 11)))
|
||||
(set! (-> a0-14 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 11)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-14 param 1) 1.0)
|
||||
(set! (-> a0-14 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-14 (the-as art-joint-anim (-> self draw art-group data 11)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(robber-calc-speed 61440.0 122880.0 204800.0 16384.0 #t)
|
||||
(robber-move)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(suspend)
|
||||
(let ((a0-17 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-17 param 0) (the float (+ (-> a0-17 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-17 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-17 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(set! (-> self last-ambient-time) (the-as uint (-> *display* base-frame-counter)))
|
||||
(let* ((f30-0 300.0)
|
||||
(f28-0 3.0)
|
||||
(f26-0 5.0)
|
||||
(v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
|
||||
(v1-42 (the-as number (logior #x3f800000 v1-41)))
|
||||
)
|
||||
(set! (-> self time-to-next-ambient)
|
||||
(the-as uint (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-42)))))))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) transform-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate robber-idle (robber)
|
||||
:event
|
||||
robber-event-handler
|
||||
:enter
|
||||
(behavior () (set! (-> self speed) 0.0) (none))
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (and
|
||||
*target*
|
||||
(>= 122880.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
(go robber-flee)
|
||||
)
|
||||
(robber-rotate (the-as target #t) 182.04445)
|
||||
(robber-move)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(ja-channel-push! 1 60)
|
||||
(while #t
|
||||
(let ((a0-1 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 10)))
|
||||
(set! (-> a0-1 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 10)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-1 param 1) 1.0)
|
||||
(set! (-> a0-1 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-1 (the-as art-joint-anim (-> self draw art-group data 10)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-2 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-2 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) transform-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate robber-initial-notice (robber)
|
||||
:event
|
||||
robber-event-handler
|
||||
:trans
|
||||
(behavior ()
|
||||
(when (logtest? (-> self draw status) (draw-status drwf03))
|
||||
(if (and
|
||||
*target*
|
||||
(>= 163840.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
(level-hint-spawn
|
||||
(game-text-id rolling-flying-lurker-intro)
|
||||
"sksp0116"
|
||||
(the-as entity #f)
|
||||
*entity-pool*
|
||||
(game-task none)
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (and
|
||||
*target*
|
||||
(>= 32768.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
(go robber-flee)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(TODO-RENAME-14 (-> self path) (-> self tangent) (-> self curve-position))
|
||||
(let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root-override trans) (target-pos 0)))
|
||||
(f0-1 6.826667)
|
||||
)
|
||||
(set! (-> gp-1 y) 0.0)
|
||||
(if (< (vector-dot gp-1 (-> self tangent)) 0.0)
|
||||
(set! f0-1 (- f0-1))
|
||||
)
|
||||
(set! (-> self speed) f0-1)
|
||||
)
|
||||
(ja-channel-push! 1 60)
|
||||
(while #t
|
||||
(let ((a0-3 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 6)))
|
||||
(set! (-> a0-3 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 6)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-3 param 1) 2.0)
|
||||
(set! (-> a0-3 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-3 (the-as art-joint-anim (-> self draw art-group data 6)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(robber-calc-speed 61440.0 122880.0 2048.0 2048.0 #t)
|
||||
(robber-rotate (the-as target #f) 1820.4445)
|
||||
(suspend)
|
||||
(let ((a0-6 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-6 param 0) (the float (+ (-> a0-6 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-6 param 1) 2.0)
|
||||
(joint-control-channel-group-eval! a0-6 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(go robber-flee)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) transform-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate robber-initial (robber)
|
||||
:event
|
||||
robber-event-handler
|
||||
:enter
|
||||
(behavior () (set! (-> self speed) 0.0) (none))
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (and
|
||||
*target*
|
||||
(>= 122880.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)))
|
||||
)
|
||||
(go robber-initial-notice)
|
||||
)
|
||||
(robber-move)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(ja-channel-push! 1 60)
|
||||
(while #t
|
||||
(let ((a0-1 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 5)))
|
||||
(set! (-> a0-1 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-1 param 1) 1.0)
|
||||
(set! (-> a0-1 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-1 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-2 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-2 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior robber) transform-post)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type robber
|
||||
;; INFO: Return type mismatch object vs none.
|
||||
;; Used lq/sq
|
||||
(defmethod init-from-entity! robber ((obj robber) (arg0 entity-actor))
|
||||
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player))))
|
||||
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
|
||||
(set! (-> s4-0 reaction) default-collision-reaction)
|
||||
(set! (-> s4-0 no-reaction)
|
||||
(the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)
|
||||
)
|
||||
(let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
|
||||
(set! (-> s3-0 prim-core collide-as) (the-as uint 256))
|
||||
(set! (-> s3-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s3-0 prim-core action) (the-as uint 3073))
|
||||
(set! (-> s3-0 prim-core offense) 4)
|
||||
(set! (-> s3-0 transform-index) 3)
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 10240.0)
|
||||
(set-root-prim! s4-0 s3-0)
|
||||
)
|
||||
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
|
||||
(backup-collide-with-as s4-0)
|
||||
(set! (-> obj root-override) s4-0)
|
||||
)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(initialize-skeleton obj *robber-sg* '())
|
||||
(set! (-> obj root-override pause-adjust-distance) 122880.0)
|
||||
(set! (-> obj link) (new 'process 'actor-link-info obj))
|
||||
(set! (-> obj path) (new 'process 'curve-control obj 'path -1000000000.0))
|
||||
(logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text))
|
||||
(set! (-> obj fact)
|
||||
(new 'process 'fact-info-enemy obj (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))
|
||||
)
|
||||
(set! (-> obj draw origin-joint-index) (the-as uint 3))
|
||||
(set! (-> obj curve-position) (res-lump-float (-> obj entity) 'initial-spline-pos))
|
||||
(eval-path-curve! (-> obj path) (-> obj root-override trans) (-> obj curve-position) 'interp)
|
||||
(TODO-RENAME-14 (-> obj path) (-> obj tangent) (-> obj curve-position))
|
||||
(set! (-> obj facing quad) (-> obj tangent quad))
|
||||
(let ((s4-1 (new 'stack-no-clear 'matrix)))
|
||||
(forward-down->inv-matrix s4-1 (-> obj facing) (new 'static 'vector :y -1.0))
|
||||
(matrix->quaternion (-> obj root-override quat) s4-1)
|
||||
)
|
||||
(set! (-> obj y-vel) 0.0)
|
||||
(set! (-> obj water-height) (res-lump-float (-> obj entity) 'water-height))
|
||||
(robber-find-ground)
|
||||
(set! (-> obj y-offset) (-> obj y-offset-desired))
|
||||
(let ((f0-14 (res-lump-float arg0 'timeout :default 10.0)))
|
||||
(set! (-> obj timeout) (the-as uint (the int (* 300.0 f0-14))))
|
||||
)
|
||||
(set! (-> obj last-ambient-time) (the-as uint 0))
|
||||
(set! (-> obj time-to-next-ambient) (the-as uint 0))
|
||||
(set! (-> obj speed) 0.0)
|
||||
(let ((v1-42 (-> obj entity extra perm)))
|
||||
(logior! (-> v1-42 status) (entity-perm-status user-set-from-cstage))
|
||||
(if (nonzero? (-> v1-42 user-object 1))
|
||||
(go robber-die)
|
||||
)
|
||||
)
|
||||
(if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)))
|
||||
(go robber-dead)
|
||||
(go robber-initial)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
+2500
File diff suppressed because it is too large
Load Diff
+3
-5
@@ -280,7 +280,7 @@
|
||||
)
|
||||
|
||||
;; definition for method 22 of type sunken-water
|
||||
;; INFO: Return type mismatch ripple-merc-query vs ripple-wave-set.
|
||||
;; INFO: Return type mismatch ripple-merc-query vs none.
|
||||
;; Used lq/sq
|
||||
(defmethod TODO-RENAME-22 sunken-water ((obj sunken-water))
|
||||
(let ((t9-0 (method-of-type water-anim TODO-RENAME-22)))
|
||||
@@ -305,9 +305,7 @@
|
||||
(set! (-> s5-0 close-fade-dist) 163840.0)
|
||||
(set! (-> s5-0 far-fade-dist) 245760.0)
|
||||
(set! (-> s5-0 waveform) ripple-for-sunken-water)
|
||||
(let ((v0-2 (new 'process 'ripple-merc-query 100)))
|
||||
(set! (-> s5-0 query) v0-2)
|
||||
(the-as ripple-wave-set v0-2)
|
||||
)
|
||||
(set! (-> s5-0 query) (new 'process 'ripple-merc-query 100))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
+1403
File diff suppressed because it is too large
Load Diff
+3
-4
@@ -1352,6 +1352,7 @@
|
||||
)
|
||||
|
||||
;; definition for method 22 of type villagea-water
|
||||
;; INFO: Return type mismatch ripple-wave-set vs none.
|
||||
(defmethod TODO-RENAME-22 villagea-water ((obj villagea-water))
|
||||
(let ((t9-0 (method-of-type water-anim TODO-RENAME-22)))
|
||||
(t9-0 obj)
|
||||
@@ -1362,9 +1363,7 @@
|
||||
(set! (-> v1-2 global-scale) 3072.0)
|
||||
(set! (-> v1-2 close-fade-dist) 163840.0)
|
||||
(set! (-> v1-2 far-fade-dist) 245760.0)
|
||||
(let ((v0-2 ripple-for-villagea-water))
|
||||
(set! (-> v1-2 waveform) v0-2)
|
||||
v0-2
|
||||
)
|
||||
(set! (-> v1-2 waveform) ripple-for-villagea-water)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
+3
-4
@@ -2077,6 +2077,7 @@
|
||||
)
|
||||
|
||||
;; definition for method 22 of type villageb-water
|
||||
;; INFO: Return type mismatch ripple-wave-set vs none.
|
||||
(defmethod TODO-RENAME-22 villageb-water ((obj villageb-water))
|
||||
(let ((t9-0 (method-of-type water-anim TODO-RENAME-22)))
|
||||
(t9-0 obj)
|
||||
@@ -2087,9 +2088,7 @@
|
||||
(set! (-> v1-2 global-scale) 3072.0)
|
||||
(set! (-> v1-2 close-fade-dist) 163840.0)
|
||||
(set! (-> v1-2 far-fade-dist) 245760.0)
|
||||
(let ((v0-2 ripple-for-villageb-water))
|
||||
(set! (-> v1-2 waveform) v0-2)
|
||||
v0-2
|
||||
)
|
||||
(set! (-> v1-2 waveform) ripple-for-villageb-water)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
+1333
File diff suppressed because it is too large
Load Diff
@@ -199,7 +199,6 @@
|
||||
// not in use in PC port
|
||||
"tie-near-init-engine",
|
||||
"tie-near-end-buffer"
|
||||
|
||||
],
|
||||
|
||||
"skip_compile_states": {
|
||||
|
||||
Reference in New Issue
Block a user