mirror of
https://github.com/open-goal/jak-project
synced 2026-07-01 20:20:35 -04:00
decomp: Re-attempting previously blocked state decomp files (#907)
* blocked: `part-tester` - `code` handler thinks it returns nothing * blocked: `crates` finished but `go` is returning none causing issues * blocked: `(event ram-boss-idle)::snow-ram-boss` expression building fails due to delay slot issue * decomp: finish `snow-ram` | `seagull` blocked, new static data issue * decomp: finish `snow-bumper` * stuck: `snow-ball` close, can't figure out a type made on the stack * decomp: finish `spider-egg` * decomp: finish `puffer` * decomp: finish `driller-lurker` * decomp: finish `dark-crystal` * stuck: `kermit` - mostly done but stuck on a joint related callback arg * decomp: finish `gnawer` * decomp: finish `mother-spider-egg` * decomp: finish `swamp-blimp` * stuck: `mistycannon` prebind function signature * decomp: finish `citb-plat` * decomp: finish `darkvine` * blocked: `jungle-mirrors` - issues with `link` macro * decomp: finish `launcherdoor` * decomp: finish `quicksandlurker` except for 1 unused function * stuck: `balloonlurker` - `(code balloonlurker-mine-explode)` has some weird joint related code * stuck: need to decompile an asm func in `orbit-plat` * decomp: finish `voicebox` * blocked: `mother-spider` has issues where `go` returns none * decomp: finish `bully` * decomp: finish `seagull` * fixed up after merge conflicts * decomp: finish `jungle-mirrors` * update gsrc * double checked files, fixed issues * decomp: revert change to projectile methods * decomp: some more fixes * address feedback * fix up remaining method calls in `cam-states` * fix jungle-mirrors
This commit is contained in:
+2
-1
@@ -76,7 +76,8 @@ tasks:
|
||||
- python ./scripts/find-label-types.py --file "{{.FILES}}"
|
||||
type-test:
|
||||
cmds:
|
||||
- ./out/build/Release/bin/goalc-test.exe --gtest_brief=0 --gtest_filter="*MANUAL_TEST_TypeConsistencyWithBuildFirst*"
|
||||
- cmd: ./out/build/Release/bin/goalc-test.exe --gtest_brief=0 --gtest_filter="*MANUAL_TEST_TypeConsistencyWithBuildFirst*"
|
||||
ignore_error: true
|
||||
check-gsrc-file:
|
||||
cmds:
|
||||
- python ./scripts/check-gsrc-file.py --files "{{.FILES}}"
|
||||
|
||||
+474
-421
File diff suppressed because it is too large
Load Diff
@@ -890,5 +890,22 @@
|
||||
[99, "(function symbol)"]
|
||||
],
|
||||
|
||||
"swamp-blimp": [
|
||||
[29, "(function int none)"]
|
||||
],
|
||||
|
||||
"jungle-mirrors": [
|
||||
[14, "(function string none)"],
|
||||
[32, "(function entity-actor (pointer symbol) object)"] // passed to `actor-link-info` function
|
||||
],
|
||||
|
||||
"voicebox": [
|
||||
[1, "(function none :behavior voicebox)"]
|
||||
],
|
||||
|
||||
"seagull": [
|
||||
[30, "(function process symbol)"]
|
||||
],
|
||||
|
||||
"placeholder-do-not-add-below": []
|
||||
}
|
||||
|
||||
@@ -312,14 +312,14 @@
|
||||
|
||||
// all unchecked and in level DGO code
|
||||
"(anon-function 21 plant-boss)", // CFG
|
||||
// "(anon-function 10 ice-cube)",
|
||||
// "(anon-function 15 ice-cube)",
|
||||
"mistycannon-find-best-solution",
|
||||
"target-flut-falling-anim-trans", // CFG failure
|
||||
"kermit-check-to-hit-player?",
|
||||
"(anon-function 36 mistycannon)",
|
||||
"(anon-function 6 title-obs)",
|
||||
"(anon-function 43 maincave-obs)",
|
||||
"(anon-function 2 target-tube)",
|
||||
"(anon-function 5 orbit-plat)",
|
||||
"(anon-function 5 orbit-plat)", // CFG
|
||||
"(anon-function 2 ogreboss)"
|
||||
|
||||
],
|
||||
|
||||
@@ -809,7 +809,10 @@
|
||||
],
|
||||
|
||||
"balloonlurker": [
|
||||
["L99", "vector"],
|
||||
["L105", "vector"],
|
||||
["L107", "attack-info"],
|
||||
["L108", "attack-info"],
|
||||
["L113", "rigid-body-platform-constants"]
|
||||
],
|
||||
|
||||
@@ -819,7 +822,10 @@
|
||||
["L268", "vector"]
|
||||
],
|
||||
|
||||
"citb-plat": [["L155", "rigid-body-platform-constants"]],
|
||||
"citb-plat": [
|
||||
["L136", "attack-info"],
|
||||
["L155", "rigid-body-platform-constants"]
|
||||
],
|
||||
|
||||
"qbert-plat": [["L99", "rigid-body-platform-constants"]],
|
||||
|
||||
@@ -843,7 +849,12 @@
|
||||
["L46", "vector"]
|
||||
],
|
||||
|
||||
"gnawer": [["L216", "(inline-array gnawer-segment-info)", 10]],
|
||||
"gnawer": [
|
||||
["L195", "attack-info"],
|
||||
["L196", "attack-info"],
|
||||
["L200", "attack-info"],
|
||||
["L216", "(inline-array gnawer-segment-info)", 10]
|
||||
],
|
||||
|
||||
"target-tube": [["L142", "vector"]],
|
||||
|
||||
@@ -937,7 +948,9 @@
|
||||
["L314", "float", true]
|
||||
],
|
||||
|
||||
"seagull": [["L226", "(inline-array air-box)", 20]],
|
||||
"seagull": [
|
||||
["L226", "(inline-array air-box)", 10]
|
||||
],
|
||||
|
||||
"rolling-race-ring": [
|
||||
["L94", "vector"],
|
||||
@@ -1865,6 +1878,95 @@
|
||||
["L1", "vu-function"]
|
||||
],
|
||||
|
||||
"snow-ram-boss": [
|
||||
["L220", "attack-info"],
|
||||
["L221", "attack-info"],
|
||||
["L222", "attack-info"],
|
||||
["L223", "attack-info"],
|
||||
["L225", "attack-info"]
|
||||
],
|
||||
|
||||
"snow-ram": [
|
||||
["L73", "attack-info"]
|
||||
],
|
||||
|
||||
"snow-bumper": [
|
||||
["L54", "attack-info"]
|
||||
],
|
||||
|
||||
"snow-ball": [
|
||||
["L86", "snow-ball-path-info"],
|
||||
["L87", "snow-ball-path-info"],
|
||||
["L89", "attack-info"]
|
||||
],
|
||||
|
||||
"puffer": [
|
||||
["L170", "attack-info"]
|
||||
],
|
||||
|
||||
"driller-lurker": [
|
||||
["L174", "attack-info"],
|
||||
["L175", "attack-info"]
|
||||
],
|
||||
|
||||
"dark-crystal": [
|
||||
["L36", "attack-info"]
|
||||
],
|
||||
|
||||
"kermit": [
|
||||
["L164", "attack-info"]
|
||||
],
|
||||
|
||||
"swamp-blimp": [
|
||||
["L177", "vector"],
|
||||
["L182", "vector"],
|
||||
["L187", "vector"],
|
||||
["L198", "tetherrock-info"],
|
||||
["L200", "tetherrock-info"],
|
||||
["L203", "tetherrock-info"],
|
||||
["L206", "tetherrock-info"],
|
||||
["L209", "tetherrock-info"]
|
||||
],
|
||||
|
||||
"mistycannon": [
|
||||
["L199", "attack-info"]
|
||||
],
|
||||
|
||||
"darkvine": [
|
||||
["L41", "attack-info"]
|
||||
],
|
||||
|
||||
"jungle-mirrors": [
|
||||
["L325", "vector"],
|
||||
["L326", "vector4w-4"]
|
||||
],
|
||||
|
||||
"quicksandlurker": [
|
||||
["L111", "attack-info"]
|
||||
],
|
||||
|
||||
"voicebox": [
|
||||
["L47", "vector"],
|
||||
["L48", "vector"],
|
||||
["L49", "vector"],
|
||||
["L50", "vector"],
|
||||
["L51", "vector"]
|
||||
],
|
||||
|
||||
"mother-spider": [
|
||||
["L278", "vector"],
|
||||
["L279", "vector"],
|
||||
["L288", "attack-info"],
|
||||
["L301", "(inline-array mother-spider-leg-info)", 8],
|
||||
["L302", "(inline-array mother-spider-thread)", 9]
|
||||
],
|
||||
|
||||
"bully": [
|
||||
["L90", "attack-info"],
|
||||
["L91", "attack-info"],
|
||||
["L93", "attack-info"]
|
||||
],
|
||||
|
||||
// please do not add things after this entry! git is dumb.
|
||||
"object-file-that-doesnt-actually-exist-and-i-just-put-this-here-to-prevent-merge-conflicts-with-this-file": []
|
||||
}
|
||||
|
||||
@@ -1054,7 +1054,7 @@
|
||||
"target-no-stick-post": [[16, "vector"]],
|
||||
|
||||
"target-no-move-post": [
|
||||
[16, "collide-edge-hold-list"] // a total guess
|
||||
[16, "overlaps-others-params"] // a total guess
|
||||
],
|
||||
|
||||
"target-slide-down-post": [
|
||||
@@ -1065,7 +1065,7 @@
|
||||
],
|
||||
|
||||
"target-no-ja-move-post": [
|
||||
[16, "collide-edge-hold-list"] // a total guess
|
||||
[16, "overlaps-others-params"] // a total guess
|
||||
],
|
||||
|
||||
"target-print-stats": [
|
||||
@@ -1303,7 +1303,11 @@
|
||||
"voicebox-track": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"]
|
||||
[48, "vector"],
|
||||
[64, "quaternion"],
|
||||
[80, "vector"],
|
||||
[96, "vector"],
|
||||
[112, "event-message-block"]
|
||||
],
|
||||
|
||||
"crate-standard-event-handler": [[16, "event-message-block"]],
|
||||
@@ -1397,7 +1401,7 @@
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "collide-mesh-cache-tri"],
|
||||
[64, "collide-tri-result"],
|
||||
[160, "vector"],
|
||||
[176, "vector"],
|
||||
[192, "vector"],
|
||||
@@ -1432,7 +1436,7 @@
|
||||
"cam-string-find-position-rel!": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "bone"],
|
||||
[48, "collide-tri-result"],
|
||||
[144, "matrix"]
|
||||
],
|
||||
"cam-los-spline-collide": [
|
||||
@@ -1558,7 +1562,7 @@
|
||||
],
|
||||
|
||||
"cam-string-find-hidden": [
|
||||
[16, "collide-mesh-cache-tri"],
|
||||
[16, "collide-tri-result"],
|
||||
[112, "vector"],
|
||||
[128, "vector"]
|
||||
],
|
||||
@@ -1569,7 +1573,7 @@
|
||||
[48, "vector"],
|
||||
[64, "vector"],
|
||||
[80, "vector"],
|
||||
[96, "collide-mesh-cache-tri"],
|
||||
[96, "collide-tri-result"],
|
||||
[192, "vector"],
|
||||
[208, "vector"],
|
||||
[224, "vector"]
|
||||
@@ -1596,7 +1600,7 @@
|
||||
[128, "vector"],
|
||||
[144, "vector"],
|
||||
[160, "vector"],
|
||||
[176, "collide-mesh-cache-tri"],
|
||||
[176, "collide-tri-result"],
|
||||
[272, "vector"]
|
||||
],
|
||||
|
||||
@@ -1606,13 +1610,13 @@
|
||||
[48, "vector"],
|
||||
[64, "vector"],
|
||||
[80, "vector"],
|
||||
[96, "collide-mesh-cache-tri"],
|
||||
[96, "collide-tri-result"],
|
||||
[192, "vector"]
|
||||
],
|
||||
|
||||
"(enter cam-string)": [
|
||||
[16, "vector"],
|
||||
[32, "collide-mesh-cache-tri"],
|
||||
[32, "collide-tri-result"],
|
||||
[128, "vector"],
|
||||
[144, "vector"],
|
||||
[160, "vector"]
|
||||
@@ -1785,7 +1789,7 @@
|
||||
[32, "vector"]
|
||||
],
|
||||
"(method 20 flying-lurker)": [
|
||||
[16, "collide-mesh-cache-tri"],
|
||||
[16, "collide-tri-result"],
|
||||
[112, "vector"],
|
||||
[128, "vector"],
|
||||
[144, "bounding-box"],
|
||||
@@ -2605,7 +2609,7 @@
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "collide-mesh-cache-tri"],
|
||||
[64, "collide-tri-result"],
|
||||
[160, "event-message-block"]
|
||||
],
|
||||
|
||||
@@ -3124,7 +3128,7 @@
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "collide-mesh-cache-tri"],
|
||||
[64, "collide-tri-result"],
|
||||
[160, "vector"],
|
||||
[176, "event-message-block"]
|
||||
],
|
||||
@@ -4187,7 +4191,7 @@
|
||||
],
|
||||
|
||||
"(method 59 collide-shape-moving)": [
|
||||
[16, "collide-mesh-cache-tri"],
|
||||
[16, "collide-tri-result"],
|
||||
[112, "touching-shapes-entry"]
|
||||
],
|
||||
|
||||
@@ -5041,5 +5045,839 @@
|
||||
[32, "matrix"]
|
||||
],
|
||||
|
||||
"(trans notice-blue crate)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(event die crate)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code notice-blue crate)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 28 ram-boss-proj)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 56 ram-boss)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(code ram-boss-jump-down)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 57 ram-boss)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(post ram-boss-lose-shield)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(trans ram-boss-tracking)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"]
|
||||
],
|
||||
|
||||
"(code ram-boss-already-down)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"(code ram-boss-lose-shield)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"snow-ram-proj-update-velocity": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "matrix"]
|
||||
],
|
||||
|
||||
"ram-boss-on-ground-event-handler": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(enter ram-boss-throw)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code nav-enemy-die ram-boss)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(method 55 ram-boss)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "collide-mesh-cache-tri"]
|
||||
],
|
||||
|
||||
"(enter ram-boss-jump-down)": [
|
||||
[16, "vector"],
|
||||
[32, "matrix"],
|
||||
[96, "vector"],
|
||||
[112, "vector"]
|
||||
],
|
||||
|
||||
"(method 20 ram)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 21 ram)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "vector"]
|
||||
],
|
||||
|
||||
"(event ram-idle)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code ram-idle)": [
|
||||
[32, "event-message-block"]
|
||||
],
|
||||
|
||||
"(method 21 snow-bumper)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "event-message-block"]
|
||||
],
|
||||
|
||||
"(method 20 snow-ball-roller)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"snow-ball-roller-path-update": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "matrix"],
|
||||
[112, "matrix"],
|
||||
[176, "vector"]
|
||||
],
|
||||
|
||||
"(method 22 snow-ball-roller)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code snow-ball-idle)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 11 spider-egg)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(code spider-egg-die)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"puffer-default-event-handler": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(method 28 puffer)": [
|
||||
[16, "collide-tri-result"],
|
||||
[112, "vector"],
|
||||
[128, "vector"]
|
||||
],
|
||||
|
||||
"(method 23 puffer)": [
|
||||
[16, ["inline-array", "vector", 5]],
|
||||
[96, "vector"]
|
||||
],
|
||||
|
||||
"(method 20 puffer)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "clip-travel-vector-to-mesh-return-info"],
|
||||
[208, "matrix"]
|
||||
],
|
||||
|
||||
"(trans puffer-patrol)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(trans puffer-attack)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 27 driller-lurker)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 11 driller-lurker)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"(method 20 driller-lurker)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "vector"],
|
||||
[80, "quaternion"]
|
||||
],
|
||||
|
||||
"driller-lurker-default-event-handler": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code driller-lurker-die)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code dark-crystal-explode)": [
|
||||
[16, "joint-exploder-tuning"]
|
||||
],
|
||||
|
||||
"(method 20 dark-crystal)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "collide-tri-result"],
|
||||
[160, "event-message-block"]
|
||||
],
|
||||
|
||||
"(event kermit-pulse-idle)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"kermit-check-tongue-is-clear?": [
|
||||
[16, "vector"],
|
||||
[32, "collide-tri-result"]
|
||||
],
|
||||
|
||||
"kermit-check-to-hit-player?": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"]
|
||||
],
|
||||
|
||||
"kermit-set-nav-mesh-target": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"]
|
||||
],
|
||||
|
||||
"(enter kermit-chase-new-position)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"]
|
||||
],
|
||||
|
||||
"kermit-post": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(trans kermit-tongue-stuck)": [
|
||||
[16, "vector"],
|
||||
[32, "event-message-block"]
|
||||
],
|
||||
|
||||
"gnawer-falling-segment-init-by-other": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"(method 24 gnawer)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"(method 30 gnawer)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"(code gnawer-dying-give-pickups)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code gnawer-chewing-on-post)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "vector"]
|
||||
],
|
||||
|
||||
"(method 22 gnawer)": [
|
||||
[16, "bounding-box"]
|
||||
],
|
||||
|
||||
"(method 25 gnawer)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 29 gnawer)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(trans gnawer-die)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 21 gnawer)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"(code gnawer-give-fuel-cell)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(code gnawer-put-items-at-dest)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"]
|
||||
],
|
||||
|
||||
"(event gnawer-chewing-on-post)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(event gnawer-run)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code mother-spider-egg-hatch)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code mother-spider-egg-die-exit)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(method 21 mother-spider-egg)": [
|
||||
[16, "collide-tri-result"],
|
||||
[112, "vector"],
|
||||
[128, "vector"]
|
||||
],
|
||||
|
||||
"(code mother-spider-egg-on-ground)": [
|
||||
[16, "quaternion"],
|
||||
[32, "quaternion"],
|
||||
[48, "vector"],
|
||||
[64, "vector"]
|
||||
],
|
||||
|
||||
"(trans mother-spider-egg-hatch)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(trans precursor-arm-idle)": [
|
||||
[16, "matrix"]
|
||||
],
|
||||
|
||||
"swamp-rope-break-code": [
|
||||
[16, "matrix"],
|
||||
[80, "vector"]
|
||||
],
|
||||
|
||||
"(method 10 swamp-blimp-oscillator)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"swamp-rope-update-bounding-spheres": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"swamp-rope-trans": [
|
||||
[16, "matrix"],
|
||||
[80, "matrix"],
|
||||
[144, "vector"]
|
||||
],
|
||||
|
||||
"(code swamp-tetherrock-idle)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "quaternion"]
|
||||
],
|
||||
|
||||
"(code swamp-tetherrock-break)": [
|
||||
[16, "event-message-block"],
|
||||
[96, "vector"]
|
||||
],
|
||||
|
||||
"blimp-trans": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "quaternion"],
|
||||
[64, "vector"]
|
||||
],
|
||||
|
||||
"(enter swamp-blimp-bye-bye)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code swamp-blimp-bye-bye)": [
|
||||
[16, "quaternion"]
|
||||
],
|
||||
|
||||
"swamp-blimp-setup": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 11 swamp-blimp)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"bustarock": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code mistycannon-missile-in-water)": [
|
||||
[16, "event-message-block"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"(method 20 mistycannon-missile)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(post mistycannon-missile-idle)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(code mistycannon-missile-explode)": [
|
||||
[16, "vector2w"]
|
||||
],
|
||||
|
||||
"(event mistycannon-missile-explode)": [
|
||||
[16, "vector"],
|
||||
[32, "collide-mesh-cache-tri"],
|
||||
[128, "event-message-block"]
|
||||
],
|
||||
|
||||
"mistycannon-collision-reaction": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"spawn-mistycannon-missile": [
|
||||
[16, "mistycannon-init-data"]
|
||||
],
|
||||
|
||||
"(method 22 mistycannon)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"mistycannon-postbind-function": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(code mistycannon-aim-at-player)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"mistycannon-do-aim": [
|
||||
[16, "trajectory-params"],
|
||||
[48, "vector"],
|
||||
[64, "vector"],
|
||||
[80, "vector"],
|
||||
[96, "vector"]
|
||||
],
|
||||
|
||||
"(code mistycannon-waiting-for-player)": [
|
||||
[16, "font-context"],
|
||||
[112, "event-message-block"]
|
||||
],
|
||||
|
||||
"(event mistycannon-player-control)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code mistycannon-player-control)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(trans rigid-body-platform-idle citb-chain-plat)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(trans rigid-body-platform-float citb-chain-plat)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(event citb-firehose-blast)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(method 27 citb-chain-plat)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(trans plat-button-move-downward citb-exit-plat)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(trans plat-button-move-upward citb-exit-plat)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"citb-firehose-blast-particles": [
|
||||
[16, "quaternion"]
|
||||
],
|
||||
|
||||
"(code citb-chain-plat-settle)": [
|
||||
[16, "vector"],
|
||||
[32, "quaternion"]
|
||||
],
|
||||
|
||||
"citb-exit-plat-move-player": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "event-message-block"]
|
||||
],
|
||||
|
||||
"darkvine-event-handler": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(post darkvine-idle)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(enter cam-periscope)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(code cam-periscope)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(code reflector-idle)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(code reflector-mirror-idle)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"periscope-crosshair": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "vector4w"],
|
||||
[80, "vector"],
|
||||
[96, "vector"],
|
||||
[112, "vector"]
|
||||
],
|
||||
|
||||
"periscope-find-reflection-angles": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "vector"]
|
||||
],
|
||||
|
||||
"(code periscope-wait-for-player)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "vector"],
|
||||
[80, "font-context"],
|
||||
[176, "event-message-block"]
|
||||
],
|
||||
|
||||
"periscope-find-aim-at-angles": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"draw-power-beam": [
|
||||
[16, "vector"],
|
||||
[32, "collide-mesh-cache-tri"],
|
||||
[128, "event-message-block"]
|
||||
],
|
||||
|
||||
"periscope-update-joints": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code reflector-mirror-broken)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code periscope-player-control)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code reflector-origin-idle)": [
|
||||
[16, "event-message-block"],
|
||||
[96, "vector"]
|
||||
],
|
||||
|
||||
"(code launcherdoor-closed)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(event quicksandlurker-missile-idle)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"quicksandlurker-spit": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"]
|
||||
],
|
||||
|
||||
"spawn-quicksandlurker-missile": [
|
||||
[16, "quicksandlurker-missile-init-data"]
|
||||
],
|
||||
|
||||
"balloonlurker-snap-to-path-point": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"(method 23 balloonlurker)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"balloonlurker-find-nearest-path-point": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(post balloonlurker-pilot-die)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"balloonlurker-post": [
|
||||
[16, "quaternion"]
|
||||
],
|
||||
|
||||
"balloonlurker-event-handler": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(event balloonlurker-pilot-idle)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code balloonlurker-die)": [
|
||||
[32, "event-message-block"]
|
||||
],
|
||||
|
||||
"(event orbit-plat-idle)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code orbit-plat-idle)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code orbit-plat-still)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code orbit-plat-riding)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code orbit-plat-reset)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(method 20 orbit-plat-bottom)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(code orbit-plat-bottom-idle)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "vector"]
|
||||
],
|
||||
|
||||
"(method 27 orbit-plat)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "vector"],
|
||||
[80, "vector"],
|
||||
[96, "vector"]
|
||||
],
|
||||
|
||||
"get-rotate-point!": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"(code enter voicebox)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code exit voicebox)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"mother-spider-death-event-handler": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"mother-spider-full-joint-callback": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 29 mother-spider)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 30 mother-spider)": [
|
||||
[16, "baby-spider-spawn-params"]
|
||||
],
|
||||
|
||||
"(trans mother-spider-leg-flying)": [
|
||||
[16, "collide-mesh-cache-tri"],
|
||||
[112, "vector"]
|
||||
],
|
||||
|
||||
"(method 24 mother-spider)": [
|
||||
[16, "collide-mesh-cache-tri"],
|
||||
[112, "vector"],
|
||||
[128, "vector"]
|
||||
],
|
||||
|
||||
"(method 20 mother-spider)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "collide-mesh-cache-tri"],
|
||||
[144, "vector"],
|
||||
[160, "collide-mesh-cache-tri"]
|
||||
],
|
||||
|
||||
"mother-spider-default-event-handler": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "event-message-block"],
|
||||
[128, "vector"],
|
||||
[144, "vector"]
|
||||
],
|
||||
|
||||
"(method 23 mother-spider)": [
|
||||
[16, "vector"],
|
||||
[32, "event-message-block"],
|
||||
[128, "vector"],
|
||||
[144, "vector"]
|
||||
],
|
||||
|
||||
"(method 21 mother-spider)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "vector"],
|
||||
[80, "vector"],
|
||||
[96, "vector"]
|
||||
],
|
||||
|
||||
"(code mother-spider-spit)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "vector"]
|
||||
],
|
||||
|
||||
"(trans mother-spider-tracking)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"]
|
||||
],
|
||||
|
||||
"(method 11 mother-spider)": [
|
||||
[32, "vector"],
|
||||
[48, "vector"]
|
||||
],
|
||||
|
||||
"(enter mother-spider-die-from-uppercut)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"]
|
||||
],
|
||||
|
||||
"(code mother-spider-birth-baby)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"bully-default-event-handler": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "event-message-block"]
|
||||
],
|
||||
|
||||
"(method 20 bully)": [
|
||||
[16, "check-vector-collision-with-nav-spheres-info"],
|
||||
[64, "vector"],
|
||||
[80, "clip-travel-vector-to-mesh-return-info"],
|
||||
[240, "vector"]
|
||||
],
|
||||
|
||||
"(code bully-notice)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(enter bully-start-spinning)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 24 seagull)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"seagull-reaction": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
|
||||
"(code seagull-landing)": [
|
||||
[16, "collide-tri-result"],
|
||||
[112, "vector"]
|
||||
],
|
||||
|
||||
"(trans seagull-idle)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 16 seagullflock)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 11 seagullflock)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(code seagullflock-at-waterfall)": [
|
||||
[16, "event-message-block"]
|
||||
],
|
||||
|
||||
"(code seagull-flying)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(code seagull-soaring)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"(method 26 seagull)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
|
||||
"seagull-post": [
|
||||
[16, "quaternion"],
|
||||
[32, "quaternion"]
|
||||
],
|
||||
|
||||
"placeholder-do-not-add-below!": []
|
||||
}
|
||||
|
||||
@@ -2641,8 +2641,6 @@
|
||||
[101, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"voicebox-track": [[4, "a0", "target"]],
|
||||
|
||||
"(method 27 plat-button)": [[37, "v1", "art-joint-anim"]],
|
||||
|
||||
"(method 11 plat-button)": [[17, "v1", "vector"]],
|
||||
@@ -6377,5 +6375,601 @@
|
||||
[49, "gp", "(pointer uint32)"]
|
||||
],
|
||||
|
||||
"(method 24 ram-boss-proj)": [
|
||||
[64, "v0", "sound-rpc-set-param"],
|
||||
[83, "gp", "process-drawable"],
|
||||
[86, "gp", "process-drawable"]
|
||||
],
|
||||
|
||||
"ram-boss-on-ground-event-handler": [
|
||||
[260, "v1", "ram-boss"]
|
||||
],
|
||||
|
||||
"(method 52 ram-boss)": [
|
||||
[11, "v1", "(array collide-shape-prim)"],
|
||||
[21, "v1", "(array collide-shape-prim)"],
|
||||
[31, "v1", "(array collide-shape-prim)"],
|
||||
[41, "v1", "(array collide-shape-prim)"]
|
||||
],
|
||||
|
||||
"(method 53 ram-boss)": [
|
||||
[2, "v1", "(array collide-shape-prim)"],
|
||||
[5, "v1", "(array collide-shape-prim)"],
|
||||
[8, "v1", "(array collide-shape-prim)"],
|
||||
[11, "v1", "(array collide-shape-prim)"]
|
||||
],
|
||||
|
||||
"(code ram-boss-idle)": [
|
||||
[38, "v1", "collide-shape-prim-group"]
|
||||
],
|
||||
|
||||
"(code ram-boss-jump-down)": [
|
||||
[14, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code ram-boss-jump-down-hit-ground)": [
|
||||
[23, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code ram-boss-forward-defend-block)": [
|
||||
[14, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code ram-boss-up-defend-block)": [
|
||||
[14, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code nav-enemy-victory ram-boss)": [
|
||||
[28, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code ram-boss-lose-shield)": [
|
||||
[29, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code ram-boss-throw)": [
|
||||
[16, "v1", "art-joint-anim"],
|
||||
[67, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(method 56 ram-boss)": [
|
||||
[24, "v0", "ram-boss-proj"],
|
||||
[58, "v1", "(pointer ram-boss-proj)"]
|
||||
],
|
||||
|
||||
"(code ram-idle)": [
|
||||
[28, "v1", "art-joint-anim"],
|
||||
[98, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code ram-give-fuel-cell)": [
|
||||
[47, "v0", "snowcam"],
|
||||
[69, "v1", "(pointer snowcam)"]
|
||||
],
|
||||
|
||||
"(code snow-bumper-deactivate)": [
|
||||
[29, "v1", "art-joint-anim"],
|
||||
[106, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code snow-bumper-spawn-fuel-cell)": [
|
||||
[16, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code snow-bumper-inactive-idle)": [
|
||||
[19, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(method 7 snow-bumper)": [
|
||||
[14, "t9", "(function process-drawable int process-drawable)"]
|
||||
],
|
||||
|
||||
"(method 11 snow-bumper)": [
|
||||
["_stack_", 16, "res-tag"],
|
||||
[216, "v0", "(pointer float)"]
|
||||
],
|
||||
|
||||
"(code spider-egg-idle)": [
|
||||
[20, "v1", "art-joint-anim"],
|
||||
[97, "v1", "art-joint-anim"],
|
||||
[153, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code spider-egg-hatch)": [
|
||||
[62, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code spider-egg-die)": [
|
||||
[79, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code puffer-die)": [
|
||||
[33, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"puffer-default-event-handler": [
|
||||
[28, "v1", "process-drawable"],
|
||||
[34, "v1", "process-drawable"]
|
||||
],
|
||||
|
||||
"(method 22 puffer)": [
|
||||
[10, "v1", "process-drawable"]
|
||||
],
|
||||
|
||||
"(method 25 puffer)": [
|
||||
[49, "v1", "puffer"],
|
||||
[56, "v1", "puffer"]
|
||||
],
|
||||
|
||||
"(method 23 puffer)": [
|
||||
[18, "v1", "process-drawable"]
|
||||
],
|
||||
|
||||
"(trans puffer-attack)": [
|
||||
[23, "v1", "collide-shape-prim-group"]
|
||||
],
|
||||
|
||||
"(method 30 puffer)": [
|
||||
[16, "v1", "(array collide-shape-prim)"]
|
||||
],
|
||||
|
||||
"(method 31 puffer)": [
|
||||
[16, "v1", "(array collide-shape-prim)"]
|
||||
],
|
||||
|
||||
"(method 7 puffer)": [
|
||||
[14, "t9", "(function process-drawable int process-drawable)"]
|
||||
],
|
||||
|
||||
"(method 11 puffer)": [
|
||||
["_stack_", 16, "res-tag"],
|
||||
[213, "v0", "(pointer float)"]
|
||||
],
|
||||
|
||||
"driller-lurker-default-event-handler": [
|
||||
[[51, 87], "s1", "touching-shapes-entry"]
|
||||
],
|
||||
|
||||
"(code driller-lurker-idle-drilling)": [
|
||||
[33, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code driller-lurker-jammed-standing)": [
|
||||
[14, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code driller-lurker-die)": [
|
||||
[28, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(method 7 driller-lurker)": [
|
||||
[24, "t9", "(function process-drawable int process-drawable)"]
|
||||
],
|
||||
|
||||
"(method 11 driller-lurker)": [
|
||||
["_stack_", 16, "res-tag"],
|
||||
[373, "v0", "(pointer float)"]
|
||||
],
|
||||
|
||||
"kermit-short-hop": [
|
||||
[10, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"kermit-long-hop": [
|
||||
[10, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code kermit-patrol)": [
|
||||
[10, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code kermit-chase-new-position)": [
|
||||
[16, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code kermit-chase)": [
|
||||
[14, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code kermit-attack)": [
|
||||
[22, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code kermit-tongue-stuck)": [
|
||||
[14, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code kermit-retract-tongue)": [
|
||||
[14, "v1", "art-joint-anim"],
|
||||
[90, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(method 39 kermit)": [
|
||||
[7, "t9", "(function nav-enemy none)"]
|
||||
],
|
||||
|
||||
"(code falling gnawer-falling-segment)": [
|
||||
[16, "v1", "art-joint-anim"],
|
||||
[70, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(method 22 gnawer)": [
|
||||
[18, "f0", "float"]
|
||||
],
|
||||
|
||||
"(code gnawer-chewing-on-post)": [
|
||||
[139, "v1", "art-joint-anim"],
|
||||
[210, "v1", "art-joint-anim"],
|
||||
[272, "v1", "art-joint-anim"],
|
||||
[363, "v1", "art-joint-anim"],
|
||||
[451, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code gnawer-retreat-into-post)": [
|
||||
[18, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code gnawer-die)": [
|
||||
[28, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(event gnawer-run)": [
|
||||
[54, "a2", "touching-shapes-entry"]
|
||||
],
|
||||
|
||||
"(method 7 gnawer)": [
|
||||
[19, "t9", "(function nav-enemy int nav-enemy)"]
|
||||
],
|
||||
|
||||
"(code gnawer-give-fuel-cell)": [
|
||||
[43, "v0", "maincavecam"],
|
||||
[64, "v1", "maincavecam"]
|
||||
],
|
||||
|
||||
"(method 11 gnawer)": [
|
||||
["_stack_", 16, "res-tag"],
|
||||
["_stack_", 32, "res-tag"],
|
||||
["_stack_", 48, "res-tag"],
|
||||
[361, "v0", "(pointer float)"],
|
||||
[426, "v0", "(pointer int32)"],
|
||||
[446, "v0", "(pointer int32)"]
|
||||
],
|
||||
|
||||
"(code mother-spider-egg-falling)": [
|
||||
[14, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code mother-spider-egg-hatch)": [
|
||||
[65, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code mother-spider-egg-die)": [
|
||||
[63, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code mother-spider-egg-die-while-falling)": [
|
||||
[63, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code mother-spider-egg-on-ground)": [
|
||||
[50, "v1", "art-joint-anim"],
|
||||
[124, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(method 7 swamp-blimp)": [
|
||||
[19, "t9", "(function process-drawable int process-drawable)"]
|
||||
],
|
||||
|
||||
"(code swamp-tetherrock-break)": [
|
||||
[238, "s4", "handle"],
|
||||
[261, "s4", "handle"],
|
||||
[283, "s4", "handle"],
|
||||
[300, "s4", "handle"],
|
||||
[373, "a0", "swamp-blimp"]
|
||||
],
|
||||
|
||||
"(event swamp-tetherrock-idle)": [
|
||||
[55, "gp", "process-drawable"]
|
||||
],
|
||||
|
||||
"(code swamp-rope-break)": [
|
||||
[10, "v1", "float"],
|
||||
[26, "v1", "float"],
|
||||
[48, "v1", "float"],
|
||||
[64, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"swamp-rope-trans": [
|
||||
[40, "v1", "swamp-rope"],
|
||||
[48, "v1", "swamp-rope"]
|
||||
],
|
||||
|
||||
"(code swamp-rope-idle-arm)": [
|
||||
[13, "v1", "swamp-rope"]
|
||||
],
|
||||
|
||||
"swamp-blimp-setup": [
|
||||
[[26, 117], "s4", "swamp-rope"]
|
||||
],
|
||||
|
||||
"(code swamp-rope-idle-rock)": [
|
||||
[32, "a0", "swamp-rope"],
|
||||
[33, "a0", "swamp-rope"]
|
||||
],
|
||||
|
||||
"(code mistycannon-missile-idle)": [
|
||||
[207, "v1", "art-joint-anim"],
|
||||
[257, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(event mistycannon-missile-explode)": [
|
||||
[16, "v1", "mistycannon-missile"]
|
||||
],
|
||||
|
||||
"(code cam-mistycannon)": [
|
||||
[3, "a1", "mistycannon"],
|
||||
[9, "v1", "mistycannon"]
|
||||
],
|
||||
|
||||
"(method 26 citb-plat)": [
|
||||
[18, "v1", "vector"],
|
||||
[47, "v1", "vector"]
|
||||
],
|
||||
|
||||
"(method 23 citb-chain-plat)": [
|
||||
[9, "t9", "(function rigid-body-platform float none)"]
|
||||
],
|
||||
|
||||
"(code citb-firehose-blast)": [
|
||||
[10, "v1", "art-joint-anim"],
|
||||
[86, "v1", "art-joint-anim"],
|
||||
[157, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(trans plat-button-move-downward citb-exit-plat)": [
|
||||
[10, "v0", "(state plat-button)"]
|
||||
],
|
||||
|
||||
"(trans plat-button-move-upward citb-exit-plat)": [
|
||||
[10, "v0", "(state plat-button)"]
|
||||
],
|
||||
|
||||
"(code darkvine-idle)": [
|
||||
[32, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code darkvine-retreat)": [
|
||||
[23, "v1", "art-joint-anim"],
|
||||
[138, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(enter cam-periscope)": [
|
||||
[7, "a1", "periscope"],
|
||||
[13, "a1", "periscope"],
|
||||
[16, "v1", "periscope"]
|
||||
],
|
||||
|
||||
"(code cam-periscope)": [
|
||||
[2, "v1", "periscope"],
|
||||
[4, "v1", "periscope"],
|
||||
[12, "v1", "periscope"],
|
||||
[71, "v1", "periscope"],
|
||||
[79, "v1", "periscope"]
|
||||
],
|
||||
|
||||
"periscope-crosshair": [
|
||||
[50, "v1", "periscope"]
|
||||
],
|
||||
|
||||
"periscope-find-next": [
|
||||
[58, "v1", "vector"]
|
||||
],
|
||||
|
||||
"(code reflector-origin-idle)": [
|
||||
[60, "v1", "periscope"]
|
||||
],
|
||||
|
||||
"(code periscope-player-control)": [
|
||||
[41, "v0", "(pointer float)"],
|
||||
[508, "gp", "handle"]
|
||||
],
|
||||
|
||||
"quicksandlurker-post": [
|
||||
[50, "a0", "water-anim"],
|
||||
[54, "a0", "water-anim"]
|
||||
],
|
||||
|
||||
"(code quicksandlurker-wait)": [
|
||||
[33, "v1", "art-joint-anim"],
|
||||
[89, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code quicksandlurker-yawn)": [
|
||||
[10, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code quicksandlurker-track)": [
|
||||
[29, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code quicksandlurker-attack)": [
|
||||
[12, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code quicksandlurker-hide)": [
|
||||
[14, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code quicksandlurker-popup)": [
|
||||
[38, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code quicksandlurker-die)": [
|
||||
[18, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code quicksandlurker-victory)": [
|
||||
[18, "v1", "art-joint-anim"],
|
||||
[69, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(method 7 balloonlurker)": [
|
||||
[29, "t9", "(function process-drawable int process-drawable)"]
|
||||
],
|
||||
|
||||
"(code balloonlurker-pilot-die)": [
|
||||
[58, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code orbit-plat-bottom-idle)": [
|
||||
[29, "v1", "orbit-plat"],
|
||||
[35, "v1", "orbit-plat"],
|
||||
[109, "v1", "orbit-plat"],
|
||||
[126, "v1", "orbit-plat"]
|
||||
],
|
||||
|
||||
"(method 27 orbit-plat)": [
|
||||
[20, "s5", "orbit-plat"],
|
||||
[29, "s5", "orbit-plat"],
|
||||
[33, "s5", "orbit-plat"],
|
||||
[40, "s5", "orbit-plat"],
|
||||
[44, "s5", "orbit-plat"],
|
||||
[72, "a2", "orbit-plat"],
|
||||
[153, "a1", "orbit-plat"]
|
||||
],
|
||||
|
||||
"(code mother-spider-leg-flying)": [
|
||||
[21, "v1", "art-joint-anim"],
|
||||
[80, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code mother-spider-stop-traveling)": [
|
||||
[14, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code mother-spider-hit-while-birthing)": [
|
||||
[14, "v1", "art-joint-anim"],
|
||||
[68, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code mother-spider-birthing)": [
|
||||
[53, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code mother-spider-die)": [
|
||||
[36, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code mother-spider-die-from-uppercut)": [
|
||||
[31, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code mother-spider-spit)": [
|
||||
[15, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code mother-spider-birth-baby)": [
|
||||
[15, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code mother-spider-hit-while-tracking)": [
|
||||
[14, "v1", "art-joint-anim"],
|
||||
[68, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code mother-spider-tracking)": [
|
||||
[53, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"mother-spider-default-event-handler": [
|
||||
[52, "a0", "process-drawable"],
|
||||
[138, "a0", "process-drawable"]
|
||||
],
|
||||
|
||||
"mother-spider-death-event-handler": [
|
||||
[7, "a0", "process-drawable"]
|
||||
],
|
||||
|
||||
"(code bully-broken-cage-explode)": [
|
||||
[14, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code bully-notice)": [
|
||||
[148, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code bully-start-spinning)": [
|
||||
[14, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"(code bully-die)": [
|
||||
[70, "v1", "art-joint-anim"]
|
||||
],
|
||||
|
||||
"bully-default-event-handler": [
|
||||
[21, "gp", "process-drawable"]
|
||||
],
|
||||
|
||||
"(trans bully-notice)": [
|
||||
[10, "v1", "collide-shape-prim-group"]
|
||||
],
|
||||
|
||||
"(trans bully-start-spinning)": [
|
||||
[10, "v1", "collide-shape-prim-group"]
|
||||
],
|
||||
|
||||
"(trans bully-stop-spinning)": [
|
||||
[10, "v1", "collide-shape-prim-group"]
|
||||
],
|
||||
|
||||
"(method 7 bully)": [
|
||||
[14, "t9", "(function process-drawable int process-drawable)"]
|
||||
],
|
||||
|
||||
"(enter seagull-idle)": [
|
||||
[20, "v1", "float"]
|
||||
],
|
||||
|
||||
"seagull-init-by-other": [
|
||||
[96, "v1", "float"]
|
||||
],
|
||||
|
||||
"seagull-reaction": [
|
||||
[36, "s4", "seagull"],
|
||||
[38, "s4", "seagull"]
|
||||
],
|
||||
|
||||
"beach-rock-trigger": [
|
||||
[5, "v0", "seagullflock"]
|
||||
],
|
||||
|
||||
"(method 11 seagullflock)": [
|
||||
[80, "v1", "float"],
|
||||
[99, "v1", "float"]
|
||||
],
|
||||
|
||||
"(code seagull-flying)": [
|
||||
[13, "v1", "art-joint-anim"],
|
||||
[373, "v1", "float"]
|
||||
],
|
||||
|
||||
"(code seagull-soaring)": [
|
||||
[15, "v1", "art-joint-anim"],
|
||||
[296, "v1", "float"]
|
||||
],
|
||||
|
||||
"(method 26 seagull)": [
|
||||
[12, "v1", "float"],
|
||||
[33, "v1", "float"],
|
||||
[54, "v1", "float"]
|
||||
],
|
||||
|
||||
"(code seagull-idle)": [
|
||||
[51, "v1", "float"],
|
||||
[67, "v1", "float"],
|
||||
[143, "v1", "float"],
|
||||
[218, "v1", "float"]
|
||||
],
|
||||
|
||||
"placeholder-do-not-add-below": []
|
||||
}
|
||||
|
||||
@@ -3742,5 +3742,11 @@
|
||||
}
|
||||
},
|
||||
|
||||
"(event puffer-die)": {
|
||||
"vars": {
|
||||
"v0-0": ["v0-0", "uint"]
|
||||
}
|
||||
},
|
||||
|
||||
"aaaaaaaaaaaaaaaaaaaaaaa": {}
|
||||
}
|
||||
|
||||
+1436
-2198
File diff suppressed because it is too large
Load Diff
+2619
-3750
File diff suppressed because it is too large
Load Diff
@@ -416,7 +416,7 @@
|
||||
(saved-pt vector :inline :offset-assert 2464)
|
||||
(spline-tt float :offset-assert 2480)
|
||||
(spline-follow-dist float :offset-assert 2484)
|
||||
(change-event-from uint32 :offset-assert 2488)
|
||||
(change-event-from (pointer process-drawable) :offset-assert 2488) ;; mistycannon
|
||||
(enter-has-run symbol :offset-assert 2492)
|
||||
(blend-from-type uint64 :offset-assert 2496)
|
||||
(blend-to-type uint64 :offset-assert 2504)
|
||||
|
||||
@@ -1089,11 +1089,14 @@
|
||||
(cond
|
||||
(*camera*
|
||||
(set! (-> self options) (-> *camera* slave-options))
|
||||
(set! (-> self change-event-from) (-> *camera* changer))
|
||||
(set!
|
||||
(-> self change-event-from)
|
||||
(the-as (pointer process-drawable) (-> *camera* changer))
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! (-> self options) (the-as uint 0))
|
||||
(set! (-> self change-event-from) (the-as uint #f))
|
||||
(set! (-> self change-event-from) (the-as (pointer process-drawable) #f))
|
||||
)
|
||||
)
|
||||
(cond
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
:flag-assert #x2100008670
|
||||
(:methods
|
||||
(dummy-9 (_type_) none 9)
|
||||
(dummy-10 (_type_ vector vector float int process collide-mesh-cache-tri int) float 10)
|
||||
(dummy-10 (_type_ vector vector float int process collide-tri-result int) float 10)
|
||||
(dummy-11 (_type_ collide-using-spheres-params) none 11)
|
||||
(fill-and-probe-using-y-probe (_type_ vector float uint process collide-tri-result uint) float 12)
|
||||
(dummy-13 (_type_ bounding-box uint process-drawable uint) none 13)
|
||||
|
||||
+2192
-1667
File diff suppressed because it is too large
Load Diff
@@ -27,7 +27,7 @@
|
||||
(deftype part-tester (process)
|
||||
((root trsqv :offset-assert 112)
|
||||
(part sparticle-launch-control :offset-assert 116)
|
||||
(old-group basic :offset-assert 120)
|
||||
(old-group sparticle-launch-group :offset-assert 120)
|
||||
)
|
||||
:heap-base #x100
|
||||
:method-count-assert 14
|
||||
@@ -158,4 +158,4 @@
|
||||
(none)
|
||||
)
|
||||
|
||||
)
|
||||
)
|
||||
|
||||
@@ -16,6 +16,14 @@
|
||||
|
||||
(define-extern process-drawable-from-entity! (function process-drawable entity-actor none))
|
||||
|
||||
;; TODO - for citb-plat
|
||||
(define-extern *particle-quat* quaternion)
|
||||
|
||||
;; TODO - for jungle-mirrors
|
||||
(define-extern line-in-view-frustum? (function vector vector symbol))
|
||||
|
||||
;; decomp begins
|
||||
|
||||
(declare-type beach-part part-spawner)
|
||||
(define-extern beach-part-grotto-1 (state beach-part))
|
||||
|
||||
|
||||
@@ -8,43 +8,42 @@
|
||||
(declare-type projectile process-drawable)
|
||||
(define-extern projectile-init-by-other (function entity vector vector uint handle none :behavior projectile)) ;; 4th arg is `options`, 5th is `last-target`
|
||||
|
||||
;; decomp begins
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype projectile (process-drawable)
|
||||
((root-override collide-shape-moving :score 100 :offset 112)
|
||||
(base-trans vector :inline :offset-assert 176)
|
||||
(target vector :inline :offset-assert 192)
|
||||
(target-base vector :inline :offset-assert 208)
|
||||
(parent-base vector :inline :offset-assert 224)
|
||||
(parent-quat vector :inline :offset-assert 240)
|
||||
(base-vector vector :inline :offset-assert 256)
|
||||
(timeout uint64 :offset-assert 272)
|
||||
(options uint64 :offset-assert 280)
|
||||
(last-target handle :offset-assert 288)
|
||||
(notify-handle handle :offset-assert 296)
|
||||
(max-speed float :offset-assert 304)
|
||||
(max-turn float :offset-assert 308)
|
||||
(old-dist float 16 :offset-assert 312)
|
||||
(old-dist-count int32 :offset-assert 376)
|
||||
(hits int32 :offset-assert 380)
|
||||
(max-hits int32 :offset-assert 384)
|
||||
(tween float :offset-assert 388)
|
||||
(attack-mode symbol :offset-assert 392)
|
||||
(update-velocity (function projectile none) :offset-assert 396)
|
||||
(counter int32 :offset-assert 400)
|
||||
(target-count int32 :offset-assert 404)
|
||||
(sound-id sound-id :offset-assert 408)
|
||||
((root-override collide-shape-moving :offset 112)
|
||||
(base-trans vector :inline :offset-assert 176)
|
||||
(target vector :inline :offset-assert 192)
|
||||
(target-base vector :inline :offset-assert 208)
|
||||
(parent-base vector :inline :offset-assert 224)
|
||||
(parent-quat vector :inline :offset-assert 240)
|
||||
(base-vector vector :inline :offset-assert 256)
|
||||
(timeout uint64 :offset-assert 272)
|
||||
(options uint64 :offset-assert 280)
|
||||
(last-target handle :offset-assert 288)
|
||||
(notify-handle handle :offset-assert 296)
|
||||
(max-speed float :offset-assert 304)
|
||||
(max-turn float :offset-assert 308)
|
||||
(old-dist float 16 :offset-assert 312)
|
||||
(old-dist-count int32 :offset-assert 376)
|
||||
(hits int32 :offset-assert 380)
|
||||
(max-hits int32 :offset-assert 384)
|
||||
(tween float :offset-assert 388)
|
||||
(attack-mode symbol :offset-assert 392)
|
||||
(update-velocity (function projectile none) :offset-assert 396)
|
||||
(counter int32 :offset-assert 400)
|
||||
(target-count int32 :offset-assert 404)
|
||||
(sound-id sound-id :offset-assert 408)
|
||||
)
|
||||
:heap-base #x130
|
||||
:method-count-assert 29
|
||||
:size-assert #x19c
|
||||
:flag-assert #x1d0130019c
|
||||
;; inherited inspect of process-drawable
|
||||
(:methods
|
||||
(projectile-die () _type_ :state 20) ;; state - sound related?
|
||||
(projectile-dissipate () _type_ :state 21) ;; state
|
||||
(projectile-impact () _type_ :state 22) ;; state
|
||||
(projectile-moving () _type_ :state 23) ;; state
|
||||
(projectile-die () _type_ :state 20)
|
||||
(projectile-dissipate () _type_ :state 21)
|
||||
(projectile-impact () _type_ :state 22)
|
||||
(projectile-moving () _type_ :state 23)
|
||||
(dummy-24 (_type_) none 24)
|
||||
(dummy-25 (_type_) none 25)
|
||||
(dummy-26 (_type_) none 26)
|
||||
@@ -53,6 +52,7 @@
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype projectile-yellow (projectile)
|
||||
((mode int32 :offset-assert 412)
|
||||
(angle float :offset-assert 416)
|
||||
@@ -63,6 +63,7 @@
|
||||
:flag-assert #x1d014001a4
|
||||
)
|
||||
|
||||
|
||||
(deftype projectile-blue (projectile)
|
||||
((mode int32 :offset-assert 412)
|
||||
(joint-num int32 :offset-assert 416)
|
||||
@@ -73,3 +74,9 @@
|
||||
:flag-assert #x1d014001a4
|
||||
)
|
||||
|
||||
|
||||
0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -5,3 +5,333 @@
|
||||
;; name in dgo: voicebox
|
||||
;; dgos: GAME, ENGINE
|
||||
|
||||
(define-extern *voicebox-sg* skeleton-group)
|
||||
|
||||
(define-extern empty-state (state process))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype camera-voicebox (camera-slave)
|
||||
()
|
||||
:heap-base #x9a0
|
||||
:method-count-assert 14
|
||||
:size-assert #xa04
|
||||
:flag-assert #xe09a00a04
|
||||
)
|
||||
|
||||
|
||||
(deftype voicebox (process-drawable)
|
||||
((parent-override (pointer camera-voicebox) :offset 12)
|
||||
(base-trans vector :inline :offset-assert 176)
|
||||
(seeker cam-float-seeker :inline :offset-assert 192)
|
||||
(blend float :offset-assert 216)
|
||||
(twist float :offset-assert 220)
|
||||
(hint handle :offset-assert 224)
|
||||
)
|
||||
:heap-base #x80
|
||||
:method-count-assert 23
|
||||
:size-assert #xe8
|
||||
:flag-assert #x17008000e8
|
||||
(:methods
|
||||
(enter () _type_ :state 20)
|
||||
(idle () _type_ :state 21)
|
||||
(exit () _type_ :state 22)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defstate empty-state (process)
|
||||
:code
|
||||
(the-as (function none :behavior process) nothing)
|
||||
)
|
||||
|
||||
(defskelgroup *voicebox-sg* speaker
|
||||
0
|
||||
2
|
||||
((1 (meters 999999)))
|
||||
:bounds (static-spherem 0 0 0 4)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
(defbehavior voicebox-track voicebox ()
|
||||
(let ((gp-0 (new 'stack-no-clear 'vector))
|
||||
(s5-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set! (-> gp-0 quad) (-> self parent-override 0 trans quad))
|
||||
(set! (-> s5-0 quad) (-> (target-pos 68) quad))
|
||||
(when *target*
|
||||
(let
|
||||
((a2-0
|
||||
(vector-z-quaternion!
|
||||
(new-stack-vector0)
|
||||
(-> *target* control unknown-quaternion00)
|
||||
)
|
||||
)
|
||||
)
|
||||
(vector+float*! s5-0 s5-0 a2-0 (* -16384.0 (- 1.0 (-> self blend))))
|
||||
)
|
||||
)
|
||||
(vector-lerp! (-> self root trans) gp-0 s5-0 (-> self blend))
|
||||
)
|
||||
(+!
|
||||
(-> self root trans y)
|
||||
(*
|
||||
1638.4
|
||||
(sin (* 54.613335 (the float (mod (-> *display* base-frame-counter) 1200))))
|
||||
)
|
||||
)
|
||||
(let ((gp-1 (new 'stack-no-clear 'quaternion)))
|
||||
(forward-up->quaternion
|
||||
gp-1
|
||||
(vector-normalize!
|
||||
(vector-!
|
||||
(new 'stack-no-clear 'vector)
|
||||
(target-pos 37)
|
||||
(-> self root trans)
|
||||
)
|
||||
1.0
|
||||
)
|
||||
(new 'static 'vector :y 1.0 :w 1.0)
|
||||
)
|
||||
(rotate-toward-orientation! (-> self root) gp-1 65536.0 5461.3335)
|
||||
)
|
||||
(when *target*
|
||||
(let* ((gp-2 (-> *target* control))
|
||||
(s4-2 (-> self root trans))
|
||||
(f0-8
|
||||
(deg-diff
|
||||
(y-angle gp-2)
|
||||
(vector-y-angle
|
||||
(vector-! (new 'stack-no-clear 'vector) s4-2 (-> gp-2 trans))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (< 0.0 f0-8)
|
||||
(set!
|
||||
(-> self twist)
|
||||
(seek (-> self twist) -0.4 (* 0.3 (-> *display* seconds-per-frame)))
|
||||
)
|
||||
(set!
|
||||
(-> self twist)
|
||||
(seek (-> self twist) 0.4 (* 0.3 (-> *display* seconds-per-frame)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-9 from) self)
|
||||
(set! (-> a1-9 num-params) 0)
|
||||
(set! (-> a1-9 message) 'blocked-side?)
|
||||
(case
|
||||
(send-event-function (ppointer->process (-> self parent-override)) a1-9)
|
||||
|
||||
((1)
|
||||
(set! (-> self twist) 0.5)
|
||||
)
|
||||
((2)
|
||||
(set! (-> self twist) -0.5)
|
||||
)
|
||||
((3)
|
||||
(set! (-> self twist) 0.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(send-event
|
||||
(ppointer->process (-> self parent-override))
|
||||
'joystick
|
||||
(-> self twist)
|
||||
-1.0
|
||||
)
|
||||
)
|
||||
(set! (-> self root scale x) (lerp-scale 1.0 0.0 (-> self blend) 0.8 1.0))
|
||||
(set! (-> self root scale y) (-> self root scale x))
|
||||
(set! (-> self root scale z) (-> self root scale x))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defstate enter (voicebox)
|
||||
:virtual #t
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('die)
|
||||
(go-virtual exit)
|
||||
)
|
||||
)
|
||||
)
|
||||
:trans
|
||||
(behavior ()
|
||||
(voicebox-track)
|
||||
(if (< 0.1 (-> self blend))
|
||||
(point-toward-point-clear-roll-pitch! (-> self root) (target-pos 0))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(set-setting! *setting-control* self 'sound-flava #f 20.0 6)
|
||||
(if
|
||||
(and
|
||||
*target*
|
||||
(logtest? (-> *target* control root-prim prim-core action) 512)
|
||||
)
|
||||
(send-event
|
||||
(ppointer->process (-> self parent-override))
|
||||
'set-dist
|
||||
(new 'static 'vector :z 8192.0 :w 1.0)
|
||||
(new 'static 'vector :y 20480.0 :z 12288.0 :w 1.0)
|
||||
)
|
||||
(send-event
|
||||
(ppointer->process (-> self parent-override))
|
||||
'set-dist
|
||||
(new 'static 'vector :z 16384.0 :w 1.0)
|
||||
(new 'static 'vector :y 20480.0 :z 40960.0 :w 1.0)
|
||||
)
|
||||
)
|
||||
(init-cam-float-seeker (-> self seeker) 1.0 0.01 0.022222223 0.1)
|
||||
(set! (-> self seeker target) 0.0)
|
||||
(while (< 0.0001 (-> self blend))
|
||||
(update! (-> self seeker) 0.0)
|
||||
(set! (-> self blend) (-> self seeker value))
|
||||
(suspend)
|
||||
)
|
||||
(set! (-> self blend) 0.0)
|
||||
(go-virtual idle)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior voicebox) ja-post)
|
||||
)
|
||||
|
||||
(defstate idle (voicebox)
|
||||
:virtual #t
|
||||
:event
|
||||
(-> (method-of-type voicebox enter) event)
|
||||
:trans
|
||||
voicebox-track
|
||||
:code
|
||||
(behavior ()
|
||||
(while #t
|
||||
(suspend)
|
||||
(let ((a0-0 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-0 param 0) 1.0)
|
||||
(joint-control-channel-group-eval!
|
||||
a0-0
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-loop!
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior voicebox) ja-post)
|
||||
)
|
||||
|
||||
(defstate exit (voicebox)
|
||||
:virtual #t
|
||||
:trans
|
||||
voicebox-track
|
||||
:code
|
||||
(behavior ()
|
||||
(clear-pending-settings-from-process *setting-control* self 'sound-flava)
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(set! (-> self seeker target) 1.0)
|
||||
(while
|
||||
(and
|
||||
(< (-> self blend) 0.9999)
|
||||
(not
|
||||
(and
|
||||
(not (handle->process (-> self hint)))
|
||||
(>= (- (-> *display* base-frame-counter) (-> self state-time)) 15)
|
||||
(-> *setting-control* current hint)
|
||||
)
|
||||
)
|
||||
)
|
||||
(update! (-> self seeker) 0.0)
|
||||
(set! (-> self blend) (-> self seeker value))
|
||||
(suspend)
|
||||
)
|
||||
(set! (-> self blend) 1.0)
|
||||
(send-event (ppointer->process (-> self parent-override)) 'go empty-state)
|
||||
(suspend)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior voicebox) ja-post)
|
||||
)
|
||||
|
||||
(defbehavior voicebox-init-by-other voicebox ((arg0 vector) (arg1 handle))
|
||||
(set! (-> self root) (new 'process 'trsqv))
|
||||
(set! (-> self hint) arg1)
|
||||
(set! (-> self root trans quad) (-> arg0 quad))
|
||||
(set! (-> self base-trans quad) (-> arg0 quad))
|
||||
(initialize-skeleton self *voicebox-sg* '())
|
||||
(set! (-> self blend) 1.0)
|
||||
(go-virtual enter)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defstate cam-voicebox (camera-voicebox)
|
||||
:event
|
||||
(-> cam-string event)
|
||||
:enter
|
||||
(-> cam-string enter)
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (zero? (logand (-> *camera* master-options) 2))
|
||||
(deactivate self)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(-> cam-string code)
|
||||
)
|
||||
|
||||
(defun voicebox-spawn ((arg0 process) (arg1 vector))
|
||||
(with-pp
|
||||
(let* ((s3-0 (get-process *camera-dead-pool* camera-voicebox #x4000))
|
||||
(s4-0 (when s3-0
|
||||
(let ((t9-1 (method-of-type camera-voicebox activate)))
|
||||
(t9-1
|
||||
(the-as camera-voicebox s3-0)
|
||||
arg0
|
||||
'camera-voicebox
|
||||
(the-as pointer #x70004000)
|
||||
)
|
||||
)
|
||||
(run-now-in-process s3-0 cam-slave-init cam-voicebox #f)
|
||||
(-> s3-0 ppointer)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when s4-0
|
||||
(let ((s5-1 (get-process *default-dead-pool* voicebox #x4000)))
|
||||
(when s5-1
|
||||
(let ((t9-4 (method-of-type voicebox activate)))
|
||||
(t9-4
|
||||
(the-as voicebox s5-1)
|
||||
(ppointer->process s4-0)
|
||||
'voicebox
|
||||
(the-as pointer #x70004000)
|
||||
)
|
||||
)
|
||||
(run-now-in-process
|
||||
s5-1
|
||||
voicebox-init-by-other
|
||||
arg1
|
||||
(process->handle pp)
|
||||
)
|
||||
(-> s5-1 ppointer)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -242,7 +242,7 @@
|
||||
(point-in-bounds? (_type_ vector) symbol 10)
|
||||
(dummy-11 (_type_ vector) none 11)
|
||||
(dummy-12 () none 12)
|
||||
(dummy-13 () none 13)
|
||||
(dummy-13 (_type_ vector vector) vector 13) ;; see - puffer::20
|
||||
(set-current-poly! (_type_ nav-poly) none 14)
|
||||
(set-target-pos! (_type_ vector) none 15)
|
||||
(dummy-16 (_type_ vector) nav-poly 16) ; see - nav-enemy-test-point-in-nav-mesh?
|
||||
@@ -256,7 +256,7 @@
|
||||
(dummy-24 (_type_ float clip-travel-vector-to-mesh-return-info) none 24)
|
||||
(dummy-25 (_type_ vector float) symbol 25) ; see - nav-enemy-test-point-near-nav-mesh?
|
||||
(dummy-26 (_type_) none 26)
|
||||
(dummy-27 () none 27)
|
||||
(dummy-27 (_type_) none 27)
|
||||
(dummy-28 (_type_ int) none 28)
|
||||
(should-display? (_type_) symbol 29)
|
||||
(dummy-30 () none 30)
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
(bit1 1) ;; village1-part
|
||||
(bit2 2) ;; cleared after an aux has its func set to add-to-sprite-aux-lst
|
||||
(bit3 3)
|
||||
(bit4 4) ;; see - swamp-blimp
|
||||
(ready-to-launch 6) ;; maybe just just death?
|
||||
(bit7 7)
|
||||
(aux-list 8) ;; prevents relaunch, adds to aux
|
||||
|
||||
@@ -2485,9 +2485,9 @@
|
||||
(-> self control unknown-vector11)
|
||||
(-> self control unknown-vector14)
|
||||
)
|
||||
(let ((a1-3 (new 'stack-no-clear 'collide-edge-hold-list)))
|
||||
(set! (-> a1-3 num-allocs) (the-as uint 1))
|
||||
(set! (-> a1-3 num-attempts) (the-as uint *touching-list*))
|
||||
(let ((a1-3 (new 'stack-no-clear 'overlaps-others-params)))
|
||||
(set! (-> a1-3 options) (the-as uint 1))
|
||||
(set! (-> a1-3 tlist) *touching-list*)
|
||||
(dummy-40 (-> self control) a1-3)
|
||||
)
|
||||
(post-flag-setup)
|
||||
@@ -2609,9 +2609,9 @@
|
||||
(-> self control unknown-vector11)
|
||||
(-> self control unknown-vector14)
|
||||
)
|
||||
(let ((a1-2 (new 'stack-no-clear 'collide-edge-hold-list)))
|
||||
(set! (-> a1-2 num-allocs) (the-as uint 1))
|
||||
(set! (-> a1-2 num-attempts) (the-as uint *touching-list*))
|
||||
(let ((a1-2 (new 'stack-no-clear 'overlaps-others-params)))
|
||||
(set! (-> a1-2 options) (the-as uint 1))
|
||||
(set! (-> a1-2 tlist) *touching-list*)
|
||||
(dummy-40 (-> self control) a1-2)
|
||||
)
|
||||
(target-calc-camera-pos)
|
||||
|
||||
@@ -156,12 +156,18 @@
|
||||
(jungle-precursorbridge-hint #x25b)
|
||||
(daxter-launcher-no-eco #x25c)
|
||||
|
||||
(jungle-mirrors-completion-talk-to-mayor #x25e)
|
||||
|
||||
(beach-gimmie #x262)
|
||||
(beach-sentinel #x263)
|
||||
(jungle-canyon-end #x264)
|
||||
(jungle-temple-door #x265)
|
||||
(misty-bike-jump #x266)
|
||||
(misty-eco-challenge #x267)
|
||||
(beach-seagull-chased-one #x268)
|
||||
(beach-seagull-chased-two #x26a)
|
||||
(beach-seagull-chased-three #x26b)
|
||||
(beach-seagull-chased-four #x26c)
|
||||
|
||||
(misty-daxter-scared #x26f)
|
||||
|
||||
@@ -172,33 +178,37 @@
|
||||
(beach-flutflutegg-hint #x275)
|
||||
|
||||
(sidekick-hint-fish-powerup #x278)
|
||||
|
||||
(misty-racer-hit-the-ballon-lurkers #x27e)
|
||||
|
||||
(misty-daxter-hit-lurkers-not-mines #x27f)
|
||||
|
||||
(sidekick-speech-hint-crate-darkeco1 #x281)
|
||||
(beach-collectors-unblocked #x288)
|
||||
|
||||
(misty-stopped-lurkers-at-silo #x28a)
|
||||
(misty-stopped-balloon-lurkers #x28b)
|
||||
|
||||
(sidekick-speech-crate-steel-break1 #x283)
|
||||
(sidekick-speech-hint-crate-iron #x284)
|
||||
(sidekick-speech-hint-crate-steel #x285)
|
||||
|
||||
(beach-collectors-unblocked #x288)
|
||||
(misty-stopped-lurkers-at-silo #x28a)
|
||||
(misty-stopped-balloon-lurkers #x28b)
|
||||
(jungleb-eco-vents-opened #x289)
|
||||
|
||||
(sidekick-speech-crate-steel-break2 #x28e)
|
||||
(sidekick-speech-hint-crate-darkeco2 #x28f)
|
||||
|
||||
(daxter-screaming-jump #x290)
|
||||
(daxter-wahoo-jump #x291)
|
||||
|
||||
(collectables-scout-flies-red-boxes #x295)
|
||||
|
||||
(found-all-scout-flies #x296)
|
||||
(yakow-owed-powercell #x297)
|
||||
|
||||
(jungle-mirrors-tutorial #x29c)
|
||||
(jungle-mirrors-break-the-mirror-jak #x29d)
|
||||
(jungle-mirrors-go-to-the-next-tower #x29f)
|
||||
(jungle-mirrors-follow-the-beam #x2a0)
|
||||
|
||||
(misty-teetertotter-bonk-dax-tutorial #x2a4)
|
||||
(sidekick-hint-misty-get-red-eco #x2a5)
|
||||
|
||||
(red-eco-tutorial #x2a6)
|
||||
|
||||
(daxter-blue-eco-plat-tutorial #x2a7)
|
||||
(misty-bone-bridge-hint #x2aa)
|
||||
|
||||
@@ -211,10 +221,9 @@
|
||||
(missed #x2b5)
|
||||
(lose! #x2b6)
|
||||
|
||||
(daxter-screaming-jump #x290)
|
||||
(daxter-wahoo-jump #x291)
|
||||
|
||||
|
||||
(red-eco-tutorial #x2a6)
|
||||
|
||||
|
||||
(village2-gambler-money #x300)
|
||||
(village2-geologist-money #x301)
|
||||
@@ -272,16 +281,28 @@
|
||||
(sunken-take-it-easy-hot-pipes #x34e)
|
||||
(sunken-double-lurker-hint #x347)
|
||||
(sunken-qbert-plat-hint #x34a)
|
||||
(sunken-bully-dive-hint #x34b)
|
||||
|
||||
(sunken-blue-eco-charger-all-hint #x34d)
|
||||
|
||||
(swamp-tethers-advice-hint #x352)
|
||||
|
||||
(kermit-break-tongue #x357)
|
||||
(swamp-rats-nest-hint #x358)
|
||||
(daxter-you-can-shoot-with-yellow-eco #x359)
|
||||
|
||||
(swamp-bats-hint #x364) ;; maybe we can ???? the bats. lol
|
||||
(kermit-run-away-jak #x35f)
|
||||
|
||||
(swamp-bats-hint #x364) ;; maybe we can duck the bats
|
||||
(swamp-tethers-three-to-go #x365)
|
||||
(swamp-tethers-two-to-go #x366)
|
||||
(swamp-tethers-lefts-find-the-last #x367)
|
||||
(flutflut-reminder #x368)
|
||||
|
||||
(sage-golfclap-i-have-low-expectations #x36a) ;; where was this said?
|
||||
|
||||
(swamp-tethers-completion-sage-precursor-arm #x36b)
|
||||
|
||||
|
||||
(village2-warp-gate-reminder #x36f)
|
||||
(village2-warp-gate-reminder-annoyed #x370)
|
||||
@@ -334,13 +355,17 @@
|
||||
(snow-frozen-crate #x42b) ;; task name?
|
||||
(snow-bumpers #x42c)
|
||||
|
||||
(dark-crystal-last-one #x432)
|
||||
(daxter-maybe-you-can-shoot-better-goggles #x433)
|
||||
|
||||
(darkcave-light-crystal-low-light-hint #x437)
|
||||
(darkcave-light-crystal-hint #x438)
|
||||
|
||||
(dark-crystal-run-away #x439)
|
||||
(cave-trap-nest-hint #x440)
|
||||
(snow-fort-reminder #x443)
|
||||
|
||||
|
||||
(ram-boss-red-eco-hint #x444)
|
||||
|
||||
(ice-cube-hint #x448)
|
||||
|
||||
@@ -352,8 +377,8 @@
|
||||
(fire-canyon-end #x500)
|
||||
(fire-canyon-buzzer #x501)
|
||||
|
||||
(sidekick-speech-hint-firecanyon-crate-darkeco1 #x506)
|
||||
(sidekick-speech-hint-firecanyon-crate-darkeco2 #x507)
|
||||
(daxter-maybe-i-should-drive #x506)
|
||||
(daxter-you-are-trying-to-avoid-dark-eco #x507)
|
||||
|
||||
(fire-canyon-level-name #x50c)
|
||||
|
||||
|
||||
@@ -208,7 +208,7 @@
|
||||
(define-extern scf-get-inactive-timeout (function int))
|
||||
;; dma-to-iop
|
||||
(define-extern kernel-shutdown (function none))
|
||||
(define-extern aybabtu (function int int))
|
||||
(define-extern aybabtu (function int int)) ;; this is just sceCdMmode
|
||||
;; *stack-top*
|
||||
;; *stack-base*
|
||||
;; *stack-size*
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -370,7 +370,7 @@ eco-door-event-handler
|
||||
(let ((gp-0 (new 'stack 'overlaps-others-params)))
|
||||
(set! (-> gp-0 options) (the-as uint 1))
|
||||
(set! (-> gp-0 tlist) #f)
|
||||
(while (dummy-40 (-> self root-override) gp-0)
|
||||
(while (dummy-40 (-> self root-override) (the-as vector2w gp-0))
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -5,3 +5,307 @@
|
||||
;; name in dgo: launcherdoor
|
||||
;; dgos: JUN, JUNGLE, L1, MAI, MAINCAVE, SUN, SUNKEN
|
||||
|
||||
(define-extern *launcherdoor-maincave-sg* skeleton-group)
|
||||
(define-extern *launcherdoor-sg* skeleton-group)
|
||||
|
||||
(declare-type launcherdoor process-drawable)
|
||||
|
||||
(define-extern launcherdoor-open (state symbol launcherdoor)) ;; unknown type
|
||||
(define-extern launcherdoor-closed (state symbol launcherdoor)) ;; unknown type
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype launcherdoor (process-drawable)
|
||||
((root-override collide-shape :offset 112)
|
||||
(notify-player-passed-thru? symbol :offset-assert 176)
|
||||
(thresh-y float :offset-assert 180)
|
||||
(open-speed float :offset-assert 184)
|
||||
(close-speed float :offset-assert 188)
|
||||
(load-mode symbol :offset-assert 192)
|
||||
)
|
||||
:heap-base #x60
|
||||
:method-count-assert 20
|
||||
:size-assert #xc4
|
||||
:flag-assert #x14006000c4
|
||||
)
|
||||
|
||||
|
||||
(defskelgroup *launcherdoor-sg* launcherdoor
|
||||
0
|
||||
-1
|
||||
((1 (meters 20)) (2 (meters 999999)))
|
||||
:bounds (static-spherem 0 0 0 4)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
(defskelgroup *launcherdoor-maincave-sg* launcherdoor-maincave
|
||||
0
|
||||
-1
|
||||
((1 (meters 20)) (2 (meters 999999)))
|
||||
:bounds (static-spherem 0 0 0 4)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
(defstate launcherdoor-closed (launcherdoor)
|
||||
:code
|
||||
(behavior ((arg0 symbol))
|
||||
(if (not arg0)
|
||||
(sound-play-by-name
|
||||
(static-sound-name "ldoor-close")
|
||||
(new-sound-id)
|
||||
1024
|
||||
0
|
||||
0
|
||||
1
|
||||
#t
|
||||
)
|
||||
)
|
||||
(when *target*
|
||||
(case (-> *target* current-level name)
|
||||
(('jungle 'jungleb)
|
||||
(send-event *target* 'no-load-wait 6000)
|
||||
)
|
||||
)
|
||||
)
|
||||
(restore-collide-with-as (-> self root-override))
|
||||
(let ((a0-7 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-7 param 0) 0.0)
|
||||
(set! (-> a0-7 param 1) 1.0)
|
||||
(joint-control-channel-group!
|
||||
a0-7
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(when arg0
|
||||
(let ((v1-22 (-> self skel root-channel 0)))
|
||||
(set! (-> v1-22 num-func) num-func-identity)
|
||||
(set! (-> v1-22 frame-num) 0.0)
|
||||
)
|
||||
(set! (-> self draw force-lod) 1)
|
||||
)
|
||||
(suspend)
|
||||
(while #t
|
||||
(if
|
||||
(and
|
||||
*target*
|
||||
(= (-> *target* control unknown-surface00 name) 'launch-jump)
|
||||
(< (-> *target* control trans y) (-> self thresh-y))
|
||||
)
|
||||
(go launcherdoor-open #f)
|
||||
)
|
||||
(let ((a0-13 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-13 param 0) 0.0)
|
||||
(set! (-> a0-13 param 1) (-> self close-speed))
|
||||
(joint-control-channel-group-eval!
|
||||
a0-13
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(suspend)
|
||||
(when (ja-done? 0)
|
||||
(set! (-> self draw force-lod) 1)
|
||||
(when (-> self notify-player-passed-thru?)
|
||||
(set! (-> self notify-player-passed-thru?) #f)
|
||||
(let* ((gp-1 (-> self entity))
|
||||
(s5-1 (entity-actor-count gp-1 'alt-actor))
|
||||
)
|
||||
(dotimes (s4-1 s5-1)
|
||||
(let ((v1-43 (entity-actor-lookup gp-1 'alt-actor s4-1)))
|
||||
(if v1-43
|
||||
(send-event (if v1-43
|
||||
(-> v1-43 extra process)
|
||||
)
|
||||
'notify
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(case (-> self load-mode)
|
||||
(('jungle)
|
||||
(load-state-want-levels 'village1 'jungle)
|
||||
(load-state-want-display-level 'village1 'display)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior launcherdoor) ja-post)
|
||||
)
|
||||
|
||||
(defstate launcherdoor-open (launcherdoor)
|
||||
:code
|
||||
(behavior ((arg0 symbol))
|
||||
(if (not arg0)
|
||||
(sound-play-by-name
|
||||
(static-sound-name "ldoor-open")
|
||||
(new-sound-id)
|
||||
1024
|
||||
0
|
||||
0
|
||||
1
|
||||
#t
|
||||
)
|
||||
)
|
||||
(set! (-> self draw force-lod) 0)
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((a0-4 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-4 param 0)
|
||||
(the float (+ (-> a0-4 frame-group data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-4 param 1) 1.0)
|
||||
(joint-control-channel-group!
|
||||
a0-4
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(when arg0
|
||||
(let ((v1-16 (-> self skel root-channel 0)))
|
||||
(set! (-> v1-16 num-func) num-func-identity)
|
||||
(set!
|
||||
(-> v1-16 frame-num)
|
||||
(the float (+ (-> v1-16 frame-group data 0 length) -1))
|
||||
)
|
||||
)
|
||||
)
|
||||
(while #t
|
||||
(when
|
||||
(or
|
||||
(not *target*)
|
||||
(!= (-> *target* control unknown-surface00 name) 'launch-jump)
|
||||
(<
|
||||
(+ 4096.0 (-> self root-override trans y))
|
||||
(-> *target* control trans y)
|
||||
)
|
||||
)
|
||||
(when (and *target* (< (-> self thresh-y) (-> *target* control trans y)))
|
||||
(let ((a1-3 (res-lump-struct (-> self entity) 'continue-name structure)))
|
||||
(when a1-3
|
||||
(let ((v1-36 (set-continue! *game-info* (the-as basic a1-3))))
|
||||
(load-commands-set! *level* (-> v1-36 load-commands))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> self notify-player-passed-thru?) #t)
|
||||
)
|
||||
(go launcherdoor-closed #f)
|
||||
)
|
||||
(let ((a0-16 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-16 param 0)
|
||||
(the float (+ (-> a0-16 frame-group data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-16 param 1) (-> self open-speed))
|
||||
(joint-control-channel-group-eval!
|
||||
a0-16
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior launcherdoor) ja-post)
|
||||
)
|
||||
|
||||
(defmethod
|
||||
init-from-entity!
|
||||
launcherdoor
|
||||
((obj launcherdoor) (arg0 entity-actor))
|
||||
(set! (-> obj notify-player-passed-thru?) #f)
|
||||
(set! (-> obj open-speed) 4.0)
|
||||
(set! (-> obj close-speed) 2.0)
|
||||
(let
|
||||
((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
|
||||
(let
|
||||
((s3-0
|
||||
(new
|
||||
'process
|
||||
'collide-shape-prim-mesh
|
||||
s4-0
|
||||
(the-as uint 0)
|
||||
(the-as uint 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> s3-0 prim-core collide-as) (the-as uint 256))
|
||||
(set! (-> s3-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s3-0 prim-core action) (the-as uint 1))
|
||||
(set! (-> s3-0 prim-core offense) 4)
|
||||
(set! (-> s3-0 transform-index) 0)
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 14336.0)
|
||||
(set-root-prim! s4-0 s3-0)
|
||||
)
|
||||
(set! (-> 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)
|
||||
(cond
|
||||
((= (-> (if (-> obj entity)
|
||||
(-> obj entity extra level)
|
||||
(-> *level* level-default)
|
||||
)
|
||||
name
|
||||
)
|
||||
'maincave
|
||||
)
|
||||
(set! (-> obj close-speed) 4.0)
|
||||
(initialize-skeleton obj *launcherdoor-maincave-sg* '())
|
||||
(ja-channel-set! 1)
|
||||
(let ((s5-1 (-> obj skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
s5-1
|
||||
(the-as art-joint-anim (-> obj draw art-group data 3))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> s5-1 frame-num) 0.0)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(initialize-skeleton obj *launcherdoor-sg* '())
|
||||
(ja-channel-set! 1)
|
||||
(let ((s5-2 (-> obj skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
s5-2
|
||||
(the-as art-joint-anim (-> obj draw art-group data 3))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> s5-2 frame-num) 0.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(transform-post)
|
||||
(case (-> obj entity extra level name)
|
||||
(('jungle)
|
||||
(set! (-> obj draw shadow-mask) (the-as uint 28))
|
||||
)
|
||||
)
|
||||
(set! (-> obj load-mode) (-> (if (-> obj entity)
|
||||
(-> obj entity extra level)
|
||||
(-> *level* level-default)
|
||||
)
|
||||
name
|
||||
)
|
||||
)
|
||||
(set! (-> obj thresh-y) (+ -81920.0 (-> obj root-override trans y)))
|
||||
(if
|
||||
(and *target* (= (-> *target* control unknown-surface00 name) 'launch-jump))
|
||||
(go launcherdoor-open #t)
|
||||
(go launcherdoor-closed #t)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -17,33 +17,35 @@
|
||||
:flag-assert #x900000010
|
||||
)
|
||||
(deftype mistycannon (process-drawable)
|
||||
((rotate angle-tracker :inline :offset-assert 176)
|
||||
((root-override collide-shape-moving :score 100 :offset 112)
|
||||
(rotate angle-tracker :inline :offset-assert 176)
|
||||
(fact-info-override fact-info-enemy :score 100 :offset 144)
|
||||
(tilt angle-tracker :inline :offset-assert 192)
|
||||
(front-wheel float :offset-assert 208)
|
||||
(rear-wheel float :offset-assert 212)
|
||||
(last-known-rotation float :offset-assert 216)
|
||||
(part-timer uint64 :offset-assert 224)
|
||||
(hellmouth vector :inline :offset-assert 240)
|
||||
(postbindinfo-ok basic :offset-assert 256)
|
||||
(postbindinfo-ok symbol :offset-assert 256)
|
||||
(launch-origin vector :inline :offset-assert 272)
|
||||
(goggles vector :inline :offset-assert 288)
|
||||
(avoid-entity basic :offset-assert 304)
|
||||
(avoid-entity entity-actor :offset-assert 304)
|
||||
(center-point vector :inline :offset-assert 320)
|
||||
(at-point vector :inline :offset-assert 336)
|
||||
(accuracy-range float :offset-assert 352)
|
||||
(target-theta float :offset-assert 356)
|
||||
(sound-id sound-id :offset-assert 360)
|
||||
(aim-sound-id sound-id :offset-assert 364)
|
||||
(player-touching-grips? basic :offset-assert 368)
|
||||
(player-touching-grips? symbol :offset-assert 368)
|
||||
)
|
||||
:method-count-assert 24
|
||||
:size-assert #x174
|
||||
:heap-base #x110
|
||||
:flag-assert #x1801100174
|
||||
(:methods
|
||||
(dummy-20 () none 20)
|
||||
(dummy-21 () none 21)
|
||||
(dummy-22 () none 22)
|
||||
(dummy-23 () none 23)
|
||||
(rotate! (_type_ float) none 20)
|
||||
(tilt! (_type_ float) none 21)
|
||||
(dummy-22 (_type_ float float float) none 22)
|
||||
(dummy-23 (_type_) none 23)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -5,3 +5,18 @@
|
||||
;; name in dgo: plat-eco
|
||||
;; dgos: GAME, COMMON, L1
|
||||
|
||||
;; TODO - for citb-plat
|
||||
(deftype plat-eco (plat)
|
||||
((notice-dist float :offset-assert 264)
|
||||
(sync-offset-dest float :offset-assert 268)
|
||||
(sync-offset-faux float :offset-assert 272)
|
||||
(sync-linear-val float :offset-assert 276)
|
||||
(target handle :offset-assert 280)
|
||||
(unlit-look lod-set :inline :offset-assert 288)
|
||||
(lit-look lod-set :inline :offset-assert 324)
|
||||
)
|
||||
:method-count-assert 33
|
||||
:size-assert #x165
|
||||
:heap-base #x100
|
||||
:flag-assert #x2101000165
|
||||
)
|
||||
|
||||
+3975
-5453
File diff suppressed because it is too large
Load Diff
@@ -5,3 +5,552 @@
|
||||
;; name in dgo: darkvine
|
||||
;; dgos: JUN, JUNGLE, L1
|
||||
|
||||
(define-extern *darkvine-sg* skeleton-group)
|
||||
|
||||
(declare-type darkvine process-drawable)
|
||||
|
||||
(define-extern darkvine-die (state symbol darkvine)) ;; unknown type
|
||||
(define-extern darkvine-idle (state darkvine)) ;; unknown type
|
||||
(define-extern darkvine-retreat (state darkvine)) ;; unknown type
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype darkvine (process-drawable)
|
||||
((root-override collide-shape :offset 112)
|
||||
(speed float :offset-assert 176)
|
||||
(tip-index int8 :offset-assert 180)
|
||||
(dangerous symbol :offset-assert 184)
|
||||
(vulnerable symbol :offset-assert 188)
|
||||
(hit-player symbol :offset-assert 192)
|
||||
(touch-time uint64 :offset-assert 200)
|
||||
(player-attack-id int32 :offset-assert 208)
|
||||
)
|
||||
:heap-base #x70
|
||||
:method-count-assert 20
|
||||
:size-assert #xd4
|
||||
:flag-assert #x14007000d4
|
||||
)
|
||||
|
||||
|
||||
(defmethod run-logic? darkvine ((obj darkvine))
|
||||
(or
|
||||
(zero? (logand (-> obj mask) (process-mask actor-pause)))
|
||||
(or
|
||||
(and
|
||||
(nonzero? (-> obj draw))
|
||||
(logtest? (-> obj draw status) 8)
|
||||
(>=
|
||||
(+
|
||||
(-> *ACTOR-bank* pause-dist)
|
||||
(-> obj root-override pause-adjust-distance)
|
||||
)
|
||||
(vector-vector-distance (-> obj root-override trans) (math-camera-pos))
|
||||
)
|
||||
)
|
||||
(and
|
||||
(nonzero? (-> obj skel))
|
||||
(!= (-> obj skel root-channel 0) (-> obj skel channel))
|
||||
)
|
||||
(and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defskelgroup *darkvine-sg* darkvine
|
||||
0
|
||||
3
|
||||
((1 (meters 20)) (2 (meters 999999)))
|
||||
:bounds (static-spherem 0 2 0 3.5)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-group-id-table* 175)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 3
|
||||
:duration #x96
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-darkvine-puffs"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 3
|
||||
(sp-item 800)
|
||||
(sp-item 801)
|
||||
(sp-item 802)
|
||||
)
|
||||
:bounds
|
||||
(new 'static 'sphere :y 8192.0 :w 12288.0)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 800)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 19
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2))
|
||||
(sp-flt spt-num 0.8)
|
||||
(sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 30.0 20.0 1.0)
|
||||
(sp-rnd-flt spt-g 25.0 10.0 1.0)
|
||||
(sp-rnd-flt spt-b 10.0 5.0 1.0)
|
||||
(sp-rnd-flt spt-a 0.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-vel-x (meters 0.0016666667) (meters 0.0033333334) 1.0)
|
||||
(sp-flt spt-vel-y (meters 0.013333334))
|
||||
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
|
||||
(sp-flt spt-fade-a 0.1882353)
|
||||
(sp-flt spt-accel-y -2.048)
|
||||
(sp-int spt-timer 255)
|
||||
(sp-cpuinfo-flags bit2 bit12)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 802)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 18
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2))
|
||||
(sp-flt spt-num 0.25)
|
||||
(sp-rnd-flt spt-x (meters 0.0) (meters 0.6) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.2) 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 45.0 45.0 1.0)
|
||||
(sp-rnd-flt spt-g 45.0 10.0 1.0)
|
||||
(sp-rnd-flt spt-b 20.0 6.0 1.0)
|
||||
(sp-flt spt-a 96.0)
|
||||
(sp-rnd-flt spt-vel-x (meters 0.0016666667) (meters 0.0033333334) 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.013333334) 1.0)
|
||||
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
|
||||
(sp-flt spt-accel-y -2.7306666)
|
||||
(sp-int spt-timer 375)
|
||||
(sp-cpuinfo-flags bit2 bit12)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 801)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 18
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2))
|
||||
(sp-flt spt-num 0.5)
|
||||
(sp-rnd-flt spt-x (meters 0.0) (meters 0.6) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.4) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-scale-y (meters 0.1) (meters 0.1) 1.0)
|
||||
(sp-rnd-flt spt-r 10.0 6.0 1.0)
|
||||
(sp-rnd-flt spt-g 40.0 90.0 1.0)
|
||||
(sp-rnd-flt spt-b 10.0 6.0 1.0)
|
||||
(sp-flt spt-a 96.0)
|
||||
(sp-rnd-flt spt-vel-x (meters 0.0016666667) (meters 0.0033333334) 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.01) (meters 0.013333334) 1.0)
|
||||
(sp-rnd-int-flt spt-rotvel-z (degrees -1.2) 1 436.90668)
|
||||
(sp-flt spt-accel-y -1.3653333)
|
||||
(sp-int spt-timer 600)
|
||||
(sp-cpuinfo-flags bit2 bit12)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 50]
|
||||
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 52]
|
||||
(defbehavior
|
||||
darkvine-event-handler darkvine
|
||||
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(let ((v1-0 arg2))
|
||||
(the-as object (cond
|
||||
((= v1-0 'touch)
|
||||
(dummy-45 (-> self root-override))
|
||||
(when (-> self dangerous)
|
||||
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-1 from) self)
|
||||
(set! (-> a1-1 num-params) 2)
|
||||
(set! (-> a1-1 message) 'attack)
|
||||
(set! (-> a1-1 param 0) (-> arg3 param 0))
|
||||
(set!
|
||||
(-> a1-1 param 1)
|
||||
(the-as uint (new 'static 'attack-info))
|
||||
)
|
||||
(if (send-event-function arg0 a1-1)
|
||||
(dummy-54 (-> self root-override) 2 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
((= v1-0 'attack)
|
||||
(let ((v1-10 (-> arg3 param 2)))
|
||||
(cond
|
||||
((!= v1-10 (-> self player-attack-id))
|
||||
(set! (-> self player-attack-id) (the-as int v1-10))
|
||||
(when (-> self vulnerable)
|
||||
(dummy-45 (-> self root-override))
|
||||
(go darkvine-retreat)
|
||||
)
|
||||
)
|
||||
(else
|
||||
'push
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate darkvine-idle (darkvine)
|
||||
:event
|
||||
darkvine-event-handler
|
||||
:code
|
||||
(behavior ()
|
||||
(set! (-> self dangerous) #t)
|
||||
(set! (-> self vulnerable) #t)
|
||||
(let ((f30-0 0.0))
|
||||
(while #t
|
||||
(if
|
||||
(logtest? (get-reminder (get-task-control (game-task jungle-plant)) 0) 1)
|
||||
(go darkvine-die #f)
|
||||
)
|
||||
(let ((a0-3 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-3 frame-group)
|
||||
(the-as art-joint-anim (-> self draw art-group data 3))
|
||||
)
|
||||
(set!
|
||||
(-> a0-3 param 0)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 3))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-3 param 1) (-> self speed))
|
||||
(set! (-> a0-3 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-3
|
||||
(the-as art-joint-anim (-> self draw art-group data 3))
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(if (and (>= (ja-aframe-num 0) 120.0) (>= 180.0 (ja-aframe-num 0)))
|
||||
(seek-toward-yaw-angle! (-> self root-override) f30-0 32768.0 150)
|
||||
)
|
||||
(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) (-> self speed))
|
||||
(joint-control-channel-group-eval!
|
||||
a0-7
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! f30-0 (if (rand-vu-percent? 0.5)
|
||||
(+ 16384.0 f30-0)
|
||||
(+ -16384.0 f30-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(behavior ()
|
||||
(when
|
||||
(and
|
||||
(-> self hit-player)
|
||||
(or
|
||||
(not *target*)
|
||||
(>=
|
||||
(- (-> *display* base-frame-counter) (the-as int (-> self touch-time)))
|
||||
15
|
||||
)
|
||||
)
|
||||
)
|
||||
(dummy-54 (-> self root-override) 2 4)
|
||||
(set! (-> self hit-player) #f)
|
||||
)
|
||||
(transform-post)
|
||||
(if *target*
|
||||
(look-at-enemy!
|
||||
(-> *target* neck)
|
||||
(vector<-cspace!
|
||||
(new 'stack-no-clear 'vector)
|
||||
(-> self node-list data (-> self tip-index))
|
||||
)
|
||||
'nothing
|
||||
self
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate darkvine-retreat (darkvine)
|
||||
:event
|
||||
darkvine-event-handler
|
||||
:code
|
||||
(behavior ()
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(set! (-> self dangerous) #f)
|
||||
(set! (-> self vulnerable) #f)
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(ja-channel-push! 1 45)
|
||||
(let ((a0-2 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-2 frame-group)
|
||||
(the-as art-joint-anim (-> self draw art-group data 4))
|
||||
)
|
||||
(set!
|
||||
(-> a0-2 param 0)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 4))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-2 param 1) 1.0)
|
||||
(set! (-> a0-2 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-2
|
||||
(the-as art-joint-anim (-> self draw art-group data 4))
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(sp-launch-particles-var
|
||||
*sp-particle-system-2d*
|
||||
(-> *part-id-table* 800)
|
||||
(-> self root-override trans)
|
||||
(the-as sparticle-launch-state #f)
|
||||
(the-as sparticle-launch-control #f)
|
||||
1.0
|
||||
)
|
||||
(suspend)
|
||||
(let ((a0-4 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-4 param 0)
|
||||
(the float (+ (-> a0-4 frame-group data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-4 param 1) 1.0)
|
||||
(joint-control-channel-group-eval!
|
||||
a0-4
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
(ja-channel-set! 0)
|
||||
(let ((gp-0 (-> *display* base-frame-counter)))
|
||||
(until (>= (- (-> *display* base-frame-counter) gp-0) 600)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-1
|
||||
(let ((t9-7 (method-of-type part-tracker activate)))
|
||||
(t9-7
|
||||
(the-as part-tracker gp-1)
|
||||
*entity-pool*
|
||||
'part-tracker
|
||||
(the-as pointer #x70004000)
|
||||
)
|
||||
)
|
||||
(run-now-in-process
|
||||
gp-1
|
||||
part-tracker-init
|
||||
(-> *part-group-id-table* 175)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> self root-override trans)
|
||||
)
|
||||
(-> gp-1 ppointer)
|
||||
)
|
||||
)
|
||||
(let ((gp-2 (-> *display* base-frame-counter)))
|
||||
(until (>= (- (-> *display* base-frame-counter) gp-2) 150)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(set! (-> self dangerous) #t)
|
||||
(logior! (-> self mask) (process-mask actor-pause))
|
||||
(ja-channel-set! 1)
|
||||
(let ((a0-11 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-11 frame-group)
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
)
|
||||
(set!
|
||||
(-> a0-11 param 0)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-11 param 1) 1.0)
|
||||
(set! (-> a0-11 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-11
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-12 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-12 param 0)
|
||||
(the float (+ (-> a0-12 frame-group data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-12 param 1) 1.0)
|
||||
(joint-control-channel-group-eval!
|
||||
a0-12
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
(go darkvine-idle)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(-> darkvine-idle post)
|
||||
)
|
||||
|
||||
(defstate darkvine-die (darkvine)
|
||||
:code
|
||||
(behavior ((arg0 symbol))
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(if arg0
|
||||
(ja-channel-set! 1)
|
||||
(ja-channel-push! 1 150)
|
||||
)
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
gp-0
|
||||
(the-as art-joint-anim (-> self draw art-group data 6))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> gp-0 frame-num) 0.0)
|
||||
)
|
||||
(while (!= (-> self skel root-channel 0) (-> self skel channel))
|
||||
(suspend)
|
||||
)
|
||||
(logior! (-> self mask) (process-mask sleep))
|
||||
(anim-loop)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(-> darkvine-idle post)
|
||||
)
|
||||
|
||||
(defmethod init-from-entity! darkvine ((obj darkvine) (arg0 entity-actor))
|
||||
(set! (-> obj mask) (logior (process-mask enemy) (-> obj mask)))
|
||||
(let
|
||||
((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
|
||||
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 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 3072))
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 16384.0)
|
||||
(set-root-prim! s4-0 s3-0)
|
||||
(let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2))))
|
||||
(set! (-> s2-0 prim-core collide-as) (the-as uint 256))
|
||||
(set! (-> s2-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-0 prim-core action) (the-as uint 3073))
|
||||
(set! (-> s2-0 prim-core offense) 4)
|
||||
(set! (-> s2-0 transform-index) 5)
|
||||
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 3276.8)
|
||||
(append-prim s3-0 s2-0)
|
||||
)
|
||||
(let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2))))
|
||||
(set! (-> s2-1 prim-core collide-as) (the-as uint 256))
|
||||
(set! (-> s2-1 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-1 prim-core action) (the-as uint 3073))
|
||||
(set! (-> s2-1 prim-core offense) 4)
|
||||
(set! (-> s2-1 transform-index) 6)
|
||||
(set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 2867.2)
|
||||
(append-prim s3-0 s2-1)
|
||||
)
|
||||
(let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2))))
|
||||
(set! (-> s2-2 prim-core collide-as) (the-as uint 256))
|
||||
(set! (-> s2-2 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-2 prim-core action) (the-as uint 3073))
|
||||
(set! (-> s2-2 prim-core offense) 4)
|
||||
(set! (-> s2-2 transform-index) 7)
|
||||
(set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 2457.6)
|
||||
(append-prim s3-0 s2-2)
|
||||
)
|
||||
(let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2))))
|
||||
(set! (-> s2-3 prim-core collide-as) (the-as uint 256))
|
||||
(set! (-> s2-3 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-3 prim-core action) (the-as uint 3073))
|
||||
(set! (-> s2-3 prim-core offense) 4)
|
||||
(set! (-> s2-3 transform-index) 8)
|
||||
(set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 2048.0)
|
||||
(append-prim s3-0 s2-3)
|
||||
)
|
||||
)
|
||||
(set! (-> s4-0 nav-radius) 2048.0)
|
||||
(backup-collide-with-as s4-0)
|
||||
(set! (-> obj root-override) s4-0)
|
||||
)
|
||||
(set! (-> obj tip-index) 8)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(initialize-skeleton obj *darkvine-sg* '())
|
||||
(nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f))
|
||||
(set! (-> obj hit-player) #f)
|
||||
(set! (-> obj speed) (rand-vu-float-range 0.95 1.05))
|
||||
(if (logtest? (get-reminder (get-task-control (game-task jungle-plant)) 0) 1)
|
||||
(go darkvine-die #t)
|
||||
)
|
||||
(go darkvine-idle)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,3 +5,753 @@
|
||||
;; name in dgo: dark-crystal
|
||||
;; dgos: L1, MAI, MAINCAVE
|
||||
|
||||
(define-extern *dark-crystal-sg* skeleton-group)
|
||||
(define-extern *dark-crystal-explode-sg* skeleton-group)
|
||||
|
||||
(declare-type dark-crystal process-drawable)
|
||||
|
||||
(define-extern dark-crystal-spawn-fuel-cell (state dark-crystal)) ;; unknown type
|
||||
(define-extern dark-crystal-idle (state dark-crystal)) ;; unknown type
|
||||
(define-extern dark-crystal-explode (state dark-crystal)) ;; unknown type
|
||||
(define-extern dark-crystal-activate (state dark-crystal)) ;; unknown type
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype dark-crystal (process-drawable)
|
||||
((root-override collide-shape :offset 112)
|
||||
(crystal-num int32 :offset-assert 176)
|
||||
(underwater? symbol :offset-assert 180)
|
||||
(explode-danger-radius float :offset-assert 184)
|
||||
(lit-color-mult vector :inline :offset-assert 192)
|
||||
(lit-color-emissive vector :inline :offset-assert 208)
|
||||
(unlit-color-mult vector :inline :offset-assert 224)
|
||||
(unlit-color-emissive vector :inline :offset-assert 240)
|
||||
)
|
||||
:heap-base #x90
|
||||
:method-count-assert 22
|
||||
:size-assert #x100
|
||||
:flag-assert #x1600900100
|
||||
(:methods
|
||||
(dummy-20 (_type_) none 20)
|
||||
(dummy-21 (_type_) symbol 21)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defskelgroup *dark-crystal-sg* dark-crystal
|
||||
0
|
||||
-1
|
||||
((1 (meters 999999)))
|
||||
:bounds (static-spherem 0 3.4 0 3.8)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
(defskelgroup *dark-crystal-explode-sg* dark-crystal
|
||||
3
|
||||
-1
|
||||
((4 (meters 999999)))
|
||||
:bounds (static-spherem 0 -15 0 50)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
(define
|
||||
*dark-crystal-flash-delays*
|
||||
(the-as (array int32)
|
||||
(new 'static 'boxed-array :type int32 :length 9 :allocated-length 9 #xb4 #x96 #x78 90 60 30 15 7 3)
|
||||
)
|
||||
)
|
||||
|
||||
(define
|
||||
*dark-crystal-exploder-params*
|
||||
(new 'static 'joint-exploder-static-params
|
||||
:joints
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type joint-exploder-static-joint-params :length 15 :allocated-length 15
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 13 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 14 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 15 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 16 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 17 :parent-joint-index -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-group-id-table* 322)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 69
|
||||
:duration #x4b
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-dark-crystal-gnd-explode"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 69
|
||||
(sp-item 2153 :fade-after (meters 100.0) :period 600 :length 5 :binding 296)
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2154 :period 600 :length 5)
|
||||
(sp-item 2155 :period 600 :length 40)
|
||||
(sp-item 2156 :period 600 :length 20)
|
||||
(sp-item 2157 :period 600 :length 20)
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 65536.0)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2153) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 16
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
|
||||
(sp-flt spt-num 32.0)
|
||||
(sp-rnd-flt spt-x (meters -2.0) (meters 4.0) 1.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 2.0) 1.0)
|
||||
(sp-rnd-flt spt-z -8192.0 16384.0 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.053333335) (meters 0.026666667) 1.0)
|
||||
(sp-flt spt-accel-y -1.3653333)
|
||||
(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* 2155) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 22
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 24.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.8) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 128.0 128.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 96.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.16) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters -0.0026666666))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0)
|
||||
(sp-flt spt-friction 0.9)
|
||||
(sp-int spt-timer 300)
|
||||
(sp-cpuinfo-flags bit2 bit14)
|
||||
(sp-int-plain-rnd spt-next-time 30 89 1)
|
||||
(sp-launcher-by-id spt-next-launcher 2158)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2158)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -1.0666667) (sp-end))
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2157) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 15
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 12.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
|
||||
(sp-flt spt-scale-x (meters 0.3))
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0)
|
||||
(sp-flt spt-scale-y (meters 12.0))
|
||||
(sp-rnd-flt spt-r 64.0 192.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 64.0 1.0)
|
||||
(sp-flt spt-scalevel-y (meters 1.04))
|
||||
(sp-flt spt-fade-a -1.6)
|
||||
(sp-int spt-timer 60)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2154) (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-y (meters 2.0))
|
||||
(sp-flt spt-scale-x (meters 24.0))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 192.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 64.0 1.0)
|
||||
(sp-flt spt-a 128.0)
|
||||
(sp-flt spt-fade-a -2.3272727)
|
||||
(sp-int spt-timer 54)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2156)
|
||||
(new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23
|
||||
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
|
||||
(sp-flt spt-num 16.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.5) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-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-vel-y (meters 0.08) (meters 0.04) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.02))
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-a -0.28444445)
|
||||
(sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0)
|
||||
(sp-flt spt-friction 0.8)
|
||||
(sp-int spt-timer 510)
|
||||
(sp-cpuinfo-flags bit2 bit14)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 4.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-group-id-table* 323) (new 'static 'sparticle-launch-group
|
||||
:length 6
|
||||
:duration #x4b
|
||||
:linger-duration #x2ee0
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-dark-crystal-water-explode"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 6
|
||||
(sp-item 2159 :period 600 :length 5)
|
||||
(sp-item 2160 :period 600 :length 40)
|
||||
(sp-item 2161 :period 600 :length 20)
|
||||
(sp-item 2162 :period 600 :length 20)
|
||||
(sp-item 2163 :period 600 :length 75)
|
||||
(sp-item 2164 :period 600 :length 75)
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 65536.0)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2160) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 23
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 24.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.8) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 128.0 128.0 1.0)
|
||||
(sp-rnd-flt spt-g 128.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 96.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.16) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters -0.0026666666))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.4)
|
||||
(sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0)
|
||||
(sp-flt spt-friction 0.9)
|
||||
(sp-int spt-timer 300)
|
||||
(sp-cpuinfo-flags bit2 bit14)
|
||||
(sp-int-plain-rnd spt-next-time 30 89 1)
|
||||
(sp-launcher-by-id spt-next-launcher 2158)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2162) (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 12.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
|
||||
(sp-flt spt-scale-x (meters 0.3))
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0)
|
||||
(sp-flt spt-scale-y (meters 12.0))
|
||||
(sp-rnd-flt spt-r 128.0 128.0 1.0)
|
||||
(sp-rnd-flt spt-g 128.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 64.0 1.0)
|
||||
(sp-flt spt-scalevel-y (meters 1.04))
|
||||
(sp-flt spt-fade-r -1.0666667)
|
||||
(sp-flt spt-fade-g -2.1333334)
|
||||
(sp-flt spt-fade-a -1.6)
|
||||
(sp-int spt-timer 60)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2159) (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-flt spt-num 1.0)
|
||||
(sp-flt spt-y (meters 2.0))
|
||||
(sp-flt spt-scale-x (meters 24.0))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 192.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-g 128.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 64.0 1.0)
|
||||
(sp-flt spt-a 128.0)
|
||||
(sp-flt spt-fade-g -2.0)
|
||||
(sp-flt spt-fade-a -2.3272727)
|
||||
(sp-int spt-timer 54)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2161)
|
||||
(new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 26
|
||||
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
|
||||
(sp-flt spt-num 16.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.5) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 128.0 96.0 1.0)
|
||||
(sp-rnd-flt spt-g 128.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.08) (meters 0.04) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.02))
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-r -0.2)
|
||||
(sp-flt spt-fade-g -0.2)
|
||||
(sp-flt spt-fade-b 0.0)
|
||||
(sp-flt spt-fade-a -0.28444445)
|
||||
(sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0)
|
||||
(sp-flt spt-friction 0.8)
|
||||
(sp-int spt-timer 510)
|
||||
(sp-cpuinfo-flags bit2 bit14)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 4.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2163) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 21
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
|
||||
(sp-flt spt-num 32.0)
|
||||
(sp-rnd-flt spt-x (meters -4.0) (meters 8.0) 1.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 6.0) 1.0)
|
||||
(sp-rnd-flt spt-z -16384.0 32768.0 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.05) 1.0)
|
||||
(sp-rnd-flt spt-scale-y (meters 0.125) (meters 0.025) 1.0)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 0.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.006666667) 1.0)
|
||||
(sp-flt spt-fade-a 0.8)
|
||||
(sp-int spt-timer 12000)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-flt spt-userdata 143360.0)
|
||||
(sp-func spt-func 'check-water-level-above-and-die)
|
||||
(sp-int-plain-rnd spt-next-time 30 29 1)
|
||||
(sp-launcher-by-id spt-next-launcher 2165)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2165)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a 0.0) (sp-end))
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2164) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 21
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
|
||||
(sp-flt spt-num 4.0)
|
||||
(sp-rnd-flt spt-x (meters -4.0) (meters 8.0) 1.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 6.0) 1.0)
|
||||
(sp-rnd-flt spt-z -16384.0 32768.0 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.15) 1.0)
|
||||
(sp-rnd-flt spt-scale-y (meters 0.2) (meters 0.1) 1.0)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 0.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.006666667) 1.0)
|
||||
(sp-flt spt-fade-a 0.8)
|
||||
(sp-int spt-timer 12000)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-flt spt-userdata 143360.0)
|
||||
(sp-func spt-func 'check-water-level-above-and-die)
|
||||
(sp-int-plain-rnd spt-next-time 30 29 1)
|
||||
(sp-launcher-by-id spt-next-launcher 2165)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate dark-crystal-idle (dark-crystal)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('touch 'attack)
|
||||
(if (= (-> arg0 type) target)
|
||||
(level-hint-spawn
|
||||
(game-text-id dark-crystal-run-away)
|
||||
"sksp0334"
|
||||
(the-as entity #f)
|
||||
*entity-pool*
|
||||
(game-task none)
|
||||
)
|
||||
)
|
||||
(close-specific-task! (game-task cave-dark-crystals) (task-status need-hint))
|
||||
(go dark-crystal-activate)
|
||||
)
|
||||
)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(while #t
|
||||
(logior! (-> self mask) (process-mask sleep-code))
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate dark-crystal-activate (dark-crystal)
|
||||
:code
|
||||
(behavior ()
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(dotimes (gp-0 (-> *dark-crystal-flash-delays* length))
|
||||
(sound-play-by-name (static-sound-name "warning") (new-sound-id) 1024 0 0 1 #t)
|
||||
(set! (-> self draw color-mult quad) (-> self lit-color-mult quad))
|
||||
(set! (-> self draw color-emissive quad) (-> self lit-color-emissive quad))
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30)
|
||||
(suspend)
|
||||
)
|
||||
(set! (-> self draw color-mult quad) (-> self unlit-color-mult quad))
|
||||
(set! (-> self draw color-emissive quad) (-> self unlit-color-emissive quad))
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(let ((s5-1 (-> *dark-crystal-flash-delays* gp-0)))
|
||||
(until (>= (- (-> *display* base-frame-counter) (-> self state-time)) s5-1)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
)
|
||||
(go dark-crystal-explode)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate dark-crystal-explode (dark-crystal)
|
||||
:code
|
||||
(behavior ()
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((gp-0 (new 'stack 'joint-exploder-tuning 0)))
|
||||
(when (-> self underwater?)
|
||||
(set! (-> gp-0 duration) (the-as uint 1200))
|
||||
(set! (-> gp-0 gravity) -20480.0)
|
||||
(set! (-> gp-0 rot-speed) 4.2)
|
||||
(set-vector! (-> gp-0 fountain-rand-transv-lo) -40960.0 20480.0 -40960.0 1.0)
|
||||
(set-vector! (-> gp-0 fountain-rand-transv-hi) 40960.0 49152.0 40960.0 1.0)
|
||||
)
|
||||
(let ((s5-0 (get-process *default-dead-pool* joint-exploder #x4000)))
|
||||
(when s5-0
|
||||
(let ((t9-3 (method-of-type joint-exploder activate)))
|
||||
(t9-3 (the-as joint-exploder s5-0) self 'joint-exploder (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
s5-0
|
||||
joint-exploder-init-by-other
|
||||
*dark-crystal-explode-sg*
|
||||
5
|
||||
gp-0
|
||||
*dark-crystal-exploder-params*
|
||||
)
|
||||
(-> s5-0 ppointer)
|
||||
)
|
||||
)
|
||||
)
|
||||
(activate! *camera-smush-control* 819.2 37 210 1.0 0.995)
|
||||
(let ((gp-1 (dummy-21 self)))
|
||||
(suspend)
|
||||
(ja-channel-set! 0)
|
||||
(ja-post)
|
||||
(logior! (-> self draw status) 2)
|
||||
(dummy-20 self)
|
||||
(if (-> self underwater?)
|
||||
(sound-play-by-name (static-sound-name "water-explosion") (new-sound-id) 1024 0 0 1 #t)
|
||||
(sound-play-by-name (static-sound-name "crystal-explode") (new-sound-id) 1024 0 0 1 #t)
|
||||
)
|
||||
(let ((s5-3 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when s5-3
|
||||
(let ((t9-15 (method-of-type part-tracker activate)))
|
||||
(t9-15 (the-as part-tracker s5-3) *entity-pool* 'part-tracker (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
s5-3
|
||||
part-tracker-init
|
||||
(if (-> self underwater?)
|
||||
(-> *part-group-id-table* 323)
|
||||
(-> *part-group-id-table* 322)
|
||||
)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> self root-override trans)
|
||||
)
|
||||
(-> s5-3 ppointer)
|
||||
)
|
||||
)
|
||||
(let ((s5-4 (-> *display* base-frame-counter)))
|
||||
(until (>= (- (-> *display* base-frame-counter) s5-4) 75)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(if gp-1
|
||||
(go dark-crystal-spawn-fuel-cell)
|
||||
)
|
||||
)
|
||||
(dummy-18 self)
|
||||
(until (not (-> self child))
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate dark-crystal-spawn-fuel-cell (dark-crystal)
|
||||
:event
|
||||
(the-as
|
||||
(function process int symbol event-message-block object :behavior dark-crystal)
|
||||
process-drawable-fuel-cell-handler
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(level-hint-spawn
|
||||
(game-text-id dark-crystal-last-one)
|
||||
"sksp0327"
|
||||
(the-as entity #f)
|
||||
*entity-pool*
|
||||
(game-task none)
|
||||
)
|
||||
(ja-channel-set! 0)
|
||||
(ja-post)
|
||||
(logior! (-> self draw status) 2)
|
||||
(if (not (task-complete? *game-info* (-> self entity extra perm task)))
|
||||
(birth-pickup-at-point
|
||||
(-> self root-override trans)
|
||||
(pickup-type fuel-cell)
|
||||
(the float (-> self entity extra perm task))
|
||||
#t
|
||||
self
|
||||
(the-as fact-info #f)
|
||||
)
|
||||
)
|
||||
(suspend)
|
||||
(until (not (-> self child))
|
||||
(suspend)
|
||||
)
|
||||
(aybabtu 2)
|
||||
(dummy-18 self)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod dummy-20 dark-crystal ((obj dark-crystal))
|
||||
(when *target*
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector))
|
||||
(s3-0 (new 'stack-no-clear 'vector))
|
||||
(s4-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set! (-> s5-0 quad) (-> obj root-override trans quad))
|
||||
(set! (-> s5-0 y) (+ 6144.0 (-> s5-0 y)))
|
||||
(set! (-> s3-0 quad) (-> (target-pos 0) quad))
|
||||
(set! (-> s3-0 y) (+ 6144.0 (-> s3-0 y)))
|
||||
(when (>= (-> obj explode-danger-radius) (vector-vector-distance s5-0 s3-0))
|
||||
(vector-! s4-0 s3-0 s5-0)
|
||||
(let ((t2-0 (new 'stack-no-clear 'collide-tri-result)))
|
||||
(if (< (dummy-10 *collide-cache* s5-0 s4-0 819.2 1 obj t2-0 1) 0.0)
|
||||
(send-event *target* 'attack #f (new 'static 'attack-info))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod dummy-21 dark-crystal ((obj dark-crystal))
|
||||
(let ((s5-0 #f))
|
||||
(when (nonzero? (-> obj crystal-num))
|
||||
(let* ((s4-0 (get-task-control (game-task cave-dark-crystals)))
|
||||
(s3-0 (logior (get-reminder s4-0 3) (ash 1 (-> obj crystal-num))))
|
||||
)
|
||||
(save-reminder s4-0 s3-0 3)
|
||||
(when (= s3-0 62)
|
||||
(set! s5-0 #t)
|
||||
(process-entity-status! obj (entity-perm-status complete) #t)
|
||||
)
|
||||
)
|
||||
)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod init-from-entity! dark-crystal ((obj dark-crystal) (arg0 entity-actor))
|
||||
(set-vector! (-> obj unlit-color-mult) 0.5 0.5 0.5 1.0)
|
||||
(set-vector! (-> obj unlit-color-emissive) 0.0 0.0 0.0 0.0)
|
||||
(set-vector! (-> obj lit-color-mult) 1.0 1.0 1.0 1.0)
|
||||
(set-vector! (-> obj lit-color-emissive) 1.0 1.0 1.0 0.0)
|
||||
(set! (-> obj mask) (logior (process-mask enemy) (-> obj mask)))
|
||||
(let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player))))
|
||||
(let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
|
||||
(set! (-> s3-0 prim-core collide-as) (the-as uint 512))
|
||||
(set! (-> s3-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s3-0 prim-core action) (the-as uint 1))
|
||||
(set! (-> s3-0 prim-core offense) 4)
|
||||
(set! (-> s3-0 transform-index) 0)
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 6963.2 0.0 15564.8)
|
||||
(set-root-prim! s4-0 s3-0)
|
||||
)
|
||||
(set! (-> 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 *dark-crystal-sg* '())
|
||||
(set! (-> obj mask) (logior (process-mask attackable) (-> obj mask)))
|
||||
(set! (-> obj draw color-mult quad) (-> obj unlit-color-mult quad))
|
||||
(set! (-> obj draw color-emissive quad) (-> obj unlit-color-emissive quad))
|
||||
(set! (-> obj underwater?) (= (res-lump-value arg0 'mode uint128) 1))
|
||||
(set! (-> obj explode-danger-radius) (res-lump-float arg0 'extra-radius :default 28672.0))
|
||||
(set! (-> obj crystal-num) (res-lump-value arg0 'extra-id int))
|
||||
(set-vector! (-> obj root-override scale) 2.0 2.0 2.0 1.0)
|
||||
(ja-channel-push! 1 0)
|
||||
(let ((s5-1 (-> obj skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
s5-1
|
||||
(the-as art-joint-anim (-> obj draw art-group data 2))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> s5-1 frame-num) 0.0)
|
||||
)
|
||||
(ja-post)
|
||||
(dummy-47 (-> obj root-override))
|
||||
(if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)))
|
||||
(go dark-crystal-spawn-fuel-cell)
|
||||
(go dark-crystal-idle)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -5,3 +5,13 @@
|
||||
;; name in dgo: maincave-obs
|
||||
;; dgos: L1, MAI, MAINCAVE
|
||||
|
||||
;; TODO - for gnawer
|
||||
(deftype maincavecam (pov-camera)
|
||||
((seq uint64 :offset-assert 224)
|
||||
)
|
||||
:method-count-assert 30
|
||||
:size-assert #xe8
|
||||
:heap-base #x80
|
||||
:flag-assert #x1e008000e8
|
||||
)
|
||||
(define-extern *maincavecam-sg* skeleton-group)
|
||||
|
||||
@@ -5,3 +5,656 @@
|
||||
;; name in dgo: mother-spider-egg
|
||||
;; dgos: L1, MAI, MAINCAVE
|
||||
|
||||
(define-extern *mother-spider-egg-unbroken-sg* skeleton-group)
|
||||
(define-extern *mother-spider-egg-broken-sg* skeleton-group)
|
||||
|
||||
(declare-type mother-spider-egg process-drawable)
|
||||
|
||||
(define-extern mother-spider-egg-falling (state mother-spider-egg)) ;; unknown type
|
||||
(define-extern mother-spider-egg-die-exit (state mother-spider-egg)) ;; unknown type
|
||||
(define-extern mother-spider-egg-hatch (state mother-spider-egg)) ;; unknown type
|
||||
(define-extern mother-spider-egg-die (state mother-spider-egg)) ;; unknown type
|
||||
(define-extern mother-spider-egg-on-ground (state mother-spider-egg)) ;; unknown type
|
||||
(define-extern mother-spider-egg-die-while-falling (state mother-spider-egg)) ;; unknown type
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype mother-spider-egg (process-drawable)
|
||||
((parent-override (pointer mother-spider) :offset 12)
|
||||
(root-override collide-shape-moving :offset 112)
|
||||
(anim-speed float :offset-assert 176)
|
||||
(part2 sparticle-launch-control :offset-assert 180)
|
||||
(falling-start-time uint64 :offset-assert 184)
|
||||
(fall-dest vector :inline :offset-assert 192)
|
||||
(fall-dest-normal vector :inline :offset-assert 208)
|
||||
(broken-look lod-set :inline :offset-assert 224)
|
||||
(traj trajectory :inline :offset-assert 272)
|
||||
(shadow-pos vector :inline :offset-assert 320)
|
||||
)
|
||||
:heap-base #xe0
|
||||
:method-count-assert 22
|
||||
:size-assert #x150
|
||||
:flag-assert #x1600e00150
|
||||
(:methods
|
||||
(dummy-20 (_type_) none 20)
|
||||
(draw-egg-shadow (_type_ vector symbol) symbol 21)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defskelgroup *mother-spider-egg-unbroken-sg* spider-egg
|
||||
0
|
||||
-1
|
||||
((1 (meters 20)) (2 (meters 40)) (3 (meters 999999)))
|
||||
:bounds (static-spherem 0 1 0 2)
|
||||
:longest-edge (meters 0)
|
||||
:shadow 4
|
||||
)
|
||||
|
||||
(defskelgroup *mother-spider-egg-broken-sg* spider-egg
|
||||
5
|
||||
-1
|
||||
((6 (meters 20)) (7 (meters 40)) (8 (meters 999999)))
|
||||
:bounds (static-spherem 0 1 0 2)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
(set! (-> *part-group-id-table* 324) (new 'static 'sparticle-launch-group
|
||||
:length 2
|
||||
:duration #x5
|
||||
:linger-duration #x384
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-spider-egg-hatches"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 2
|
||||
(sp-item 2018 :fade-after (meters 50.0) :falloff-to (meters 50.0))
|
||||
(sp-item 2071 :fade-after (meters 50.0) :falloff-to (meters 50.0))
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2071) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 16
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 16.0)
|
||||
(sp-flt spt-y (meters 0.5))
|
||||
(sp-flt spt-scale-x (meters 0.1))
|
||||
(sp-int spt-rot-x 4)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-flt spt-scale-y (meters 0.1))
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 64.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-rnd-flt spt-a 32.0 96.0 1.0)
|
||||
(sp-int spt-timer 225)
|
||||
(sp-cpuinfo-flags bit2 bit3)
|
||||
(sp-int spt-next-time 75)
|
||||
(sp-launcher-by-id spt-next-launcher 2072)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2072)
|
||||
(new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5
|
||||
(sp-flt spt-scale-x (meters 0.1))
|
||||
(sp-flt spt-scale-y (meters 2.0))
|
||||
(sp-flt spt-scalevel-y (meters 0.2))
|
||||
(sp-flt spt-fade-a -1.4222223)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2018) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 24
|
||||
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
|
||||
(sp-flt spt-num 8.0)
|
||||
(sp-rnd-flt spt-y (meters 0.5) (meters 0.5) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.0) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 32.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 16.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 32.0 1.0)
|
||||
(sp-flt spt-a 0.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.0033333334) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.006666667))
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 1.2) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-a 1.4222223)
|
||||
(sp-flt spt-accel-y 0.27306667)
|
||||
(sp-int spt-timer 375)
|
||||
(sp-cpuinfo-flags bit2 bit12 bit14)
|
||||
(sp-int spt-next-time 45)
|
||||
(sp-launcher-by-id spt-next-launcher 2073)
|
||||
(sp-flt spt-conerot-x (degrees 90.0))
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.5) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2073)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.21333334) (sp-end))
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-group-id-table* 325) (new 'static 'sparticle-launch-group
|
||||
:length 1
|
||||
:duration #x5
|
||||
:linger-duration #x177
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-spider-egg-explodes"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 1
|
||||
(sp-item 2074 :fade-after (meters 50.0) :falloff-to (meters 50.0))
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *part-id-table* 2074) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 22
|
||||
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
|
||||
(sp-flt spt-num 8.0)
|
||||
(sp-rnd-flt spt-y (meters 0.5) (meters 0.5) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 2.0) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 32.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 16.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.0033333334) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.006666667))
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 1.2) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-a -1.4222223)
|
||||
(sp-flt spt-accel-y 0.27306667)
|
||||
(sp-int spt-timer 375)
|
||||
(sp-cpuinfo-flags bit2 bit12 bit14)
|
||||
(sp-flt spt-conerot-x (degrees 90.0))
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.5) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod draw-egg-shadow mother-spider-egg ((obj mother-spider-egg) (arg0 vector) (arg1 symbol))
|
||||
(cond
|
||||
((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8))
|
||||
(let ((s5-0 (new 'stack-no-clear 'collide-tri-result))
|
||||
(a1-1 (new 'stack-no-clear 'vector))
|
||||
(a2-1 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set! (-> a1-1 quad) (-> obj root-override trans quad))
|
||||
(set! (-> a1-1 y) (+ 1228.8 (-> a1-1 y)))
|
||||
(set-vector! a2-1 0.0 -61440.0 0.0 1.0)
|
||||
(cond
|
||||
((>= (dummy-10 *collide-cache* a1-1 a2-1 7372.8 1 obj s5-0 1) 0.0)
|
||||
(let ((v1-11 (-> obj draw shadow-ctrl)))
|
||||
(set! (-> v1-11 settings flags) (logand -33 (-> v1-11 settings flags)))
|
||||
)
|
||||
0
|
||||
(let ((v1-14 (-> obj draw shadow-ctrl)))
|
||||
(set! (-> v1-14 settings bot-plane w) (- (+ -4096.0 (-> s5-0 intersect y))))
|
||||
)
|
||||
0
|
||||
(let ((v1-17 (-> obj draw shadow-ctrl)))
|
||||
(set! (-> v1-17 settings top-plane w) (- (+ 6144.0 (-> s5-0 intersect y))))
|
||||
)
|
||||
0
|
||||
(return #t)
|
||||
)
|
||||
(else
|
||||
(let ((v1-22 (-> obj draw shadow-ctrl)))
|
||||
(logior! (-> v1-22 settings flags) 32)
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let ((v1-25 (-> obj draw shadow-ctrl)))
|
||||
(logior! (-> v1-25 settings flags) 32)
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
|
||||
(defstate mother-spider-egg-falling (mother-spider-egg)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('touch 'attack)
|
||||
(go mother-spider-egg-die-while-falling)
|
||||
)
|
||||
)
|
||||
)
|
||||
:enter
|
||||
(behavior () (set! (-> self falling-start-time) (the-as uint (-> *display* base-frame-counter))) (none))
|
||||
:trans
|
||||
(behavior ()
|
||||
(let ((f30-0 (fmin
|
||||
(the float (- (-> *display* base-frame-counter) (the-as int (-> self falling-start-time))))
|
||||
(-> self traj time)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((f28-0 (/ f30-0 (-> self traj time))))
|
||||
(eval-position! (-> self traj) f30-0 (-> self root-override trans))
|
||||
(let ((f0-3 (lerp 0.3 0.4 f28-0)))
|
||||
(set-vector! (-> self root-override scale) f0-3 f0-3 f0-3 1.0)
|
||||
)
|
||||
)
|
||||
(when (= f30-0 (-> self traj time))
|
||||
(sound-play-by-name (static-sound-name "eggs-lands") (new-sound-id) 1024 0 0 1 #t)
|
||||
(go mother-spider-egg-on-ground)
|
||||
)
|
||||
)
|
||||
(draw-egg-shadow self (-> self shadow-pos) #t)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(ja-channel-push! 1 0)
|
||||
(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 9)))
|
||||
(set! (-> a0-1 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 9)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-1 param 1) (-> self anim-speed))
|
||||
(set! (-> a0-1 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-1 (the-as art-joint-anim (-> self draw art-group data 9)) 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) (-> self anim-speed))
|
||||
(joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior mother-spider-egg) transform-post)
|
||||
)
|
||||
|
||||
(defstate mother-spider-egg-on-ground (mother-spider-egg)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(let ((v1-0 arg2))
|
||||
(the-as
|
||||
object
|
||||
(cond
|
||||
((= v1-0 'touch)
|
||||
(dummy-55 (-> self root-override) arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 0.7 6144.0 16384.0)
|
||||
)
|
||||
((= v1-0 'attack)
|
||||
(go mother-spider-egg-die)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:enter
|
||||
(behavior ()
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(if (not (draw-egg-shadow self (-> self shadow-pos) #t))
|
||||
(set! (-> self shadow-pos quad) (-> self fall-dest quad))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 600)
|
||||
(go mother-spider-egg-hatch)
|
||||
)
|
||||
(draw-egg-shadow self (-> self shadow-pos) #f)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(ja-channel-push! 1 30)
|
||||
(let ((gp-0 (new 'stack-no-clear 'quaternion))
|
||||
(s5-0 (new 'stack-no-clear 'quaternion))
|
||||
)
|
||||
(let ((s3-0 (new 'stack-no-clear 'vector))
|
||||
(s4-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(quaternion-copy! gp-0 (-> self root-override quat))
|
||||
(set-vector! s4-0 0.0 1.0 0.0 1.0)
|
||||
(set! (-> s3-0 quad) (-> self fall-dest-normal quad))
|
||||
(vector-normalize! s3-0 1.0)
|
||||
(quaternion-from-two-vectors! s5-0 s4-0 s3-0)
|
||||
)
|
||||
(quaternion*! s5-0 s5-0 gp-0)
|
||||
(let ((a0-7 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-7 frame-group) (the-as art-joint-anim (-> self draw art-group data 11)))
|
||||
(set! (-> a0-7 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 11)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-7 param 1) 1.3)
|
||||
(set! (-> a0-7 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-7 (the-as art-joint-anim (-> self draw art-group data 11)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(let* ((f0-8 (ja-frame-num 0))
|
||||
(v1-19 (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
)
|
||||
(f0-9 (/ f0-8 (the float (+ (-> v1-19 data 0 length) -1))))
|
||||
)
|
||||
(quaternion-slerp! (-> self root-override quat) gp-0 s5-0 f0-9)
|
||||
)
|
||||
(suspend)
|
||||
(let ((a0-10 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-10 param 1) 1.3)
|
||||
(joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(while #t
|
||||
(let ((a0-12 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-12 frame-group) (the-as art-joint-anim (-> self draw art-group data 9)))
|
||||
(set! (-> a0-12 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 9)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-12 param 1) (-> self anim-speed))
|
||||
(set! (-> a0-12 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-12 (the-as art-joint-anim (-> self draw art-group data 9)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-13 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-13 param 0) (the float (+ (-> a0-13 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-13 param 1) (-> self anim-speed))
|
||||
(joint-control-channel-group-eval! a0-13 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior mother-spider-egg) transform-post)
|
||||
)
|
||||
|
||||
(defstate mother-spider-egg-hatch (mother-spider-egg)
|
||||
:trans
|
||||
(behavior ()
|
||||
(when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) 8))
|
||||
(let ((a1-0 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> a1-0 quad) (-> self fall-dest quad))
|
||||
(compute-and-draw-shadow
|
||||
(-> self root-override trans)
|
||||
a1-0
|
||||
(-> self fall-dest-normal)
|
||||
(the-as vector 7372.8)
|
||||
81920.0
|
||||
(the-as float 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(send-event (ppointer->process (-> self parent-override)) 'trigger)
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-0
|
||||
(let ((t9-3 (method-of-type part-tracker activate)))
|
||||
(t9-3 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
gp-0
|
||||
part-tracker-init
|
||||
(-> *part-group-id-table* 324)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> self root-override trans)
|
||||
)
|
||||
(-> gp-0 ppointer)
|
||||
)
|
||||
)
|
||||
(lods-assign! (-> self draw) (-> self broken-look))
|
||||
(ja-channel-push! 1 60)
|
||||
(let ((a0-7 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-7 frame-group) (the-as art-joint-anim (-> self draw art-group data 10)))
|
||||
(set! (-> a0-7 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 10)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-7 param 1) 1.0)
|
||||
(set! (-> a0-7 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-7 (the-as art-joint-anim (-> self draw art-group data 10)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-8 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-8 param 0) (the float (+ (-> a0-8 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-8 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-8 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(let ((v1-37 (-> self draw shadow-ctrl)))
|
||||
(logior! (-> v1-37 settings flags) 32)
|
||||
)
|
||||
0
|
||||
(go mother-spider-egg-die-exit)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior mother-spider-egg) transform-post)
|
||||
)
|
||||
|
||||
(defstate mother-spider-egg-die (mother-spider-egg)
|
||||
:code
|
||||
(behavior ()
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(let ((v1-3 (-> self draw shadow-ctrl)))
|
||||
(logior! (-> v1-3 settings flags) 32)
|
||||
)
|
||||
0
|
||||
(lods-assign! (-> self draw) (-> self broken-look))
|
||||
(ja-channel-push! 1 30)
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-0
|
||||
(let ((t9-4 (method-of-type part-tracker activate)))
|
||||
(t9-4 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
gp-0
|
||||
part-tracker-init
|
||||
(-> *part-group-id-table* 325)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> self root-override trans)
|
||||
)
|
||||
(-> gp-0 ppointer)
|
||||
)
|
||||
)
|
||||
(let ((a0-9 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-9 frame-group) (the-as art-joint-anim (-> self draw art-group data 12)))
|
||||
(set! (-> a0-9 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 12)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-9 param 1) 1.0)
|
||||
(set! (-> a0-9 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-9 (the-as art-joint-anim (-> self draw art-group data 12)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-10 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-10 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(go mother-spider-egg-die-exit)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior mother-spider-egg) ja-post)
|
||||
)
|
||||
|
||||
(defstate mother-spider-egg-die-while-falling (mother-spider-egg)
|
||||
:trans
|
||||
(behavior ()
|
||||
(let ((f0-2 (fmin
|
||||
(the float (- (-> *display* base-frame-counter) (the-as int (-> self falling-start-time))))
|
||||
(-> self traj time)
|
||||
)
|
||||
)
|
||||
)
|
||||
(eval-position! (-> self traj) f0-2 (-> self root-override trans))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((v1-5 (-> self draw shadow-ctrl)))
|
||||
(logior! (-> v1-5 settings flags) 32)
|
||||
)
|
||||
0
|
||||
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-0
|
||||
(let ((t9-2 (method-of-type part-tracker activate)))
|
||||
(t9-2 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
gp-0
|
||||
part-tracker-init
|
||||
(-> *part-group-id-table* 325)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> self root-override trans)
|
||||
)
|
||||
(-> gp-0 ppointer)
|
||||
)
|
||||
)
|
||||
(lods-assign! (-> self draw) (-> self broken-look))
|
||||
(ja-channel-push! 1 30)
|
||||
(let ((a0-9 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-9 frame-group) (the-as art-joint-anim (-> self draw art-group data 12)))
|
||||
(set! (-> a0-9 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 12)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-9 param 1) 1.0)
|
||||
(set! (-> a0-9 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-9 (the-as art-joint-anim (-> self draw art-group data 12)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-10 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-10 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(go mother-spider-egg-die-exit)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior mother-spider-egg) ja-post)
|
||||
)
|
||||
|
||||
(defstate mother-spider-egg-die-exit (mother-spider-egg)
|
||||
:code
|
||||
(behavior ()
|
||||
(send-event (ppointer->process (-> self parent-override)) 'untrigger)
|
||||
(logior! (-> self draw status) 2)
|
||||
(let ((v1-8 (-> self draw shadow-ctrl)))
|
||||
(logior! (-> v1-8 settings flags) 32)
|
||||
)
|
||||
0
|
||||
(set! (-> self root-override nav-flags) (logand -2 (-> self root-override nav-flags)))
|
||||
(set! (-> self root-override nav-flags) (logand -3 (-> self root-override nav-flags)))
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(until (not (-> self child))
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defbehavior mother-spider-egg-init-by-other mother-spider-egg ((arg0 entity) (arg1 vector) (arg2 vector) (arg3 vector))
|
||||
(set! (-> self entity) arg0)
|
||||
(set! (-> self anim-speed) (rand-vu-float-range 0.8 1.2))
|
||||
(set! (-> self falling-start-time) (the-as uint (-> *display* base-frame-counter)))
|
||||
(set! (-> self fall-dest quad) (-> arg2 quad))
|
||||
(set! (-> self fall-dest-normal quad) (-> arg3 quad))
|
||||
(let ((s4-1 (new 'process 'collide-shape-moving self (collide-list-enum usually-hit-by-player))))
|
||||
(set! (-> s4-1 dynam) (copy *standard-dynamics* 'process))
|
||||
(set! (-> s4-1 reaction) default-collision-reaction)
|
||||
(set! (-> s4-1 no-reaction)
|
||||
(the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)
|
||||
)
|
||||
(let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-1 (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 1))
|
||||
(set! (-> s3-0 prim-core offense) 1)
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 2048.0 0.0 3686.4)
|
||||
(set-root-prim! s4-1 s3-0)
|
||||
)
|
||||
(set! (-> s4-1 nav-radius) 4096.0)
|
||||
(backup-collide-with-as s4-1)
|
||||
(set! (-> self root-override) s4-1)
|
||||
)
|
||||
(set! (-> self root-override trans quad) (-> arg1 quad))
|
||||
(set-vector! (-> self root-override scale) 0.3 0.3 0.3 1.0)
|
||||
(quaternion-copy! (-> self root-override quat) (-> self parent-override 0 root-override quat))
|
||||
(logior! (-> self mask) (process-mask actor-pause))
|
||||
(set! (-> self mask) (logior (process-mask enemy) (-> self mask)))
|
||||
(set! (-> self mask) (logior (process-mask attackable) (-> self mask)))
|
||||
(initialize-skeleton self *mother-spider-egg-unbroken-sg* '())
|
||||
(dummy-9 (-> self broken-look) *mother-spider-egg-broken-sg* (-> self draw art-group) (-> self entity))
|
||||
(set! (-> self draw shadow-ctrl) (new 'process 'shadow-control 0.0 0.0 614400.0 (the-as float 60) 245760.0))
|
||||
(set! (-> self nav) (new 'process 'nav-control (-> self root-override) 16 40960.0))
|
||||
(logior! (-> self nav flags) (nav-control-flags display-marks bit3 bit5 bit6 bit7))
|
||||
(set! (-> self root-override nav-flags) (logand -2 (-> self root-override nav-flags)))
|
||||
(logior! (-> self root-override nav-flags) 2)
|
||||
(set! (-> self nav extra-nav-sphere quad) (-> self fall-dest quad))
|
||||
(set! (-> self nav extra-nav-sphere w) 4096.0)
|
||||
(setup-from-to-height! (-> self traj) (-> self root-override trans) arg2 4096.0 -4.551111)
|
||||
(create-connection!
|
||||
*cavecrystal-light-control*
|
||||
self
|
||||
(-> self entity)
|
||||
(the-as (function object object object object object) cavecrystal-light-control-default-callback)
|
||||
-1
|
||||
4096.0
|
||||
)
|
||||
(go mother-spider-egg-falling)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
(trans-u float :offset-assert 4)
|
||||
(swing-arc-u float :offset-assert 8)
|
||||
)
|
||||
:pack-me
|
||||
:method-count-assert 9
|
||||
:size-assert #xc
|
||||
:flag-assert #x90000000c
|
||||
@@ -63,7 +64,8 @@
|
||||
(set! (-> mother-spider-history-array heap-base) (the-as uint 16))
|
||||
|
||||
(deftype mother-spider (process-drawable)
|
||||
((mode uint64 :offset-assert 176)
|
||||
((root-override collide-shape :offset 112)
|
||||
(mode uint64 :offset-assert 176)
|
||||
(damage int32 :offset-assert 184)
|
||||
(baby-count int32 :offset-assert 188)
|
||||
(max-baby-count int32 :offset-assert 192)
|
||||
@@ -111,18 +113,18 @@
|
||||
:size-assert #x1f0
|
||||
:flag-assert #x20018001f0
|
||||
(:methods
|
||||
(dummy-20 () none 20)
|
||||
(dummy-21 () none 21)
|
||||
(dummy-22 () none 22)
|
||||
(dummy-23 () none 23)
|
||||
(dummy-24 () none 24)
|
||||
(dummy-25 () none 25)
|
||||
(dummy-26 () none 26)
|
||||
(dummy-27 () none 27)
|
||||
(dummy-28 () none 28)
|
||||
(dummy-29 () none 29)
|
||||
(dummy-30 () none 30)
|
||||
(dummy-31 () none 31)
|
||||
(TODO-RENAME-20 (_type_ vector vector) symbol 20)
|
||||
(TODO-RENAME-21 (_type_ vector float symbol) symbol 21)
|
||||
(dummy-22 (_type_ matrix vector) float 22)
|
||||
(TODO-RENAME-23 (_type_) none 23)
|
||||
(TODO-RENAME-24 (_type_) number 24)
|
||||
(letgo-player? (_type_) symbol 25)
|
||||
(grab-player? (_type_) symbol 26)
|
||||
(STUB-27 (_type_) none 27)
|
||||
(STUB-28 (_type_) none 28)
|
||||
(TODO-RENAME-29 (_type_ symbol symbol) none 29)
|
||||
(spawn-child (_type_ vector vector symbol) int 30)
|
||||
(is-player-stuck? (_type_) symbol 31)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+1018
-1494
File diff suppressed because it is too large
Load Diff
@@ -5,3 +5,528 @@
|
||||
;; name in dgo: spider-egg
|
||||
;; dgos: L1, ROB
|
||||
|
||||
(define-extern *spider-egg-unbroken-sg* skeleton-group)
|
||||
(define-extern *spider-egg-broken-sg* skeleton-group)
|
||||
|
||||
(declare-type spider-egg process-drawable)
|
||||
|
||||
(define-extern spider-egg-idle (state symbol spider-egg)) ;; unknown type
|
||||
(define-extern spider-egg-hatch (state spider-egg)) ;; unknown type
|
||||
(define-extern spider-egg-die (state spider-egg)) ;; unknown type
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype spider-egg (process-drawable)
|
||||
((root-override collide-shape-moving :offset 112)
|
||||
(notify-actor entity-actor :offset-assert 176)
|
||||
(broken-look lod-set :inline :offset-assert 180)
|
||||
)
|
||||
:heap-base #x70
|
||||
:method-count-assert 20
|
||||
:size-assert #xd5
|
||||
:flag-assert #x14007000d5
|
||||
)
|
||||
|
||||
|
||||
(defskelgroup *spider-egg-unbroken-sg* spider-egg
|
||||
0
|
||||
-1
|
||||
((1 (meters 20)) (2 (meters 40)) (3 (meters 999999)))
|
||||
:bounds (static-spherem 0 1 0 2)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
(defskelgroup *spider-egg-broken-sg* spider-egg
|
||||
5
|
||||
-1
|
||||
((6 (meters 20)) (7 (meters 40)) (8 (meters 999999)))
|
||||
:bounds (static-spherem 0 1 0 2)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
(defstate spider-egg-idle (spider-egg)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(local-vars (v0-0 none))
|
||||
(let ((v1-0 arg2))
|
||||
(the-as object (cond
|
||||
((= v1-0 'touch)
|
||||
(dummy-55
|
||||
(-> self root-override)
|
||||
arg0
|
||||
(the-as touching-shapes-entry (-> arg3 param 0))
|
||||
0.7
|
||||
6144.0
|
||||
16384.0
|
||||
)
|
||||
)
|
||||
((= v1-0 'can-spawn?)
|
||||
(return (the-as object #t))
|
||||
v0-0
|
||||
)
|
||||
((= v1-0 'notify-spawned)
|
||||
(go spider-egg-hatch)
|
||||
)
|
||||
((= v1-0 'attack)
|
||||
(go spider-egg-die)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:enter
|
||||
(behavior ((arg0 symbol))
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ((arg0 symbol))
|
||||
(let ((f30-0 (rand-vu-float-range 0.8 1.2)))
|
||||
(cond
|
||||
(arg0
|
||||
(ja-channel-set! 1)
|
||||
(let ((gp-1 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> gp-1 frame-group)
|
||||
(the-as art-joint-anim (-> self draw art-group data 9))
|
||||
)
|
||||
(set!
|
||||
(-> gp-1 param 0)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 9))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> gp-1 param 1) f30-0)
|
||||
(set!
|
||||
(-> gp-1 frame-num)
|
||||
(rand-vu-float-range
|
||||
0.0
|
||||
(the float (+ (-> (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(joint-control-channel-group!
|
||||
gp-1
|
||||
(the-as art-joint-anim (-> self draw art-group data 9))
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-5 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-5 param 0)
|
||||
(the float (+ (-> a0-5 frame-group data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-5 param 1) f30-0)
|
||||
(joint-control-channel-group-eval!
|
||||
a0-5
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(ja-channel-push! 1 60)
|
||||
)
|
||||
)
|
||||
(while #t
|
||||
(let ((gp-2 (rand-vu-int-range 2 6)))
|
||||
(dotimes (s5-0 gp-2)
|
||||
(let ((a0-9 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-9 frame-group)
|
||||
(the-as art-joint-anim (-> self draw art-group data 9))
|
||||
)
|
||||
(set!
|
||||
(-> a0-9 param 0)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 9))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-9 param 1) f30-0)
|
||||
(set! (-> a0-9 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-9
|
||||
(the-as art-joint-anim (-> self draw art-group data 9))
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-10 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-10 param 0)
|
||||
(the float (+ (-> a0-10 frame-group data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-10 param 1) f30-0)
|
||||
(joint-control-channel-group-eval!
|
||||
a0-10
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(ja-channel-push! 1 30)
|
||||
(let ((a0-13 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-13 frame-group)
|
||||
(the-as art-joint-anim (-> self draw art-group data 13))
|
||||
)
|
||||
(set!
|
||||
(-> a0-13 param 0)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 13))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-13 param 1) 1.0)
|
||||
(set! (-> a0-13 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-13
|
||||
(the-as art-joint-anim (-> self draw art-group data 13))
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-14 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-14 param 0)
|
||||
(the float (+ (-> a0-14 frame-group data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-14 param 1) 1.0)
|
||||
(joint-control-channel-group-eval!
|
||||
a0-14
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
(ja-channel-push! 1 30)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior spider-egg) ja-post)
|
||||
)
|
||||
|
||||
(defstate spider-egg-hatch (spider-egg)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(local-vars (v0-0 symbol))
|
||||
(case arg2
|
||||
(('can-spawn?)
|
||||
(return (the-as object #f))
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(dummy-18 self)
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-0
|
||||
(let ((t9-3 (method-of-type part-tracker activate)))
|
||||
(t9-3
|
||||
(the-as part-tracker gp-0)
|
||||
*entity-pool*
|
||||
'part-tracker
|
||||
(the-as pointer #x70004000)
|
||||
)
|
||||
)
|
||||
(run-now-in-process
|
||||
gp-0
|
||||
part-tracker-init
|
||||
(-> *part-group-id-table* 324)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> self root-override trans)
|
||||
)
|
||||
(-> gp-0 ppointer)
|
||||
)
|
||||
)
|
||||
(lods-assign! (-> self draw) (-> self broken-look))
|
||||
(ja-channel-push! 1 60)
|
||||
(let ((a0-8 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-8 frame-group)
|
||||
(the-as art-joint-anim (-> self draw art-group data 10))
|
||||
)
|
||||
(set!
|
||||
(-> a0-8 param 0)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 10))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-8 param 1) 1.0)
|
||||
(set! (-> a0-8 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-8
|
||||
(the-as art-joint-anim (-> self draw art-group data 10))
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-9 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-9 param 0)
|
||||
(the float (+ (-> a0-9 frame-group data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-9 param 1) 1.0)
|
||||
(joint-control-channel-group-eval!
|
||||
a0-9
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
(logior! (-> self draw status) 2)
|
||||
(until (not (-> self child))
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior spider-egg) ja-post)
|
||||
)
|
||||
|
||||
(defstate spider-egg-die (spider-egg)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(local-vars (v0-0 symbol))
|
||||
(case arg2
|
||||
(('can-spawn?)
|
||||
(return (the-as object #f))
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(dummy-18 self)
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(when (-> self notify-actor)
|
||||
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-0 from) self)
|
||||
(set! (-> a1-0 num-params) 1)
|
||||
(set! (-> a1-0 message) 'notify)
|
||||
(set! (-> a1-0 param 0) (the-as uint 'die))
|
||||
(let ((t9-1 send-event-function)
|
||||
(v1-9 (-> self notify-actor))
|
||||
)
|
||||
(t9-1 (if v1-9
|
||||
(-> v1-9 extra process)
|
||||
)
|
||||
a1-0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-0
|
||||
(let ((t9-3 (method-of-type part-tracker activate)))
|
||||
(t9-3
|
||||
(the-as part-tracker gp-0)
|
||||
*entity-pool*
|
||||
'part-tracker
|
||||
(the-as pointer #x70004000)
|
||||
)
|
||||
)
|
||||
(run-now-in-process
|
||||
gp-0
|
||||
part-tracker-init
|
||||
(-> *part-group-id-table* 325)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> self root-override trans)
|
||||
)
|
||||
(-> gp-0 ppointer)
|
||||
)
|
||||
)
|
||||
(lods-assign! (-> self draw) (-> self broken-look))
|
||||
(ja-channel-push! 1 30)
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((a0-9 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-9 frame-group)
|
||||
(the-as art-joint-anim (-> self draw art-group data 12))
|
||||
)
|
||||
(set!
|
||||
(-> a0-9 param 0)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 12))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-9 param 1) 1.0)
|
||||
(set! (-> a0-9 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-9
|
||||
(the-as art-joint-anim (-> self draw art-group data 12))
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-10 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-10 param 0)
|
||||
(the float (+ (-> a0-10 frame-group data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-10 param 1) 1.0)
|
||||
(joint-control-channel-group-eval!
|
||||
a0-10
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
(logior! (-> self draw status) 2)
|
||||
(until (not (-> self child))
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior spider-egg) ja-post)
|
||||
)
|
||||
|
||||
(defmethod init-from-entity! spider-egg ((obj spider-egg) (arg0 entity-actor))
|
||||
(set! (-> obj mask) (logior (process-mask enemy) (-> obj mask)))
|
||||
(set! (-> obj mask) (logior (process-mask attackable) (-> obj mask)))
|
||||
(let
|
||||
((s4-0
|
||||
(new
|
||||
'process
|
||||
'collide-shape-moving
|
||||
obj
|
||||
(collide-list-enum usually-hit-by-player)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
|
||||
(set! (-> s4-0 reaction) default-collision-reaction)
|
||||
(set!
|
||||
(-> s4-0 no-reaction)
|
||||
(the-as
|
||||
(function collide-shape-moving collide-shape-intersect vector vector none)
|
||||
nothing
|
||||
)
|
||||
)
|
||||
(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 1))
|
||||
(set! (-> s3-0 prim-core offense) 1)
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 2048.0 0.0 3686.4)
|
||||
(set-root-prim! s4-0 s3-0)
|
||||
)
|
||||
(set! (-> s4-0 nav-radius) 4096.0)
|
||||
(backup-collide-with-as s4-0)
|
||||
(set! (-> obj root-override) s4-0)
|
||||
)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(initialize-skeleton obj *spider-egg-unbroken-sg* '())
|
||||
(dummy-9
|
||||
(-> obj broken-look)
|
||||
*spider-egg-broken-sg*
|
||||
(-> obj draw art-group)
|
||||
(-> obj entity)
|
||||
)
|
||||
(set-vector! (-> obj root-override scale) 0.4 0.4 0.4 1.0)
|
||||
(if (not (dummy-60 (-> obj root-override) 12288.0 40960.0 #t (the-as uint 1)))
|
||||
(go process-drawable-art-error "no ground")
|
||||
)
|
||||
(set!
|
||||
(-> obj root-override trans y)
|
||||
(+ -409.6 (-> obj root-override trans y))
|
||||
)
|
||||
(let ((s4-1 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> s4-1 quad) (-> obj root-override surface-normal quad))
|
||||
(+! (-> s4-1 x) (rand-vu-float-range -0.2 0.2))
|
||||
(+! (-> s4-1 z) (rand-vu-float-range -0.2 0.2))
|
||||
(vector-normalize! s4-1 1.0)
|
||||
(quaternion-axis-angle!
|
||||
(-> obj root-override quat)
|
||||
(-> s4-1 x)
|
||||
(-> s4-1 y)
|
||||
(-> s4-1 z)
|
||||
(rand-vu-float-range 0.0 65536.0)
|
||||
)
|
||||
)
|
||||
(dummy-47 (-> obj root-override))
|
||||
(nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f))
|
||||
(if (> (entity-actor-count arg0 'alt-actor) 0)
|
||||
(set! (-> obj notify-actor) (entity-actor-lookup arg0 'alt-actor 0))
|
||||
(set! (-> obj notify-actor) #f)
|
||||
)
|
||||
(go spider-egg-idle #t)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -5,3 +5,675 @@
|
||||
;; name in dgo: snow-bumper
|
||||
;; dgos: L1, SNO
|
||||
|
||||
(define-extern *snow-bumper-sg* skeleton-group)
|
||||
|
||||
(declare-type snow-bumper process-drawable)
|
||||
|
||||
(define-extern snow-bumper-spawn-fuel-cell (state snow-bumper)) ;; unknown type
|
||||
(define-extern snow-bumper-inactive-idle (state snow-bumper)) ;; unknown type
|
||||
(define-extern snow-bumper-active-far-idle (state snow-bumper)) ;; unknown type
|
||||
(define-extern snow-bumper-deactivate (state snow-bumper)) ;; unknown type
|
||||
(define-extern snow-bumper-active-close-idle (state snow-bumper)) ;; unknown type
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype snow-bumper (process-drawable)
|
||||
((bumper-id int32 :offset-assert 176)
|
||||
(base-shove-ry float :offset-assert 180)
|
||||
(max-shove-diff-ry float :offset-assert 184)
|
||||
(part2 sparticle-launch-control :offset-assert 188)
|
||||
(last-shoved-player-time uint64 :offset-assert 192)
|
||||
)
|
||||
:heap-base #x60
|
||||
:method-count-assert 22
|
||||
:size-assert #xc8
|
||||
:flag-assert #x16006000c8
|
||||
(:methods
|
||||
(dummy-20 (_type_) none 20)
|
||||
(shove-player (_type_ process-drawable) none 21)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defskelgroup *snow-bumper-sg* snow-bumper
|
||||
0
|
||||
-1
|
||||
((1 (meters 20)) (2 (meters 999999)))
|
||||
:bounds (static-spherem 0 2.2 0 3.4)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-group-id-table* 519)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 1
|
||||
:duration #xbb8
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-snow-bumper-idle"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 1
|
||||
(sp-item 1893 :fade-after (meters 90.0) :falloff-to (meters 90.0) :period 25 :length 10)
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 1893)
|
||||
(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 15.0)
|
||||
(sp-flt spt-y (meters 1.5))
|
||||
(sp-flt spt-z 0.0)
|
||||
(sp-flt spt-scale-x (meters 1.5))
|
||||
(sp-flt spt-scale-y (meters 6.0))
|
||||
(sp-flt spt-r 0.0)
|
||||
(sp-flt spt-g 64.0)
|
||||
(sp-rnd-flt spt-b 64.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 64.0 1.0)
|
||||
(sp-flt spt-vel-y (meters 0.013333334))
|
||||
(sp-flt spt-scalevel-x (meters 0.0038461538))
|
||||
(sp-flt spt-scalevel-y (meters -0.03076923))
|
||||
(sp-flt spt-fade-a 0.0)
|
||||
(sp-int spt-timer 25)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-flt spt-conerot-x (degrees 90.0))
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-flt spt-conerot-radius (meters 5.0))
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-group-id-table* 520)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 1
|
||||
:duration #xbb8
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-snow-bumper-shove"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 1 (sp-item 1895))
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 1895)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 19
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 16.0)
|
||||
(sp-flt spt-x (meters 5.5))
|
||||
(sp-flt spt-y (meters 1.5))
|
||||
(sp-flt spt-z 0.0)
|
||||
(sp-flt spt-scale-x (meters 2.0))
|
||||
(sp-flt spt-scale-y (meters 6.0))
|
||||
(sp-rnd-flt spt-r 64.0 32.0 1.0)
|
||||
(sp-flt spt-g 64.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-flt spt-a 64.0)
|
||||
(sp-flt spt-vel-x (meters 0.033333335))
|
||||
(sp-flt spt-scalevel-x (meters 0.008333334))
|
||||
(sp-flt spt-scalevel-y (meters 0.2))
|
||||
(sp-flt spt-fade-a 0.0)
|
||||
(sp-int spt-timer 25)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 45.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod shove-player snow-bumper ((obj snow-bumper) (arg0 process-drawable))
|
||||
(with-pp
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector)))
|
||||
(vector-! s5-0 (-> arg0 root trans) (-> obj root trans))
|
||||
(set! (-> s5-0 y) 0.0)
|
||||
(vector-normalize! s5-0 1.0)
|
||||
(let* ((f0-3 (atan (-> s5-0 x) (-> s5-0 z)))
|
||||
(f30-0 (-> obj base-shove-ry))
|
||||
(f28-0 (-> obj max-shove-diff-ry))
|
||||
(f0-4 (deg- f0-3 f30-0))
|
||||
)
|
||||
(when (< f28-0 (fabs f0-4))
|
||||
(let ((f30-1 (if (>= f0-4 0.0)
|
||||
(+ f30-0 f28-0)
|
||||
(- f30-0 f28-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set-vector! s5-0 (sin f30-1) 0.0 (cos f30-1) 1.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((f0-12 (+ -16384.0 (atan (-> s5-0 x) (-> s5-0 z)))))
|
||||
(set!
|
||||
(-> *part-id-table* 1895 init-specs 17 initial-valuef)
|
||||
(+ -4096.0 f0-12)
|
||||
)
|
||||
)
|
||||
(spawn (-> obj part2) (-> obj root trans))
|
||||
(let ((s3-1 (new 'stack-no-clear 'vector)))
|
||||
(vector-normalize-copy! s3-1 s5-0 32768.0)
|
||||
(vector+! s3-1 s3-1 (-> obj root trans))
|
||||
(vector-! s5-0 s3-1 (-> arg0 root trans))
|
||||
)
|
||||
(let ((f30-3 (vector-xz-length s5-0)))
|
||||
(vector-normalize! s5-0 1.0)
|
||||
(let ((a1-12 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-12 from) pp)
|
||||
(set! (-> a1-12 num-params) 2)
|
||||
(set! (-> a1-12 message) 'shove)
|
||||
(set! (-> a1-12 param 0) (the-as uint #f))
|
||||
(let ((v1-16 (new 'static 'attack-info :mask #xc2)))
|
||||
(set! (-> v1-16 vector quad) (-> s5-0 quad))
|
||||
(set! (-> v1-16 shove-up) 4096.0)
|
||||
(set! (-> v1-16 shove-back) f30-3)
|
||||
(set! (-> a1-12 param 1) (the-as uint v1-16))
|
||||
)
|
||||
(if (send-event-function *target* a1-12)
|
||||
(set!
|
||||
(-> obj last-shoved-player-time)
|
||||
(the-as uint (-> *display* base-frame-counter))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate snow-bumper-active-far-idle (snow-bumper)
|
||||
:trans
|
||||
(behavior ()
|
||||
(if
|
||||
(and
|
||||
*target*
|
||||
(>=
|
||||
135895450000.0
|
||||
(vector-vector-xz-distance-squared (-> self root trans) (target-pos 0))
|
||||
)
|
||||
)
|
||||
(go snow-bumper-active-close-idle)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(transform-post)
|
||||
(suspend)
|
||||
(while #t
|
||||
(logior! (-> self mask) (process-mask sleep-code))
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate snow-bumper-active-close-idle (snow-bumper)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('touch 'attack 'bonk)
|
||||
(when (= (-> arg0 type) target)
|
||||
(let ((gp-0 (-> arg3 param 0)))
|
||||
(when
|
||||
(and
|
||||
(>=
|
||||
6144.0
|
||||
(vector-vector-xz-distance (-> self root trans) (target-pos 0))
|
||||
)
|
||||
((method-of-type touching-shapes-entry prims-touching?)
|
||||
(the-as touching-shapes-entry gp-0)
|
||||
(the-as collide-shape-moving (-> self root))
|
||||
(the-as uint 1)
|
||||
)
|
||||
)
|
||||
(close-specific-task! (game-task snow-bumpers) (task-status need-hint))
|
||||
(go snow-bumper-deactivate)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:trans
|
||||
(behavior ()
|
||||
(cond
|
||||
(*target*
|
||||
(let* ((gp-0 (target-pos 0))
|
||||
(f30-0 (vector-vector-xz-distance (-> self root trans) gp-0))
|
||||
(f28-0 (- (-> gp-0 y) (-> self root trans y)))
|
||||
)
|
||||
(if (< 368640.0 f30-0)
|
||||
(go snow-bumper-active-far-idle)
|
||||
)
|
||||
(if
|
||||
(and
|
||||
(>=
|
||||
(-
|
||||
(-> *display* base-frame-counter)
|
||||
(the-as int (-> self last-shoved-player-time))
|
||||
)
|
||||
150
|
||||
)
|
||||
(>= 20480.0 f30-0)
|
||||
(>= f28-0 -4096.0)
|
||||
(>= 11059.2 f28-0)
|
||||
)
|
||||
(shove-player self *target*)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(go snow-bumper-active-far-idle)
|
||||
)
|
||||
)
|
||||
(spawn (-> self part) (-> self root trans))
|
||||
(update! (-> self sound))
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(transform-post)
|
||||
(suspend)
|
||||
(while #t
|
||||
(logior! (-> self mask) (process-mask sleep-code))
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate snow-bumper-deactivate (snow-bumper)
|
||||
:exit
|
||||
(behavior ()
|
||||
(stop! (-> self sound))
|
||||
(logior! (-> self mask) (process-mask actor-pause))
|
||||
(none)
|
||||
)
|
||||
:trans
|
||||
(the-as (function none :behavior snow-bumper) rider-trans)
|
||||
:code
|
||||
(behavior ()
|
||||
(local-vars (sv-16 symbol))
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(sound-play-by-name
|
||||
(static-sound-name "bumper-pwr-dwn")
|
||||
(new-sound-id)
|
||||
1024
|
||||
0
|
||||
0
|
||||
1
|
||||
#t
|
||||
)
|
||||
(let ((a0-3 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-3 frame-group)
|
||||
(the-as art-joint-anim (-> self draw art-group data 4))
|
||||
)
|
||||
(set!
|
||||
(-> a0-3 param 0)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 4))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-3 param 1) 0.05)
|
||||
(set! (-> a0-3 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-3
|
||||
(the-as art-joint-anim (-> self draw art-group data 4))
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(spawn (-> self part) (-> self root trans))
|
||||
(update! (-> self sound))
|
||||
(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) 0.05)
|
||||
(joint-control-channel-group-eval!
|
||||
a0-6
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
(stop! (-> self sound))
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150)
|
||||
(suspend)
|
||||
)
|
||||
(let ((a0-10 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-10 frame-group)
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
)
|
||||
(set!
|
||||
(-> a0-10 param 0)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-10 param 1) 0.02)
|
||||
(set! (-> a0-10 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-10
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-11 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-11 param 0)
|
||||
(the float (+ (-> a0-11 frame-group data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-11 param 1) 0.02)
|
||||
(joint-control-channel-group-eval!
|
||||
a0-11
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
(process-entity-status! self (entity-perm-status complete) #t)
|
||||
(set! sv-16 (the-as symbol #f))
|
||||
(apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16))
|
||||
(when sv-16
|
||||
(save-reminder
|
||||
(get-task-control (game-task snow-bumpers))
|
||||
(-> self bumper-id)
|
||||
0
|
||||
)
|
||||
(go snow-bumper-spawn-fuel-cell)
|
||||
)
|
||||
(go snow-bumper-inactive-idle)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior snow-bumper) rider-post)
|
||||
)
|
||||
|
||||
(defstate snow-bumper-spawn-fuel-cell (snow-bumper)
|
||||
:code
|
||||
(behavior ()
|
||||
(ja-channel-set! 1)
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
gp-0
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
num-func-identity
|
||||
)
|
||||
(set!
|
||||
(-> gp-0 frame-num)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(transform-post)
|
||||
(if (not (task-complete? *game-info* (-> self entity extra perm task)))
|
||||
(birth-pickup-at-point
|
||||
(-> self root trans)
|
||||
(pickup-type fuel-cell)
|
||||
(the float (-> self entity extra perm task))
|
||||
#t
|
||||
self
|
||||
(the-as fact-info #f)
|
||||
)
|
||||
)
|
||||
(until (not (-> self child))
|
||||
(suspend)
|
||||
)
|
||||
(go snow-bumper-inactive-idle)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate snow-bumper-inactive-idle (snow-bumper)
|
||||
:code
|
||||
(behavior ()
|
||||
(set! (-> self root nav-radius) 6963.2)
|
||||
(ja-channel-set! 1)
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
gp-0
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
num-func-identity
|
||||
)
|
||||
(set!
|
||||
(-> gp-0 frame-num)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(transform-post)
|
||||
(suspend)
|
||||
(logior! (-> self mask) (process-mask sleep-code))
|
||||
(suspend)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod deactivate snow-bumper ((obj snow-bumper))
|
||||
(if (nonzero? (-> obj part2))
|
||||
(kill-and-free-particles (-> obj part2))
|
||||
)
|
||||
((method-of-type process-drawable deactivate) obj)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod relocate snow-bumper ((obj snow-bumper) (arg0 int))
|
||||
(if (nonzero? (-> obj part2))
|
||||
(&+! (-> obj part2) arg0)
|
||||
)
|
||||
(the-as
|
||||
snow-bumper
|
||||
((the-as
|
||||
(function process-drawable int process-drawable)
|
||||
(find-parent-method snow-bumper 7)
|
||||
)
|
||||
obj
|
||||
arg0
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod init-from-entity! snow-bumper ((obj snow-bumper) (arg0 entity-actor))
|
||||
(local-vars (sv-16 res-tag))
|
||||
(set! (-> obj last-shoved-player-time) (the-as uint 0))
|
||||
(let
|
||||
((s4-0
|
||||
(new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player))
|
||||
)
|
||||
)
|
||||
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
|
||||
(set! (-> s4-0 reaction) default-collision-reaction)
|
||||
(set!
|
||||
(-> s4-0 no-reaction)
|
||||
(the-as
|
||||
(function collide-shape-moving collide-shape-intersect vector vector none)
|
||||
nothing
|
||||
)
|
||||
)
|
||||
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0)))
|
||||
(set! (-> s3-0 prim-core collide-as) (the-as uint 2048))
|
||||
(set! (-> s3-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s3-0 prim-core action) (the-as uint 3))
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 9011.2 0.0 13926.4)
|
||||
(set-root-prim! s4-0 s3-0)
|
||||
(let
|
||||
((s2-0
|
||||
(new
|
||||
'process
|
||||
'collide-shape-prim-mesh
|
||||
s4-0
|
||||
(the-as uint 0)
|
||||
(the-as uint 1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> s2-0 prim-core collide-as) (the-as uint 2048))
|
||||
(set! (-> s2-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-0 prim-core action) (the-as uint 3))
|
||||
(set! (-> s2-0 prim-core offense) 4)
|
||||
(set! (-> s2-0 transform-index) 6)
|
||||
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4915.2)
|
||||
(append-prim s3-0 s2-0)
|
||||
)
|
||||
(let
|
||||
((s2-1
|
||||
(new
|
||||
'process
|
||||
'collide-shape-prim-mesh
|
||||
s4-0
|
||||
(the-as uint 1)
|
||||
(the-as uint 2)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> s2-1 prim-core collide-as) (the-as uint 512))
|
||||
(set! (-> s2-1 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-1 prim-core action) (the-as uint 1))
|
||||
(set! (-> s2-1 prim-core offense) 4)
|
||||
(set! (-> s2-1 transform-index) 3)
|
||||
(set-vector! (-> s2-1 local-sphere) 0.0 8192.0 0.0 11878.4)
|
||||
(append-prim s3-0 s2-1)
|
||||
)
|
||||
)
|
||||
(set! (-> s4-0 nav-radius) 20480.0)
|
||||
(backup-collide-with-as s4-0)
|
||||
(set! (-> obj root) s4-0)
|
||||
)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(initialize-skeleton obj *snow-bumper-sg* '())
|
||||
(set!
|
||||
(-> obj part)
|
||||
(create-launch-control (-> *part-group-id-table* 519) obj)
|
||||
)
|
||||
(set!
|
||||
(-> obj part2)
|
||||
(create-launch-control (-> *part-group-id-table* 520) obj)
|
||||
)
|
||||
(nav-mesh-connect obj (-> obj root) (the-as nav-control #f))
|
||||
(set! (-> obj link) (new 'process 'actor-link-info obj))
|
||||
(set! (-> obj bumper-id) (+ (actor-count-before (-> obj link)) 1))
|
||||
(set!
|
||||
(-> obj sound)
|
||||
(new
|
||||
'process
|
||||
'ambient-sound
|
||||
(new 'static 'sound-spec
|
||||
:mask #x80
|
||||
:num 1.0
|
||||
:group #x1
|
||||
:sound-name (static-sound-name "snow-bumper")
|
||||
:volume #x400
|
||||
:fo-max 40
|
||||
)
|
||||
(-> obj root trans)
|
||||
)
|
||||
)
|
||||
(ja-channel-set! 1)
|
||||
(let ((s5-1 (-> obj skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
s5-1
|
||||
(the-as art-joint-anim (-> obj draw art-group data 3))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> s5-1 frame-num) 0.0)
|
||||
)
|
||||
(transform-post)
|
||||
(set! (-> obj base-shove-ry) 0.0)
|
||||
(set! (-> obj max-shove-diff-ry) 32768.0)
|
||||
(set! sv-16 (new 'static 'res-tag))
|
||||
(let
|
||||
((v1-52
|
||||
(res-lump-data (-> obj entity) 'rotmin (pointer float) :tag-ptr (& sv-16))
|
||||
)
|
||||
)
|
||||
(when v1-52
|
||||
(set! (-> obj base-shove-ry) (-> v1-52 0))
|
||||
(set! (-> obj max-shove-diff-ry) (-> v1-52 1))
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((and
|
||||
(-> obj entity)
|
||||
(logtest? (-> obj entity extra perm status) (entity-perm-status complete))
|
||||
)
|
||||
(if
|
||||
(and
|
||||
(=
|
||||
(get-reminder (get-task-control (game-task snow-bumpers)) 0)
|
||||
(-> obj bumper-id)
|
||||
)
|
||||
(not (task-complete? *game-info* (-> obj entity extra perm task)))
|
||||
)
|
||||
(go snow-bumper-spawn-fuel-cell)
|
||||
(go snow-bumper-inactive-idle)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(go snow-bumper-active-far-idle)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -5,3 +5,13 @@
|
||||
;; name in dgo: snow-obs
|
||||
;; dgos: L1, SNO
|
||||
|
||||
;; TODO - for snow-ram
|
||||
(define-extern *snowcam-sg* skeleton-group)
|
||||
(deftype snowcam (pov-camera)
|
||||
((seq uint64 :offset-assert 224)
|
||||
)
|
||||
:method-count-assert 30
|
||||
:size-assert #xe8
|
||||
:heap-base #x80
|
||||
:flag-assert #x1e008000e8
|
||||
)
|
||||
|
||||
@@ -5,3 +5,27 @@
|
||||
;; name in dgo: snow-ram-boss
|
||||
;; dgos: L1, SNO
|
||||
|
||||
;; TODO - for snow-ram
|
||||
(deftype ram-boss (nav-enemy)
|
||||
((parent-override (pointer ram) :score 100 :offset 12)
|
||||
(facing-y float :offset-assert 400)
|
||||
(player-dir-y float :offset-assert 404)
|
||||
(last-turn-speed float :offset-assert 408)
|
||||
(frustration int32 :offset-assert 412)
|
||||
(dead? symbol :offset-assert 416)
|
||||
(has-shield? symbol :offset-assert 420)
|
||||
(proj-stoked basic :offset-assert 424)
|
||||
(proj-status uint64 :offset-assert 432)
|
||||
(part2 sparticle-launch-control :offset-assert 440)
|
||||
(proj-last-thrown-time uint64 :offset-assert 448)
|
||||
(nav-enemy-patrol-timeout uint64 :offset-assert 456)
|
||||
(proj-launch-vec vector :inline :offset-assert 464)
|
||||
(local-throw-point vector :inline :offset-assert 480)
|
||||
(shield-jmod joint-mod-set-local :offset-assert 496)
|
||||
)
|
||||
:method-count-assert 76
|
||||
:size-assert #x1f4
|
||||
:heap-base #x190
|
||||
:flag-assert #x4c019001f4
|
||||
)
|
||||
(define-extern ram-boss-init-by-other (function basic nav-enemy symbol none :behavior ram-boss))
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype ram (process-drawable)
|
||||
((ram-id int32 :offset-assert 176)
|
||||
((root-override collide-shape-moving :offset 112)
|
||||
(ram-id int32 :offset-assert 176)
|
||||
(give-fuel-cell? symbol :offset-assert 180)
|
||||
(give-fuel-cell-anim spool-anim :offset-assert 184)
|
||||
(part2 sparticle-launch-control :offset-assert 188)
|
||||
@@ -20,9 +21,9 @@
|
||||
:size-assert #xe0
|
||||
:flag-assert #x17007000e0
|
||||
(:methods
|
||||
(dummy-20 () none 20)
|
||||
(dummy-21 () none 21)
|
||||
(dummy-22 () none 22)
|
||||
(dummy-20 (_type_) object 20)
|
||||
(dummy-21 (_type_) object 21)
|
||||
(dummy-22 (_type_) symbol 22)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -5,3 +5,789 @@
|
||||
;; name in dgo: snow-ram
|
||||
;; dgos: L1, SNO
|
||||
|
||||
(define-extern *ram-sg* skeleton-group)
|
||||
|
||||
(declare-type ram process-drawable)
|
||||
|
||||
(define-extern ram-fun-idle (state ram)) ;; unknown type
|
||||
(define-extern ram-idle (state ram)) ;; unknown type
|
||||
(define-extern ram-give-fuel-cell (state ram)) ;; unknown type
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defskelgroup *ram-sg* ram
|
||||
0
|
||||
4
|
||||
((1 (meters 20)) (2 (meters 40)) (3 (meters 999999)))
|
||||
:bounds (static-spherem 0 5 0 8.5)
|
||||
:longest-edge (meters 7.7)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-group-id-table* 526)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 2
|
||||
:duration #xbb8
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-ram-hit-wall"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 2
|
||||
(sp-item 1921)
|
||||
(sp-item 1922 :fade-after (meters 60.0) :falloff-to (meters 60.0))
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 1920)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 18
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2))
|
||||
(sp-rnd-flt spt-num 64.0 16.0 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.2) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 128.0 16.0 1.0)
|
||||
(sp-rnd-flt spt-g 128.0 48.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.053333335) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters -0.00066666666))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-rnd-flt spt-accel-y -20.48 13.653334 1.0)
|
||||
(sp-rnd-flt spt-friction 0.92 0.05 1.0)
|
||||
(sp-int spt-timer 210)
|
||||
(sp-cpuinfo-flags bit0 bit3 bit12)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 170.0) 1.0)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 1922)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 19
|
||||
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
|
||||
(sp-flt spt-num 8.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 3.0) (meters 3.0) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 100.0)
|
||||
(sp-flt spt-g 100.0)
|
||||
(sp-flt spt-b 128.0)
|
||||
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.013333334) 1.0)
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
|
||||
(sp-flt spt-fade-a -0.60952383)
|
||||
(sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0)
|
||||
(sp-int spt-timer 210)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit12)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 1921)
|
||||
(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-rnd-flt spt-scale-x (meters 6.0) (meters 1.0) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 100.0)
|
||||
(sp-flt spt-g 100.0)
|
||||
(sp-flt spt-b 128.0)
|
||||
(sp-flt spt-a 96.0)
|
||||
(sp-flt spt-fade-a -2.1333334)
|
||||
(sp-int spt-timer 42)
|
||||
(sp-cpuinfo-flags bit2 bit3)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-group-id-table* 527)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 1
|
||||
:duration #xbb8
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-ram-wheel-puffs"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 1
|
||||
(sp-item 1923 :fade-after (meters 70.0) :falloff-to (meters 70.0))
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
|
||||
(set!
|
||||
(-> *part-id-table* 1923)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 18
|
||||
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-x (meters -0.5) (meters 1.0) 1.0)
|
||||
(sp-rnd-flt spt-z -2048.0 4096.0 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.5) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 100.0)
|
||||
(sp-flt spt-g 100.0)
|
||||
(sp-flt spt-b 128.0)
|
||||
(sp-rnd-flt spt-a 32.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.0033333334) 1.0)
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0)
|
||||
(sp-flt spt-fade-a -0.26666668)
|
||||
(sp-flt spt-accel-y -1.3653333)
|
||||
(sp-int spt-timer 120)
|
||||
(sp-cpuinfo-flags bit2)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod dummy-20 ram ((obj ram))
|
||||
(let ((gp-0 (-> obj part)))
|
||||
(when (nonzero? gp-0)
|
||||
(let ((a2-0 (-> obj node-list data 8 bone transform))
|
||||
(s5-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set-vector! s5-0 0.0 0.0 -49152.0 1.0)
|
||||
(vector-matrix*! s5-0 s5-0 a2-0)
|
||||
(set!
|
||||
(-> *part-id-table* 1920 init-specs 16 initial-valuef)
|
||||
(+ 16384.0 (-> obj orient-ry))
|
||||
)
|
||||
(spawn gp-0 s5-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod dummy-21 ram ((obj ram))
|
||||
(let ((gp-0 (-> obj part2)))
|
||||
(let ((s3-0 (new 'stack-no-clear 'vector))
|
||||
(s4-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(vector<-cspace! s3-0 (-> obj node-list data 5))
|
||||
(set-vector! s4-0 13312.0 -5324.8 0.0 1.0)
|
||||
(vector-rotate-around-y! s4-0 s4-0 (-> obj orient-ry))
|
||||
(vector+! s4-0 s4-0 s3-0)
|
||||
(spawn gp-0 s4-0)
|
||||
(set-vector! s4-0 -13312.0 -5324.8 0.0 1.0)
|
||||
(vector-rotate-around-y! s4-0 s4-0 (-> obj orient-ry))
|
||||
(vector+! s4-0 s4-0 s3-0)
|
||||
(spawn gp-0 s4-0)
|
||||
)
|
||||
(let ((s3-1 (new 'stack-no-clear 'vector))
|
||||
(s4-1 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(vector<-cspace! s3-1 (-> obj node-list data 6))
|
||||
(set-vector! s4-1 13312.0 -5324.8 0.0 1.0)
|
||||
(vector-rotate-around-y! s4-1 s4-1 (-> obj orient-ry))
|
||||
(vector+! s4-1 s4-1 s3-1)
|
||||
(spawn gp-0 s4-1)
|
||||
(set-vector! s4-1 -13312.0 -5324.8 0.0 1.0)
|
||||
(vector-rotate-around-y! s4-1 s4-1 (-> obj orient-ry))
|
||||
(vector+! s4-1 s4-1 s3-1)
|
||||
(spawn gp-0 s4-1)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod dummy-22 ram ((obj ram))
|
||||
(process-entity-status! obj (entity-perm-status complete) #t)
|
||||
(let ((v1-0 (alt-actor-list-subtask-incomplete-count obj)))
|
||||
(cond
|
||||
((zero? v1-0)
|
||||
(let ((v1-3 (-> obj entity extra perm)))
|
||||
(logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage))
|
||||
(set! (-> v1-3 user-int8 2) 1)
|
||||
)
|
||||
(if (not (task-complete? *game-info* (-> obj entity extra perm task)))
|
||||
(return #t)
|
||||
)
|
||||
)
|
||||
((= v1-0 1)
|
||||
(close-specific-task! (game-task snow-ram) (task-status need-reminder))
|
||||
)
|
||||
(else
|
||||
(close-specific-task! (game-task snow-ram) (task-status need-reminder-a))
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
|
||||
(defstate ram-idle (ram)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('touch 'attack)
|
||||
(when
|
||||
((method-of-type touching-shapes-entry prims-touching?)
|
||||
(the-as touching-shapes-entry (-> arg3 param 0))
|
||||
(-> self root-override)
|
||||
(the-as uint 1)
|
||||
)
|
||||
(let ((a1-3 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-3 from) self)
|
||||
(set! (-> a1-3 num-params) 2)
|
||||
(set! (-> a1-3 message) 'attack)
|
||||
(set! (-> a1-3 param 0) (-> arg3 param 0))
|
||||
(let ((v1-7 (new 'static 'attack-info :mask #xc0)))
|
||||
(set! (-> v1-7 shove-up) 2048.0)
|
||||
(set! (-> v1-7 shove-back) 8192.0)
|
||||
(set! (-> a1-3 param 1) (the-as uint v1-7))
|
||||
)
|
||||
(send-event-function arg0 a1-3)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:exit
|
||||
(behavior ()
|
||||
(logior! (-> self mask) (process-mask actor-pause))
|
||||
(none)
|
||||
)
|
||||
:trans
|
||||
(behavior ()
|
||||
(rider-trans)
|
||||
(if (-> self give-fuel-cell-anim)
|
||||
(spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(local-vars (sv-16 symbol))
|
||||
(ja-channel-push! 1 22)
|
||||
(while #t
|
||||
(sound-play-by-name
|
||||
(static-sound-name "set-ram")
|
||||
(new-sound-id)
|
||||
1024
|
||||
0
|
||||
0
|
||||
1
|
||||
#t
|
||||
)
|
||||
(let ((a0-2 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-2 frame-group)
|
||||
(the-as art-joint-anim (-> self draw art-group data 4))
|
||||
)
|
||||
(set!
|
||||
(-> a0-2 param 0)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 4))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-2 param 1) 1.0)
|
||||
(set! (-> a0-2 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-2
|
||||
(the-as art-joint-anim (-> self draw art-group data 4))
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-3 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-3 param 0)
|
||||
(the float (+ (-> a0-3 frame-group data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-3 param 1) 1.0)
|
||||
(joint-control-channel-group-eval!
|
||||
a0-3
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((gp-1 #f))
|
||||
(sound-play-by-name
|
||||
(static-sound-name "slam-crash")
|
||||
(new-sound-id)
|
||||
1024
|
||||
0
|
||||
0
|
||||
1
|
||||
#t
|
||||
)
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(let ((a0-8 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-8 frame-group)
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
)
|
||||
(set!
|
||||
(-> a0-8 param 0)
|
||||
(the
|
||||
float
|
||||
(+
|
||||
(->
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> a0-8 param 1) 1.0)
|
||||
(set! (-> a0-8 frame-num) 0.0)
|
||||
(joint-control-channel-group!
|
||||
a0-8
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(let ((f30-0 (ja-aframe-num 0)))
|
||||
(when (and (not gp-1) (>= f30-0 61.0))
|
||||
(set! gp-1 #t)
|
||||
(dummy-20 self)
|
||||
)
|
||||
(if (and (>= f30-0 62.0) (< f30-0 97.0))
|
||||
(dummy-21 self)
|
||||
)
|
||||
)
|
||||
(suspend)
|
||||
(let ((a0-12 (-> self skel root-channel 0)))
|
||||
(set!
|
||||
(-> a0-12 param 0)
|
||||
(the float (+ (-> a0-12 frame-group data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-12 param 1) 1.0)
|
||||
(joint-control-channel-group-eval!
|
||||
a0-12
|
||||
(the-as art-joint-anim #f)
|
||||
num-func-seek!
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(logior! (-> self mask) (process-mask actor-pause))
|
||||
(set! sv-16 (the-as symbol #f))
|
||||
(apply-function-forward (-> self link) actor-link-dead-hook (& sv-16))
|
||||
(when (or sv-16 (nonzero? (-> self root-override riders num-riders)))
|
||||
(let ((v1-67 (-> self entity extra perm)))
|
||||
(logior! (-> v1-67 status) (entity-perm-status user-set-from-cstage))
|
||||
(set! (-> v1-67 user-int8 0) 1)
|
||||
)
|
||||
(send-event (ppointer->process (-> self child)) 'jump)
|
||||
(go ram-fun-idle)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior ram) rider-post)
|
||||
)
|
||||
|
||||
(defstate ram-fun-idle (ram)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('notify)
|
||||
(when (= (-> arg0 type) ram-boss)
|
||||
(if (dummy-22 self)
|
||||
(go ram-give-fuel-cell)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (-> self give-fuel-cell-anim)
|
||||
(spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(if (-> self give-fuel-cell?)
|
||||
(go ram-give-fuel-cell)
|
||||
)
|
||||
(ja-channel-push! 1 0)
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
gp-0
|
||||
(the-as art-joint-anim (-> self draw art-group data 6))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> gp-0 frame-num) 0.0)
|
||||
)
|
||||
(transform-post)
|
||||
(logior! (-> self mask) (process-mask sleep-code))
|
||||
(suspend)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate ram-give-fuel-cell (ram)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('notify)
|
||||
(if (and (= (-> arg0 type) snowcam) (= (-> arg3 param 0) 'die))
|
||||
(go ram-fun-idle)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:exit
|
||||
(behavior ()
|
||||
(process-entity-status! self (entity-perm-status bit-3) #f)
|
||||
(logior! (-> self mask) (process-mask actor-pause))
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(set! (-> self give-fuel-cell?) #f)
|
||||
(ja-channel-push! 1 0)
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
gp-0
|
||||
(the-as art-joint-anim (-> self draw art-group data 6))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> gp-0 frame-num) 0.0)
|
||||
)
|
||||
(transform-post)
|
||||
(when
|
||||
(and
|
||||
(not (task-complete? *game-info* (-> self entity extra perm task)))
|
||||
(-> self give-fuel-cell-anim)
|
||||
)
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(process-entity-status! self (entity-perm-status bit-3) #t)
|
||||
(let*
|
||||
((gp-1 (the-as snowcam (get-process *default-dead-pool* snowcam #x4000)))
|
||||
(v1-14 (when gp-1
|
||||
(let ((t9-6 (method-of-type snowcam activate)))
|
||||
(t9-6 gp-1 self 'snowcam (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
gp-1
|
||||
pov-camera-init-by-other
|
||||
(-> self root-override trans)
|
||||
*snowcam-sg*
|
||||
(-> self give-fuel-cell-anim)
|
||||
0
|
||||
self
|
||||
'()
|
||||
)
|
||||
(-> gp-1 ppointer)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> (the-as (pointer snowcam) v1-14) 0 seq) (the-as uint 1))
|
||||
)
|
||||
(sound-play-by-name
|
||||
(static-sound-name "cell-prize")
|
||||
(new-sound-id)
|
||||
1024
|
||||
0
|
||||
0
|
||||
1
|
||||
#t
|
||||
)
|
||||
(logior! (-> self mask) (process-mask sleep-code))
|
||||
(suspend)
|
||||
0
|
||||
)
|
||||
(go ram-fun-idle)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod deactivate ram ((obj ram))
|
||||
(if (nonzero? (-> obj part2))
|
||||
(kill-and-free-particles (-> obj part2))
|
||||
)
|
||||
((method-of-type process-drawable deactivate) obj)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod relocate ram ((obj ram) (arg0 int))
|
||||
(if (nonzero? (-> obj part2))
|
||||
(&+! (-> obj part2) arg0)
|
||||
)
|
||||
(the-as ram ((method-of-type process-drawable relocate) obj arg0))
|
||||
)
|
||||
|
||||
(defmethod init-from-entity! ram ((obj ram) (arg0 entity-actor))
|
||||
(set! (-> obj give-fuel-cell?) #f)
|
||||
(set! (-> obj link) (new 'process 'actor-link-info obj))
|
||||
(let
|
||||
((s4-0
|
||||
(new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others))
|
||||
)
|
||||
)
|
||||
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
|
||||
(set! (-> s4-0 reaction) default-collision-reaction)
|
||||
(set!
|
||||
(-> s4-0 no-reaction)
|
||||
(the-as
|
||||
(function collide-shape-moving collide-shape-intersect vector vector none)
|
||||
nothing
|
||||
)
|
||||
)
|
||||
(dummy-29 s4-0 1)
|
||||
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0)))
|
||||
(set! (-> s3-0 prim-core collide-as) (the-as uint 2048))
|
||||
(set! (-> s3-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s3-0 prim-core action) (the-as uint 3))
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 34816.0)
|
||||
(set-root-prim! s4-0 s3-0)
|
||||
(let
|
||||
((s2-0
|
||||
(new
|
||||
'process
|
||||
'collide-shape-prim-mesh
|
||||
s4-0
|
||||
(the-as uint 0)
|
||||
(the-as uint 1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> s2-0 prim-core collide-as) (the-as uint 2048))
|
||||
(set! (-> s2-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-0 prim-core action) (the-as uint 1))
|
||||
(set! (-> s2-0 prim-core offense) 4)
|
||||
(set! (-> s2-0 transform-index) 8)
|
||||
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0)
|
||||
(append-prim s3-0 s2-0)
|
||||
)
|
||||
(let
|
||||
((s2-1
|
||||
(new
|
||||
'process
|
||||
'collide-shape-prim-mesh
|
||||
s4-0
|
||||
(the-as uint 1)
|
||||
(the-as uint 2)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> s2-1 prim-core collide-as) (the-as uint 2048))
|
||||
(set! (-> s2-1 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-1 prim-core action) (the-as uint 3))
|
||||
(set! (-> s2-1 prim-core offense) 4)
|
||||
(set! (-> s2-1 transform-index) 3)
|
||||
(set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 34816.0)
|
||||
(append-prim s3-0 s2-1)
|
||||
)
|
||||
(let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 4))))
|
||||
(set! (-> s2-2 prim-core collide-as) (the-as uint 256))
|
||||
(set! (-> s2-2 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-2 prim-core offense) 0)
|
||||
(set! (-> s2-2 transform-index) 3)
|
||||
(set-vector! (-> s2-2 local-sphere) -4096.0 28672.0 12288.0 2252.8)
|
||||
(append-prim s3-0 s2-2)
|
||||
)
|
||||
)
|
||||
(set! (-> s4-0 nav-radius) 20480.0)
|
||||
(backup-collide-with-as s4-0)
|
||||
(set! (-> obj root-override) s4-0)
|
||||
)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(initialize-skeleton obj *ram-sg* '())
|
||||
(logior! (-> obj skel status) 1)
|
||||
(ja-post)
|
||||
(dummy-47 (-> obj root-override))
|
||||
(set! (-> obj orient-ry) (quaternion-y-angle (-> obj root-override quat)))
|
||||
(nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f))
|
||||
(set!
|
||||
(-> obj part)
|
||||
(create-launch-control (-> *part-group-id-table* 526) obj)
|
||||
)
|
||||
(set!
|
||||
(-> obj part2)
|
||||
(create-launch-control (-> *part-group-id-table* 527) obj)
|
||||
)
|
||||
(set! (-> obj ram-id) (res-lump-value arg0 'extra-id int))
|
||||
(case (-> obj ram-id)
|
||||
((1)
|
||||
(set!
|
||||
(-> obj give-fuel-cell-anim)
|
||||
(new 'static 'spool-anim
|
||||
:name "snowcam-ram-boss-in-cave-fuel-cell"
|
||||
:index 7
|
||||
:parts 1
|
||||
:command-list '()
|
||||
)
|
||||
)
|
||||
(set-vector!
|
||||
(-> obj fuel-cell-dest-pos)
|
||||
3137396.8
|
||||
803676.2
|
||||
-13560558.0
|
||||
1.0
|
||||
)
|
||||
)
|
||||
((2)
|
||||
(set!
|
||||
(-> obj give-fuel-cell-anim)
|
||||
(new 'static 'spool-anim
|
||||
:name "snowcam-ram-boss-ice-pond-fuel-cell"
|
||||
:index 8
|
||||
:parts 1
|
||||
:command-list '()
|
||||
)
|
||||
)
|
||||
(set-vector!
|
||||
(-> obj fuel-cell-dest-pos)
|
||||
2790289.5
|
||||
1058152.5
|
||||
-13639766.0
|
||||
1.0
|
||||
)
|
||||
)
|
||||
((3)
|
||||
(set!
|
||||
(-> obj give-fuel-cell-anim)
|
||||
(new 'static 'spool-anim
|
||||
:name "snowcam-ram-boss-snow-ball-fuel-cell"
|
||||
:index 9
|
||||
:parts 1
|
||||
:command-list '()
|
||||
)
|
||||
)
|
||||
(set-vector!
|
||||
(-> obj fuel-cell-dest-pos)
|
||||
4208423.0
|
||||
1037348.9
|
||||
-13591491.0
|
||||
1.0
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! (-> obj give-fuel-cell-anim) #f)
|
||||
)
|
||||
)
|
||||
(let ((s4-1 #f))
|
||||
(if (nonzero? (-> obj entity extra perm user-int8 0))
|
||||
(set! s4-1 #t)
|
||||
)
|
||||
(let ((s3-1 (= (res-lump-value arg0 'mode uint128) 1)))
|
||||
(when (not s3-1)
|
||||
(when
|
||||
(and
|
||||
(-> obj entity)
|
||||
(logtest?
|
||||
(-> obj entity extra perm status)
|
||||
(entity-perm-status complete)
|
||||
)
|
||||
)
|
||||
(set! s3-1 #t)
|
||||
(if
|
||||
(and
|
||||
(nonzero? (-> obj entity extra perm user-int8 2))
|
||||
(not (task-complete? *game-info* (-> obj entity extra perm task)))
|
||||
)
|
||||
(birth-pickup-at-point
|
||||
(-> obj fuel-cell-dest-pos)
|
||||
(pickup-type fuel-cell)
|
||||
(the float (-> obj entity extra perm task))
|
||||
#f
|
||||
obj
|
||||
(the-as fact-info #f)
|
||||
)
|
||||
)
|
||||
(go ram-fun-idle)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((and (not s3-1) (has-nav-mesh? arg0))
|
||||
(cond
|
||||
(s4-1
|
||||
(let ((s5-1 (get-process *default-dead-pool* ram-boss #x4000)))
|
||||
(when s5-1
|
||||
(let ((t9-28 (method-of-type ram-boss activate)))
|
||||
(t9-28
|
||||
(the-as ram-boss s5-1)
|
||||
obj
|
||||
'ram-boss
|
||||
(the-as pointer #x70004000)
|
||||
)
|
||||
)
|
||||
(run-now-in-process
|
||||
s5-1
|
||||
ram-boss-init-by-other
|
||||
(-> obj entity)
|
||||
obj
|
||||
#t
|
||||
)
|
||||
(-> s5-1 ppointer)
|
||||
)
|
||||
)
|
||||
(go ram-fun-idle)
|
||||
)
|
||||
(else
|
||||
(let ((s5-2 (get-process *default-dead-pool* ram-boss #x4000)))
|
||||
(when s5-2
|
||||
(let ((t9-32 (method-of-type ram-boss activate)))
|
||||
(t9-32
|
||||
(the-as ram-boss s5-2)
|
||||
obj
|
||||
'ram-boss
|
||||
(the-as pointer #x70004000)
|
||||
)
|
||||
)
|
||||
(run-now-in-process
|
||||
s5-2
|
||||
ram-boss-init-by-other
|
||||
(-> obj entity)
|
||||
obj
|
||||
#f
|
||||
)
|
||||
(-> s5-2 ppointer)
|
||||
)
|
||||
)
|
||||
(go ram-idle)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(go ram-fun-idle)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+696
-1125
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -28,7 +28,11 @@ files_with_modifications = [
|
||||
"cam-master",
|
||||
"generic-obs",
|
||||
"target-snowball",
|
||||
"default-menu"
|
||||
"quicksandlurker",
|
||||
"logic-target",
|
||||
"default-menu",
|
||||
"collide-shape",
|
||||
"cam-states"
|
||||
]
|
||||
|
||||
for file in files:
|
||||
|
||||
+1
-1
@@ -384,7 +384,7 @@
|
||||
(if *display-cam-los-debug*
|
||||
(format *stdcon* "ride edge~%")
|
||||
)
|
||||
(let ((s4-2 (new 'stack-no-clear 'collide-mesh-cache-tri))
|
||||
(let ((s4-2 (new 'stack-no-clear 'collide-tri-result))
|
||||
(gp-5 (new 'stack-no-clear 'vector))
|
||||
(s5-2 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
|
||||
+10
-10
@@ -1325,7 +1325,7 @@
|
||||
(defun cam-string-find-position-rel! ((arg0 vector))
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector))
|
||||
(s4-0 (new 'stack-no-clear 'vector))
|
||||
(s3-0 (new 'stack-no-clear 'bone))
|
||||
(s3-0 (new 'stack-no-clear 'collide-tri-result))
|
||||
(f30-0 0.0)
|
||||
(s2-0 (new 'stack-no-clear 'matrix))
|
||||
)
|
||||
@@ -1344,7 +1344,7 @@
|
||||
(the-as float 409.6)
|
||||
#x4a09
|
||||
(the-as process #f)
|
||||
(the-as collide-mesh-cache-tri s3-0)
|
||||
s3-0
|
||||
2
|
||||
)
|
||||
0.0
|
||||
@@ -2608,7 +2608,7 @@
|
||||
;; definition for function cam-string-find-hidden
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
(defbehavior cam-string-find-hidden camera-slave ()
|
||||
(let ((s4-0 (new 'stack-no-clear 'collide-mesh-cache-tri))
|
||||
(let ((s4-0 (new 'stack-no-clear 'collide-tri-result))
|
||||
(s5-0 (new 'stack-no-clear 'vector))
|
||||
(gp-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
@@ -2696,7 +2696,7 @@
|
||||
(s5-2 (new-stack-vector0))
|
||||
(gp-2 0)
|
||||
)
|
||||
(let ((s4-2 (new 'stack-no-clear 'collide-mesh-cache-tri))
|
||||
(let ((s4-2 (new 'stack-no-clear 'collide-tri-result))
|
||||
(s3-1 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(when *debug-segment*
|
||||
@@ -2748,7 +2748,7 @@
|
||||
)
|
||||
(vector+float*! (-> self string-trans) (-> self string-trans) s5-2 f0-24)
|
||||
)
|
||||
(vector-! s3-1 (-> self string-trans) (-> s4-2 normal))
|
||||
(vector-! s3-1 (-> self string-trans) (-> s4-2 intersect))
|
||||
(vector-normalize! s3-1 (the-as float 1.0))
|
||||
(vector-flatten! (-> self velocity) (-> self velocity) s3-1)
|
||||
(set! f30-2 (- f30-2 (* f30-2 f28-1)))
|
||||
@@ -3012,7 +3012,7 @@
|
||||
(vector+! (-> self desired-pos) (-> self desired-pos) (-> *camera* tpos-curr-adj))
|
||||
(set! (-> self string-trans quad) (-> self desired-pos quad))
|
||||
(vector-reset! (-> self velocity))
|
||||
(let ((s4-0 (new 'stack-no-clear 'collide-mesh-cache-tri))
|
||||
(let ((s4-0 (new 'stack-no-clear 'collide-tri-result))
|
||||
(s5-0 (new 'stack-no-clear 'vector))
|
||||
(gp-1 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
@@ -3155,7 +3155,7 @@
|
||||
(s4-0 4)
|
||||
(s2-0 0)
|
||||
)
|
||||
(let ((s3-0 (new 'stack-no-clear 'collide-mesh-cache-tri)))
|
||||
(let ((s3-0 (new 'stack-no-clear 'collide-tri-result)))
|
||||
(while (and
|
||||
(< 0.01 f30-1)
|
||||
(and (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) (> s4-0 0))
|
||||
@@ -3180,7 +3180,7 @@
|
||||
(cond
|
||||
((>= f28-0 0.0)
|
||||
(vector+float*! (-> self trans) (-> self trans) gp-2 f28-0)
|
||||
(set! (-> s5-0 quad) (-> s3-0 bbox4w min quad))
|
||||
(set! (-> s5-0 quad) (-> s3-0 normal quad))
|
||||
(vector-flatten! (-> self velocity) (-> self velocity) s5-0)
|
||||
(set! f30-1 (- f30-1 (* f30-1 f28-0)))
|
||||
(set! s2-0 1)
|
||||
@@ -3439,7 +3439,7 @@
|
||||
(let ((f30-2 1.0)
|
||||
(gp-3 (new-stack-vector0))
|
||||
(s5-3 4)
|
||||
(s4-3 (new 'stack-no-clear 'collide-mesh-cache-tri))
|
||||
(s4-3 (new 'stack-no-clear 'collide-tri-result))
|
||||
)
|
||||
(while (and
|
||||
(< 0.01 f30-2)
|
||||
@@ -3457,7 +3457,7 @@
|
||||
(cond
|
||||
((>= f28-0 0.0)
|
||||
(vector+float*! (-> self trans) (-> self trans) gp-3 f28-0)
|
||||
(vector-flatten! (-> self velocity) (-> self velocity) (the-as vector (-> s4-3 bbox4w)))
|
||||
(vector-flatten! (-> self velocity) (-> self velocity) (-> s4-3 normal))
|
||||
(set! f30-2 (- f30-2 (* f30-2 f28-0)))
|
||||
(let ((s3-2 (new-stack-vector0)))
|
||||
(vector-! s3-2 (-> self trans) (-> *camera* tpos-curr-adj))
|
||||
|
||||
+51
-51
@@ -427,57 +427,57 @@
|
||||
|
||||
;; definition of type camera-slave
|
||||
(deftype camera-slave (process)
|
||||
((trans vector :inline :offset-assert 112)
|
||||
(fov float :offset-assert 128)
|
||||
(fov0 float :offset-assert 132)
|
||||
(fov1 float :offset-assert 136)
|
||||
(fov-index cam-index :inline :offset-assert 144)
|
||||
(tracking cam-rotation-tracker :inline :offset-assert 192)
|
||||
(view-off-param float :offset-assert 400)
|
||||
(unknown-symbol symbol :offset 412)
|
||||
(view-off vector :inline :offset-assert 416)
|
||||
(min-z-override float :offset-assert 432)
|
||||
(view-flat vector :inline :offset-assert 448)
|
||||
(string-vel-dir uint32 :offset-assert 464)
|
||||
(string-trans vector :inline :offset-assert 480)
|
||||
(position-spline tracking-spline :inline :offset-assert 496)
|
||||
(pivot-pt vector :inline :offset-assert 2144)
|
||||
(pivot-rad float :offset-assert 2160)
|
||||
(circular-follow vector :inline :offset-assert 2176)
|
||||
(max-angle-offset float :offset-assert 2192)
|
||||
(max-angle-curr float :offset-assert 2196)
|
||||
(options uint32 :offset-assert 2200)
|
||||
(cam-entity entity :offset-assert 2204)
|
||||
(velocity vector :inline :offset-assert 2208)
|
||||
(desired-pos vector :inline :offset-assert 2224)
|
||||
(time-dist-too-far uint32 :offset-assert 2240)
|
||||
(los-state slave-los-state :offset-assert 2244)
|
||||
(good-point vector :inline :offset-assert 2256)
|
||||
(los-tgt-spline-pt int32 :offset-assert 2272)
|
||||
(los-tgt-spline-pt-incarnation int32 :offset-assert 2276)
|
||||
(los-last-pos vector :inline :offset-assert 2288)
|
||||
(intro-curve curve :inline :offset-assert 2304)
|
||||
(intro-offset vector :inline :offset-assert 2336)
|
||||
(intro-t float :offset-assert 2352)
|
||||
(intro-t-step float :offset-assert 2356)
|
||||
(outro-exit-value float :offset-assert 2360)
|
||||
(spline-exists basic :offset-assert 2364)
|
||||
(spline-curve curve :inline :offset-assert 2368)
|
||||
(spline-offset vector :inline :offset-assert 2400)
|
||||
(index cam-index :inline :offset-assert 2416)
|
||||
(saved-pt vector :inline :offset-assert 2464)
|
||||
(spline-tt float :offset-assert 2480)
|
||||
(spline-follow-dist float :offset-assert 2484)
|
||||
(change-event-from uint32 :offset-assert 2488)
|
||||
(enter-has-run symbol :offset-assert 2492)
|
||||
(blend-from-type uint64 :offset-assert 2496)
|
||||
(blend-to-type uint64 :offset-assert 2504)
|
||||
(have-phony-joystick basic :offset-assert 2512)
|
||||
(phony-joystick-x float :offset-assert 2516)
|
||||
(phony-joystick-y float :offset-assert 2520)
|
||||
(string-min-val vector :inline :offset-assert 2528)
|
||||
(string-max-val vector :inline :offset-assert 2544)
|
||||
(string-val-locked basic :offset-assert 2560)
|
||||
((trans vector :inline :offset-assert 112)
|
||||
(fov float :offset-assert 128)
|
||||
(fov0 float :offset-assert 132)
|
||||
(fov1 float :offset-assert 136)
|
||||
(fov-index cam-index :inline :offset-assert 144)
|
||||
(tracking cam-rotation-tracker :inline :offset-assert 192)
|
||||
(view-off-param float :offset-assert 400)
|
||||
(unknown-symbol symbol :offset 412)
|
||||
(view-off vector :inline :offset-assert 416)
|
||||
(min-z-override float :offset-assert 432)
|
||||
(view-flat vector :inline :offset-assert 448)
|
||||
(string-vel-dir uint32 :offset-assert 464)
|
||||
(string-trans vector :inline :offset-assert 480)
|
||||
(position-spline tracking-spline :inline :offset-assert 496)
|
||||
(pivot-pt vector :inline :offset-assert 2144)
|
||||
(pivot-rad float :offset-assert 2160)
|
||||
(circular-follow vector :inline :offset-assert 2176)
|
||||
(max-angle-offset float :offset-assert 2192)
|
||||
(max-angle-curr float :offset-assert 2196)
|
||||
(options uint32 :offset-assert 2200)
|
||||
(cam-entity entity :offset-assert 2204)
|
||||
(velocity vector :inline :offset-assert 2208)
|
||||
(desired-pos vector :inline :offset-assert 2224)
|
||||
(time-dist-too-far uint32 :offset-assert 2240)
|
||||
(los-state slave-los-state :offset-assert 2244)
|
||||
(good-point vector :inline :offset-assert 2256)
|
||||
(los-tgt-spline-pt int32 :offset-assert 2272)
|
||||
(los-tgt-spline-pt-incarnation int32 :offset-assert 2276)
|
||||
(los-last-pos vector :inline :offset-assert 2288)
|
||||
(intro-curve curve :inline :offset-assert 2304)
|
||||
(intro-offset vector :inline :offset-assert 2336)
|
||||
(intro-t float :offset-assert 2352)
|
||||
(intro-t-step float :offset-assert 2356)
|
||||
(outro-exit-value float :offset-assert 2360)
|
||||
(spline-exists basic :offset-assert 2364)
|
||||
(spline-curve curve :inline :offset-assert 2368)
|
||||
(spline-offset vector :inline :offset-assert 2400)
|
||||
(index cam-index :inline :offset-assert 2416)
|
||||
(saved-pt vector :inline :offset-assert 2464)
|
||||
(spline-tt float :offset-assert 2480)
|
||||
(spline-follow-dist float :offset-assert 2484)
|
||||
(change-event-from (pointer process-drawable) :offset-assert 2488)
|
||||
(enter-has-run symbol :offset-assert 2492)
|
||||
(blend-from-type uint64 :offset-assert 2496)
|
||||
(blend-to-type uint64 :offset-assert 2504)
|
||||
(have-phony-joystick basic :offset-assert 2512)
|
||||
(phony-joystick-x float :offset-assert 2516)
|
||||
(phony-joystick-y float :offset-assert 2520)
|
||||
(string-min-val vector :inline :offset-assert 2528)
|
||||
(string-max-val vector :inline :offset-assert 2544)
|
||||
(string-val-locked basic :offset-assert 2560)
|
||||
)
|
||||
:heap-base #x9a0
|
||||
:method-count-assert 14
|
||||
|
||||
+2
-2
@@ -947,11 +947,11 @@
|
||||
(cond
|
||||
(*camera*
|
||||
(set! (-> self options) (-> *camera* slave-options))
|
||||
(set! (-> self change-event-from) (-> *camera* changer))
|
||||
(set! (-> self change-event-from) (the-as (pointer process-drawable) (-> *camera* changer)))
|
||||
)
|
||||
(else
|
||||
(set! (-> self options) (the-as uint 0))
|
||||
(set! (-> self change-event-from) (the-as uint #f))
|
||||
(set! (-> self change-event-from) (the-as (pointer process-drawable) #f))
|
||||
)
|
||||
)
|
||||
(cond
|
||||
|
||||
+1
-1
@@ -180,7 +180,7 @@
|
||||
:flag-assert #x2100008670
|
||||
(:methods
|
||||
(dummy-9 (_type_) none 9)
|
||||
(dummy-10 (_type_ vector vector float int process collide-mesh-cache-tri int) float 10)
|
||||
(dummy-10 (_type_ vector vector float int process collide-tri-result int) float 10)
|
||||
(dummy-11 (_type_ collide-using-spheres-params) none 11)
|
||||
(fill-and-probe-using-y-probe (_type_ vector float uint process collide-tri-result uint) float 12)
|
||||
(dummy-13 (_type_ bounding-box uint process-drawable uint) none 13)
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@
|
||||
(deftype part-tester (process)
|
||||
((root trsqv :offset-assert 112)
|
||||
(part sparticle-launch-control :offset-assert 116)
|
||||
(old-group basic :offset-assert 120)
|
||||
(old-group sparticle-launch-group :offset-assert 120)
|
||||
)
|
||||
:heap-base #x100
|
||||
:method-count-assert 14
|
||||
|
||||
+294
@@ -0,0 +1,294 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type camera-voicebox
|
||||
(deftype camera-voicebox (camera-slave)
|
||||
()
|
||||
:heap-base #x9a0
|
||||
:method-count-assert 14
|
||||
:size-assert #xa04
|
||||
:flag-assert #xe09a00a04
|
||||
)
|
||||
|
||||
;; definition for method 3 of type camera-voicebox
|
||||
(defmethod inspect camera-voicebox ((obj camera-voicebox))
|
||||
(let ((t9-0 (method-of-type camera-slave inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type voicebox
|
||||
(deftype voicebox (process-drawable)
|
||||
((parent-override (pointer camera-voicebox) :offset 12)
|
||||
(base-trans vector :inline :offset-assert 176)
|
||||
(seeker cam-float-seeker :inline :offset-assert 192)
|
||||
(blend float :offset-assert 216)
|
||||
(twist float :offset-assert 220)
|
||||
(hint handle :offset-assert 224)
|
||||
)
|
||||
:heap-base #x80
|
||||
:method-count-assert 23
|
||||
:size-assert #xe8
|
||||
:flag-assert #x17008000e8
|
||||
(:methods
|
||||
(enter () _type_ :state 20)
|
||||
(idle () _type_ :state 21)
|
||||
(exit () _type_ :state 22)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type voicebox
|
||||
(defmethod inspect voicebox ((obj voicebox))
|
||||
(let ((t9-0 (method-of-type process-drawable inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~T~Tbase-trans: ~`vector`P~%" (-> obj base-trans))
|
||||
(format #t "~T~Tseeker: #<cam-float-seeker @ #x~X>~%" (-> obj seeker))
|
||||
(format #t "~T~Tblend: ~f~%" (-> obj blend))
|
||||
(format #t "~T~Ttwist: ~f~%" (-> obj twist))
|
||||
(format #t "~T~Thint: ~D~%" (-> obj hint))
|
||||
obj
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate empty-state (process)
|
||||
:code
|
||||
(the-as (function none :behavior process) nothing)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup *voicebox-sg* speaker
|
||||
0
|
||||
2
|
||||
((1 (meters 999999)))
|
||||
:bounds (static-spherem 0 0 0 4)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
;; definition for function voicebox-track
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
;; Used lq/sq
|
||||
(defbehavior voicebox-track voicebox ()
|
||||
(let ((gp-0 (new 'stack-no-clear 'vector))
|
||||
(s5-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set! (-> gp-0 quad) (-> self parent-override 0 trans quad))
|
||||
(set! (-> s5-0 quad) (-> (target-pos 68) quad))
|
||||
(when *target*
|
||||
(let ((a2-0 (vector-z-quaternion! (new-stack-vector0) (-> *target* control unknown-quaternion00))))
|
||||
(vector+float*! s5-0 s5-0 a2-0 (* -16384.0 (- 1.0 (-> self blend))))
|
||||
)
|
||||
)
|
||||
(vector-lerp! (-> self root trans) gp-0 s5-0 (-> self blend))
|
||||
)
|
||||
(+!
|
||||
(-> self root trans y)
|
||||
(* 1638.4 (sin (* 54.613335 (the float (mod (-> *display* base-frame-counter) 1200)))))
|
||||
)
|
||||
(let ((gp-1 (new 'stack-no-clear 'quaternion)))
|
||||
(forward-up->quaternion
|
||||
gp-1
|
||||
(vector-normalize! (vector-! (new 'stack-no-clear 'vector) (target-pos 37) (-> self root trans)) 1.0)
|
||||
(new 'static 'vector :y 1.0 :w 1.0)
|
||||
)
|
||||
(rotate-toward-orientation! (-> self root) gp-1 65536.0 5461.3335)
|
||||
)
|
||||
(when *target*
|
||||
(let* ((gp-2 (-> *target* control))
|
||||
(s4-2 (-> self root trans))
|
||||
(f0-8
|
||||
(deg-diff (y-angle gp-2) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s4-2 (-> gp-2 trans))))
|
||||
)
|
||||
)
|
||||
(if (< 0.0 f0-8)
|
||||
(set! (-> self twist) (seek (-> self twist) -0.4 (* 0.3 (-> *display* seconds-per-frame))))
|
||||
(set! (-> self twist) (seek (-> self twist) 0.4 (* 0.3 (-> *display* seconds-per-frame))))
|
||||
)
|
||||
)
|
||||
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-9 from) self)
|
||||
(set! (-> a1-9 num-params) 0)
|
||||
(set! (-> a1-9 message) 'blocked-side?)
|
||||
(case (send-event-function (ppointer->process (-> self parent-override)) a1-9)
|
||||
((1)
|
||||
(set! (-> self twist) 0.5)
|
||||
)
|
||||
((2)
|
||||
(set! (-> self twist) -0.5)
|
||||
)
|
||||
((3)
|
||||
(set! (-> self twist) 0.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(send-event (ppointer->process (-> self parent-override)) 'joystick (-> self twist) -1.0)
|
||||
)
|
||||
(set! (-> self root scale x) (lerp-scale 1.0 0.0 (-> self blend) 0.8 1.0))
|
||||
(set! (-> self root scale y) (-> self root scale x))
|
||||
(set! (-> self root scale z) (-> self root scale x))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate enter (voicebox)
|
||||
:virtual #t
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2
|
||||
(('die)
|
||||
(go-virtual exit)
|
||||
)
|
||||
)
|
||||
)
|
||||
:trans
|
||||
(behavior ()
|
||||
(voicebox-track)
|
||||
(if (< 0.1 (-> self blend))
|
||||
(point-toward-point-clear-roll-pitch! (-> self root) (target-pos 0))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(set-setting! *setting-control* self 'sound-flava #f 20.0 6)
|
||||
(if (and *target* (logtest? (-> *target* control root-prim prim-core action) 512))
|
||||
(send-event
|
||||
(ppointer->process (-> self parent-override))
|
||||
'set-dist
|
||||
(new 'static 'vector :z 8192.0 :w 1.0)
|
||||
(new 'static 'vector :y 20480.0 :z 12288.0 :w 1.0)
|
||||
)
|
||||
(send-event
|
||||
(ppointer->process (-> self parent-override))
|
||||
'set-dist
|
||||
(new 'static 'vector :z 16384.0 :w 1.0)
|
||||
(new 'static 'vector :y 20480.0 :z 40960.0 :w 1.0)
|
||||
)
|
||||
)
|
||||
(init-cam-float-seeker (-> self seeker) 1.0 0.01 0.022222223 0.1)
|
||||
(set! (-> self seeker target) 0.0)
|
||||
(while (< 0.0001 (-> self blend))
|
||||
(update! (-> self seeker) 0.0)
|
||||
(set! (-> self blend) (-> self seeker value))
|
||||
(suspend)
|
||||
)
|
||||
(set! (-> self blend) 0.0)
|
||||
(go-virtual idle)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior voicebox) ja-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate idle (voicebox)
|
||||
:virtual #t
|
||||
:event
|
||||
(-> (method-of-type voicebox enter) event)
|
||||
:trans
|
||||
voicebox-track
|
||||
:code
|
||||
(behavior ()
|
||||
(while #t
|
||||
(suspend)
|
||||
(let ((a0-0 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-0 param 0) 1.0)
|
||||
(joint-control-channel-group-eval! a0-0 (the-as art-joint-anim #f) num-func-loop!)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior voicebox) ja-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate exit (voicebox)
|
||||
:virtual #t
|
||||
:trans
|
||||
voicebox-track
|
||||
:code
|
||||
(behavior ()
|
||||
(clear-pending-settings-from-process *setting-control* self 'sound-flava)
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(set! (-> self seeker target) 1.0)
|
||||
(while (and (< (-> self blend) 0.9999) (not (and
|
||||
(not (handle->process (-> self hint)))
|
||||
(>= (- (-> *display* base-frame-counter) (-> self state-time)) 15)
|
||||
(-> *setting-control* current hint)
|
||||
)
|
||||
)
|
||||
)
|
||||
(update! (-> self seeker) 0.0)
|
||||
(set! (-> self blend) (-> self seeker value))
|
||||
(suspend)
|
||||
)
|
||||
(set! (-> self blend) 1.0)
|
||||
(send-event (ppointer->process (-> self parent-override)) 'go empty-state)
|
||||
(suspend)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior voicebox) ja-post)
|
||||
)
|
||||
|
||||
;; definition for function voicebox-init-by-other
|
||||
;; INFO: Return type mismatch object vs none.
|
||||
;; Used lq/sq
|
||||
(defbehavior voicebox-init-by-other voicebox ((arg0 vector) (arg1 handle))
|
||||
(set! (-> self root) (new 'process 'trsqv))
|
||||
(set! (-> self hint) arg1)
|
||||
(set! (-> self root trans quad) (-> arg0 quad))
|
||||
(set! (-> self base-trans quad) (-> arg0 quad))
|
||||
(initialize-skeleton self *voicebox-sg* '())
|
||||
(set! (-> self blend) 1.0)
|
||||
(go-virtual enter)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate cam-voicebox (camera-voicebox)
|
||||
:event
|
||||
(-> cam-string event)
|
||||
:enter
|
||||
(-> cam-string enter)
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (zero? (logand (-> *camera* master-options) 2))
|
||||
(deactivate self)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(-> cam-string code)
|
||||
)
|
||||
|
||||
;; definition for function voicebox-spawn
|
||||
(defun voicebox-spawn ((arg0 process) (arg1 vector))
|
||||
(with-pp
|
||||
(let* ((s3-0 (get-process *camera-dead-pool* camera-voicebox #x4000))
|
||||
(s4-0 (when s3-0
|
||||
(let ((t9-1 (method-of-type camera-voicebox activate)))
|
||||
(t9-1 (the-as camera-voicebox s3-0) arg0 'camera-voicebox (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process s3-0 cam-slave-init cam-voicebox #f)
|
||||
(-> s3-0 ppointer)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when s4-0
|
||||
(let ((s5-1 (get-process *default-dead-pool* voicebox #x4000)))
|
||||
(when s5-1
|
||||
(let ((t9-4 (method-of-type voicebox activate)))
|
||||
(t9-4 (the-as voicebox s5-1) (ppointer->process s4-0) 'voicebox (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process s5-1 voicebox-init-by-other arg1 (process->handle pp))
|
||||
(-> s5-1 ppointer)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
+2
-2
@@ -377,7 +377,7 @@
|
||||
(point-in-bounds? (_type_ vector) symbol 10)
|
||||
(dummy-11 (_type_ vector) none 11)
|
||||
(dummy-12 () none 12)
|
||||
(dummy-13 () none 13)
|
||||
(dummy-13 (_type_ vector vector) vector 13)
|
||||
(set-current-poly! (_type_ nav-poly) none 14)
|
||||
(set-target-pos! (_type_ vector) none 15)
|
||||
(dummy-16 (_type_ vector) nav-poly 16)
|
||||
@@ -391,7 +391,7 @@
|
||||
(dummy-24 (_type_ float clip-travel-vector-to-mesh-return-info) none 24)
|
||||
(dummy-25 (_type_ vector float) symbol 25)
|
||||
(dummy-26 (_type_) none 26)
|
||||
(dummy-27 () none 27)
|
||||
(dummy-27 (_type_) none 27)
|
||||
(dummy-28 (_type_ int) none 28)
|
||||
(should-display? (_type_) symbol 29)
|
||||
(dummy-30 () none 30)
|
||||
|
||||
+6
-6
@@ -1843,9 +1843,9 @@
|
||||
(-> self control unknown-vector11)
|
||||
(-> self control unknown-vector14)
|
||||
)
|
||||
(let ((a1-3 (new 'stack-no-clear 'collide-edge-hold-list)))
|
||||
(set! (-> a1-3 num-allocs) (the-as uint 1))
|
||||
(set! (-> a1-3 num-attempts) (the-as uint *touching-list*))
|
||||
(let ((a1-3 (new 'stack-no-clear 'overlaps-others-params)))
|
||||
(set! (-> a1-3 options) (the-as uint 1))
|
||||
(set! (-> a1-3 tlist) *touching-list*)
|
||||
(dummy-40 (-> self control) a1-3)
|
||||
)
|
||||
(post-flag-setup)
|
||||
@@ -1955,9 +1955,9 @@
|
||||
(-> self control unknown-vector11)
|
||||
(-> self control unknown-vector14)
|
||||
)
|
||||
(let ((a1-2 (new 'stack-no-clear 'collide-edge-hold-list)))
|
||||
(set! (-> a1-2 num-allocs) (the-as uint 1))
|
||||
(set! (-> a1-2 num-attempts) (the-as uint *touching-list*))
|
||||
(let ((a1-2 (new 'stack-no-clear 'overlaps-others-params)))
|
||||
(set! (-> a1-2 options) (the-as uint 1))
|
||||
(set! (-> a1-2 tlist) *touching-list*)
|
||||
(dummy-40 (-> self control) a1-2)
|
||||
)
|
||||
(target-calc-camera-pos)
|
||||
|
||||
+1652
File diff suppressed because it is too large
Load Diff
+1541
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -197,7 +197,7 @@ nav-enemy-default-event-handler
|
||||
;; definition for function babak-with-cannon-compute-ride-point
|
||||
;; Used lq/sq
|
||||
(defun babak-with-cannon-compute-ride-point ((arg0 mistycannon) (arg1 vector))
|
||||
(set! (-> arg1 quad) (-> arg0 root trans quad))
|
||||
(set! (-> arg1 quad) (-> arg0 root-override trans quad))
|
||||
(let ((a1-4 (new 'static 'vector :y 18149.377 :z -17289.217 :w 1.0))
|
||||
(a2-0 (-> arg0 node-list data 3 bone transform))
|
||||
)
|
||||
|
||||
+252
@@ -0,0 +1,252 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type launcherdoor
|
||||
(deftype launcherdoor (process-drawable)
|
||||
((root-override collide-shape :offset 112)
|
||||
(notify-player-passed-thru? symbol :offset-assert 176)
|
||||
(thresh-y float :offset-assert 180)
|
||||
(open-speed float :offset-assert 184)
|
||||
(close-speed float :offset-assert 188)
|
||||
(load-mode symbol :offset-assert 192)
|
||||
)
|
||||
:heap-base #x60
|
||||
:method-count-assert 20
|
||||
:size-assert #xc4
|
||||
:flag-assert #x14006000c4
|
||||
)
|
||||
|
||||
;; definition for method 3 of type launcherdoor
|
||||
(defmethod inspect launcherdoor ((obj launcherdoor))
|
||||
(let ((t9-0 (method-of-type process-drawable inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~T~Tnotify-player-passed-thru?: ~A~%" (-> obj notify-player-passed-thru?))
|
||||
(format #t "~T~Tthresh-y: ~f~%" (-> obj thresh-y))
|
||||
(format #t "~T~Topen-speed: ~f~%" (-> obj open-speed))
|
||||
(format #t "~T~Tclose-speed: ~f~%" (-> obj close-speed))
|
||||
(format #t "~T~Tload-mode: ~A~%" (-> obj load-mode))
|
||||
obj
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup *launcherdoor-sg* launcherdoor
|
||||
0
|
||||
-1
|
||||
((1 (meters 20)) (2 (meters 999999)))
|
||||
:bounds (static-spherem 0 0 0 4)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup *launcherdoor-maincave-sg* launcherdoor-maincave
|
||||
0
|
||||
-1
|
||||
((1 (meters 20)) (2 (meters 999999)))
|
||||
:bounds (static-spherem 0 0 0 4)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate launcherdoor-closed (launcherdoor)
|
||||
:code
|
||||
(behavior ((arg0 symbol))
|
||||
(if (not arg0)
|
||||
(sound-play-by-name (static-sound-name "ldoor-close") (new-sound-id) 1024 0 0 1 #t)
|
||||
)
|
||||
(when *target*
|
||||
(case (-> *target* current-level name)
|
||||
(('jungle 'jungleb)
|
||||
(send-event *target* 'no-load-wait 6000)
|
||||
)
|
||||
)
|
||||
)
|
||||
(restore-collide-with-as (-> self root-override))
|
||||
(let ((a0-7 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-7 param 0) 0.0)
|
||||
(set! (-> a0-7 param 1) 1.0)
|
||||
(joint-control-channel-group! a0-7 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
(when arg0
|
||||
(let ((v1-22 (-> self skel root-channel 0)))
|
||||
(set! (-> v1-22 num-func) num-func-identity)
|
||||
(set! (-> v1-22 frame-num) 0.0)
|
||||
)
|
||||
(set! (-> self draw force-lod) 1)
|
||||
)
|
||||
(suspend)
|
||||
(while #t
|
||||
(if (and
|
||||
*target*
|
||||
(= (-> *target* control unknown-surface00 name) 'launch-jump)
|
||||
(< (-> *target* control trans y) (-> self thresh-y))
|
||||
)
|
||||
(go launcherdoor-open #f)
|
||||
)
|
||||
(let ((a0-13 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-13 param 0) 0.0)
|
||||
(set! (-> a0-13 param 1) (-> self close-speed))
|
||||
(joint-control-channel-group-eval! a0-13 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
(suspend)
|
||||
(when (ja-done? 0)
|
||||
(set! (-> self draw force-lod) 1)
|
||||
(when (-> self notify-player-passed-thru?)
|
||||
(set! (-> self notify-player-passed-thru?) #f)
|
||||
(let* ((gp-1 (-> self entity))
|
||||
(s5-1 (entity-actor-count gp-1 'alt-actor))
|
||||
)
|
||||
(dotimes (s4-1 s5-1)
|
||||
(let ((v1-43 (entity-actor-lookup gp-1 'alt-actor s4-1)))
|
||||
(if v1-43
|
||||
(send-event
|
||||
(if v1-43
|
||||
(-> v1-43 extra process)
|
||||
)
|
||||
'notify
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(case (-> self load-mode)
|
||||
(('jungle)
|
||||
(load-state-want-levels 'village1 'jungle)
|
||||
(load-state-want-display-level 'village1 'display)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior launcherdoor) ja-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate launcherdoor-open (launcherdoor)
|
||||
:code
|
||||
(behavior ((arg0 symbol))
|
||||
(if (not arg0)
|
||||
(sound-play-by-name (static-sound-name "ldoor-open") (new-sound-id) 1024 0 0 1 #t)
|
||||
)
|
||||
(set! (-> self draw force-lod) 0)
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((a0-4 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-4 param 1) 1.0)
|
||||
(joint-control-channel-group! a0-4 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
(when arg0
|
||||
(let ((v1-16 (-> self skel root-channel 0)))
|
||||
(set! (-> v1-16 num-func) num-func-identity)
|
||||
(set! (-> v1-16 frame-num) (the float (+ (-> v1-16 frame-group data 0 length) -1)))
|
||||
)
|
||||
)
|
||||
(while #t
|
||||
(when (or
|
||||
(not *target*)
|
||||
(!= (-> *target* control unknown-surface00 name) 'launch-jump)
|
||||
(< (+ 4096.0 (-> self root-override trans y)) (-> *target* control trans y))
|
||||
)
|
||||
(when (and *target* (< (-> self thresh-y) (-> *target* control trans y)))
|
||||
(let ((a1-3 (res-lump-struct (-> self entity) 'continue-name structure)))
|
||||
(when a1-3
|
||||
(let ((v1-36 (set-continue! *game-info* (the-as basic a1-3))))
|
||||
(load-commands-set! *level* (-> v1-36 load-commands))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> self notify-player-passed-thru?) #t)
|
||||
)
|
||||
(go launcherdoor-closed #f)
|
||||
)
|
||||
(let ((a0-16 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-16 param 0) (the float (+ (-> a0-16 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-16 param 1) (-> self open-speed))
|
||||
(joint-control-channel-group-eval! a0-16 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior launcherdoor) ja-post)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type launcherdoor
|
||||
;; INFO: Return type mismatch object vs none.
|
||||
(defmethod init-from-entity! launcherdoor ((obj launcherdoor) (arg0 entity-actor))
|
||||
(set! (-> obj notify-player-passed-thru?) #f)
|
||||
(set! (-> obj open-speed) 4.0)
|
||||
(set! (-> obj close-speed) 2.0)
|
||||
(let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
|
||||
(let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
|
||||
(set! (-> s3-0 prim-core collide-as) (the-as uint 256))
|
||||
(set! (-> s3-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s3-0 prim-core action) (the-as uint 1))
|
||||
(set! (-> s3-0 prim-core offense) 4)
|
||||
(set! (-> s3-0 transform-index) 0)
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 14336.0)
|
||||
(set-root-prim! s4-0 s3-0)
|
||||
)
|
||||
(set! (-> 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)
|
||||
(cond
|
||||
((= (-> (if (-> obj entity)
|
||||
(-> obj entity extra level)
|
||||
(-> *level* level-default)
|
||||
)
|
||||
name
|
||||
)
|
||||
'maincave
|
||||
)
|
||||
(set! (-> obj close-speed) 4.0)
|
||||
(initialize-skeleton obj *launcherdoor-maincave-sg* '())
|
||||
(ja-channel-set! 1)
|
||||
(let ((s5-1 (-> obj skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
s5-1
|
||||
(the-as art-joint-anim (-> obj draw art-group data 3))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> s5-1 frame-num) 0.0)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(initialize-skeleton obj *launcherdoor-sg* '())
|
||||
(ja-channel-set! 1)
|
||||
(let ((s5-2 (-> obj skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
s5-2
|
||||
(the-as art-joint-anim (-> obj draw art-group data 3))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> s5-2 frame-num) 0.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(transform-post)
|
||||
(case (-> obj entity extra level name)
|
||||
(('jungle)
|
||||
(set! (-> obj draw shadow-mask) (the-as uint 28))
|
||||
)
|
||||
)
|
||||
(set! (-> obj load-mode) (-> (if (-> obj entity)
|
||||
(-> obj entity extra level)
|
||||
(-> *level* level-default)
|
||||
)
|
||||
name
|
||||
)
|
||||
)
|
||||
(set! (-> obj thresh-y) (+ -81920.0 (-> obj root-override trans y)))
|
||||
(if (and *target* (= (-> *target* control unknown-surface00 name) 'launch-jump))
|
||||
(go launcherdoor-open #t)
|
||||
(go launcherdoor-closed #t)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
+1
-1
@@ -3933,7 +3933,7 @@
|
||||
(when (and arg1 (nonzero? (-> self looping-sound 0)))
|
||||
(update! (-> self looping-sound 0))
|
||||
(when (and *target* (zero? (logand (-> *target* state-flags) #x80f8)))
|
||||
(let ((t2-0 (new 'stack-no-clear 'collide-mesh-cache-tri))
|
||||
(let ((t2-0 (new 'stack-no-clear 'collide-tri-result))
|
||||
(a2-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(vector-! a2-0 gp-0 s4-0)
|
||||
|
||||
+448
@@ -0,0 +1,448 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type darkvine
|
||||
(deftype darkvine (process-drawable)
|
||||
((root-override collide-shape :offset 112)
|
||||
(speed float :offset-assert 176)
|
||||
(tip-index int8 :offset-assert 180)
|
||||
(dangerous symbol :offset-assert 184)
|
||||
(vulnerable symbol :offset-assert 188)
|
||||
(hit-player symbol :offset-assert 192)
|
||||
(touch-time uint64 :offset-assert 200)
|
||||
(player-attack-id int32 :offset-assert 208)
|
||||
)
|
||||
:heap-base #x70
|
||||
:method-count-assert 20
|
||||
:size-assert #xd4
|
||||
:flag-assert #x14007000d4
|
||||
)
|
||||
|
||||
;; definition for method 3 of type darkvine
|
||||
(defmethod inspect darkvine ((obj darkvine))
|
||||
(let ((t9-0 (method-of-type process-drawable inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~T~Tspeed: ~f~%" (-> obj speed))
|
||||
(format #t "~T~Ttip-index: ~D~%" (-> obj tip-index))
|
||||
(format #t "~T~Tdangerous: ~A~%" (-> obj dangerous))
|
||||
(format #t "~T~Tvulnerable: ~A~%" (-> obj vulnerable))
|
||||
(format #t "~T~Thit-player: ~A~%" (-> obj hit-player))
|
||||
(format #t "~T~Ttouch-time: ~D~%" (-> obj touch-time))
|
||||
(format #t "~T~Tplayer-attack-id: ~D~%" (-> obj player-attack-id))
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition for method 12 of type darkvine
|
||||
(defmethod run-logic? darkvine ((obj darkvine))
|
||||
(or
|
||||
(zero? (logand (-> obj mask) (process-mask actor-pause)))
|
||||
(or
|
||||
(and
|
||||
(nonzero? (-> obj draw))
|
||||
(logtest? (-> obj draw status) 8)
|
||||
(>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root-override pause-adjust-distance))
|
||||
(vector-vector-distance (-> obj root-override trans) (math-camera-pos))
|
||||
)
|
||||
)
|
||||
(and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel)))
|
||||
(and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup *darkvine-sg* darkvine
|
||||
0
|
||||
3
|
||||
((1 (meters 20)) (2 (meters 999999)))
|
||||
:bounds (static-spherem 0 2 0 3.5)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-group-id-table* 175)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 3
|
||||
:duration #x96
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-darkvine-puffs"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 3 (sp-item 800) (sp-item 801) (sp-item 802))
|
||||
:bounds
|
||||
(new 'static 'sphere :y 8192.0 :w 12288.0)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 800) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 19
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2))
|
||||
(sp-flt spt-num 0.8)
|
||||
(sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 30.0 20.0 1.0)
|
||||
(sp-rnd-flt spt-g 25.0 10.0 1.0)
|
||||
(sp-rnd-flt spt-b 10.0 5.0 1.0)
|
||||
(sp-rnd-flt spt-a 0.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-vel-x (meters 0.0016666667) (meters 0.0033333334) 1.0)
|
||||
(sp-flt spt-vel-y (meters 0.013333334))
|
||||
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
|
||||
(sp-flt spt-fade-a 0.1882353)
|
||||
(sp-flt spt-accel-y -2.048)
|
||||
(sp-int spt-timer 255)
|
||||
(sp-cpuinfo-flags bit2 bit12)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 802) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 18
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2))
|
||||
(sp-flt spt-num 0.25)
|
||||
(sp-rnd-flt spt-x (meters 0.0) (meters 0.6) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.2) 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 45.0 45.0 1.0)
|
||||
(sp-rnd-flt spt-g 45.0 10.0 1.0)
|
||||
(sp-rnd-flt spt-b 20.0 6.0 1.0)
|
||||
(sp-flt spt-a 96.0)
|
||||
(sp-rnd-flt spt-vel-x (meters 0.0016666667) (meters 0.0033333334) 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.013333334) 1.0)
|
||||
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
|
||||
(sp-flt spt-accel-y -2.7306666)
|
||||
(sp-int spt-timer 375)
|
||||
(sp-cpuinfo-flags bit2 bit12)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 801) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 18
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2))
|
||||
(sp-flt spt-num 0.5)
|
||||
(sp-rnd-flt spt-x (meters 0.0) (meters 0.6) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.4) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-scale-y (meters 0.1) (meters 0.1) 1.0)
|
||||
(sp-rnd-flt spt-r 10.0 6.0 1.0)
|
||||
(sp-rnd-flt spt-g 40.0 90.0 1.0)
|
||||
(sp-rnd-flt spt-b 10.0 6.0 1.0)
|
||||
(sp-flt spt-a 96.0)
|
||||
(sp-rnd-flt spt-vel-x (meters 0.0016666667) (meters 0.0033333334) 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.01) (meters 0.013333334) 1.0)
|
||||
(sp-rnd-int-flt spt-rotvel-z (degrees -1.2) 1 436.90668)
|
||||
(sp-flt spt-accel-y -1.3653333)
|
||||
(sp-int spt-timer 600)
|
||||
(sp-cpuinfo-flags bit2 bit12)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function darkvine-event-handler
|
||||
;; INFO: Return type mismatch none vs object.
|
||||
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 50]
|
||||
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 52]
|
||||
(defbehavior darkvine-event-handler darkvine ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(let ((v1-0 arg2))
|
||||
(the-as object (cond
|
||||
((= v1-0 'touch)
|
||||
(dummy-45 (-> self root-override))
|
||||
(when (-> self dangerous)
|
||||
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-1 from) self)
|
||||
(set! (-> a1-1 num-params) 2)
|
||||
(set! (-> a1-1 message) 'attack)
|
||||
(set! (-> a1-1 param 0) (-> arg3 param 0))
|
||||
(set! (-> a1-1 param 1) (the-as uint (new 'static 'attack-info)))
|
||||
(if (send-event-function arg0 a1-1)
|
||||
(dummy-54 (-> self root-override) 2 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
((= v1-0 'attack)
|
||||
(let ((v1-10 (-> arg3 param 2)))
|
||||
(cond
|
||||
((!= v1-10 (-> self player-attack-id))
|
||||
(set! (-> self player-attack-id) (the-as int v1-10))
|
||||
(when (-> self vulnerable)
|
||||
(dummy-45 (-> self root-override))
|
||||
(go darkvine-retreat)
|
||||
)
|
||||
)
|
||||
(else
|
||||
'push
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate darkvine-idle (darkvine)
|
||||
:event
|
||||
darkvine-event-handler
|
||||
:code
|
||||
(behavior ()
|
||||
(set! (-> self dangerous) #t)
|
||||
(set! (-> self vulnerable) #t)
|
||||
(let ((f30-0 0.0))
|
||||
(while #t
|
||||
(if (logtest? (get-reminder (get-task-control (game-task jungle-plant)) 0) 1)
|
||||
(go darkvine-die #f)
|
||||
)
|
||||
(let ((a0-3 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 3)))
|
||||
(set! (-> a0-3 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 3)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-3 param 1) (-> self speed))
|
||||
(set! (-> a0-3 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-3 (the-as art-joint-anim (-> self draw art-group data 3)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(if (and (>= (ja-aframe-num 0) 120.0) (>= 180.0 (ja-aframe-num 0)))
|
||||
(seek-toward-yaw-angle! (-> self root-override) f30-0 32768.0 150)
|
||||
)
|
||||
(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) (-> self speed))
|
||||
(joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(set! f30-0 (if (rand-vu-percent? 0.5)
|
||||
(+ 16384.0 f30-0)
|
||||
(+ -16384.0 f30-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(behavior ()
|
||||
(when (and
|
||||
(-> self hit-player)
|
||||
(or (not *target*) (>= (- (-> *display* base-frame-counter) (the-as int (-> self touch-time))) 15))
|
||||
)
|
||||
(dummy-54 (-> self root-override) 2 4)
|
||||
(set! (-> self hit-player) #f)
|
||||
)
|
||||
(transform-post)
|
||||
(if *target*
|
||||
(look-at-enemy!
|
||||
(-> *target* neck)
|
||||
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data (-> self tip-index)))
|
||||
'nothing
|
||||
self
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate darkvine-retreat (darkvine)
|
||||
:event
|
||||
darkvine-event-handler
|
||||
:code
|
||||
(behavior ()
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(set! (-> self dangerous) #f)
|
||||
(set! (-> self vulnerable) #f)
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(ja-channel-push! 1 45)
|
||||
(let ((a0-2 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 4)))
|
||||
(set! (-> a0-2 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 4)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-2 param 1) 1.0)
|
||||
(set! (-> a0-2 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-2 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(sp-launch-particles-var
|
||||
*sp-particle-system-2d*
|
||||
(-> *part-id-table* 800)
|
||||
(-> self root-override trans)
|
||||
(the-as sparticle-launch-state #f)
|
||||
(the-as sparticle-launch-control #f)
|
||||
1.0
|
||||
)
|
||||
(suspend)
|
||||
(let ((a0-4 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-4 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(ja-channel-set! 0)
|
||||
(let ((gp-0 (-> *display* base-frame-counter)))
|
||||
(until (>= (- (-> *display* base-frame-counter) gp-0) 600)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-1
|
||||
(let ((t9-7 (method-of-type part-tracker activate)))
|
||||
(t9-7 (the-as part-tracker gp-1) *entity-pool* 'part-tracker (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
gp-1
|
||||
part-tracker-init
|
||||
(-> *part-group-id-table* 175)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> self root-override trans)
|
||||
)
|
||||
(-> gp-1 ppointer)
|
||||
)
|
||||
)
|
||||
(let ((gp-2 (-> *display* base-frame-counter)))
|
||||
(until (>= (- (-> *display* base-frame-counter) gp-2) 150)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(set! (-> self dangerous) #t)
|
||||
(logior! (-> self mask) (process-mask actor-pause))
|
||||
(ja-channel-set! 1)
|
||||
(let ((a0-11 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-11 frame-group) (the-as art-joint-anim (-> self draw art-group data 5)))
|
||||
(set! (-> a0-11 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-11 param 1) 1.0)
|
||||
(set! (-> a0-11 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-11 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-12 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-12 param 0) (the float (+ (-> a0-12 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-12 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-12 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(go darkvine-idle)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(-> darkvine-idle post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate darkvine-die (darkvine)
|
||||
:code
|
||||
(behavior ((arg0 symbol))
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(if arg0
|
||||
(ja-channel-set! 1)
|
||||
(ja-channel-push! 1 150)
|
||||
)
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
gp-0
|
||||
(the-as art-joint-anim (-> self draw art-group data 6))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> gp-0 frame-num) 0.0)
|
||||
)
|
||||
(while (!= (-> self skel root-channel 0) (-> self skel channel))
|
||||
(suspend)
|
||||
)
|
||||
(logior! (-> self mask) (process-mask sleep))
|
||||
(anim-loop)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(-> darkvine-idle post)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type darkvine
|
||||
;; INFO: Return type mismatch object vs none.
|
||||
(defmethod init-from-entity! darkvine ((obj darkvine) (arg0 entity-actor))
|
||||
(set! (-> obj mask) (logior (process-mask enemy) (-> obj mask)))
|
||||
(let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
|
||||
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 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 3072))
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 16384.0)
|
||||
(set-root-prim! s4-0 s3-0)
|
||||
(let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2))))
|
||||
(set! (-> s2-0 prim-core collide-as) (the-as uint 256))
|
||||
(set! (-> s2-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-0 prim-core action) (the-as uint 3073))
|
||||
(set! (-> s2-0 prim-core offense) 4)
|
||||
(set! (-> s2-0 transform-index) 5)
|
||||
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 3276.8)
|
||||
(append-prim s3-0 s2-0)
|
||||
)
|
||||
(let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2))))
|
||||
(set! (-> s2-1 prim-core collide-as) (the-as uint 256))
|
||||
(set! (-> s2-1 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-1 prim-core action) (the-as uint 3073))
|
||||
(set! (-> s2-1 prim-core offense) 4)
|
||||
(set! (-> s2-1 transform-index) 6)
|
||||
(set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 2867.2)
|
||||
(append-prim s3-0 s2-1)
|
||||
)
|
||||
(let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2))))
|
||||
(set! (-> s2-2 prim-core collide-as) (the-as uint 256))
|
||||
(set! (-> s2-2 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-2 prim-core action) (the-as uint 3073))
|
||||
(set! (-> s2-2 prim-core offense) 4)
|
||||
(set! (-> s2-2 transform-index) 7)
|
||||
(set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 2457.6)
|
||||
(append-prim s3-0 s2-2)
|
||||
)
|
||||
(let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2))))
|
||||
(set! (-> s2-3 prim-core collide-as) (the-as uint 256))
|
||||
(set! (-> s2-3 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-3 prim-core action) (the-as uint 3073))
|
||||
(set! (-> s2-3 prim-core offense) 4)
|
||||
(set! (-> s2-3 transform-index) 8)
|
||||
(set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 2048.0)
|
||||
(append-prim s3-0 s2-3)
|
||||
)
|
||||
)
|
||||
(set! (-> s4-0 nav-radius) 2048.0)
|
||||
(backup-collide-with-as s4-0)
|
||||
(set! (-> obj root-override) s4-0)
|
||||
)
|
||||
(set! (-> obj tip-index) 8)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(initialize-skeleton obj *darkvine-sg* '())
|
||||
(nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f))
|
||||
(set! (-> obj hit-player) #f)
|
||||
(set! (-> obj speed) (rand-vu-float-range 0.95 1.05))
|
||||
(if (logtest? (get-reminder (get-task-control (game-task jungle-plant)) 0) 1)
|
||||
(go darkvine-die #t)
|
||||
)
|
||||
(go darkvine-idle)
|
||||
(none)
|
||||
)
|
||||
+2457
File diff suppressed because it is too large
Load Diff
+782
@@ -0,0 +1,782 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type dark-crystal
|
||||
(deftype dark-crystal (process-drawable)
|
||||
((root-override collide-shape :offset 112)
|
||||
(crystal-num int32 :offset-assert 176)
|
||||
(underwater? symbol :offset-assert 180)
|
||||
(explode-danger-radius float :offset-assert 184)
|
||||
(lit-color-mult vector :inline :offset-assert 192)
|
||||
(lit-color-emissive vector :inline :offset-assert 208)
|
||||
(unlit-color-mult vector :inline :offset-assert 224)
|
||||
(unlit-color-emissive vector :inline :offset-assert 240)
|
||||
)
|
||||
:heap-base #x90
|
||||
:method-count-assert 22
|
||||
:size-assert #x100
|
||||
:flag-assert #x1600900100
|
||||
(:methods
|
||||
(dummy-20 (_type_) none 20)
|
||||
(dummy-21 (_type_) symbol 21)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type dark-crystal
|
||||
(defmethod inspect dark-crystal ((obj dark-crystal))
|
||||
(let ((t9-0 (method-of-type process-drawable inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~T~Tcrystal-num: ~D~%" (-> obj crystal-num))
|
||||
(format #t "~T~Tunderwater?: ~A~%" (-> obj underwater?))
|
||||
(format #t "~T~Texplode-danger-radius: ~f~%" (-> obj explode-danger-radius))
|
||||
(format #t "~T~Tlit-color-mult: #<vector @ #x~X>~%" (-> obj lit-color-mult))
|
||||
(format #t "~T~Tlit-color-emissive: #<vector @ #x~X>~%" (-> obj lit-color-emissive))
|
||||
(format #t "~T~Tunlit-color-mult: #<vector @ #x~X>~%" (-> obj unlit-color-mult))
|
||||
(format #t "~T~Tunlit-color-emissive: #<vector @ #x~X>~%" (-> obj unlit-color-emissive))
|
||||
obj
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup *dark-crystal-sg* dark-crystal
|
||||
0
|
||||
-1
|
||||
((1 (meters 999999)))
|
||||
:bounds (static-spherem 0 3.4 0 3.8)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup *dark-crystal-explode-sg* dark-crystal
|
||||
3
|
||||
-1
|
||||
((4 (meters 999999)))
|
||||
:bounds (static-spherem 0 -15 0 50)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
;; definition for symbol *dark-crystal-flash-delays*, type (array int32)
|
||||
(define
|
||||
*dark-crystal-flash-delays*
|
||||
(the-as (array int32)
|
||||
(new 'static 'boxed-array :type int32 :length 9 :allocated-length 9 #xb4 #x96 #x78 90 60 30 15 7 3)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for symbol *dark-crystal-exploder-params*, type joint-exploder-static-params
|
||||
(define
|
||||
*dark-crystal-exploder-params*
|
||||
(new 'static 'joint-exploder-static-params
|
||||
:joints
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type joint-exploder-static-joint-params :length 15 :allocated-length 15
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 13 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 14 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 15 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 16 :parent-joint-index -1)
|
||||
(new 'static 'joint-exploder-static-joint-params :joint-index 17 :parent-joint-index -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-group-id-table* 322)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 69
|
||||
:duration #x4b
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-dark-crystal-gnd-explode"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 69
|
||||
(sp-item 2153 :fade-after (meters 100.0) :period 600 :length 5 :binding 296)
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
|
||||
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
|
||||
(sp-item 2154 :period 600 :length 5)
|
||||
(sp-item 2155 :period 600 :length 40)
|
||||
(sp-item 2156 :period 600 :length 20)
|
||||
(sp-item 2157 :period 600 :length 20)
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 65536.0)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2153) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 16
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
|
||||
(sp-flt spt-num 32.0)
|
||||
(sp-rnd-flt spt-x (meters -2.0) (meters 4.0) 1.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 2.0) 1.0)
|
||||
(sp-rnd-flt spt-z -8192.0 16384.0 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.053333335) (meters 0.026666667) 1.0)
|
||||
(sp-flt spt-accel-y -1.3653333)
|
||||
(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)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2155) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 22
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 24.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.8) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 128.0 128.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 96.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.16) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters -0.0026666666))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0)
|
||||
(sp-flt spt-friction 0.9)
|
||||
(sp-int spt-timer 300)
|
||||
(sp-cpuinfo-flags bit2 bit14)
|
||||
(sp-int-plain-rnd spt-next-time 30 89 1)
|
||||
(sp-launcher-by-id spt-next-launcher 2158)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2158)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -1.0666667) (sp-end))
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2157) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 15
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 12.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
|
||||
(sp-flt spt-scale-x (meters 0.3))
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0)
|
||||
(sp-flt spt-scale-y (meters 12.0))
|
||||
(sp-rnd-flt spt-r 64.0 192.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 64.0 1.0)
|
||||
(sp-flt spt-scalevel-y (meters 1.04))
|
||||
(sp-flt spt-fade-a -1.6)
|
||||
(sp-int spt-timer 60)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2154) (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-y (meters 2.0))
|
||||
(sp-flt spt-scale-x (meters 24.0))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 192.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 64.0 1.0)
|
||||
(sp-flt spt-a 128.0)
|
||||
(sp-flt spt-fade-a -2.3272727)
|
||||
(sp-int spt-timer 54)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2156)
|
||||
(new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23
|
||||
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
|
||||
(sp-flt spt-num 16.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.5) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-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-vel-y (meters 0.08) (meters 0.04) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.02))
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-a -0.28444445)
|
||||
(sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0)
|
||||
(sp-flt spt-friction 0.8)
|
||||
(sp-int spt-timer 510)
|
||||
(sp-cpuinfo-flags bit2 bit14)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 4.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-group-id-table* 323) (new 'static 'sparticle-launch-group
|
||||
:length 6
|
||||
:duration #x4b
|
||||
:linger-duration #x2ee0
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-dark-crystal-water-explode"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 6
|
||||
(sp-item 2159 :period 600 :length 5)
|
||||
(sp-item 2160 :period 600 :length 40)
|
||||
(sp-item 2161 :period 600 :length 20)
|
||||
(sp-item 2162 :period 600 :length 20)
|
||||
(sp-item 2163 :period 600 :length 75)
|
||||
(sp-item 2164 :period 600 :length 75)
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 65536.0)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2160) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 23
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 24.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.8) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 128.0 128.0 1.0)
|
||||
(sp-rnd-flt spt-g 128.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 96.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.16) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters -0.0026666666))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.4)
|
||||
(sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0)
|
||||
(sp-flt spt-friction 0.9)
|
||||
(sp-int spt-timer 300)
|
||||
(sp-cpuinfo-flags bit2 bit14)
|
||||
(sp-int-plain-rnd spt-next-time 30 89 1)
|
||||
(sp-launcher-by-id spt-next-launcher 2158)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2162) (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 12.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
|
||||
(sp-flt spt-scale-x (meters 0.3))
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0)
|
||||
(sp-flt spt-scale-y (meters 12.0))
|
||||
(sp-rnd-flt spt-r 128.0 128.0 1.0)
|
||||
(sp-rnd-flt spt-g 128.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 64.0 1.0)
|
||||
(sp-flt spt-scalevel-y (meters 1.04))
|
||||
(sp-flt spt-fade-r -1.0666667)
|
||||
(sp-flt spt-fade-g -2.1333334)
|
||||
(sp-flt spt-fade-a -1.6)
|
||||
(sp-int spt-timer 60)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2159) (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-flt spt-num 1.0)
|
||||
(sp-flt spt-y (meters 2.0))
|
||||
(sp-flt spt-scale-x (meters 24.0))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 192.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-g 128.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 64.0 1.0)
|
||||
(sp-flt spt-a 128.0)
|
||||
(sp-flt spt-fade-g -2.0)
|
||||
(sp-flt spt-fade-a -2.3272727)
|
||||
(sp-int spt-timer 54)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2161)
|
||||
(new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 26
|
||||
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
|
||||
(sp-flt spt-num 16.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.5) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 128.0 96.0 1.0)
|
||||
(sp-rnd-flt spt-g 128.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.08) (meters 0.04) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.02))
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-r -0.2)
|
||||
(sp-flt spt-fade-g -0.2)
|
||||
(sp-flt spt-fade-b 0.0)
|
||||
(sp-flt spt-fade-a -0.28444445)
|
||||
(sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0)
|
||||
(sp-flt spt-friction 0.8)
|
||||
(sp-int spt-timer 510)
|
||||
(sp-cpuinfo-flags bit2 bit14)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 4.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2163) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 21
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
|
||||
(sp-flt spt-num 32.0)
|
||||
(sp-rnd-flt spt-x (meters -4.0) (meters 8.0) 1.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 6.0) 1.0)
|
||||
(sp-rnd-flt spt-z -16384.0 32768.0 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.05) 1.0)
|
||||
(sp-rnd-flt spt-scale-y (meters 0.125) (meters 0.025) 1.0)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 0.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.006666667) 1.0)
|
||||
(sp-flt spt-fade-a 0.8)
|
||||
(sp-int spt-timer 12000)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-flt spt-userdata 143360.0)
|
||||
(sp-func spt-func 'check-water-level-above-and-die)
|
||||
(sp-int-plain-rnd spt-next-time 30 29 1)
|
||||
(sp-launcher-by-id spt-next-launcher 2165)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2165)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a 0.0) (sp-end))
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2164) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 21
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
|
||||
(sp-flt spt-num 4.0)
|
||||
(sp-rnd-flt spt-x (meters -4.0) (meters 8.0) 1.0)
|
||||
(sp-rnd-flt spt-y (meters 1.0) (meters 6.0) 1.0)
|
||||
(sp-rnd-flt spt-z -16384.0 32768.0 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.15) 1.0)
|
||||
(sp-rnd-flt spt-scale-y (meters 0.2) (meters 0.1) 1.0)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 0.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.006666667) 1.0)
|
||||
(sp-flt spt-fade-a 0.8)
|
||||
(sp-int spt-timer 12000)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-flt spt-userdata 143360.0)
|
||||
(sp-func spt-func 'check-water-level-above-and-die)
|
||||
(sp-int-plain-rnd spt-next-time 30 29 1)
|
||||
(sp-launcher-by-id spt-next-launcher 2165)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate dark-crystal-idle (dark-crystal)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('touch 'attack)
|
||||
(if (= (-> arg0 type) target)
|
||||
(level-hint-spawn
|
||||
(game-text-id dark-crystal-run-away)
|
||||
"sksp0334"
|
||||
(the-as entity #f)
|
||||
*entity-pool*
|
||||
(game-task none)
|
||||
)
|
||||
)
|
||||
(close-specific-task! (game-task cave-dark-crystals) (task-status need-hint))
|
||||
(go dark-crystal-activate)
|
||||
)
|
||||
)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(while #t
|
||||
(logior! (-> self mask) (process-mask sleep-code))
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate dark-crystal-activate (dark-crystal)
|
||||
:code
|
||||
(behavior ()
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(dotimes (gp-0 (-> *dark-crystal-flash-delays* length))
|
||||
(sound-play-by-name (static-sound-name "warning") (new-sound-id) 1024 0 0 1 #t)
|
||||
(set! (-> self draw color-mult quad) (-> self lit-color-mult quad))
|
||||
(set! (-> self draw color-emissive quad) (-> self lit-color-emissive quad))
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30)
|
||||
(suspend)
|
||||
)
|
||||
(set! (-> self draw color-mult quad) (-> self unlit-color-mult quad))
|
||||
(set! (-> self draw color-emissive quad) (-> self unlit-color-emissive quad))
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(let ((s5-1 (-> *dark-crystal-flash-delays* gp-0)))
|
||||
(until (>= (- (-> *display* base-frame-counter) (-> self state-time)) s5-1)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
)
|
||||
(go dark-crystal-explode)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate dark-crystal-explode (dark-crystal)
|
||||
:code
|
||||
(behavior ()
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((gp-0 (new 'stack 'joint-exploder-tuning 0)))
|
||||
(when (-> self underwater?)
|
||||
(set! (-> gp-0 duration) (the-as uint 1200))
|
||||
(set! (-> gp-0 gravity) -20480.0)
|
||||
(set! (-> gp-0 rot-speed) 4.2)
|
||||
(set-vector! (-> gp-0 fountain-rand-transv-lo) -40960.0 20480.0 -40960.0 1.0)
|
||||
(set-vector! (-> gp-0 fountain-rand-transv-hi) 40960.0 49152.0 40960.0 1.0)
|
||||
)
|
||||
(let ((s5-0 (get-process *default-dead-pool* joint-exploder #x4000)))
|
||||
(when s5-0
|
||||
(let ((t9-3 (method-of-type joint-exploder activate)))
|
||||
(t9-3 (the-as joint-exploder s5-0) self 'joint-exploder (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
s5-0
|
||||
joint-exploder-init-by-other
|
||||
*dark-crystal-explode-sg*
|
||||
5
|
||||
gp-0
|
||||
*dark-crystal-exploder-params*
|
||||
)
|
||||
(-> s5-0 ppointer)
|
||||
)
|
||||
)
|
||||
)
|
||||
(activate! *camera-smush-control* 819.2 37 210 1.0 0.995)
|
||||
(let ((gp-1 (dummy-21 self)))
|
||||
(suspend)
|
||||
(ja-channel-set! 0)
|
||||
(ja-post)
|
||||
(logior! (-> self draw status) 2)
|
||||
(dummy-20 self)
|
||||
(if (-> self underwater?)
|
||||
(sound-play-by-name (static-sound-name "water-explosion") (new-sound-id) 1024 0 0 1 #t)
|
||||
(sound-play-by-name (static-sound-name "crystal-explode") (new-sound-id) 1024 0 0 1 #t)
|
||||
)
|
||||
(let ((s5-3 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when s5-3
|
||||
(let ((t9-15 (method-of-type part-tracker activate)))
|
||||
(t9-15 (the-as part-tracker s5-3) *entity-pool* 'part-tracker (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
s5-3
|
||||
part-tracker-init
|
||||
(if (-> self underwater?)
|
||||
(-> *part-group-id-table* 323)
|
||||
(-> *part-group-id-table* 322)
|
||||
)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> self root-override trans)
|
||||
)
|
||||
(-> s5-3 ppointer)
|
||||
)
|
||||
)
|
||||
(let ((s5-4 (-> *display* base-frame-counter)))
|
||||
(until (>= (- (-> *display* base-frame-counter) s5-4) 75)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(if gp-1
|
||||
(go dark-crystal-spawn-fuel-cell)
|
||||
)
|
||||
)
|
||||
(dummy-18 self)
|
||||
(until (not (-> self child))
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate dark-crystal-spawn-fuel-cell (dark-crystal)
|
||||
:event
|
||||
(the-as
|
||||
(function process int symbol event-message-block object :behavior dark-crystal)
|
||||
process-drawable-fuel-cell-handler
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(level-hint-spawn
|
||||
(game-text-id dark-crystal-last-one)
|
||||
"sksp0327"
|
||||
(the-as entity #f)
|
||||
*entity-pool*
|
||||
(game-task none)
|
||||
)
|
||||
(ja-channel-set! 0)
|
||||
(ja-post)
|
||||
(logior! (-> self draw status) 2)
|
||||
(if (not (task-complete? *game-info* (-> self entity extra perm task)))
|
||||
(birth-pickup-at-point
|
||||
(-> self root-override trans)
|
||||
(pickup-type fuel-cell)
|
||||
(the float (-> self entity extra perm task))
|
||||
#t
|
||||
self
|
||||
(the-as fact-info #f)
|
||||
)
|
||||
)
|
||||
(suspend)
|
||||
(until (not (-> self child))
|
||||
(suspend)
|
||||
)
|
||||
(aybabtu 2)
|
||||
(dummy-18 self)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 20 of type dark-crystal
|
||||
;; INFO: Return type mismatch object vs none.
|
||||
;; Used lq/sq
|
||||
(defmethod dummy-20 dark-crystal ((obj dark-crystal))
|
||||
(when *target*
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector))
|
||||
(s3-0 (new 'stack-no-clear 'vector))
|
||||
(s4-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set! (-> s5-0 quad) (-> obj root-override trans quad))
|
||||
(set! (-> s5-0 y) (+ 6144.0 (-> s5-0 y)))
|
||||
(set! (-> s3-0 quad) (-> (target-pos 0) quad))
|
||||
(set! (-> s3-0 y) (+ 6144.0 (-> s3-0 y)))
|
||||
(when (>= (-> obj explode-danger-radius) (vector-vector-distance s5-0 s3-0))
|
||||
(vector-! s4-0 s3-0 s5-0)
|
||||
(let ((t2-0 (new 'stack-no-clear 'collide-tri-result)))
|
||||
(if (< (dummy-10 *collide-cache* s5-0 s4-0 819.2 1 obj t2-0 1) 0.0)
|
||||
(send-event *target* 'attack #f (new 'static 'attack-info))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 21 of type dark-crystal
|
||||
(defmethod dummy-21 dark-crystal ((obj dark-crystal))
|
||||
(let ((s5-0 #f))
|
||||
(when (nonzero? (-> obj crystal-num))
|
||||
(let* ((s4-0 (get-task-control (game-task cave-dark-crystals)))
|
||||
(s3-0 (logior (get-reminder s4-0 3) (ash 1 (-> obj crystal-num))))
|
||||
)
|
||||
(save-reminder s4-0 s3-0 3)
|
||||
(when (= s3-0 62)
|
||||
(set! s5-0 #t)
|
||||
(process-entity-status! obj (entity-perm-status complete) #t)
|
||||
)
|
||||
)
|
||||
)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type dark-crystal
|
||||
;; INFO: Return type mismatch object vs none.
|
||||
;; Used lq/sq
|
||||
(defmethod init-from-entity! dark-crystal ((obj dark-crystal) (arg0 entity-actor))
|
||||
(set-vector! (-> obj unlit-color-mult) 0.5 0.5 0.5 1.0)
|
||||
(set-vector! (-> obj unlit-color-emissive) 0.0 0.0 0.0 0.0)
|
||||
(set-vector! (-> obj lit-color-mult) 1.0 1.0 1.0 1.0)
|
||||
(set-vector! (-> obj lit-color-emissive) 1.0 1.0 1.0 0.0)
|
||||
(set! (-> obj mask) (logior (process-mask enemy) (-> obj mask)))
|
||||
(let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player))))
|
||||
(let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
|
||||
(set! (-> s3-0 prim-core collide-as) (the-as uint 512))
|
||||
(set! (-> s3-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s3-0 prim-core action) (the-as uint 1))
|
||||
(set! (-> s3-0 prim-core offense) 4)
|
||||
(set! (-> s3-0 transform-index) 0)
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 6963.2 0.0 15564.8)
|
||||
(set-root-prim! s4-0 s3-0)
|
||||
)
|
||||
(set! (-> 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 *dark-crystal-sg* '())
|
||||
(set! (-> obj mask) (logior (process-mask attackable) (-> obj mask)))
|
||||
(set! (-> obj draw color-mult quad) (-> obj unlit-color-mult quad))
|
||||
(set! (-> obj draw color-emissive quad) (-> obj unlit-color-emissive quad))
|
||||
(set! (-> obj underwater?) (= (res-lump-value arg0 'mode uint128) 1))
|
||||
(set! (-> obj explode-danger-radius) (res-lump-float arg0 'extra-radius :default 28672.0))
|
||||
(set! (-> obj crystal-num) (res-lump-value arg0 'extra-id int))
|
||||
(set-vector! (-> obj root-override scale) 2.0 2.0 2.0 1.0)
|
||||
(ja-channel-push! 1 0)
|
||||
(let ((s5-1 (-> obj skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
s5-1
|
||||
(the-as art-joint-anim (-> obj draw art-group data 2))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> s5-1 frame-num) 0.0)
|
||||
)
|
||||
(ja-post)
|
||||
(dummy-47 (-> obj root-override))
|
||||
(if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)))
|
||||
(go dark-crystal-spawn-fuel-cell)
|
||||
(go dark-crystal-idle)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
+1477
File diff suppressed because it is too large
Load Diff
+1929
File diff suppressed because it is too large
Load Diff
+674
@@ -0,0 +1,674 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type mother-spider-egg
|
||||
(deftype mother-spider-egg (process-drawable)
|
||||
((parent-override (pointer mother-spider) :offset 12)
|
||||
(root-override collide-shape-moving :offset 112)
|
||||
(anim-speed float :offset-assert 176)
|
||||
(part2 sparticle-launch-control :offset-assert 180)
|
||||
(falling-start-time uint64 :offset-assert 184)
|
||||
(fall-dest vector :inline :offset-assert 192)
|
||||
(fall-dest-normal vector :inline :offset-assert 208)
|
||||
(broken-look lod-set :inline :offset-assert 224)
|
||||
(traj trajectory :inline :offset-assert 272)
|
||||
(shadow-pos vector :inline :offset-assert 320)
|
||||
)
|
||||
:heap-base #xe0
|
||||
:method-count-assert 22
|
||||
:size-assert #x150
|
||||
:flag-assert #x1600e00150
|
||||
(:methods
|
||||
(dummy-20 (_type_) none 20)
|
||||
(draw-egg-shadow (_type_ vector symbol) symbol 21)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type mother-spider-egg
|
||||
(defmethod inspect mother-spider-egg ((obj mother-spider-egg))
|
||||
(let ((t9-0 (method-of-type process-drawable inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~T~Tanim-speed: ~f~%" (-> obj anim-speed))
|
||||
(format #t "~T~Tpart2: ~A~%" (-> obj part2))
|
||||
(format #t "~T~Tfalling-start-time: ~D~%" (-> obj falling-start-time))
|
||||
(format #t "~T~Tfall-dest: #<vector @ #x~X>~%" (-> obj fall-dest))
|
||||
(format #t "~T~Tfall-dest-normal: #<vector @ #x~X>~%" (-> obj fall-dest-normal))
|
||||
(format #t "~T~Tbroken-look: #<lod-set @ #x~X>~%" (-> obj broken-look))
|
||||
(format #t "~T~Ttraj: #<trajectory @ #x~X>~%" (-> obj traj))
|
||||
(format #t "~T~Tshadow-pos: #<vector @ #x~X>~%" (-> obj shadow-pos))
|
||||
obj
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup *mother-spider-egg-unbroken-sg* spider-egg
|
||||
0
|
||||
-1
|
||||
((1 (meters 20)) (2 (meters 40)) (3 (meters 999999)))
|
||||
:bounds (static-spherem 0 1 0 2)
|
||||
:longest-edge (meters 0)
|
||||
:shadow 4
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup *mother-spider-egg-broken-sg* spider-egg
|
||||
5
|
||||
-1
|
||||
((6 (meters 20)) (7 (meters 40)) (8 (meters 999999)))
|
||||
:bounds (static-spherem 0 1 0 2)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-group-id-table* 324) (new 'static 'sparticle-launch-group
|
||||
:length 2
|
||||
:duration #x5
|
||||
:linger-duration #x384
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-spider-egg-hatches"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 2
|
||||
(sp-item 2018 :fade-after (meters 50.0) :falloff-to (meters 50.0))
|
||||
(sp-item 2071 :fade-after (meters 50.0) :falloff-to (meters 50.0))
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2071) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 16
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 16.0)
|
||||
(sp-flt spt-y (meters 0.5))
|
||||
(sp-flt spt-scale-x (meters 0.1))
|
||||
(sp-int spt-rot-x 4)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-flt spt-scale-y (meters 0.1))
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 64.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-rnd-flt spt-a 32.0 96.0 1.0)
|
||||
(sp-int spt-timer 225)
|
||||
(sp-cpuinfo-flags bit2 bit3)
|
||||
(sp-int spt-next-time 75)
|
||||
(sp-launcher-by-id spt-next-launcher 2072)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2072)
|
||||
(new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5
|
||||
(sp-flt spt-scale-x (meters 0.1))
|
||||
(sp-flt spt-scale-y (meters 2.0))
|
||||
(sp-flt spt-scalevel-y (meters 0.2))
|
||||
(sp-flt spt-fade-a -1.4222223)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2018) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 24
|
||||
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
|
||||
(sp-flt spt-num 8.0)
|
||||
(sp-rnd-flt spt-y (meters 0.5) (meters 0.5) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.0) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 32.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 16.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 32.0 1.0)
|
||||
(sp-flt spt-a 0.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.0033333334) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.006666667))
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 1.2) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-a 1.4222223)
|
||||
(sp-flt spt-accel-y 0.27306667)
|
||||
(sp-int spt-timer 375)
|
||||
(sp-cpuinfo-flags bit2 bit12 bit14)
|
||||
(sp-int spt-next-time 45)
|
||||
(sp-launcher-by-id spt-next-launcher 2073)
|
||||
(sp-flt spt-conerot-x (degrees 90.0))
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.5) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2073)
|
||||
(new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.21333334) (sp-end))
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-group-id-table* 325) (new 'static 'sparticle-launch-group
|
||||
:length 1
|
||||
:duration #x5
|
||||
:linger-duration #x177
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-spider-egg-explodes"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 1
|
||||
(sp-item 2074 :fade-after (meters 50.0) :falloff-to (meters 50.0))
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 2074) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 22
|
||||
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
|
||||
(sp-flt spt-num 8.0)
|
||||
(sp-rnd-flt spt-y (meters 0.5) (meters 0.5) 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 2.0) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 32.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-g 0.0 16.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.0033333334) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.006666667))
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 1.2) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-a -1.4222223)
|
||||
(sp-flt spt-accel-y 0.27306667)
|
||||
(sp-int spt-timer 375)
|
||||
(sp-cpuinfo-flags bit2 bit12 bit14)
|
||||
(sp-flt spt-conerot-x (degrees 90.0))
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.5) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 21 of type mother-spider-egg
|
||||
;; Used lq/sq
|
||||
(defmethod draw-egg-shadow mother-spider-egg ((obj mother-spider-egg) (arg0 vector) (arg1 symbol))
|
||||
(cond
|
||||
((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8))
|
||||
(let ((s5-0 (new 'stack-no-clear 'collide-tri-result))
|
||||
(a1-1 (new 'stack-no-clear 'vector))
|
||||
(a2-1 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set! (-> a1-1 quad) (-> obj root-override trans quad))
|
||||
(set! (-> a1-1 y) (+ 1228.8 (-> a1-1 y)))
|
||||
(set-vector! a2-1 0.0 -61440.0 0.0 1.0)
|
||||
(cond
|
||||
((>= (dummy-10 *collide-cache* a1-1 a2-1 7372.8 1 obj s5-0 1) 0.0)
|
||||
(let ((v1-11 (-> obj draw shadow-ctrl)))
|
||||
(set! (-> v1-11 settings flags) (logand -33 (-> v1-11 settings flags)))
|
||||
)
|
||||
0
|
||||
(let ((v1-14 (-> obj draw shadow-ctrl)))
|
||||
(set! (-> v1-14 settings bot-plane w) (- (+ -4096.0 (-> s5-0 intersect y))))
|
||||
)
|
||||
0
|
||||
(let ((v1-17 (-> obj draw shadow-ctrl)))
|
||||
(set! (-> v1-17 settings top-plane w) (- (+ 6144.0 (-> s5-0 intersect y))))
|
||||
)
|
||||
0
|
||||
(return #t)
|
||||
)
|
||||
(else
|
||||
(let ((v1-22 (-> obj draw shadow-ctrl)))
|
||||
(logior! (-> v1-22 settings flags) 32)
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let ((v1-25 (-> obj draw shadow-ctrl)))
|
||||
(logior! (-> v1-25 settings flags) 32)
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate mother-spider-egg-falling (mother-spider-egg)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('touch 'attack)
|
||||
(go mother-spider-egg-die-while-falling)
|
||||
)
|
||||
)
|
||||
)
|
||||
:enter
|
||||
(behavior () (set! (-> self falling-start-time) (the-as uint (-> *display* base-frame-counter))) (none))
|
||||
:trans
|
||||
(behavior ()
|
||||
(let ((f30-0 (fmin
|
||||
(the float (- (-> *display* base-frame-counter) (the-as int (-> self falling-start-time))))
|
||||
(-> self traj time)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((f28-0 (/ f30-0 (-> self traj time))))
|
||||
(eval-position! (-> self traj) f30-0 (-> self root-override trans))
|
||||
(let ((f0-3 (lerp 0.3 0.4 f28-0)))
|
||||
(set-vector! (-> self root-override scale) f0-3 f0-3 f0-3 1.0)
|
||||
)
|
||||
)
|
||||
(when (= f30-0 (-> self traj time))
|
||||
(sound-play-by-name (static-sound-name "eggs-lands") (new-sound-id) 1024 0 0 1 #t)
|
||||
(go mother-spider-egg-on-ground)
|
||||
)
|
||||
)
|
||||
(draw-egg-shadow self (-> self shadow-pos) #t)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(ja-channel-push! 1 0)
|
||||
(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 9)))
|
||||
(set! (-> a0-1 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 9)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-1 param 1) (-> self anim-speed))
|
||||
(set! (-> a0-1 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-1 (the-as art-joint-anim (-> self draw art-group data 9)) 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) (-> self anim-speed))
|
||||
(joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior mother-spider-egg) transform-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate mother-spider-egg-on-ground (mother-spider-egg)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(let ((v1-0 arg2))
|
||||
(the-as
|
||||
object
|
||||
(cond
|
||||
((= v1-0 'touch)
|
||||
(dummy-55 (-> self root-override) arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 0.7 6144.0 16384.0)
|
||||
)
|
||||
((= v1-0 'attack)
|
||||
(go mother-spider-egg-die)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:enter
|
||||
(behavior ()
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(if (not (draw-egg-shadow self (-> self shadow-pos) #t))
|
||||
(set! (-> self shadow-pos quad) (-> self fall-dest quad))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 600)
|
||||
(go mother-spider-egg-hatch)
|
||||
)
|
||||
(draw-egg-shadow self (-> self shadow-pos) #f)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(ja-channel-push! 1 30)
|
||||
(let ((gp-0 (new 'stack-no-clear 'quaternion))
|
||||
(s5-0 (new 'stack-no-clear 'quaternion))
|
||||
)
|
||||
(let ((s3-0 (new 'stack-no-clear 'vector))
|
||||
(s4-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(quaternion-copy! gp-0 (-> self root-override quat))
|
||||
(set-vector! s4-0 0.0 1.0 0.0 1.0)
|
||||
(set! (-> s3-0 quad) (-> self fall-dest-normal quad))
|
||||
(vector-normalize! s3-0 1.0)
|
||||
(quaternion-from-two-vectors! s5-0 s4-0 s3-0)
|
||||
)
|
||||
(quaternion*! s5-0 s5-0 gp-0)
|
||||
(let ((a0-7 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-7 frame-group) (the-as art-joint-anim (-> self draw art-group data 11)))
|
||||
(set! (-> a0-7 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 11)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-7 param 1) 1.3)
|
||||
(set! (-> a0-7 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-7 (the-as art-joint-anim (-> self draw art-group data 11)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(let* ((f0-8 (ja-frame-num 0))
|
||||
(v1-19 (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
)
|
||||
(f0-9 (/ f0-8 (the float (+ (-> v1-19 data 0 length) -1))))
|
||||
)
|
||||
(quaternion-slerp! (-> self root-override quat) gp-0 s5-0 f0-9)
|
||||
)
|
||||
(suspend)
|
||||
(let ((a0-10 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-10 param 1) 1.3)
|
||||
(joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(while #t
|
||||
(let ((a0-12 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-12 frame-group) (the-as art-joint-anim (-> self draw art-group data 9)))
|
||||
(set! (-> a0-12 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 9)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-12 param 1) (-> self anim-speed))
|
||||
(set! (-> a0-12 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-12 (the-as art-joint-anim (-> self draw art-group data 9)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-13 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-13 param 0) (the float (+ (-> a0-13 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-13 param 1) (-> self anim-speed))
|
||||
(joint-control-channel-group-eval! a0-13 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior mother-spider-egg) transform-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate mother-spider-egg-hatch (mother-spider-egg)
|
||||
:trans
|
||||
(behavior ()
|
||||
(when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) 8))
|
||||
(let ((a1-0 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> a1-0 quad) (-> self fall-dest quad))
|
||||
(compute-and-draw-shadow
|
||||
(-> self root-override trans)
|
||||
a1-0
|
||||
(-> self fall-dest-normal)
|
||||
(the-as vector 7372.8)
|
||||
81920.0
|
||||
(the-as float 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(send-event (ppointer->process (-> self parent-override)) 'trigger)
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-0
|
||||
(let ((t9-3 (method-of-type part-tracker activate)))
|
||||
(t9-3 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
gp-0
|
||||
part-tracker-init
|
||||
(-> *part-group-id-table* 324)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> self root-override trans)
|
||||
)
|
||||
(-> gp-0 ppointer)
|
||||
)
|
||||
)
|
||||
(lods-assign! (-> self draw) (-> self broken-look))
|
||||
(ja-channel-push! 1 60)
|
||||
(let ((a0-7 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-7 frame-group) (the-as art-joint-anim (-> self draw art-group data 10)))
|
||||
(set! (-> a0-7 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 10)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-7 param 1) 1.0)
|
||||
(set! (-> a0-7 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-7 (the-as art-joint-anim (-> self draw art-group data 10)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-8 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-8 param 0) (the float (+ (-> a0-8 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-8 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-8 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(let ((v1-37 (-> self draw shadow-ctrl)))
|
||||
(logior! (-> v1-37 settings flags) 32)
|
||||
)
|
||||
0
|
||||
(go mother-spider-egg-die-exit)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior mother-spider-egg) transform-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate mother-spider-egg-die (mother-spider-egg)
|
||||
:code
|
||||
(behavior ()
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(let ((v1-3 (-> self draw shadow-ctrl)))
|
||||
(logior! (-> v1-3 settings flags) 32)
|
||||
)
|
||||
0
|
||||
(lods-assign! (-> self draw) (-> self broken-look))
|
||||
(ja-channel-push! 1 30)
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-0
|
||||
(let ((t9-4 (method-of-type part-tracker activate)))
|
||||
(t9-4 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
gp-0
|
||||
part-tracker-init
|
||||
(-> *part-group-id-table* 325)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> self root-override trans)
|
||||
)
|
||||
(-> gp-0 ppointer)
|
||||
)
|
||||
)
|
||||
(let ((a0-9 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-9 frame-group) (the-as art-joint-anim (-> self draw art-group data 12)))
|
||||
(set! (-> a0-9 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 12)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-9 param 1) 1.0)
|
||||
(set! (-> a0-9 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-9 (the-as art-joint-anim (-> self draw art-group data 12)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-10 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-10 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(go mother-spider-egg-die-exit)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior mother-spider-egg) ja-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate mother-spider-egg-die-while-falling (mother-spider-egg)
|
||||
:trans
|
||||
(behavior ()
|
||||
(let ((f0-2 (fmin
|
||||
(the float (- (-> *display* base-frame-counter) (the-as int (-> self falling-start-time))))
|
||||
(-> self traj time)
|
||||
)
|
||||
)
|
||||
)
|
||||
(eval-position! (-> self traj) f0-2 (-> self root-override trans))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((v1-5 (-> self draw shadow-ctrl)))
|
||||
(logior! (-> v1-5 settings flags) 32)
|
||||
)
|
||||
0
|
||||
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-0
|
||||
(let ((t9-2 (method-of-type part-tracker activate)))
|
||||
(t9-2 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
gp-0
|
||||
part-tracker-init
|
||||
(-> *part-group-id-table* 325)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> self root-override trans)
|
||||
)
|
||||
(-> gp-0 ppointer)
|
||||
)
|
||||
)
|
||||
(lods-assign! (-> self draw) (-> self broken-look))
|
||||
(ja-channel-push! 1 30)
|
||||
(let ((a0-9 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-9 frame-group) (the-as art-joint-anim (-> self draw art-group data 12)))
|
||||
(set! (-> a0-9 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 12)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-9 param 1) 1.0)
|
||||
(set! (-> a0-9 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-9 (the-as art-joint-anim (-> self draw art-group data 12)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-10 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-10 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(go mother-spider-egg-die-exit)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior mother-spider-egg) ja-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate mother-spider-egg-die-exit (mother-spider-egg)
|
||||
:code
|
||||
(behavior ()
|
||||
(send-event (ppointer->process (-> self parent-override)) 'untrigger)
|
||||
(logior! (-> self draw status) 2)
|
||||
(let ((v1-8 (-> self draw shadow-ctrl)))
|
||||
(logior! (-> v1-8 settings flags) 32)
|
||||
)
|
||||
0
|
||||
(set! (-> self root-override nav-flags) (logand -2 (-> self root-override nav-flags)))
|
||||
(set! (-> self root-override nav-flags) (logand -3 (-> self root-override nav-flags)))
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(until (not (-> self child))
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function mother-spider-egg-init-by-other
|
||||
;; INFO: Return type mismatch object vs none.
|
||||
;; Used lq/sq
|
||||
(defbehavior mother-spider-egg-init-by-other mother-spider-egg ((arg0 entity) (arg1 vector) (arg2 vector) (arg3 vector))
|
||||
(set! (-> self entity) arg0)
|
||||
(set! (-> self anim-speed) (rand-vu-float-range 0.8 1.2))
|
||||
(set! (-> self falling-start-time) (the-as uint (-> *display* base-frame-counter)))
|
||||
(set! (-> self fall-dest quad) (-> arg2 quad))
|
||||
(set! (-> self fall-dest-normal quad) (-> arg3 quad))
|
||||
(let ((s4-1 (new 'process 'collide-shape-moving self (collide-list-enum usually-hit-by-player))))
|
||||
(set! (-> s4-1 dynam) (copy *standard-dynamics* 'process))
|
||||
(set! (-> s4-1 reaction) default-collision-reaction)
|
||||
(set! (-> s4-1 no-reaction)
|
||||
(the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)
|
||||
)
|
||||
(let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-1 (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 1))
|
||||
(set! (-> s3-0 prim-core offense) 1)
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 2048.0 0.0 3686.4)
|
||||
(set-root-prim! s4-1 s3-0)
|
||||
)
|
||||
(set! (-> s4-1 nav-radius) 4096.0)
|
||||
(backup-collide-with-as s4-1)
|
||||
(set! (-> self root-override) s4-1)
|
||||
)
|
||||
(set! (-> self root-override trans quad) (-> arg1 quad))
|
||||
(set-vector! (-> self root-override scale) 0.3 0.3 0.3 1.0)
|
||||
(quaternion-copy! (-> self root-override quat) (-> self parent-override 0 root-override quat))
|
||||
(logior! (-> self mask) (process-mask actor-pause))
|
||||
(set! (-> self mask) (logior (process-mask enemy) (-> self mask)))
|
||||
(set! (-> self mask) (logior (process-mask attackable) (-> self mask)))
|
||||
(initialize-skeleton self *mother-spider-egg-unbroken-sg* '())
|
||||
(dummy-9 (-> self broken-look) *mother-spider-egg-broken-sg* (-> self draw art-group) (-> self entity))
|
||||
(set! (-> self draw shadow-ctrl) (new 'process 'shadow-control 0.0 0.0 614400.0 (the-as float 60) 245760.0))
|
||||
(set! (-> self nav) (new 'process 'nav-control (-> self root-override) 16 40960.0))
|
||||
(logior! (-> self nav flags) (nav-control-flags display-marks bit3 bit5 bit6 bit7))
|
||||
(set! (-> self root-override nav-flags) (logand -2 (-> self root-override nav-flags)))
|
||||
(logior! (-> self root-override nav-flags) 2)
|
||||
(set! (-> self nav extra-nav-sphere quad) (-> self fall-dest quad))
|
||||
(set! (-> self nav extra-nav-sphere w) 4096.0)
|
||||
(setup-from-to-height! (-> self traj) (-> self root-override trans) arg2 4096.0 -4.551111)
|
||||
(create-connection!
|
||||
*cavecrystal-light-control*
|
||||
self
|
||||
(-> self entity)
|
||||
(the-as (function object object object object object) cavecrystal-light-control-default-callback)
|
||||
-1
|
||||
4096.0
|
||||
)
|
||||
(go mother-spider-egg-falling)
|
||||
(none)
|
||||
)
|
||||
+15
-13
@@ -32,6 +32,7 @@
|
||||
(trans-u float :offset-assert 4)
|
||||
(swing-arc-u float :offset-assert 8)
|
||||
)
|
||||
:pack-me
|
||||
:method-count-assert 9
|
||||
:size-assert #xc
|
||||
:flag-assert #x90000000c
|
||||
@@ -105,7 +106,8 @@
|
||||
|
||||
;; definition of type mother-spider
|
||||
(deftype mother-spider (process-drawable)
|
||||
((mode uint64 :offset-assert 176)
|
||||
((root-override collide-shape :offset 112)
|
||||
(mode uint64 :offset-assert 176)
|
||||
(damage int32 :offset-assert 184)
|
||||
(baby-count int32 :offset-assert 188)
|
||||
(max-baby-count int32 :offset-assert 192)
|
||||
@@ -153,18 +155,18 @@
|
||||
:size-assert #x1f0
|
||||
:flag-assert #x20018001f0
|
||||
(:methods
|
||||
(dummy-20 () none 20)
|
||||
(dummy-21 () none 21)
|
||||
(dummy-22 () none 22)
|
||||
(dummy-23 () none 23)
|
||||
(dummy-24 () none 24)
|
||||
(dummy-25 () none 25)
|
||||
(dummy-26 () none 26)
|
||||
(dummy-27 () none 27)
|
||||
(dummy-28 () none 28)
|
||||
(dummy-29 () none 29)
|
||||
(dummy-30 () none 30)
|
||||
(dummy-31 () none 31)
|
||||
(TODO-RENAME-20 (_type_ vector vector) symbol 20)
|
||||
(TODO-RENAME-21 (_type_ vector float symbol) symbol 21)
|
||||
(dummy-22 (_type_ matrix vector) float 22)
|
||||
(TODO-RENAME-23 (_type_) none 23)
|
||||
(TODO-RENAME-24 (_type_) number 24)
|
||||
(letgo-player? (_type_) symbol 25)
|
||||
(grab-player? (_type_) symbol 26)
|
||||
(STUB-27 (_type_) none 27)
|
||||
(STUB-28 (_type_) none 28)
|
||||
(TODO-RENAME-29 (_type_ symbol symbol) none 29)
|
||||
(spawn-child (_type_ vector vector symbol) int 30)
|
||||
(is-player-stuck? (_type_) symbol 31)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
+1267
File diff suppressed because it is too large
Load Diff
+7
-7
@@ -463,7 +463,7 @@
|
||||
(logtest? (-> obj draw status) 8)
|
||||
(< (vector-vector-xz-distance-squared (-> obj root trans) (camera-pos)) 10485760000.0)
|
||||
)
|
||||
(let ((s3-1 (new 'stack-no-clear 'collide-mesh-cache-tri))
|
||||
(let ((s3-1 (new 'stack-no-clear 'collide-tri-result))
|
||||
(a1-1 (new 'stack-no-clear 'vector))
|
||||
(a2-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
@@ -471,10 +471,10 @@
|
||||
(set! (-> a1-1 y) (+ -8192.0 (-> a1-1 y)))
|
||||
(set-vector! a2-0 0.0 -81920.0 0.0 1.0)
|
||||
(when (>= (dummy-10 *collide-cache* a1-1 a2-0 8192.0 1 pp s3-1 1) 0.0)
|
||||
(set! (-> s3-1 normal w) 8192.0)
|
||||
(set! (-> s3-1 intersect w) 8192.0)
|
||||
(when (and
|
||||
(sphere-in-view-frustum? (the-as sphere (-> s3-1 normal)))
|
||||
(< 822083600.0 (vector-vector-distance-squared (-> s3-1 normal) (camera-pos)))
|
||||
(sphere-in-view-frustum? (the-as sphere (-> s3-1 intersect)))
|
||||
(< 822083600.0 (vector-vector-distance-squared (-> s3-1 intersect) (camera-pos)))
|
||||
)
|
||||
(set! s4-0 #t)
|
||||
(let ((v1-17 s5-0))
|
||||
@@ -482,11 +482,11 @@
|
||||
)
|
||||
0
|
||||
(let ((v1-19 s5-0))
|
||||
(set! (-> v1-19 settings bot-plane w) (- (+ -8192.0 (-> s3-1 normal y))))
|
||||
(set! (-> v1-19 settings bot-plane w) (- (+ -8192.0 (-> s3-1 intersect y))))
|
||||
)
|
||||
0
|
||||
(let ((v1-21 s5-0))
|
||||
(set! (-> v1-21 settings top-plane w) (- (+ 6144.0 (-> s3-1 normal y))))
|
||||
(set! (-> v1-21 settings top-plane w) (- (+ 6144.0 (-> s3-1 intersect y))))
|
||||
)
|
||||
0
|
||||
(let ((s2-2 (new 'stack-no-clear 'bounding-box)))
|
||||
@@ -495,7 +495,7 @@
|
||||
(vector+float! (-> s2-2 min) s1-1 -18432.0)
|
||||
(vector+float! (-> s2-2 max) s1-1 18432.0)
|
||||
)
|
||||
(add-spheres! s2-2 (the-as (pointer sphere) (-> s3-1 normal)) 1)
|
||||
(add-spheres! s2-2 (the-as (pointer sphere) (-> s3-1 intersect)) 1)
|
||||
(let ((f0-17 (* 0.5 (vector-vector-distance (-> s2-2 min) (-> s2-2 max)))))
|
||||
(set-vector!
|
||||
(-> obj draw bounds)
|
||||
|
||||
+360
@@ -0,0 +1,360 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type spider-egg
|
||||
(deftype spider-egg (process-drawable)
|
||||
((root-override collide-shape-moving :offset 112)
|
||||
(notify-actor entity-actor :offset-assert 176)
|
||||
(broken-look lod-set :inline :offset-assert 180)
|
||||
)
|
||||
:heap-base #x70
|
||||
:method-count-assert 20
|
||||
:size-assert #xd5
|
||||
:flag-assert #x14007000d5
|
||||
)
|
||||
|
||||
;; definition for method 3 of type spider-egg
|
||||
(defmethod inspect spider-egg ((obj spider-egg))
|
||||
(let ((t9-0 (method-of-type process-drawable inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~T~Tnotify-actor: ~A~%" (-> obj notify-actor))
|
||||
(format #t "~T~Tbroken-look: #<lod-set @ #x~X>~%" (-> obj broken-look))
|
||||
obj
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup *spider-egg-unbroken-sg* spider-egg
|
||||
0
|
||||
-1
|
||||
((1 (meters 20)) (2 (meters 40)) (3 (meters 999999)))
|
||||
:bounds (static-spherem 0 1 0 2)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup *spider-egg-broken-sg* spider-egg
|
||||
5
|
||||
-1
|
||||
((6 (meters 20)) (7 (meters 40)) (8 (meters 999999)))
|
||||
:bounds (static-spherem 0 1 0 2)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate spider-egg-idle (spider-egg)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(local-vars (v0-0 none))
|
||||
(let ((v1-0 arg2))
|
||||
(the-as
|
||||
object
|
||||
(cond
|
||||
((= v1-0 'touch)
|
||||
(dummy-55 (-> self root-override) arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 0.7 6144.0 16384.0)
|
||||
)
|
||||
((= v1-0 'can-spawn?)
|
||||
(return (the-as object #t))
|
||||
v0-0
|
||||
)
|
||||
((= v1-0 'notify-spawned)
|
||||
(go spider-egg-hatch)
|
||||
)
|
||||
((= v1-0 'attack)
|
||||
(go spider-egg-die)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:enter
|
||||
(behavior ((arg0 symbol)) (set! (-> self state-time) (-> *display* base-frame-counter)) (none))
|
||||
:code
|
||||
(behavior ((arg0 symbol))
|
||||
(let ((f30-0 (rand-vu-float-range 0.8 1.2)))
|
||||
(cond
|
||||
(arg0
|
||||
(ja-channel-set! 1)
|
||||
(let ((gp-1 (-> self skel root-channel 0)))
|
||||
(set! (-> gp-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 9)))
|
||||
(set! (-> gp-1 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 9)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> gp-1 param 1) f30-0)
|
||||
(set! (-> gp-1 frame-num)
|
||||
(rand-vu-float-range 0.0 (the float (+ (-> (if (> (-> self skel active-channels) 0)
|
||||
(-> self skel root-channel 0 frame-group)
|
||||
)
|
||||
data
|
||||
0
|
||||
length
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(joint-control-channel-group! gp-1 (the-as art-joint-anim (-> self draw art-group data 9)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-5 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-5 param 0) (the float (+ (-> a0-5 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-5 param 1) f30-0)
|
||||
(joint-control-channel-group-eval! a0-5 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(ja-channel-push! 1 60)
|
||||
)
|
||||
)
|
||||
(while #t
|
||||
(let ((gp-2 (rand-vu-int-range 2 6)))
|
||||
(dotimes (s5-0 gp-2)
|
||||
(let ((a0-9 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-9 frame-group) (the-as art-joint-anim (-> self draw art-group data 9)))
|
||||
(set! (-> a0-9 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 9)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-9 param 1) f30-0)
|
||||
(set! (-> a0-9 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-9 (the-as art-joint-anim (-> self draw art-group data 9)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-10 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-10 param 1) f30-0)
|
||||
(joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(ja-channel-push! 1 30)
|
||||
(let ((a0-13 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-13 frame-group) (the-as art-joint-anim (-> self draw art-group data 13)))
|
||||
(set! (-> a0-13 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 13)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-13 param 1) 1.0)
|
||||
(set! (-> a0-13 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-13 (the-as art-joint-anim (-> self draw art-group data 13)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-14 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-14 param 0) (the float (+ (-> a0-14 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-14 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-14 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(ja-channel-push! 1 30)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior spider-egg) ja-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate spider-egg-hatch (spider-egg)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(local-vars (v0-0 symbol))
|
||||
(case arg2
|
||||
(('can-spawn?)
|
||||
(return (the-as object #f))
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(dummy-18 self)
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-0
|
||||
(let ((t9-3 (method-of-type part-tracker activate)))
|
||||
(t9-3 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
gp-0
|
||||
part-tracker-init
|
||||
(-> *part-group-id-table* 324)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> self root-override trans)
|
||||
)
|
||||
(-> gp-0 ppointer)
|
||||
)
|
||||
)
|
||||
(lods-assign! (-> self draw) (-> self broken-look))
|
||||
(ja-channel-push! 1 60)
|
||||
(let ((a0-8 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-8 frame-group) (the-as art-joint-anim (-> self draw art-group data 10)))
|
||||
(set! (-> a0-8 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 10)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-8 param 1) 1.0)
|
||||
(set! (-> a0-8 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-8 (the-as art-joint-anim (-> self draw art-group data 10)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-9 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-9 param 0) (the float (+ (-> a0-9 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-9 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-9 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(logior! (-> self draw status) 2)
|
||||
(until (not (-> self child))
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior spider-egg) ja-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate spider-egg-die (spider-egg)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(local-vars (v0-0 symbol))
|
||||
(case arg2
|
||||
(('can-spawn?)
|
||||
(return (the-as object #f))
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(dummy-18 self)
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(when (-> self notify-actor)
|
||||
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-0 from) self)
|
||||
(set! (-> a1-0 num-params) 1)
|
||||
(set! (-> a1-0 message) 'notify)
|
||||
(set! (-> a1-0 param 0) (the-as uint 'die))
|
||||
(let ((t9-1 send-event-function)
|
||||
(v1-9 (-> self notify-actor))
|
||||
)
|
||||
(t9-1
|
||||
(if v1-9
|
||||
(-> v1-9 extra process)
|
||||
)
|
||||
a1-0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-0
|
||||
(let ((t9-3 (method-of-type part-tracker activate)))
|
||||
(t9-3 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
gp-0
|
||||
part-tracker-init
|
||||
(-> *part-group-id-table* 325)
|
||||
-1
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
(-> self root-override trans)
|
||||
)
|
||||
(-> gp-0 ppointer)
|
||||
)
|
||||
)
|
||||
(lods-assign! (-> self draw) (-> self broken-look))
|
||||
(ja-channel-push! 1 30)
|
||||
(clear-collide-with-as (-> self root-override))
|
||||
(let ((a0-9 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-9 frame-group) (the-as art-joint-anim (-> self draw art-group data 12)))
|
||||
(set! (-> a0-9 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 12)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-9 param 1) 1.0)
|
||||
(set! (-> a0-9 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-9 (the-as art-joint-anim (-> self draw art-group data 12)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-10 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-10 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(logior! (-> self draw status) 2)
|
||||
(until (not (-> self child))
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior spider-egg) ja-post)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type spider-egg
|
||||
;; INFO: Return type mismatch object vs none.
|
||||
;; Used lq/sq
|
||||
(defmethod init-from-entity! spider-egg ((obj spider-egg) (arg0 entity-actor))
|
||||
(set! (-> obj mask) (logior (process-mask enemy) (-> obj mask)))
|
||||
(set! (-> obj mask) (logior (process-mask attackable) (-> obj mask)))
|
||||
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player))))
|
||||
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
|
||||
(set! (-> s4-0 reaction) default-collision-reaction)
|
||||
(set! (-> s4-0 no-reaction)
|
||||
(the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)
|
||||
)
|
||||
(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 1))
|
||||
(set! (-> s3-0 prim-core offense) 1)
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 2048.0 0.0 3686.4)
|
||||
(set-root-prim! s4-0 s3-0)
|
||||
)
|
||||
(set! (-> s4-0 nav-radius) 4096.0)
|
||||
(backup-collide-with-as s4-0)
|
||||
(set! (-> obj root-override) s4-0)
|
||||
)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(initialize-skeleton obj *spider-egg-unbroken-sg* '())
|
||||
(dummy-9 (-> obj broken-look) *spider-egg-broken-sg* (-> obj draw art-group) (-> obj entity))
|
||||
(set-vector! (-> obj root-override scale) 0.4 0.4 0.4 1.0)
|
||||
(if (not (dummy-60 (-> obj root-override) 12288.0 40960.0 #t (the-as uint 1)))
|
||||
(go process-drawable-art-error "no ground")
|
||||
)
|
||||
(set! (-> obj root-override trans y) (+ -409.6 (-> obj root-override trans y)))
|
||||
(let ((s4-1 (new 'stack-no-clear 'vector)))
|
||||
(set! (-> s4-1 quad) (-> obj root-override surface-normal quad))
|
||||
(+! (-> s4-1 x) (rand-vu-float-range -0.2 0.2))
|
||||
(+! (-> s4-1 z) (rand-vu-float-range -0.2 0.2))
|
||||
(vector-normalize! s4-1 1.0)
|
||||
(quaternion-axis-angle!
|
||||
(-> obj root-override quat)
|
||||
(-> s4-1 x)
|
||||
(-> s4-1 y)
|
||||
(-> s4-1 z)
|
||||
(rand-vu-float-range 0.0 65536.0)
|
||||
)
|
||||
)
|
||||
(dummy-47 (-> obj root-override))
|
||||
(nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f))
|
||||
(if (> (entity-actor-count arg0 'alt-actor) 0)
|
||||
(set! (-> obj notify-actor) (entity-actor-lookup arg0 'alt-actor 0))
|
||||
(set! (-> obj notify-actor) #f)
|
||||
)
|
||||
(go spider-egg-idle #t)
|
||||
(none)
|
||||
)
|
||||
+515
@@ -0,0 +1,515 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type snow-bumper
|
||||
(deftype snow-bumper (process-drawable)
|
||||
((bumper-id int32 :offset-assert 176)
|
||||
(base-shove-ry float :offset-assert 180)
|
||||
(max-shove-diff-ry float :offset-assert 184)
|
||||
(part2 sparticle-launch-control :offset-assert 188)
|
||||
(last-shoved-player-time uint64 :offset-assert 192)
|
||||
)
|
||||
:heap-base #x60
|
||||
:method-count-assert 22
|
||||
:size-assert #xc8
|
||||
:flag-assert #x16006000c8
|
||||
(:methods
|
||||
(dummy-20 (_type_) none 20)
|
||||
(shove-player (_type_ process-drawable) none 21)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type snow-bumper
|
||||
(defmethod inspect snow-bumper ((obj snow-bumper))
|
||||
(let ((t9-0 (method-of-type process-drawable inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~T~Tbumper-id: ~D~%" (-> obj bumper-id))
|
||||
(format #t "~T~Tbase-shove-ry: ~f~%" (-> obj base-shove-ry))
|
||||
(format #t "~T~Tmax-shove-diff-ry: ~f~%" (-> obj max-shove-diff-ry))
|
||||
(format #t "~T~Tpart2: ~A~%" (-> obj part2))
|
||||
(format #t "~T~Tlast-shoved-player-time: ~D~%" (-> obj last-shoved-player-time))
|
||||
obj
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup *snow-bumper-sg* snow-bumper
|
||||
0
|
||||
-1
|
||||
((1 (meters 20)) (2 (meters 999999)))
|
||||
:bounds (static-spherem 0 2.2 0 3.4)
|
||||
:longest-edge (meters 0)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-group-id-table* 519)
|
||||
(new 'static 'sparticle-launch-group
|
||||
:length 1
|
||||
:duration #xbb8
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-snow-bumper-idle"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 1
|
||||
(sp-item 1893 :fade-after (meters 90.0) :falloff-to (meters 90.0) :period 25 :length 10)
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 1893) (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 15.0)
|
||||
(sp-flt spt-y (meters 1.5))
|
||||
(sp-flt spt-z 0.0)
|
||||
(sp-flt spt-scale-x (meters 1.5))
|
||||
(sp-flt spt-scale-y (meters 6.0))
|
||||
(sp-flt spt-r 0.0)
|
||||
(sp-flt spt-g 64.0)
|
||||
(sp-rnd-flt spt-b 64.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 64.0 1.0)
|
||||
(sp-flt spt-vel-y (meters 0.013333334))
|
||||
(sp-flt spt-scalevel-x (meters 0.0038461538))
|
||||
(sp-flt spt-scalevel-y (meters -0.03076923))
|
||||
(sp-flt spt-fade-a 0.0)
|
||||
(sp-int spt-timer 25)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-flt spt-conerot-x (degrees 90.0))
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-flt spt-conerot-radius (meters 5.0))
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-group-id-table* 520) (new 'static 'sparticle-launch-group
|
||||
:length 1
|
||||
:duration #xbb8
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-snow-bumper-shove"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 1 (sp-item 1895))
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 1895) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 19
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
||||
(sp-flt spt-num 16.0)
|
||||
(sp-flt spt-x (meters 5.5))
|
||||
(sp-flt spt-y (meters 1.5))
|
||||
(sp-flt spt-z 0.0)
|
||||
(sp-flt spt-scale-x (meters 2.0))
|
||||
(sp-flt spt-scale-y (meters 6.0))
|
||||
(sp-rnd-flt spt-r 64.0 32.0 1.0)
|
||||
(sp-flt spt-g 64.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-flt spt-a 64.0)
|
||||
(sp-flt spt-vel-x (meters 0.033333335))
|
||||
(sp-flt spt-scalevel-x (meters 0.008333334))
|
||||
(sp-flt spt-scalevel-y (meters 0.2))
|
||||
(sp-flt spt-fade-a 0.0)
|
||||
(sp-int spt-timer 25)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit14)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 45.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 21 of type snow-bumper
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
;; Used lq/sq
|
||||
(defmethod shove-player snow-bumper ((obj snow-bumper) (arg0 process-drawable))
|
||||
(with-pp
|
||||
(let ((s5-0 (new 'stack-no-clear 'vector)))
|
||||
(vector-! s5-0 (-> arg0 root trans) (-> obj root trans))
|
||||
(set! (-> s5-0 y) 0.0)
|
||||
(vector-normalize! s5-0 1.0)
|
||||
(let* ((f0-3 (atan (-> s5-0 x) (-> s5-0 z)))
|
||||
(f30-0 (-> obj base-shove-ry))
|
||||
(f28-0 (-> obj max-shove-diff-ry))
|
||||
(f0-4 (deg- f0-3 f30-0))
|
||||
)
|
||||
(when (< f28-0 (fabs f0-4))
|
||||
(let ((f30-1 (if (>= f0-4 0.0)
|
||||
(+ f30-0 f28-0)
|
||||
(- f30-0 f28-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set-vector! s5-0 (sin f30-1) 0.0 (cos f30-1) 1.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((f0-12 (+ -16384.0 (atan (-> s5-0 x) (-> s5-0 z)))))
|
||||
(set! (-> *part-id-table* 1895 init-specs 17 initial-valuef) (+ -4096.0 f0-12))
|
||||
)
|
||||
(spawn (-> obj part2) (-> obj root trans))
|
||||
(let ((s3-1 (new 'stack-no-clear 'vector)))
|
||||
(vector-normalize-copy! s3-1 s5-0 32768.0)
|
||||
(vector+! s3-1 s3-1 (-> obj root trans))
|
||||
(vector-! s5-0 s3-1 (-> arg0 root trans))
|
||||
)
|
||||
(let ((f30-3 (vector-xz-length s5-0)))
|
||||
(vector-normalize! s5-0 1.0)
|
||||
(let ((a1-12 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-12 from) pp)
|
||||
(set! (-> a1-12 num-params) 2)
|
||||
(set! (-> a1-12 message) 'shove)
|
||||
(set! (-> a1-12 param 0) (the-as uint #f))
|
||||
(let ((v1-16 (new 'static 'attack-info :mask #xc2)))
|
||||
(set! (-> v1-16 vector quad) (-> s5-0 quad))
|
||||
(set! (-> v1-16 shove-up) 4096.0)
|
||||
(set! (-> v1-16 shove-back) f30-3)
|
||||
(set! (-> a1-12 param 1) (the-as uint v1-16))
|
||||
)
|
||||
(if (send-event-function *target* a1-12)
|
||||
(set! (-> obj last-shoved-player-time) (the-as uint (-> *display* base-frame-counter)))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate snow-bumper-active-far-idle (snow-bumper)
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (and *target* (>= 135895450000.0 (vector-vector-xz-distance-squared (-> self root trans) (target-pos 0))))
|
||||
(go snow-bumper-active-close-idle)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(transform-post)
|
||||
(suspend)
|
||||
(while #t
|
||||
(logior! (-> self mask) (process-mask sleep-code))
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate snow-bumper-active-close-idle (snow-bumper)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('touch 'attack 'bonk)
|
||||
(when (= (-> arg0 type) target)
|
||||
(let ((gp-0 (-> arg3 param 0)))
|
||||
(when (and
|
||||
(>= 6144.0 (vector-vector-xz-distance (-> self root trans) (target-pos 0)))
|
||||
((method-of-type touching-shapes-entry prims-touching?)
|
||||
(the-as touching-shapes-entry gp-0)
|
||||
(the-as collide-shape-moving (-> self root))
|
||||
(the-as uint 1)
|
||||
)
|
||||
)
|
||||
(close-specific-task! (game-task snow-bumpers) (task-status need-hint))
|
||||
(go snow-bumper-deactivate)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:trans
|
||||
(behavior ()
|
||||
(cond
|
||||
(*target*
|
||||
(let* ((gp-0 (target-pos 0))
|
||||
(f30-0 (vector-vector-xz-distance (-> self root trans) gp-0))
|
||||
(f28-0 (- (-> gp-0 y) (-> self root trans y)))
|
||||
)
|
||||
(if (< 368640.0 f30-0)
|
||||
(go snow-bumper-active-far-idle)
|
||||
)
|
||||
(if (and
|
||||
(>= (- (-> *display* base-frame-counter) (the-as int (-> self last-shoved-player-time))) 150)
|
||||
(>= 20480.0 f30-0)
|
||||
(>= f28-0 -4096.0)
|
||||
(>= 11059.2 f28-0)
|
||||
)
|
||||
(shove-player self *target*)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(go snow-bumper-active-far-idle)
|
||||
)
|
||||
)
|
||||
(spawn (-> self part) (-> self root trans))
|
||||
(update! (-> self sound))
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(transform-post)
|
||||
(suspend)
|
||||
(while #t
|
||||
(logior! (-> self mask) (process-mask sleep-code))
|
||||
(suspend)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate snow-bumper-deactivate (snow-bumper)
|
||||
:exit
|
||||
(behavior () (stop! (-> self sound)) (logior! (-> self mask) (process-mask actor-pause)) (none))
|
||||
:trans
|
||||
(the-as (function none :behavior snow-bumper) rider-trans)
|
||||
:code
|
||||
(behavior ()
|
||||
(local-vars (sv-16 symbol))
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(sound-play-by-name (static-sound-name "bumper-pwr-dwn") (new-sound-id) 1024 0 0 1 #t)
|
||||
(let ((a0-3 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 4)))
|
||||
(set! (-> a0-3 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 4)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-3 param 1) 0.05)
|
||||
(set! (-> a0-3 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-3 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(spawn (-> self part) (-> self root trans))
|
||||
(update! (-> self sound))
|
||||
(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) 0.05)
|
||||
(joint-control-channel-group-eval! a0-6 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(stop! (-> self sound))
|
||||
(set! (-> self state-time) (-> *display* base-frame-counter))
|
||||
(until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150)
|
||||
(suspend)
|
||||
)
|
||||
(let ((a0-10 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-10 frame-group) (the-as art-joint-anim (-> self draw art-group data 5)))
|
||||
(set! (-> a0-10 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-10 param 1) 0.02)
|
||||
(set! (-> a0-10 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-10 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-11 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-11 param 0) (the float (+ (-> a0-11 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-11 param 1) 0.02)
|
||||
(joint-control-channel-group-eval! a0-11 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(process-entity-status! self (entity-perm-status complete) #t)
|
||||
(set! sv-16 (the-as symbol #f))
|
||||
(apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16))
|
||||
(when sv-16
|
||||
(save-reminder (get-task-control (game-task snow-bumpers)) (-> self bumper-id) 0)
|
||||
(go snow-bumper-spawn-fuel-cell)
|
||||
)
|
||||
(go snow-bumper-inactive-idle)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior snow-bumper) rider-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate snow-bumper-spawn-fuel-cell (snow-bumper)
|
||||
:code
|
||||
(behavior ()
|
||||
(ja-channel-set! 1)
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
gp-0
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> gp-0 frame-num)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1))
|
||||
)
|
||||
)
|
||||
(transform-post)
|
||||
(if (not (task-complete? *game-info* (-> self entity extra perm task)))
|
||||
(birth-pickup-at-point
|
||||
(-> self root trans)
|
||||
(pickup-type fuel-cell)
|
||||
(the float (-> self entity extra perm task))
|
||||
#t
|
||||
self
|
||||
(the-as fact-info #f)
|
||||
)
|
||||
)
|
||||
(until (not (-> self child))
|
||||
(suspend)
|
||||
)
|
||||
(go snow-bumper-inactive-idle)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate snow-bumper-inactive-idle (snow-bumper)
|
||||
:code
|
||||
(behavior ()
|
||||
(set! (-> self root nav-radius) 6963.2)
|
||||
(ja-channel-set! 1)
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
gp-0
|
||||
(the-as art-joint-anim (-> self draw art-group data 5))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> gp-0 frame-num)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1))
|
||||
)
|
||||
)
|
||||
(transform-post)
|
||||
(suspend)
|
||||
(logior! (-> self mask) (process-mask sleep-code))
|
||||
(suspend)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 10 of type snow-bumper
|
||||
(defmethod deactivate snow-bumper ((obj snow-bumper))
|
||||
(if (nonzero? (-> obj part2))
|
||||
(kill-and-free-particles (-> obj part2))
|
||||
)
|
||||
((method-of-type process-drawable deactivate) obj)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 7 of type snow-bumper
|
||||
;; INFO: Return type mismatch process-drawable vs snow-bumper.
|
||||
(defmethod relocate snow-bumper ((obj snow-bumper) (arg0 int))
|
||||
(if (nonzero? (-> obj part2))
|
||||
(&+! (-> obj part2) arg0)
|
||||
)
|
||||
(the-as
|
||||
snow-bumper
|
||||
((the-as (function process-drawable int process-drawable) (find-parent-method snow-bumper 7)) obj arg0)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type snow-bumper
|
||||
;; INFO: Return type mismatch object vs none.
|
||||
;; Used lq/sq
|
||||
(defmethod init-from-entity! snow-bumper ((obj snow-bumper) (arg0 entity-actor))
|
||||
(local-vars (sv-16 res-tag))
|
||||
(set! (-> obj last-shoved-player-time) (the-as uint 0))
|
||||
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player))))
|
||||
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
|
||||
(set! (-> s4-0 reaction) default-collision-reaction)
|
||||
(set! (-> s4-0 no-reaction)
|
||||
(the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)
|
||||
)
|
||||
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0)))
|
||||
(set! (-> s3-0 prim-core collide-as) (the-as uint 2048))
|
||||
(set! (-> s3-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s3-0 prim-core action) (the-as uint 3))
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 9011.2 0.0 13926.4)
|
||||
(set-root-prim! s4-0 s3-0)
|
||||
(let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1))))
|
||||
(set! (-> s2-0 prim-core collide-as) (the-as uint 2048))
|
||||
(set! (-> s2-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-0 prim-core action) (the-as uint 3))
|
||||
(set! (-> s2-0 prim-core offense) 4)
|
||||
(set! (-> s2-0 transform-index) 6)
|
||||
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4915.2)
|
||||
(append-prim s3-0 s2-0)
|
||||
)
|
||||
(let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2))))
|
||||
(set! (-> s2-1 prim-core collide-as) (the-as uint 512))
|
||||
(set! (-> s2-1 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-1 prim-core action) (the-as uint 1))
|
||||
(set! (-> s2-1 prim-core offense) 4)
|
||||
(set! (-> s2-1 transform-index) 3)
|
||||
(set-vector! (-> s2-1 local-sphere) 0.0 8192.0 0.0 11878.4)
|
||||
(append-prim s3-0 s2-1)
|
||||
)
|
||||
)
|
||||
(set! (-> s4-0 nav-radius) 20480.0)
|
||||
(backup-collide-with-as s4-0)
|
||||
(set! (-> obj root) s4-0)
|
||||
)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(initialize-skeleton obj *snow-bumper-sg* '())
|
||||
(set! (-> obj part) (create-launch-control (-> *part-group-id-table* 519) obj))
|
||||
(set! (-> obj part2) (create-launch-control (-> *part-group-id-table* 520) obj))
|
||||
(nav-mesh-connect obj (-> obj root) (the-as nav-control #f))
|
||||
(set! (-> obj link) (new 'process 'actor-link-info obj))
|
||||
(set! (-> obj bumper-id) (+ (actor-count-before (-> obj link)) 1))
|
||||
(set! (-> obj sound) (new
|
||||
'process
|
||||
'ambient-sound
|
||||
(new 'static 'sound-spec
|
||||
:mask #x80
|
||||
:num 1.0
|
||||
:group #x1
|
||||
:sound-name (static-sound-name "snow-bumper")
|
||||
:volume #x400
|
||||
:fo-max 40
|
||||
)
|
||||
(-> obj root trans)
|
||||
)
|
||||
)
|
||||
(ja-channel-set! 1)
|
||||
(let ((s5-1 (-> obj skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
s5-1
|
||||
(the-as art-joint-anim (-> obj draw art-group data 3))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> s5-1 frame-num) 0.0)
|
||||
)
|
||||
(transform-post)
|
||||
(set! (-> obj base-shove-ry) 0.0)
|
||||
(set! (-> obj max-shove-diff-ry) 32768.0)
|
||||
(set! sv-16 (new 'static 'res-tag))
|
||||
(let ((v1-52 (res-lump-data (-> obj entity) 'rotmin (pointer float) :tag-ptr (& sv-16))))
|
||||
(when v1-52
|
||||
(set! (-> obj base-shove-ry) (-> v1-52 0))
|
||||
(set! (-> obj max-shove-diff-ry) (-> v1-52 1))
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)))
|
||||
(if (and
|
||||
(= (get-reminder (get-task-control (game-task snow-bumpers)) 0) (-> obj bumper-id))
|
||||
(not (task-complete? *game-info* (-> obj entity extra perm task)))
|
||||
)
|
||||
(go snow-bumper-spawn-fuel-cell)
|
||||
(go snow-bumper-inactive-idle)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(go snow-bumper-active-far-idle)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
+5
-4
@@ -3,7 +3,8 @@
|
||||
|
||||
;; definition of type ram
|
||||
(deftype ram (process-drawable)
|
||||
((ram-id int32 :offset-assert 176)
|
||||
((root-override collide-shape-moving :offset 112)
|
||||
(ram-id int32 :offset-assert 176)
|
||||
(give-fuel-cell? symbol :offset-assert 180)
|
||||
(give-fuel-cell-anim spool-anim :offset-assert 184)
|
||||
(part2 sparticle-launch-control :offset-assert 188)
|
||||
@@ -15,9 +16,9 @@
|
||||
:size-assert #xe0
|
||||
:flag-assert #x17007000e0
|
||||
(:methods
|
||||
(dummy-20 () none 20)
|
||||
(dummy-21 () none 21)
|
||||
(dummy-22 () none 22)
|
||||
(dummy-20 (_type_) object 20)
|
||||
(dummy-21 (_type_) object 21)
|
||||
(dummy-22 (_type_) symbol 22)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
+592
@@ -0,0 +1,592 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup *ram-sg* ram
|
||||
0
|
||||
4
|
||||
((1 (meters 20)) (2 (meters 40)) (3 (meters 999999)))
|
||||
:bounds (static-spherem 0 5 0 8.5)
|
||||
:longest-edge (meters 7.7)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-group-id-table* 526) (new 'static 'sparticle-launch-group
|
||||
:length 2
|
||||
:duration #xbb8
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-ram-hit-wall"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 2
|
||||
(sp-item 1921)
|
||||
(sp-item 1922 :fade-after (meters 60.0) :falloff-to (meters 60.0))
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 1920) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 18
|
||||
(sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2))
|
||||
(sp-rnd-flt spt-num 64.0 16.0 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.2) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 128.0 16.0 1.0)
|
||||
(sp-rnd-flt spt-g 128.0 48.0 1.0)
|
||||
(sp-rnd-flt spt-b 128.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.053333335) 1.0)
|
||||
(sp-flt spt-scalevel-x (meters -0.00066666666))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-rnd-flt spt-accel-y -20.48 13.653334 1.0)
|
||||
(sp-rnd-flt spt-friction 0.92 0.05 1.0)
|
||||
(sp-int spt-timer 210)
|
||||
(sp-cpuinfo-flags bit0 bit3 bit12)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 170.0) 1.0)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 1922) (new 'static 'sparticle-launcher
|
||||
:init-specs
|
||||
(new 'static 'inline-array sp-field-init-spec 19
|
||||
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
|
||||
(sp-flt spt-num 8.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 3.0) (meters 3.0) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 100.0)
|
||||
(sp-flt spt-g 100.0)
|
||||
(sp-flt spt-b 128.0)
|
||||
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.013333334) 1.0)
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
|
||||
(sp-flt spt-fade-a -0.60952383)
|
||||
(sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0)
|
||||
(sp-int spt-timer 210)
|
||||
(sp-cpuinfo-flags bit2 bit3 bit12)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 1921) (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-rnd-flt spt-scale-x (meters 6.0) (meters 1.0) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 100.0)
|
||||
(sp-flt spt-g 100.0)
|
||||
(sp-flt spt-b 128.0)
|
||||
(sp-flt spt-a 96.0)
|
||||
(sp-flt spt-fade-a -2.1333334)
|
||||
(sp-int spt-timer 42)
|
||||
(sp-cpuinfo-flags bit2 bit3)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-group-id-table* 527) (new 'static 'sparticle-launch-group
|
||||
:length 1
|
||||
:duration #xbb8
|
||||
:linger-duration #x5dc
|
||||
:flags (sp-group-flag use-local-clock)
|
||||
:name "group-ram-wheel-puffs"
|
||||
:launcher
|
||||
(new 'static 'inline-array sparticle-group-item 1
|
||||
(sp-item 1923 :fade-after (meters 70.0) :falloff-to (meters 70.0))
|
||||
)
|
||||
:bounds (new 'static 'sphere :w 32768.0)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *part-id-table* 1923)
|
||||
(new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18
|
||||
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-x (meters -0.5) (meters 1.0) 1.0)
|
||||
(sp-rnd-flt spt-z -2048.0 4096.0 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.5) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 100.0)
|
||||
(sp-flt spt-g 100.0)
|
||||
(sp-flt spt-b 128.0)
|
||||
(sp-rnd-flt spt-a 32.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.0033333334) 1.0)
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0)
|
||||
(sp-flt spt-fade-a -0.26666668)
|
||||
(sp-flt spt-accel-y -1.3653333)
|
||||
(sp-int spt-timer 120)
|
||||
(sp-cpuinfo-flags bit2)
|
||||
(sp-end)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 20 of type ram
|
||||
(defmethod dummy-20 ram ((obj ram))
|
||||
(let ((gp-0 (-> obj part)))
|
||||
(when (nonzero? gp-0)
|
||||
(let ((a2-0 (-> obj node-list data 8 bone transform))
|
||||
(s5-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set-vector! s5-0 0.0 0.0 -49152.0 1.0)
|
||||
(vector-matrix*! s5-0 s5-0 a2-0)
|
||||
(set! (-> *part-id-table* 1920 init-specs 16 initial-valuef) (+ 16384.0 (-> obj orient-ry)))
|
||||
(spawn gp-0 s5-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 21 of type ram
|
||||
(defmethod dummy-21 ram ((obj ram))
|
||||
(let ((gp-0 (-> obj part2)))
|
||||
(let ((s3-0 (new 'stack-no-clear 'vector))
|
||||
(s4-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(vector<-cspace! s3-0 (-> obj node-list data 5))
|
||||
(set-vector! s4-0 13312.0 -5324.8 0.0 1.0)
|
||||
(vector-rotate-around-y! s4-0 s4-0 (-> obj orient-ry))
|
||||
(vector+! s4-0 s4-0 s3-0)
|
||||
(spawn gp-0 s4-0)
|
||||
(set-vector! s4-0 -13312.0 -5324.8 0.0 1.0)
|
||||
(vector-rotate-around-y! s4-0 s4-0 (-> obj orient-ry))
|
||||
(vector+! s4-0 s4-0 s3-0)
|
||||
(spawn gp-0 s4-0)
|
||||
)
|
||||
(let ((s3-1 (new 'stack-no-clear 'vector))
|
||||
(s4-1 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(vector<-cspace! s3-1 (-> obj node-list data 6))
|
||||
(set-vector! s4-1 13312.0 -5324.8 0.0 1.0)
|
||||
(vector-rotate-around-y! s4-1 s4-1 (-> obj orient-ry))
|
||||
(vector+! s4-1 s4-1 s3-1)
|
||||
(spawn gp-0 s4-1)
|
||||
(set-vector! s4-1 -13312.0 -5324.8 0.0 1.0)
|
||||
(vector-rotate-around-y! s4-1 s4-1 (-> obj orient-ry))
|
||||
(vector+! s4-1 s4-1 s3-1)
|
||||
(spawn gp-0 s4-1)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 22 of type ram
|
||||
(defmethod dummy-22 ram ((obj ram))
|
||||
(process-entity-status! obj (entity-perm-status complete) #t)
|
||||
(let ((v1-0 (alt-actor-list-subtask-incomplete-count obj)))
|
||||
(cond
|
||||
((zero? v1-0)
|
||||
(let ((v1-3 (-> obj entity extra perm)))
|
||||
(logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage))
|
||||
(set! (-> v1-3 user-int8 2) 1)
|
||||
)
|
||||
(if (not (task-complete? *game-info* (-> obj entity extra perm task)))
|
||||
(return #t)
|
||||
)
|
||||
)
|
||||
((= v1-0 1)
|
||||
(close-specific-task! (game-task snow-ram) (task-status need-reminder))
|
||||
)
|
||||
(else
|
||||
(close-specific-task! (game-task snow-ram) (task-status need-reminder-a))
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate ram-idle (ram)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('touch 'attack)
|
||||
(when ((method-of-type touching-shapes-entry prims-touching?)
|
||||
(the-as touching-shapes-entry (-> arg3 param 0))
|
||||
(-> self root-override)
|
||||
(the-as uint 1)
|
||||
)
|
||||
(let ((a1-3 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-3 from) self)
|
||||
(set! (-> a1-3 num-params) 2)
|
||||
(set! (-> a1-3 message) 'attack)
|
||||
(set! (-> a1-3 param 0) (-> arg3 param 0))
|
||||
(let ((v1-7 (new 'static 'attack-info :mask #xc0)))
|
||||
(set! (-> v1-7 shove-up) 2048.0)
|
||||
(set! (-> v1-7 shove-back) 8192.0)
|
||||
(set! (-> a1-3 param 1) (the-as uint v1-7))
|
||||
)
|
||||
(send-event-function arg0 a1-3)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:exit
|
||||
(behavior () (logior! (-> self mask) (process-mask actor-pause)) (none))
|
||||
:trans
|
||||
(behavior ()
|
||||
(rider-trans)
|
||||
(if (-> self give-fuel-cell-anim)
|
||||
(spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(local-vars (sv-16 symbol))
|
||||
(ja-channel-push! 1 22)
|
||||
(while #t
|
||||
(sound-play-by-name (static-sound-name "set-ram") (new-sound-id) 1024 0 0 1 #t)
|
||||
(let ((a0-2 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 4)))
|
||||
(set! (-> a0-2 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 4)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-2 param 1) 1.0)
|
||||
(set! (-> a0-2 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-2 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(let ((a0-3 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-3 param 0) (the float (+ (-> a0-3 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-3 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-3 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
(let ((gp-1 #f))
|
||||
(sound-play-by-name (static-sound-name "slam-crash") (new-sound-id) 1024 0 0 1 #t)
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(let ((a0-8 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-8 frame-group) (the-as art-joint-anim (-> self draw art-group data 5)))
|
||||
(set! (-> a0-8 param 0)
|
||||
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1))
|
||||
)
|
||||
(set! (-> a0-8 param 1) 1.0)
|
||||
(set! (-> a0-8 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-8 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!)
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(let ((f30-0 (ja-aframe-num 0)))
|
||||
(when (and (not gp-1) (>= f30-0 61.0))
|
||||
(set! gp-1 #t)
|
||||
(dummy-20 self)
|
||||
)
|
||||
(if (and (>= f30-0 62.0) (< f30-0 97.0))
|
||||
(dummy-21 self)
|
||||
)
|
||||
)
|
||||
(suspend)
|
||||
(let ((a0-12 (-> self skel root-channel 0)))
|
||||
(set! (-> a0-12 param 0) (the float (+ (-> a0-12 frame-group data 0 length) -1)))
|
||||
(set! (-> a0-12 param 1) 1.0)
|
||||
(joint-control-channel-group-eval! a0-12 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(logior! (-> self mask) (process-mask actor-pause))
|
||||
(set! sv-16 (the-as symbol #f))
|
||||
(apply-function-forward (-> self link) actor-link-dead-hook (& sv-16))
|
||||
(when (or sv-16 (nonzero? (-> self root-override riders num-riders)))
|
||||
(let ((v1-67 (-> self entity extra perm)))
|
||||
(logior! (-> v1-67 status) (entity-perm-status user-set-from-cstage))
|
||||
(set! (-> v1-67 user-int8 0) 1)
|
||||
)
|
||||
(send-event (ppointer->process (-> self child)) 'jump)
|
||||
(go ram-fun-idle)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:post
|
||||
(the-as (function none :behavior ram) rider-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate ram-fun-idle (ram)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('notify)
|
||||
(when (= (-> arg0 type) ram-boss)
|
||||
(if (dummy-22 self)
|
||||
(go ram-give-fuel-cell)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:trans
|
||||
(behavior ()
|
||||
(if (-> self give-fuel-cell-anim)
|
||||
(spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(if (-> self give-fuel-cell?)
|
||||
(go ram-give-fuel-cell)
|
||||
)
|
||||
(ja-channel-push! 1 0)
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
gp-0
|
||||
(the-as art-joint-anim (-> self draw art-group data 6))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> gp-0 frame-num) 0.0)
|
||||
)
|
||||
(transform-post)
|
||||
(logior! (-> self mask) (process-mask sleep-code))
|
||||
(suspend)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate ram-give-fuel-cell (ram)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('notify)
|
||||
(if (and (= (-> arg0 type) snowcam) (= (-> arg3 param 0) 'die))
|
||||
(go ram-fun-idle)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:exit
|
||||
(behavior ()
|
||||
(process-entity-status! self (entity-perm-status bit-3) #f)
|
||||
(logior! (-> self mask) (process-mask actor-pause))
|
||||
(none)
|
||||
)
|
||||
:code
|
||||
(behavior ()
|
||||
(set! (-> self give-fuel-cell?) #f)
|
||||
(ja-channel-push! 1 0)
|
||||
(let ((gp-0 (-> self skel root-channel 0)))
|
||||
(joint-control-channel-group-eval!
|
||||
gp-0
|
||||
(the-as art-joint-anim (-> self draw art-group data 6))
|
||||
num-func-identity
|
||||
)
|
||||
(set! (-> gp-0 frame-num) 0.0)
|
||||
)
|
||||
(transform-post)
|
||||
(when (and (not (task-complete? *game-info* (-> self entity extra perm task))) (-> self give-fuel-cell-anim))
|
||||
(logclear! (-> self mask) (process-mask actor-pause))
|
||||
(process-entity-status! self (entity-perm-status bit-3) #t)
|
||||
(let* ((gp-1 (the-as snowcam (get-process *default-dead-pool* snowcam #x4000)))
|
||||
(v1-14 (when gp-1
|
||||
(let ((t9-6 (method-of-type snowcam activate)))
|
||||
(t9-6 gp-1 self 'snowcam (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process
|
||||
gp-1
|
||||
pov-camera-init-by-other
|
||||
(-> self root-override trans)
|
||||
*snowcam-sg*
|
||||
(-> self give-fuel-cell-anim)
|
||||
0
|
||||
self
|
||||
'()
|
||||
)
|
||||
(-> gp-1 ppointer)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> (the-as (pointer snowcam) v1-14) 0 seq) (the-as uint 1))
|
||||
)
|
||||
(sound-play-by-name (static-sound-name "cell-prize") (new-sound-id) 1024 0 0 1 #t)
|
||||
(logior! (-> self mask) (process-mask sleep-code))
|
||||
(suspend)
|
||||
0
|
||||
)
|
||||
(go ram-fun-idle)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 10 of type ram
|
||||
(defmethod deactivate ram ((obj ram))
|
||||
(if (nonzero? (-> obj part2))
|
||||
(kill-and-free-particles (-> obj part2))
|
||||
)
|
||||
((method-of-type process-drawable deactivate) obj)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 7 of type ram
|
||||
;; INFO: Return type mismatch process-drawable vs ram.
|
||||
(defmethod relocate ram ((obj ram) (arg0 int))
|
||||
(if (nonzero? (-> obj part2))
|
||||
(&+! (-> obj part2) arg0)
|
||||
)
|
||||
(the-as ram ((method-of-type process-drawable relocate) obj arg0))
|
||||
)
|
||||
|
||||
;; definition for method 11 of type ram
|
||||
;; INFO: Return type mismatch object vs none.
|
||||
(defmethod init-from-entity! ram ((obj ram) (arg0 entity-actor))
|
||||
(set! (-> obj give-fuel-cell?) #f)
|
||||
(set! (-> obj link) (new 'process 'actor-link-info obj))
|
||||
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others))))
|
||||
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
|
||||
(set! (-> s4-0 reaction) default-collision-reaction)
|
||||
(set! (-> s4-0 no-reaction)
|
||||
(the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)
|
||||
)
|
||||
(dummy-29 s4-0 1)
|
||||
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0)))
|
||||
(set! (-> s3-0 prim-core collide-as) (the-as uint 2048))
|
||||
(set! (-> s3-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s3-0 prim-core action) (the-as uint 3))
|
||||
(set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 34816.0)
|
||||
(set-root-prim! s4-0 s3-0)
|
||||
(let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1))))
|
||||
(set! (-> s2-0 prim-core collide-as) (the-as uint 2048))
|
||||
(set! (-> s2-0 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-0 prim-core action) (the-as uint 1))
|
||||
(set! (-> s2-0 prim-core offense) 4)
|
||||
(set! (-> s2-0 transform-index) 8)
|
||||
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0)
|
||||
(append-prim s3-0 s2-0)
|
||||
)
|
||||
(let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2))))
|
||||
(set! (-> s2-1 prim-core collide-as) (the-as uint 2048))
|
||||
(set! (-> s2-1 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-1 prim-core action) (the-as uint 3))
|
||||
(set! (-> s2-1 prim-core offense) 4)
|
||||
(set! (-> s2-1 transform-index) 3)
|
||||
(set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 34816.0)
|
||||
(append-prim s3-0 s2-1)
|
||||
)
|
||||
(let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 4))))
|
||||
(set! (-> s2-2 prim-core collide-as) (the-as uint 256))
|
||||
(set! (-> s2-2 collide-with) (the-as uint 16))
|
||||
(set! (-> s2-2 prim-core offense) 0)
|
||||
(set! (-> s2-2 transform-index) 3)
|
||||
(set-vector! (-> s2-2 local-sphere) -4096.0 28672.0 12288.0 2252.8)
|
||||
(append-prim s3-0 s2-2)
|
||||
)
|
||||
)
|
||||
(set! (-> s4-0 nav-radius) 20480.0)
|
||||
(backup-collide-with-as s4-0)
|
||||
(set! (-> obj root-override) s4-0)
|
||||
)
|
||||
(process-drawable-from-entity! obj arg0)
|
||||
(initialize-skeleton obj *ram-sg* '())
|
||||
(logior! (-> obj skel status) 1)
|
||||
(ja-post)
|
||||
(dummy-47 (-> obj root-override))
|
||||
(set! (-> obj orient-ry) (quaternion-y-angle (-> obj root-override quat)))
|
||||
(nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f))
|
||||
(set! (-> obj part) (create-launch-control (-> *part-group-id-table* 526) obj))
|
||||
(set! (-> obj part2) (create-launch-control (-> *part-group-id-table* 527) obj))
|
||||
(set! (-> obj ram-id) (res-lump-value arg0 'extra-id int))
|
||||
(case (-> obj ram-id)
|
||||
((1)
|
||||
(set! (-> obj give-fuel-cell-anim)
|
||||
(new 'static 'spool-anim :name "snowcam-ram-boss-in-cave-fuel-cell" :index 7 :parts 1 :command-list '())
|
||||
)
|
||||
(set-vector! (-> obj fuel-cell-dest-pos) 3137396.8 803676.2 -13560558.0 1.0)
|
||||
)
|
||||
((2)
|
||||
(set! (-> obj give-fuel-cell-anim)
|
||||
(new 'static 'spool-anim :name "snowcam-ram-boss-ice-pond-fuel-cell" :index 8 :parts 1 :command-list '())
|
||||
)
|
||||
(set-vector! (-> obj fuel-cell-dest-pos) 2790289.5 1058152.5 -13639766.0 1.0)
|
||||
)
|
||||
((3)
|
||||
(set! (-> obj give-fuel-cell-anim)
|
||||
(new 'static 'spool-anim :name "snowcam-ram-boss-snow-ball-fuel-cell" :index 9 :parts 1 :command-list '())
|
||||
)
|
||||
(set-vector! (-> obj fuel-cell-dest-pos) 4208423.0 1037348.9 -13591491.0 1.0)
|
||||
)
|
||||
(else
|
||||
(set! (-> obj give-fuel-cell-anim) #f)
|
||||
)
|
||||
)
|
||||
(let ((s4-1 #f))
|
||||
(if (nonzero? (-> obj entity extra perm user-int8 0))
|
||||
(set! s4-1 #t)
|
||||
)
|
||||
(let ((s3-1 (= (res-lump-value arg0 'mode uint128) 1)))
|
||||
(when (not s3-1)
|
||||
(when (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)))
|
||||
(set! s3-1 #t)
|
||||
(if (and
|
||||
(nonzero? (-> obj entity extra perm user-int8 2))
|
||||
(not (task-complete? *game-info* (-> obj entity extra perm task)))
|
||||
)
|
||||
(birth-pickup-at-point
|
||||
(-> obj fuel-cell-dest-pos)
|
||||
(pickup-type fuel-cell)
|
||||
(the float (-> obj entity extra perm task))
|
||||
#f
|
||||
obj
|
||||
(the-as fact-info #f)
|
||||
)
|
||||
)
|
||||
(go ram-fun-idle)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((and (not s3-1) (has-nav-mesh? arg0))
|
||||
(cond
|
||||
(s4-1
|
||||
(let ((s5-1 (get-process *default-dead-pool* ram-boss #x4000)))
|
||||
(when s5-1
|
||||
(let ((t9-28 (method-of-type ram-boss activate)))
|
||||
(t9-28 (the-as ram-boss s5-1) obj 'ram-boss (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process s5-1 ram-boss-init-by-other (-> obj entity) obj #t)
|
||||
(-> s5-1 ppointer)
|
||||
)
|
||||
)
|
||||
(go ram-fun-idle)
|
||||
)
|
||||
(else
|
||||
(let ((s5-2 (get-process *default-dead-pool* ram-boss #x4000)))
|
||||
(when s5-2
|
||||
(let ((t9-32 (method-of-type ram-boss activate)))
|
||||
(t9-32 (the-as ram-boss s5-2) obj 'ram-boss (the-as pointer #x70004000))
|
||||
)
|
||||
(run-now-in-process s5-2 ram-boss-init-by-other (-> obj entity) obj #f)
|
||||
(-> s5-2 ppointer)
|
||||
)
|
||||
)
|
||||
(go ram-idle)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(go ram-fun-idle)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
+1153
File diff suppressed because it is too large
Load Diff
+1261
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -1570,7 +1570,7 @@
|
||||
(set-vector! s5-0 -49152.0 10240.0 5529.6 1.0)
|
||||
(vector+! s5-0 s5-0 (-> self entity extra trans))
|
||||
(vector-! s4-0 gp-0 s5-0)
|
||||
(let ((t2-0 (new 'stack-no-clear 'collide-mesh-cache-tri)))
|
||||
(let ((t2-0 (new 'stack-no-clear 'collide-tri-result)))
|
||||
0.0
|
||||
(when (>= (dummy-10 *collide-cache* s5-0 s4-0 6144.0 16 (the-as process #f) t2-0 1) 0.0)
|
||||
(let ((a1-7 (new 'stack-no-clear 'event-message-block)))
|
||||
|
||||
+2030
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user