decomp: Pass of the final remaining gameplay related files (#921)

* blocked: `plant-boss` has `go` returning none issues

* blocked: `ice-cube` return value getting forced to none

* blocked: `ropebridge` has static data isue

* blocked: `double-lurker` handle cast issues

* decomp: finish `billy`

* decomp: finish `lurkerworm`

* blocked: `pelican` handle casts

* decomp: finish `citb-bunny`

* blocked: inherited states in `snow-bunny`

* blocked: CFG resolution in `lavatube-energy`

* decomp: finish `citadel-sages`

* progress: working through `collectables`

* blocked: finished as much as currently possible in `collectables`

- process-tree's 10 method pparently has a 3rd arg -- im doubtful
- set-to-run function
- branch delay unimplemented case
- weird method 21 eco-collectable

* pre-merge

* decomp: update source files / ref tests

* decomp: finish `floating-launcher`, `shover`, `steam-cap`, `sun-iris-door`, `whirlpool`

* decomp: address feedback

* update ref tests and gsrc
This commit is contained in:
Tyler Wilding
2021-11-14 11:14:43 -05:00
committed by GitHub
parent 97636135c5
commit c8a31d4d1b
57 changed files with 17419 additions and 1291 deletions
File diff suppressed because it is too large Load Diff
@@ -821,5 +821,33 @@
[5, "(function symbol :behavior touch-tracker)"]
],
"plant-boss": [
[22, "(function none :behavior camera-tracker)"]
],
"pelican": [
[1, "(function sparticle-launch-control :behavior pelican)"],
[5, "(function pelican int)"],
[6, "(function int)"],
[10, "(function int)"],
[15, "(function process int symbol event-message-block object :behavior pelican)"],
[16, "(function none :behavior pelican)"],
[24, "(function pelican int)"],
[25, "(function int)"],
[34, "(function int)"],
[35, "(function int)"],
[37, "(function none :behavior camera-tracker)"],
[39, "(function sparticle-launch-control :behavior pelican)"]
],
"collectables": [
[11, "(function symbol)"],
[12, "(function symbol)"],
[13, "(function symbol)"],
[14, "(function vent symbol)"],
[38, "(function int none :behavior collectable)"],
[69, "(function part-tracker vector)"]
],
"placeholder-do-not-add-below": []
}
@@ -323,9 +323,6 @@
// navigate BUG
"(method 32 nav-control)",
// collectables BUG
"add-blue-motion",
// ocean
"draw-large-polygon-ocean", // CFG
@@ -337,10 +334,9 @@
"(method 27 ropebridge)",
// all unchecked and in level DGO code
"(anon-function 21 plant-boss)",
"(anon-function 10 ice-cube)",
"(anon-function 15 ice-cube)",
"(anon-function 45 lavatube-energy)",
"(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",
"kermit-check-to-hit-player?",
@@ -401,7 +397,8 @@
"command-get-quoted-param",
"command-get-trans",
"command-get-camera",
"(method 14 camera-tracker)"
"(method 14 camera-tracker)",
"(enter billy-playing)"
],
// If format is used with the wrong number of arguments,
@@ -854,6 +854,7 @@
"target-snowball": [["L23", "vector"]],
"ice-cube": [
["L210", "vector"],
["L212", "attack-info"],
["L213", "attack-info"],
["L215", "attack-info"]
@@ -911,26 +912,6 @@
["L318", "vector"]
],
"collectables": [
["L611", "(pointer float)", true, 1],
["L649", "(pointer float)", true, 1],
["L656", "(pointer float)", true, 1],
["L657", "(pointer float)", true, 1],
["L658", "(pointer float)", true, 1],
["L660", "(pointer float)", true, 1],
["L663", "(pointer float)", true, 1],
["L585", "vector"],
["L725", "float", true],
["L726", "float", true],
["L727", "float", true],
["L728", "uint64", true],
["L729", "uint64", true],
["L730", "uint64", true],
["L731", "uint64", true],
["L732", "uint64", true],
["L733", "uint64", true]
],
"sky": [["L13", "vu-function"]],
"sky-tng": [
@@ -1137,6 +1118,7 @@
["L272", "vector"],
["L527", "quaternion"]
],
"sage-finalboss-L1": [
["L528", "vector"],
["L272", "vector"],
@@ -1248,6 +1230,223 @@
["L457", "attack-info"]
],
"collectables": [
["L533", "vector"],
["L606", "float", true],
["L607", "float", true],
["L608", "float", true],
["L609", "float", true],
["L610", "float", true],
["L611", "float", true],
["L612", "float", true],
["L613", "float", true],
["L614", "float", true],
["L615", "float", true],
["L616", "float", true],
["L617", "float", true],
["L618", "float", true],
["L619", "float", true],
["L620", "float", true],
["L621", "float", true],
["L622", "float", true],
["L623", "float", true],
["L624", "float", true],
["L625", "float", true],
["L626", "float", true],
["L627", "float", true],
["L628", "float", true],
["L629", "float", true],
["L630", "float", true],
["L631", "float", true],
["L632", "float", true],
["L633", "float", true],
["L634", "float", true],
["L635", "float", true],
["L636", "float", true],
["L637", "float", true],
["L638", "float", true],
["L639", "float", true],
["L640", "float", true],
["L641", "float", true],
["L642", "float", true],
["L643", "float", true],
["L644", "float", true],
["L645", "float", true],
["L646", "float", true],
["L647", "float", true],
["L648", "float", true],
["L649", "float", true],
["L650", "float", true],
["L651", "float", true],
["L652", "float", true],
["L653", "float", true],
["L654", "float", true],
["L655", "float", true],
["L656", "float", true],
["L657", "float", true],
["L658", "float", true],
["L659", "float", true],
["L660", "float", true],
["L661", "float", true],
["L662", "float", true],
["L663", "(pointer float)", 1],
["L664", "uint64", true],
["L666", "uint64", true],
["L665", "uint64", true],
["L667", "uint64", true],
["L668", "uint64", true],
["L669", "uint64", true],
["L670", "uint64", true],
["L671", "uint64", true],
["L672", "uint64", true],
["L585", "vector"],
["L725", "float", true],
["L726", "float", true],
["L727", "float", true],
["L728", "uint64", true],
["L729", "uint64", true],
["L730", "uint64", true],
["L731", "uint64", true],
["L732", "uint64", true],
["L733", "uint64", true]
],
"plant-boss": [
["L343", "vector"],
["L344", "vector"],
["L345", "vector"],
["L346", "vector"],
["L347", "vector"],
["L348", "vector"],
["L349", "vector"],
["L350", "vector"],
["L351", "vector"],
["L352", "vector"],
["L353", "vector"],
["L354", "vector"],
["L355", "vector"],
["L356", "vector"],
["L357", "vector"],
["L358", "vector"],
["L359", "vector"],
["L360", "vector"],
["L361", "vector"],
["L362", "vector"],
["L363", "vector"],
["L364", "vector"],
["L375", "attack-info"],
["L377", "attack-info"],
["L399", "attack-info"],
["L403", "attack-info"],
["L412", "float", true],
["L413", "float", true],
["L414", "float", true],
["L415", "(pointer float)", 1],
["L416", "float", true],
["L417", "float", true],
["L418", "float", true],
["L419", "float", true],
["L420", "float", true],
["L421", "float", true],
["L422", "float", true],
["L423", "float", true],
["L424", "float", true],
["L425", "float", true],
["L426", "float", true],
["L427", "float", true],
["L428", "float", true],
["L429", "float", true],
["L430", "float", true],
["L431", "(pointer float)", 1],
["L432", "float", true],
["L433", "float", true],
["L434", "float", true],
["L435", "float", true],
["L436", "float", true],
["L437", "float", true],
["L438", "(pointer float)", 1],
["L439", "float", true],
["L440", "float", true],
["L441", "float", true],
["L442", "(pointer float)", 1],
["L443", "float", true],
["L444", "float", true],
["L445", "float", true],
["L446", "float", true],
["L447", "float", true],
["L448", "float", true],
["L449", "float", true],
["L450", "float", true],
["L451", "float", true],
["L452", "float", true],
["L453", "float", true],
["L454", "float", true],
["L455", "float", true],
["L456", "float", true],
["L457", "float", true],
["L458", "float", true],
["L459", "float", true],
["L460", "float", true],
["L461", "float", true],
["L462", "float", true],
["L463", "float", true],
["L464", "float", true],
["L465", "float", true],
["L466", "(pointer float)", 1],
["L467", "float", true],
["L468", "float", true],
["L469", "(pointer float)", 1],
["L470", "uint64", true],
["L498", "float", true],
["L499", "uint64", true],
["L500", "uint64", true],
["L501", "uint64", true]
],
"ropebridge": [
["L97", "(inline-array ropebridge-tuning)", 6],
["L104", "(inline-array ropebridge-spring-point)", 8],
["L105", "(inline-array ropebridge-spring-point)", 7],
["L106", "(inline-array ropebridge-spring-point)", 11],
["L107", "(inline-array ropebridge-spring-point)", 15]
],
"double-lurker": [
["L109", "vector"],
["L122", "attack-info"],
["L123", "attack-info"],
["L128", "attack-info"]
],
"billy": [
["L234", "vector"]
],
"lurkerworm": [
["L56", "attack-info"]
],
"pelican": [
["L199", "vector"],
["L225", "vector"]
],
"citadel-sages": [
["L179", "vector"],
["L623", "vector"],
["L651", "vector"],
["L701", "vector"]
],
"shover": [
["L13", "attack-info"],
["L14", "attack-info"]
],
"steam-cap": [
["L51", "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": []
}
@@ -3625,5 +3625,513 @@
[48, "event-message-block"]
],
"plant-boss-default-event-handler": [
[16, "event-message-block"]
],
"(event plant-boss-vulnerable)": [
[16, "event-message-block"]
],
"(code plant-boss-hit)": [
[16, "event-message-block"]
],
"(code plant-boss-dead)": [
[16, "event-message-block"]
],
"(event plant-boss-attack)": [
[16, "event-message-block"]
],
"(code plant-boss-eat)": [
[16, "event-message-block"]
],
"(anon-function 22 plant-boss)": [
[16, "event-message-block"]
],
"(code plant-boss-vulnerable)": [
[16, "event-message-block"]
],
"(exit plant-boss-vulnerable)": [
[16, "event-message-block"]
],
"(event plant-boss-back-arms-idle)": [
[16, "event-message-block"]
],
"(method 11 plant-boss)": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"],
[80, "vector"],
[96, "vector"],
[112, "vector"],
[128, "vector"],
[144, "vector"],
[160, "vector"],
[176, "vector"],
[192, "vector"]
],
"(method 60 ice-cube)": [
[16, "vector"]
],
"(method 52 ice-cube)": [
[16, "vector"]
],
"(trans ice-cube-appear)": [
[16, "vector"]
],
"(code ice-cube-appear-land)": [
[16, "vector"]
],
"(code ice-cube-face-player)": [
[16, "vector"]
],
"(code ice-cube-mean-turn-to-charge)": [
[16, "vector"]
],
"(method 54 ice-cube)": [
[16, "vector"]
],
"(code ice-cube-shatter)": [
[16, "vector"],
[32, "joint-exploder-tuning"]
],
"(trans ice-cube-trying-to-appear)": [
[16, "vector"],
[32, "vector"]
],
"(trans ice-cube-mean-charge)": [
[16, "vector"],
[32, "vector"],
[48, "vector"]
],
"(method 51 ice-cube)": [
[16, "vector"],
[32, "collide-tri-result"]
],
"(method 53 ice-cube)": [
[16, "vector"],
[32, "collide-mesh-cache-tri"]
],
"(event double-lurker-top-knocked-down)": [
[16, "event-message-block"]
],
"(code double-lurker-top-knocked-down)": [
[16, "vector"]
],
"(method 48 double-lurker)": [
[16, "vector"]
],
"(method 52 double-lurker)": [
[16, "vector"],
[32, "vector"],
[48, "collide-mesh-cache-tri"]
],
"double-lurker-default-event-handler": [
[16, "vector"],
[32, "event-message-block"]
],
"(code double-lurker-buddy-was-hit)": [
[16, "vector"],
[32, "event-message-block"]
],
"(trans double-lurker-both-knocked-back)": [
[16, "check-vector-collision-with-nav-spheres-info"],
[64, "clip-travel-vector-to-mesh-return-info"]
],
"(trans double-lurker-knocked-back)": [
[16, "check-vector-collision-with-nav-spheres-info"],
[64, "clip-travel-vector-to-mesh-return-info"]
],
"(code nav-enemy-die billy-rat)": [
[16, "event-message-block"]
],
"(code billy-rat-eat)": [
[16, "event-message-block"]
],
"(code billy-rat-salivate)": [
[16, "event-message-block"]
],
"(enter nav-enemy-victory billy-rat)": [
[16, "event-message-block"]
],
"(enter billy-done)": [
[16, "event-message-block"]
],
"(exit billy-done)": [
[16, "event-message-block"]
],
"(trans enter-playing billy)": [
[16, "event-message-block"]
],
"(method 11 billy)": [
[16, "event-message-block"]
],
"(method 32 billy)": [
[16, "vector"]
],
"billy-rat-init-by-other": [
[16, "vector"]
],
"(method 43 billy)": [
[16, "vector"]
],
"(enter billy-playing)": [
[16, "vector"]
],
"billy-game-update": [
[16, "vector"],
[32, "vector"]
],
"(method 20 lurkerworm)": [
[16, "vector"]
],
"lurkerworm-prebind-function": [
[16, "quaternion"]
],
"(method 21 lurkerworm)": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"]
],
"lurkerworm-default-event-handler": [
[16, "event-message-block"]
],
"(method 11 pelican)": [
[16, "event-message-block"]
],
"(code pelican-explode)": [
[16, "vector"],
[32, "event-message-block"]
],
"(event pelican-circle)": [
[16, "vector"]
],
"pelican-path-update": [
[16, "vector"]
],
"(trans pelican-wait-at-nest)": [
[16, "vector"]
],
"(enter pelican-fly-to-end)": [
[16, "vector"]
],
"(code pelican-spit)": [
[16, "quaternion"],
[32, "event-message-block"],
[112, "vector"]
],
"(enter pelican-circle)": [
[16, "event-message-block"]
],
"(code pelican-wait-at-nest)": [
[16, "event-message-block"]
],
"(event pelican-wait-at-nest)": [
[16, "event-message-block"],
[96, "vector"]
],
"(code pelican-dive)": [
[16, "event-message-block"]
],
"(enter pelican-wait-at-nest)": [
[16, "event-message-block"]
],
"(code pelican-circle)": [
[16, "event-message-block"]
],
"(enter pelican-dive)": [
[16, "event-message-block"],
[96, "vector"]
],
"(anon-function 37 pelican)": [
[16, "event-message-block"]
],
"(trans energydoor-closed-till-task)": [
[16, "event-message-block"]
],
"(method 11 energydoor)": [
[16, "event-message-block"]
],
"(enter energyhub-stopped)": [
[16, "event-message-block"]
],
"(enter energyhub-stop)": [
[16, "event-message-block"]
],
"energydoor-player-dist": [
[16, "vector"],
[32, "matrix"]
],
"(trans energyarm-idle)": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "event-message-block"]
],
"energyarm-trans": [
[16, "vector"],
[32, "matrix"]
],
"(trans energyball-idle)": [
[16, "vector"],
[32, "matrix"]
],
"(method 11 energyhub)": [
[16, "vector"],
[32, "matrix"]
],
"energyhub-trans": [
[16, "matrix"]
],
"(method 43 red-sagecage)": [
[16, "vector"]
],
"(method 43 blue-sagecage)": [
[16, "vector"]
],
"(method 43 yellow-sagecage)": [
[16, "vector"]
],
"(method 44 citb-sage)": [
[16, "vector"],
[32, "vector"]
],
"(enter hidden citb-sage)": [
[16, "event-message-block"]
],
"(trans idle green-sagecage)": [
[16, "event-message-block"]
],
"(exit play-anim green-sagecage)": [
[16, "event-message-block"]
],
"(trans play-anim green-sagecage)": [
[16, "event-message-block"]
],
"(event play-anim green-sagecage)": [
[16, "event-message-block"]
],
"(method 32 green-sagecage)": [
[16, "event-message-block"]
],
"(event play-anim citb-sage)": [
[16, "event-message-block"]
],
"(event idle citb-sage)": [
[16, "event-message-block"]
],
"(event wait eco-collectable)": [
[16, "event-message-block"]
],
"(enter wait eco-collectable)": [
[16, "event-message-block"]
],
"(event notice-blue eco-collectable)": [
[16, "event-message-block"]
],
"(trans notice-blue eco-collectable)": [
[16, "event-message-block"]
],
"(code pickup eco-collectable)": [
[16, "event-message-block"]
],
"(enter pickup eco-collectable)": [
[16, "event-message-block"]
],
"(code die eco)": [
[16, "event-message-block"]
],
"(code pickup fuel-cell)": [
[16, "event-message-block"]
],
"(code pickup buzzer)": [
[16, "event-message-block"],
[96, "vector"]
],
"(trans pickup fuel-cell)": [
[16, "event-message-block"]
],
"(event vent-wait-for-touch)": [
[16, "event-message-block"]
],
"add-blue-motion": [
[16, "vector"]
],
"ecovalve-init-by-other": [
[16, "vector"]
],
"(anon-function 69 collectables)": [
[16, "vector"]
],
"(code ecovalve-idle)": [
[16, "vector"]
],
"(method 9 fact-info)": [
[16, "vector"],
[32, "collide-tri-result"]
],
"(method 29 buzzer)": [
[16, "vector"]
],
"(trans wait eco-collectable)": [
[16, "vector"],
[32, "event-message-block"]
],
"(code jump eco-collectable)": [
[16, "trajectory"]
],
"(event shover-idle)": [
[16, "attack-info"],
[128, "event-message-block"]
],
"(method 21 sun-iris-door)": [
[16, "vector"]
],
"(method 20 sun-iris-door)": [
[16, "vector"],
[32, "vector"],
[48, "vector"]
],
"(method 20 steam-cap)": [
[16, "vector"],
[32, "event-message-block"]
],
"(method 21 steam-cap)": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"],
[80, "vector"],
[96, "vector"],
[112, "vector"],
[128, "vector"],
[144, "vector"]
],
"(method 11 steam-cap)": [
[32, "vector"]
],
"(trans floating-launcher-idle)": [
[16, "vector"]
],
"(trans whirlpool-idle)": [
[16, "vector"]
],
"(method 20 whirlpool)": [
[16, "vector"],
[32, "event-message-block"]
],
"placeholder-do-not-add-below!": []
}
@@ -3194,7 +3194,15 @@
[14, "t9", "(function process-drawable int process-drawable)"]
],
"(method 57 ice-cube)": [[16, "v1", "collide-shape-prim-sphere"]],
"(method 57 ice-cube)": [
[16, "v1", "collide-shape-prim-group"],
[26, "v1", "collide-shape-prim-group"]
],
"(method 58 ice-cube)": [
[16, "v1", "collide-shape-prim-group"],
[26, "v1", "collide-shape-prim-group"]
],
"(code yeti-slave-appear-jump-up)": [[14, "v1", "art-joint-anim"]],
@@ -3477,7 +3485,10 @@
"(method 73 green-eco-lurker)": [[6, "a1", "touching-shapes-entry"]],
"citb-sagecage-update-collision": [[2, "a0", "collide-shape-prim-group"]],
"citb-sagecage-update-collision": [
[2, "a0", "collide-shape-prim-mesh"],
[9, "a0", "collide-shape-prim-mesh"]
],
"race-ring-set-particle-rotation-callback": [
[1, "v1", "(pointer race-ring)"]
@@ -5125,5 +5136,477 @@
[27, "gp", "symbol"]
],
"(method 7 plant-boss)": [
[47, "t9", "(function process-drawable int process-drawable)"]
],
"(code plant-boss-arm-hit)": [
[88, "v1", "art-joint-anim"]
],
"(code plant-boss-arm-die)": [
[3, "v1", "collide-shape-prim-group"],
[18, "a0", "collide-shape-prim-group"],
[58, "v1", "art-joint-anim"],
[109, "v1", "art-joint-anim"],
[165, "v1", "art-joint-anim"],
[186, "v1", "art-joint-anim"]
],
"(code plant-boss-back-arms-idle)": [
[10, "v1", "art-joint-anim"]
],
"(code plant-boss-vine-hit)": [
[88, "v1", "art-joint-anim"]
],
"(code plant-boss-dead-bounce)": [
[79, "v1", "art-joint-anim"]
],
"(code plant-boss-vine-die)": [
[46, "v1", "art-joint-anim"]
],
"(code plant-boss-dead-idle)": [
[16, "v1", "art-joint-anim"]
],
"(code plant-boss-dead)": [
[45, "v1", "art-joint-anim"],
[113, "v1", "art-joint-anim"]
],
"(code plant-boss-root-idle)": [
[17, "v1", "art-joint-anim"]
],
"(code plant-boss-eat)": [
[274, "v1", "art-joint-anim"]
],
"(code plant-boss-vulnerable)": [
[149, "v1", "art-joint-anim"],
[221, "v1", "art-joint-anim"]
],
"(code plant-boss-far-idle)": [
[62, "v1", "art-joint-anim"]
],
"(code plant-boss-idle)": [
[25, "v1", "art-joint-anim"],
[177, "v1", "art-joint-anim"],
[271, "v1", "art-joint-anim"],
[304, "v1", "art-joint-anim"],
[366, "v1", "art-joint-anim"],
[404, "v1", "art-joint-anim"]
],
"(code plant-boss-leaf-close)": [
[34, "v1", "art-joint-anim"],
[98, "v1", "art-joint-anim"]
],
"(code plant-boss-leaf-bounce)": [
[17, "v1", "art-joint-anim"],
[72, "v1", "art-joint-anim"]
],
"(code plant-boss-leaf-open)": [
[98, "v1", "art-joint-anim"],
[227, "v1", "art-joint-anim"]
],
"(code plant-boss-leaf-idle)": [
[15, "v1", "art-joint-anim"],
[74, "v1", "art-joint-anim"]
],
"(code plant-boss-vine-idle)": [
[17, "v1", "art-joint-anim"]
],
"(code plant-boss-back-arms-die)": [
[20, "v1", "art-joint-anim"],
[82, "v1", "art-joint-anim"]
],
"(code plant-boss-back-arms-hit)": [
[149, "v1", "art-joint-anim"]
],
"(method 7 ice-cube)": [
[24, "t9", "(function nav-enemy int nav-enemy)"]
],
"(code ice-cube-appear)": [
[14, "v1", "art-joint-anim"]
],
"(code ice-cube-tired)": [
[14, "v1", "art-joint-anim"],
[68, "v1", "art-joint-anim"]
],
"(code ice-cube-become-mean)": [
[15, "v1", "art-joint-anim"]
],
"(code ice-cube-retract-spikes)": [
[22, "v1", "art-joint-anim"]
],
"(code ice-cube-mean-turn-to-charge)": [
[15, "v1", "art-joint-anim"],
[187, "v1", "art-joint-anim"]
],
"(code ice-cube-face-player)": [
[15, "v1", "art-joint-anim"],
[187, "v1", "art-joint-anim"]
],
"(code ice-cube-appear-land)": [
[37, "v1", "art-joint-anim"]
],
"(code nav-enemy-patrol ice-cube)": [
[8, "t9", "(function none)"]
],
"(event double-lurker-top-on-shoulders)": [
[5, "a0", "vector"],
[22, "v1", "vector"],
[24, "v1", "vector"]
],
"(code double-lurker-top-on-shoulders-die)": [
[18, "v1", "art-joint-anim"]
],
"(code double-lurker-top-knocked-down)": [
[51, "v1", "art-joint-anim"]
],
"(code double-lurker-both-knocked-back)": [
[14, "v1", "art-joint-anim"]
],
"(code double-lurker-knocked-back)": [
[14, "v1", "art-joint-anim"]
],
"(code double-lurker-break-apart)": [
[10, "v1", "art-joint-anim"]
],
"(code nav-enemy-patrol double-lurker-top)": [
[27, "t9", "(function none)"]
],
"(code nav-enemy-patrol double-lurker)": [
[27, "t9", "(function none)"]
],
"double-lurker-default-event-handler": [
[95, "gp", "target"]
],
"(method 51 double-lurker)": [
[18, "v1", "collide-shape-prim-group"],
[22, "v1", "collide-shape-prim-group"]
],
"(method 7 billy)": [
[26, "t9", "(function process-drawable int process-drawable)"]
],
"(method 38 billy)": [
[33, "t9", "(function nav-enemy none)"]
],
"(enter nav-enemy-victory billy-rat)": [
[4, "v0", "(state nav-enemy)"]
],
"(code billy-rat-salivate)": [
[43, "v1", "art-joint-anim"]
],
"(code idle billy)": [
[35, "v1", "float"],
[132, "v1", "art-joint-anim"]
],
"(enter billy-done)": [
[191, "v1", "float"]
],
"(method 43 billy)": [
[19, "v1", "float"]
],
"(event billy-done)": [
[15, "v1", "billy-rat"],
[19, "v1", "billy-rat"]
],
"(event billy-playing)": [
[14, "v1", "float"],
[93, "s5", "billy-rat"],
[103, "v1", "float"],
[169, "v1", "billy-snack"],
[216, "v1", "billy-snack"],
[219, "v1", "billy-snack"],
[223, "v1", "billy-snack"],
[240, "s5", "billy-snack"],
[248, "v1", "handle"],
[249, "s5", "billy-snack"],
[251, "s5", "billy-snack"],
[255, "s5", "billy-snack"]
],
"(code lurkerworm-rise)": [
[13, "v1", "art-joint-anim"]
],
"(code lurkerworm-sink)": [
[10, "v1", "art-joint-anim"]
],
"(code lurkerworm-die)": [
[19, "v1", "art-joint-anim"]
],
"(code lurkerworm-rest)": [
[10, "v1", "float"],
[35, "v1", "art-joint-anim"],
[89, "v1", "float"]
],
"(method 7 pelican)": [
[36, "t9", "(function process-drawable int process-drawable)"]
],
"pelican-fly": [
[61, "v1", "art-joint-anim"],
[186, "v1", "art-joint-anim"]
],
"(code pelican-dive)": [
[161, "v1", "art-joint-anim"]
],
"(code pelican-wait-at-nest)": [
[30, "v1", "art-joint-anim"],
[118, "v1", "art-joint-anim"],
[197, "v1", "art-joint-anim"]
],
"(event pelican-wait-at-nest)": [
[49, "v1", "process-drawable"]
],
"(code pelican-explode)": [
[71, "a0", "process-drawable"]
],
"(event pelican-circle)": [
[23, "v1", "float"]
],
"(code pelican-spit)": [
[42, "gp", "handle"],
[50, "gp", "handle"],
[121, "gp", "handle"],
[143, "gp", "handle"],
[155, "gp", "handle"],
[161, "s4", "handle"],
[173, "s4", "handle"]
],
"(trans energyarm-no-ball)": [
[27, "v1", "float"],
[57, "v1", "float"]
],
"(trans energyarm-idle)": [
[21, "v1", "float"]
],
"(code energyhub-stopped)": [
[11, "v1", "float"]
],
"(code energyhub-stop)": [
[11, "v1", "float"]
],
"(code energyhub-idle)": [
[11, "v1", "float"]
],
"(code energyarm-idle)": [
[13, "v1", "float"],
[36, "v1", "float"]
],
"energyhub-set-lava-height": [
[25, "v1", "process-drawable"],
[28, "v1", "process-drawable"]
],
"(trans energyhub-idle)": [
[34, "v1", "energyarm"]
],
"(post idle citb-sage)": [
[3, "t9", "(function none :behavior citb-sage)"]
],
"(method 44 red-sagecage)": [
[35, "t9", "(function citb-sage none)"]
],
"(method 44 blue-sagecage)": [
[35, "t9", "(function citb-sage none)"]
],
"(method 44 yellow-sagecage)": [
[35, "t9", "(function citb-sage none)"]
],
"(method 44 green-sagecage)": [
[35, "t9", "(function citb-sage none)"]
],
"(method 43 red-sagecage)": [
[24, "v1", "float"]
],
"(method 43 blue-sagecage)": [
[24, "v1", "float"]
],
"(method 43 yellow-sagecage)": [
[24, "v1", "float"]
],
"(event play-anim green-sagecage)": [
[128, "s5", "robotboss"]
],
"(method 21 citb-sagecage)": [
[[27, 97], "v1", "vector"]
],
"(code citb-sagecage-idle)": [
[9, "gp", "citb-sage"],
[15, "gp", "citb-sage"]
],
"add-blue-motion": [
[25, "v1", "process-drawable"],
[34, "gp", "collide-shape"]
],
"(event wait eco-collectable)": [
[118, "a0", "vector"],
[136, "a0", "vector"]
],
"(event pickup eco-collectable)": [
[18, "a0", "vector"]
],
"(event fuel-cell-clone-anim)": [
[35, "a0", "vector"]
],
"fuel-cell-animate": [
[9, "gp", "fuel-cell"]
],
"(event wait fuel-cell)": [
[95, "a0", "vector"]
],
"(enter pickup fuel-cell)": [
[9, "v0", "(state eco-collectable)"]
],
"(code ecovalve-idle)": [
[41, "v1", "process-drawable"]
],
"(code vent-pickup)": [
[25, "gp", "process-drawable"],
[59, "s5", "collide-shape"]
],
"(anon-function 69 collectables)": [
[2, "v1", "handle"],
[5, "v1", "handle"],
[13, "s5", "eco-collectable"],
[33, "v1", "target"],
[38, "v1", "target"],
[50, "s5", "eco-collectable"]
],
"fuel-cell-init-by-other": [
[118, "gp", "vector"]
],
"ecovalve-init-by-other": [
[95, "a0", "process-drawable"],
[144, "v1", "process-drawable"]
],
"(method 11 shover)": [
["_stack_", 16, "res-tag"],
[120, "v0", "(pointer float)"]
],
"(method 11 sun-iris-door)": [
["_stack_", 16, "res-tag"],
[153, "v0", "(pointer float)"]
],
"(event sun-iris-door-closed)": [
[14, "a0", "vector"]
],
"(event sun-iris-door-opening)": [
[14, "a0", "vector"]
],
"(event sun-iris-door-closing)": [
[14, "a0", "vector"]
],
"(event sun-iris-door-open)": [
[20, "a0", "vector"]
],
"sun-iris-door-init-by-other": [
[97, "v1", "art-joint-anim"]
],
"(method 7 steam-cap)": [
[19, "t9", "(function process-drawable int process-drawable)"]
],
"(method 11 steam-cap)": [
["_stack_", 16, "res-tag"],
[139, "v0", "(pointer float)"]
],
"(method 11 whirlpool)": [
["_stack_", 16, "res-tag"],
[92, "v0", "(pointer float)"]
],
"placeholder-do-not-add-below": []
}
+3 -2
View File
@@ -536,8 +536,9 @@ goos::Object decompile_structure(const TypeSpec& type,
// check enough room
if (int(words.at(label.target_segment).size()) < word_count + offset_location / 4) {
throw std::runtime_error(fmt::format("Structure type {} takes up {} bytes and doesn't fit.",
type_info->get_name(), type_info->get_size_in_memory()));
throw std::runtime_error(fmt::format(
"Structure type {} takes up {} bytes and doesn't fit. {}:{}", type_info->get_name(),
type_info->get_size_in_memory(), label.name, offset_location));
}
// get words for real
+6 -6
View File
@@ -203,7 +203,7 @@
:flag-assert #x1d0000005c
(:methods
(new (symbol type basic uint uint) _type_ 0)
(dummy-28 () none 28)
(dummy-28 (_type_ int) none 28)
)
)
@@ -249,21 +249,21 @@
:size-assert #xb8
:flag-assert #x38000000b8
(:methods
(new (symbol type process collide-list-enum) _type_ 0)
(new (symbol type process collide-list-enum) _type_)
(TODO-RENAME-28 (_type_) none 28)
(dummy-29 (_type_ int) none 29)
(TODO-RENAME-30 (_type_ vector) none 30)
(dummy-31 () none 31)
(dummy-32 () none 32)
(dummy-32 (_type_ float uint) none 32)
(dummy-33 (_type_ vector uint) none 33)
(dummy-34 (_type_ uint) collide-shape-prim 34)
(dummy-34 (_type_ uint) collide-shape-prim 34)
(dummy-35 (_type_) none 35)
(dummy-36 () none 36)
(dummy-37 () none 37)
(dummy-37 (_type_ vector) none 37)
(dummy-38 () none 38)
(dummy-39 () none 39)
(dummy-40 (_type_ structure) none 40) ;; ?? - I've seen overlaps-others-params | collide-edge-hold-list
(dummy-41 () none 41)
(dummy-41 (_type_ attack-info float) none 41)
(dummy-42 () none 42)
(dummy-43 () none 43)
(dummy-44 (_type_) none 44)
+74 -64
View File
@@ -7,24 +7,25 @@
(declare-type touching-shapes-entry structure)
;; decomp begins
;; DECOMP BEGINS
(deftype touching-prim (structure)
((cprim collide-shape-prim :offset-assert 0) ;; a big guess, there's a few that meet this name
(has-tri? symbol :offset-assert 4)
(tri collide-tri-result :inline :offset-assert 16)
((cprim collide-shape-prim :offset-assert 0)
(has-tri? symbol :offset-assert 4)
(tri collide-tri-result :inline :offset-assert 16)
)
:method-count-assert 9
:size-assert #x64
:flag-assert #x900000064
)
(deftype touching-prims-entry (structure)
((next touching-prims-entry :offset-assert 0)
(prev touching-prims-entry :offset-assert 4)
(allocated? symbol :offset-assert 8)
(u float :offset-assert 12)
(prim1 touching-prim :inline :offset-assert 16)
((next touching-prims-entry :offset-assert 0)
(prev touching-prims-entry :offset-assert 4)
(allocated? symbol :offset-assert 8)
(u float :offset-assert 12)
(prim1 touching-prim :inline :offset-assert 16)
(prim2 touching-prim :inline :offset-assert 128)
)
:method-count-assert 13
@@ -38,75 +39,75 @@
)
)
(deftype touching-prims-entry-pool (structure)
((head touching-prims-entry :offset-assert 0)
(nodes touching-prims-entry 64 :inline :offset-assert 16)
((head touching-prims-entry :offset-assert 0)
(nodes touching-prims-entry 64 :inline :offset-assert 16)
)
:method-count-assert 13
:size-assert #x3c10
:flag-assert #xd00003c10
(:methods
(new (symbol type) _type_ 0)
(dummy-9 () none 9)
(dummy-10 () none 10)
(init-list! (_type_) none 11)
(dummy-12 () none 12)
)
(new (symbol type) _type_ 0)
(dummy-9 () none 9)
(dummy-10 () none 10)
(init-list! (_type_) none 11)
(dummy-12 () none 12)
)
)
(defmethod init-list! touching-prims-entry-pool ((obj touching-prims-entry-pool))
"Initialize all entries to be not allocated and in a linked list."
(let ((prev (the-as touching-prims-entry #f)))
(let ((current (the-as touching-prims-entry (-> obj nodes))))
(set! (-> obj head) current)
(countdown (a0-1 64)
(set! (-> current prev) prev)
(let ((next (&+ current 240)))
(set! (-> current next) (the-as touching-prims-entry next))
(set! (-> current allocated?) #f)
(set! prev current)
(set! current (the-as touching-prims-entry next))
)
)
(let ((current (the-as touching-prims-entry (-> obj nodes))))
(set! (-> obj head) current)
(countdown (a0-1 64)
(set! (-> current prev) prev)
(let ((next (&+ current 240)))
(set! (-> current next) (the-as touching-prims-entry next))
(set! (-> current allocated?) #f)
(set! prev current)
(set! current (the-as touching-prims-entry next))
)
(set! (-> prev next) #f)
)
)
(set! (-> prev next) #f)
)
(none)
)
(defmethod new touching-prims-entry-pool ((allocation symbol) (type-to-make type))
"Allocate a new touching-prims-entry-pool"
;; Note - the original code passed (-> type-to-make size) as an argument.
;; however, the new method of structure doesn't have this argument.
;; it uses the same value for the size so it doesn't really matter.
(let ((obj (the touching-prims-entry-pool ((method-of-type structure new)
allocation
type-to-make
;; (-> type-to-make size) see note
)
)))
(init-list! obj)
obj
(defmethod
new
touching-prims-entry-pool
((allocation symbol) (type-to-make type))
(let ((t9-0 (method-of-type structure new))
(v1-1 type-to-make)
)
(-> type-to-make size)
(let ((gp-0 (t9-0 allocation v1-1)))
((method-of-type touching-prims-entry-pool init-list!)
(the-as touching-prims-entry-pool gp-0)
)
(the-as touching-prims-entry-pool gp-0)
)
)
)
(deftype touching-shapes-entry (structure)
((cshape1 collide-shape :offset-assert 0)
(cshape2 collide-shape :offset-assert 4)
(resolve-u int8 :offset-assert 8)
(head touching-prims-entry :offset-assert 12)
((cshape1 collide-shape :offset-assert 0)
(cshape2 collide-shape :offset-assert 4)
(resolve-u int8 :offset-assert 8)
(head touching-prims-entry :offset-assert 12)
)
:allow-misaligned
:method-count-assert 18
:allow-misaligned :method-count-assert 18
:size-assert #x10
:flag-assert #x1200000010
(:methods
(dummy-9 () none 9)
(touched-shape (_type_ collide-shape-moving) collide-shape 10)
(dummy-11 () none 11)
(prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) ; this one!
(dummy-13 () none 13)
(prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12)
(dummy-13 (_type_ control-info int int) none 13)
(dummy-14 () none 14)
(dummy-15 () none 15)
(get-head (_type_) touching-prims-entry 16)
@@ -114,10 +115,11 @@
)
)
(deftype touching-list (structure)
((num-touching-shapes int32 :offset-assert 0)
(resolve-u int8 :offset-assert 4)
(touching-shapes touching-shapes-entry 32 :inline :offset-assert 8)
((num-touching-shapes int32 :offset-assert 0)
(resolve-u int8 :offset-assert 4)
(touching-shapes touching-shapes-entry 32 :inline :offset-assert 8)
)
:method-count-assert 15
:size-assert #x208
@@ -133,29 +135,37 @@
)
)
(defmethod new touching-list ((allocation symbol) (type-to-make type))
"See note in touching-prims-entry-pool"
(let ((obj (the touching-list ((method-of-type structure new)
allocation
type-to-make
;; (-> type-to-make size) see note
)
)))
(let ((t9-0 (method-of-type structure new))
(v1-1 type-to-make)
)
(-> type-to-make size)
(let ((obj (the-as touching-list (t9-0 allocation v1-1))))
(set! (-> obj num-touching-shapes) 0)
(set! (-> obj resolve-u) 0)
obj
)
)
)
(defmethod get-head touching-shapes-entry ((obj touching-shapes-entry))
(-> obj head)
)
(defmethod unknown1 touching-shapes-entry ((obj touching-shapes-entry) (arg0 (pointer uint32)))
(defmethod
unknown1
touching-shapes-entry
((obj touching-shapes-entry) (arg0 (pointer uint32)))
(-> arg0 0)
)
(define-perm *touching-prims-entry-pool* touching-prims-entry-pool
(new 'global 'touching-prims-entry-pool)
)
(define-perm *touching-prims-entry-pool* touching-prims-entry-pool (new 'global 'touching-prims-entry-pool))
(define-perm *touching-list* touching-list (new 'global 'touching-list))
+7 -6
View File
@@ -44,7 +44,7 @@
(collect-effect-time uint64 :offset-assert 328)
(respawn-delay uint64 :offset-assert 336)
(sound-name sound-spec :offset-assert 344)
(target uint64 :offset-assert 352)
(target handle :offset-assert 352)
(suck-time uint64 :offset-assert 360)
(suck-y-offset float :offset-assert 368)
(speed vector :inline :offset-assert 384)
@@ -52,12 +52,12 @@
)
(:methods
(wait () _type_ :state 22) ;; state
(pickup () _type_ :state 23) ;; state
(pickup (object handle) _type_ :state 23) ;; state
(die () _type_ :state 24) ;; state
(jump () _type_ :state 25)
(notice-blue () _type_ :state 26) ;; state
(notice-blue (handle) _type_ :state 26) ;; state
(get-pickup-sound (_type_ pickup-type) ambient-sound 27)
(dummy-28 (_type_ basic pickup-type float) none 28)
(dummy-28 (_type_ res-lump pickup-type float) object 28)
(update-sound! (_type_) none 29) ;; something to do with particles too
(blocked () _type_ :state 30)
)
@@ -74,7 +74,7 @@
:size-assert #x19c
:flag-assert #x1f0130019c
)
(define-extern fuel-cell-init-as-clone (function handle object none))
(define-extern fuel-cell-init-as-clone (function handle int none :behavior fuel-cell))
(define-extern fuel-cell-pick-anim (function process-drawable spool-anim))
(defskelgroup *money-sg* money
@@ -105,4 +105,5 @@
:flag-assert #x1f01300194
)
(define-extern money-init-by-other-no-bob (function vector vector int float entity none))
;; TODO - for orb-cache
(define-extern money-init-by-other-no-bob (function vector vector fact-info float entity none :behavior money))
+13 -13
View File
@@ -71,19 +71,19 @@
(deftype part-tracker (process)
((root trsqv :offset-assert 112)
(part sparticle-launch-control :offset-assert 116)
(target handle :offset-assert 120)
(callback (function part-tracker none) :offset-assert 128)
(linger-callback (function part-tracker none) :offset-assert 132)
(duration int64 :offset-assert 136)
(linger-duration int64 :offset-assert 144)
(start-time int64 :offset-assert 152)
(offset vector :inline :offset-assert 160)
(userdata uint64 :offset-assert 176)
(user-time int64 2 :offset-assert 184)
(user-vector vector 2 :inline :offset-assert 208)
(user-handle uint32 2 :offset-assert 240)
((root trsqv :offset-assert 112)
(part sparticle-launch-control :offset-assert 116)
(target handle :offset-assert 120)
(callback (function part-tracker vector) :offset-assert 128)
(linger-callback (function part-tracker vector) :offset-assert 132)
(duration uint64 :offset-assert 136)
(linger-duration uint64 :offset-assert 144)
(start-time uint64 :offset-assert 152)
(offset vector :inline :offset-assert 160)
(userdata uint64 :offset-assert 176)
(user-time int64 2 :offset-assert 184)
(user-vector vector 2 :inline :offset-assert 208)
(user-handle uint32 2 :offset-assert 240)
)
:heap-base #x90
:method-count-assert 14
+10 -7
View File
@@ -835,11 +835,11 @@
(defstate part-tracker-process (part-tracker)
:code
(behavior ()
(set! (-> self start-time) (-> *display* base-frame-counter))
(set! (-> self start-time) (the-as uint (-> *display* base-frame-counter)))
(while
(<
(- (-> *display* base-frame-counter) (-> self start-time))
(-> self duration)
(- (-> *display* base-frame-counter) (the-as int (-> self start-time)))
(the-as int (-> self duration))
)
(let ((gp-0 (handle->process (-> self target))))
(when gp-0
@@ -867,7 +867,10 @@
)
(let ((gp-2 (-> *display* base-frame-counter)))
(until
(>= (- (-> *display* base-frame-counter) gp-2) (-> self linger-duration))
(>=
(- (-> *display* base-frame-counter) gp-2)
(the-as int (-> self linger-duration))
)
(if (-> self linger-callback)
((-> self linger-callback) self)
)
@@ -897,7 +900,7 @@
(set! (-> self root) (new 'process 'trsqv))
(set! (-> self root trans quad) (-> arg5 world-sphere quad))
(set! (-> self offset quad) (-> arg5 world-sphere quad))
(set! (-> self callback) arg2)
(set! (-> self callback) (the-as (function part-tracker vector) arg2))
(set! (-> self linger-callback) #f)
(set! (-> self userdata) (the-as uint arg3))
(set! (-> self target) (process->handle arg4))
@@ -911,8 +914,8 @@
)
)
)
(set! (-> self duration) arg1)
(set! (-> self linger-duration) (the-as int (-> arg0 linger-duration)))
(set! (-> self duration) (the-as uint arg1))
(set! (-> self linger-duration) (-> arg0 linger-duration))
(set! (-> self part) (create-launch-control arg0 self))
(go part-tracker-process)
(none)
+2 -2
View File
@@ -251,8 +251,8 @@
(dummy-20 () none 20)
(dummy-21 () none 21)
(dummy-22 () none 22)
(dummy-23 () none 23)
(dummy-24 (_type_ float symbol) none 24)
(dummy-23 (_type_ vector check-vector-collision-with-nav-spheres-info) float 23) ;; TODO - unconfirmed
(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)
+32 -3
View File
@@ -165,11 +165,17 @@
(beach-seagulls-avalanche #x273)
(beach-pelican-quick-get-cell #x274)
(beach-flutflutegg-hint #x275)
(sidekick-hint-fish-powerup #x278)
(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)
@@ -180,6 +186,9 @@
(sidekick-speech-crate-steel-break2 #x28e)
(sidekick-speech-hint-crate-darkeco2 #x28f)
(collectables-scout-flies-red-boxes #x295)
(found-all-scout-flies #x296)
(yakow-owed-powercell #x297)
(misty-teetertotter-bonk-dax-tutorial #x2a4)
@@ -236,6 +245,10 @@
(rolling-ring-chase-1 #x324)
(rolling-ring-chase-2 #x325)
(rolling-beat-lurkers #x327)
(swamp-finished-with-flutflut #x328)
(rolling-race-beat-record #x335)
(sidekick-speech-hint-rolling-crate-darkeco #x336)
@@ -247,7 +260,8 @@
(rolling-ring-hint-be-quick-all #x341)
(sunken-blue-eco-charger-hint #x345)
(sunken-take-it-easy-hot-pipes #x34e)
(sunken-double-lurker-hint #x347)
(sunken-qbert-plat-hint #x34a)
(sunken-blue-eco-charger-all-hint #x34d)
@@ -257,6 +271,8 @@
(swamp-bats-hint #x364) ;; maybe we can ???? the bats. lol
(flutflut-reminder #x368)
(sage-golfclap-i-have-low-expectations #x36a) ;; where was this said?
(village2-warp-gate-reminder #x36f)
(village2-warp-gate-reminder-annoyed #x370)
(village2-warp-gate-reminder-very-annoyed #x371)
@@ -329,17 +345,27 @@
(fire-canyon-level-name #x50c)
(fire-canyon-we-made-it #x515)
(collectables-theres-scout-flys-here-too #x516)
(ogre-end #x600)
(ogre-buzzer #x601)
(ogre-boss #x603)
(ogre-boss-killed #x604)
(assistant-voicebox-intro-ogre-race #x605)
(sidekick-speech-hint-ogre-race #x61c)
(assistant-finished-mountain-pass-race #x61d)
(lavatube-end #x700)
(lavatube-buzzer #x701)
(lavatube-shoot-the-spheres #x70d)
(lavatube-spheres-door-open #x710)
(citadel-buzzer #x800)
(citadel-level-name #x801)
(citadel-sage-blue #x802)
@@ -355,17 +381,20 @@
(training-precursor-orbs #x901)
(training-power-cells #x902)
(training-assistant-found-scout-fly #x903)
(training-assistant-found-scout-fly-cell #x904)
(training-blue-eco-vent #x907)
(training-eco-green #x908)
(training-eco-blue #x909)
(training-more-eco-more-time #x90a)
(training-precursor-door #x90b)
(training-eco-opened-door #x90c)
(training-double-jump #x90e)
(sage-voicebox-hint-crate-iron #x917)
(training-warp-gate-blocked #x919)
(training-warp-gate-reminder #x91a)
(training-gimmie-task-name #x91b)
(training-buzzer-task-name #x91c)
(training-door-task-name #x91d)
+2
View File
@@ -87,6 +87,7 @@
(damping float :offset-assert 16)
(accel float :offset-assert 20)
)
:pack-me
:method-count-assert 11
:size-assert #x18
:flag-assert #xb00000018
@@ -103,6 +104,7 @@
(elasticity float :offset-assert 32)
(state int32 :offset-assert 36)
)
:pack-me
:method-count-assert 13
:size-assert #x28
:flag-assert #xd00000028
+980
View File
@@ -5,3 +5,983 @@
;; name in dgo: lurkerworm
;; dgos: BEA, L1
(define-extern *lurkerworm-sg* skeleton-group)
;; DECOMP BEGINS
(deftype lurkerworm (process-drawable)
((root-override collide-shape-moving :offset 112)
(twister twister :offset-assert 176)
(head-tilt float :offset-assert 180)
(strike-count int32 :offset-assert 184)
(angle float :offset-assert 188)
(vulnerable symbol :offset-assert 192)
(part2 sparticle-launch-control :offset-assert 196)
)
:heap-base #x60
:method-count-assert 22
:size-assert #xc8
:flag-assert #x16006000c8
(:methods
(TODO-RENAME-20 (_type_) none 20)
(particle-effect (_type_) none 21)
)
(:states
lurkerworm-die
lurkerworm-idle
lurkerworm-rest
lurkerworm-rise
lurkerworm-sink
lurkerworm-spot
lurkerworm-strike
)
)
(defmethod relocate lurkerworm ((obj lurkerworm) (arg0 int))
(if (nonzero? (-> obj part2))
(&+! (-> obj part2) arg0)
)
(if (nonzero? (-> obj twister))
(&+! (-> obj twister) arg0)
)
(the-as lurkerworm ((method-of-type process-drawable relocate) obj arg0))
)
(defmethod deactivate lurkerworm ((obj lurkerworm))
(if (nonzero? (-> obj part2))
(kill-and-free-particles (-> obj part2))
)
((method-of-type process-drawable deactivate) obj)
(none)
)
(defskelgroup *lurkerworm-sg* lurkerworm
0
3
((1 (meters 999999)))
:bounds (static-spherem 0 2 0 6.5)
:longest-edge (meters 1.5)
)
(set!
(-> *part-group-id-table* 157)
(new 'static 'sparticle-launch-group
:length 4
:duration #xbb8
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-beach-sandworm"
:launcher
(new 'static 'inline-array sparticle-group-item 4
(sp-item 656 :fade-after (meters 90.0) :period 900 :length 300)
(sp-item 657 :fade-after (meters 100.0) :period 900 :length 390)
(sp-item 658 :fade-after (meters 150.0) :period 900 :length 420 :offset 120)
(sp-item 659 :fade-after (meters 60.0) :period 900 :length 420 :offset 120)
)
:bounds (new 'static 'sphere :w 24576.0)
)
)
(set!
(-> *part-group-id-table* 158)
(new 'static 'sparticle-launch-group
:length 3
:duration #xbb8
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-beach-sandworm-norocks"
:launcher
(new 'static 'inline-array sparticle-group-item 3
(sp-item 656 :fade-after (meters 90.0) :period 900 :length 300)
(sp-item 658 :fade-after (meters 150.0) :period 900 :length 420 :offset 120)
(sp-item 659 :fade-after (meters 60.0) :period 900 :length 420 :offset 120)
)
:bounds (new 'static 'sphere :w 24576.0)
)
)
(set!
(-> *part-id-table* 656)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 21
(sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2))
(sp-flt spt-num 4.0)
(sp-rnd-flt spt-x (meters 3.0) (meters 5.0) 1.0)
(sp-flt spt-y (meters 1.0))
(sp-rnd-flt spt-scale-x (meters 1.0) (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 130.0 20.0 1.0)
(sp-rnd-flt spt-g 90.0 20.0 1.0)
(sp-rnd-flt spt-b 50.0 8.0 1.0)
(sp-flt spt-a 0.0)
(sp-flt spt-vel-x (meters -0.02))
(sp-flt spt-vel-y (meters -0.0033333334))
(sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0)
(sp-flt spt-fade-a 0.21333334)
(sp-int spt-timer 900)
(sp-cpuinfo-flags bit2 bit12)
(sp-int-plain-rnd spt-next-time 90 59 1)
(sp-launcher-by-id spt-next-launcher 660)
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-end)
)
)
)
(set!
(-> *part-id-table* 660)
(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-id-table* 658)
(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.4)
(sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0)
(sp-rnd-flt spt-scale-x (meters 2.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 90.0 60.0 1.0)
(sp-rnd-flt spt-g 90.0 10.0 1.0)
(sp-rnd-flt spt-b 50.0 8.0 1.0)
(sp-flt spt-a 0.0)
(sp-rnd-flt spt-vel-x (meters 0.0033333334) (meters 0.0033333334) 1.0)
(sp-flt spt-vel-y (meters 0.026666667))
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
(sp-flt spt-fade-a 0.32)
(sp-flt spt-accel-y -4.096)
(sp-int spt-timer 300)
(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* 659)
(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.6)
(sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 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 45.0 30.0 1.0)
(sp-rnd-flt spt-g 45.0 5.0 1.0)
(sp-rnd-flt spt-b 25.0 4.0 1.0)
(sp-flt spt-a 0.0)
(sp-rnd-flt spt-vel-x (meters 0.0033333334) (meters 0.0033333334) 1.0)
(sp-flt spt-vel-y (meters 0.026666667))
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
(sp-flt spt-fade-a 0.42666668)
(sp-flt spt-accel-y -4.096)
(sp-int spt-timer 300)
(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* 657)
(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.5)
(sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0)
(sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.4) 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 75.0 45.0 1.0)
(sp-rnd-flt spt-g 75.0 10.0 1.0)
(sp-rnd-flt spt-b 40.0 6.0 1.0)
(sp-flt spt-a 96.0)
(sp-rnd-flt spt-vel-x (meters 0.0033333334) (meters 0.0033333334) 1.0)
(sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.026666667) 1.0)
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
(sp-flt spt-accel-y -4.096)
(sp-int spt-timer 450)
(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* 661)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 20
(sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2))
(sp-flt spt-num 0.1)
(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 2.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 90.0 60.0 1.0)
(sp-rnd-flt spt-g 90.0 10.0 1.0)
(sp-rnd-flt spt-b 50.0 8.0 1.0)
(sp-flt spt-a 0.0)
(sp-rnd-flt spt-vel-x (meters 0.0033333334) (meters 0.00083333335) 1.0)
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
(sp-flt spt-fade-a 0.21333334)
(sp-flt spt-accel-y -0.54613334)
(sp-int spt-timer 600)
(sp-cpuinfo-flags bit2 bit12)
(sp-int spt-next-time 150)
(sp-launcher-by-id spt-next-launcher 662)
(sp-end)
)
)
)
(set!
(-> *part-id-table* 662)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 2
(sp-flt spt-fade-a -0.10666667)
(sp-end)
)
)
)
(defmethod TODO-RENAME-20 lurkerworm ((obj lurkerworm))
(let ((s5-0 (new 'stack-no-clear 'vector)))
(vector-! s5-0 (target-pos 0) (-> obj root-override trans))
(set-target! (-> obj twister) (atan (-> s5-0 x) (-> s5-0 z)))
(TODO-RENAME-11 (-> obj twister))
(let*
((f0-5 (sqrtf (+ (* (-> s5-0 x) (-> s5-0 x)) (* (-> s5-0 z) (-> s5-0 z)))))
(f0-6 (atan (-> s5-0 y) f0-5))
)
(set!
(-> obj head-tilt)
(seek
(-> obj head-tilt)
f0-6
(* 5461.3335 (-> *display* seconds-per-frame))
)
)
)
)
(set! (-> obj head-tilt) (fmin 8192.0 (fmax -5461.3335 (-> obj head-tilt))))
0
(none)
)
(defbehavior
lurkerworm-prebind-function lurkerworm
((arg0 process) (arg1 int) (arg2 lurkerworm))
(let ((v1-0 arg2)
(s5-0 (new 'stack-no-clear 'quaternion))
(gp-0 (&-> arg0 stack 324))
)
(quaternion-axis-angle! s5-0 -1.0 0.0 0.0 (-> v1-0 head-tilt))
(quaternion*! (the-as quaternion gp-0) (the-as quaternion gp-0) s5-0)
)
0
(none)
)
(defun lurkerworm-joint-callback ((arg0 lurkerworm))
(let ((a1-0 arg0))
(TODO-RENAME-12 (-> a1-0 twister) a1-0)
)
0
(none)
)
(defmethod particle-effect lurkerworm ((obj lurkerworm))
(let
((a2-0
(vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 5))
)
)
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 661)
a2-0
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
(let
((a2-1
(vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 6))
)
)
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 661)
a2-1
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
(let
((a2-2
(vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 7))
)
)
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 661)
a2-2
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
(let
((a2-3
(vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 8))
)
)
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 661)
a2-3
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
0
(none)
)
(defbehavior
lurkerworm-default-event-handler lurkerworm
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('attack)
(-> arg3 param 1)
(go lurkerworm-die)
)
(('touch)
(if
((method-of-type touching-shapes-entry prims-touching?)
(the-as touching-shapes-entry (-> arg3 param 0))
(-> self root-override)
(the-as uint 1)
)
(send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info))
)
)
)
)
(defbehavior lurkerworm-default-post-behavior lurkerworm ()
(TODO-RENAME-20 self)
(transform-post)
0
(none)
)
lurkerworm-default-event-handler
lurkerworm-default-post-behavior
(defstate lurkerworm-idle (lurkerworm)
:event
lurkerworm-default-event-handler
:enter
(behavior ()
(ja-channel-set! 0)
(set! (-> self state-time) (-> *display* base-frame-counter))
(none)
)
:code
(behavior ()
(while #t
(if
(and
(>= (- (-> *display* base-frame-counter) (-> self state-time)) 300)
*target*
(>=
81920.0
(vector-vector-distance
(-> self root-override trans)
(-> *target* control trans)
)
)
)
(go lurkerworm-spot)
)
(suspend)
)
(none)
)
:post
lurkerworm-default-post-behavior
)
(defstate lurkerworm-spot (lurkerworm)
:event
lurkerworm-default-event-handler
:enter
(behavior ()
(set! (-> self state-time) (-> *display* base-frame-counter))
(sound-play-by-name
(static-sound-name "worm-rise1")
(new-sound-id)
1024
0
0
1
#t
)
(none)
)
:code
(behavior ()
(set! (-> self part local-clock) 0)
(while #t
(spawn (-> self part) (-> self root-override trans))
(particle-effect self)
(when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300)
(if
(and
*target*
(>=
81920.0
(vector-vector-distance
(-> self root-override trans)
(-> *target* control trans)
)
)
)
(go lurkerworm-rise)
(go lurkerworm-idle)
)
)
(suspend)
)
(none)
)
:post
lurkerworm-default-post-behavior
)
(defstate lurkerworm-rise (lurkerworm)
:event
lurkerworm-default-event-handler
:enter
(behavior ()
(set! (-> self state-time) (-> *display* base-frame-counter))
(none)
)
:code
(behavior ()
(ja-channel-set! 1)
(let ((a0-1 (-> self skel root-channel 0)))
(set!
(-> a0-1 frame-group)
(the-as art-joint-anim (-> self draw art-group data 4))
)
(set!
(-> a0-1 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 4))
data
0
length
)
-1
)
)
)
(set! (-> a0-1 param 1) 1.0)
(set! (-> a0-1 frame-num) 0.0)
(joint-control-channel-group!
a0-1
(the-as art-joint-anim (-> self draw art-group data 4))
num-func-seek!
)
)
(until (ja-done? 0)
(spawn (-> self part) (-> self root-override trans))
(particle-effect self)
(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!
)
)
)
(set! (-> self strike-count) 3)
(go lurkerworm-rest)
(none)
)
:post
lurkerworm-default-post-behavior
)
(defstate lurkerworm-rest (lurkerworm)
:event
lurkerworm-default-event-handler
:enter
(behavior ()
(set! (-> self state-time) (-> *display* base-frame-counter))
(set! (-> self vulnerable) #t)
(none)
)
:exit
(behavior ()
(set! (-> self vulnerable) #f)
(none)
)
:code
(behavior ()
(let* ((f30-0 10.0)
(f28-0 100.0)
(v1-1 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-2 (the-as number (logior #x3f800000 v1-1)))
(s5-0 (the int (+ f30-0 (* f28-0 (+ -1.0 (the-as float v1-2))))))
(gp-1 (nonzero? (-> self strike-count)))
)
(if gp-1
(+! (-> self strike-count) -1)
)
(let ((a0-2 (-> self skel root-channel 0)))
(set!
(-> a0-2 frame-group)
(the-as art-joint-anim (-> self draw art-group data 3))
)
(set!
(-> a0-2 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 3))
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 3))
num-func-seek!
)
)
(until (ja-done? 0)
(ja-blend-eval)
(particle-effect self)
(when gp-1
(let* ((f0-13 (- 1.0 (* 0.00009765625 (+ -16384.0 (if *target*
(vector-vector-distance
(->
self
root-override
trans
)
(->
*target*
control
trans
)
)
4096000.0
)
)
)
)
)
(f30-2 (* 0.2 f0-13))
(v1-31 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-32 (the-as number (logior #x3f800000 v1-31)))
)
(if (< (+ -1.0 (the-as float v1-32)) f30-2)
(go lurkerworm-strike)
)
)
)
(+! s5-0 -1)
(when (zero? s5-0)
(if gp-1
(go lurkerworm-strike)
(go lurkerworm-sink)
)
)
(suspend)
(let ((a0-7 (-> self skel root-channel 0)))
(set!
(-> a0-7 param 0)
(the float (+ (-> a0-7 frame-group data 0 length) -1))
)
(set! (-> a0-7 param 1) 1.0)
(joint-control-channel-group-eval!
a0-7
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(if gp-1
(go lurkerworm-strike)
(go lurkerworm-sink)
)
)
(none)
)
:post
lurkerworm-default-post-behavior
)
(defstate lurkerworm-strike (lurkerworm)
:event
lurkerworm-default-event-handler
:code
(behavior ()
(let ((a0-0 (-> self skel root-channel 0)))
(set! (-> a0-0 param 0) 1.0)
(joint-control-channel-group!
a0-0
(the-as art-joint-anim #f)
num-func-loop!
)
)
(ja-channel-push! 1 40)
(let ((gp-0 (-> self skel root-channel 0)))
(set!
(-> gp-0 frame-group)
(the-as art-joint-anim (-> self draw art-group data 6))
)
(set! (-> gp-0 param 0) (ja-aframe 13.0 0))
(set! (-> gp-0 param 1) 1.0)
(set! (-> gp-0 frame-num) 0.0)
(joint-control-channel-group!
gp-0
(the-as art-joint-anim (-> self draw art-group data 6))
num-func-seek!
)
)
(until (ja-done? 0)
(ja-blend-eval)
(particle-effect self)
(suspend)
(let ((gp-1 (-> self skel root-channel 0)))
(set! (-> gp-1 param 0) (ja-aframe 13.0 0))
(set! (-> gp-1 param 1) 1.0)
(joint-control-channel-group-eval!
gp-1
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(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!
a0-8
(the-as art-joint-anim #f)
num-func-seek!
)
)
(ja-channel-push! 1 40)
(go lurkerworm-rest)
(none)
)
:post
lurkerworm-default-post-behavior
)
(defstate lurkerworm-sink (lurkerworm)
:event
lurkerworm-default-event-handler
:enter
(behavior ()
(set! (-> self state-time) (-> *display* base-frame-counter))
(none)
)
:code
(behavior ()
(let ((a0-0 (-> self skel root-channel 0)))
(set!
(-> a0-0 frame-group)
(the-as art-joint-anim (-> self draw art-group data 5))
)
(set!
(-> a0-0 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 5))
data
0
length
)
-1
)
)
)
(set! (-> a0-0 param 1) 1.0)
(set! (-> a0-0 frame-num) 0.0)
(joint-control-channel-group!
a0-0
(the-as art-joint-anim (-> self draw art-group data 5))
num-func-seek!
)
)
(until (ja-done? 0)
(spawn (-> self part2) (-> self root-override trans))
(particle-effect self)
(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!
)
)
)
(go lurkerworm-idle)
(none)
)
:post
lurkerworm-default-post-behavior
)
(defstate lurkerworm-die (lurkerworm)
:event
(the-as
(function process int symbol event-message-block object :behavior lurkerworm)
process-drawable-death-event-handler
)
:code
(behavior ()
(logclear! (-> self mask) (process-mask actor-pause))
(let ((v1-3 (-> self root-override root-prim)))
(set! (-> v1-3 collide-with) (the-as uint 0))
(set! (-> v1-3 prim-core collide-as) (the-as uint 0))
)
0
(let ((a0-1 (-> self skel root-channel 0)))
(set!
(-> a0-1 frame-group)
(the-as art-joint-anim (-> self draw art-group data 7))
)
(set!
(-> a0-1 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 7))
data
0
length
)
-1
)
)
)
(set! (-> a0-1 param 1) 1.0)
(set! (-> a0-1 frame-num) 0.0)
(joint-control-channel-group!
a0-1
(the-as art-joint-anim (-> self draw art-group data 7))
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((a0-2 (-> self skel root-channel 0)))
(set!
(-> a0-2 param 0)
(the float (+ (-> a0-2 frame-group data 0 length) -1))
)
(set! (-> a0-2 param 1) 1.0)
(joint-control-channel-group-eval!
a0-2
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(dummy-18 self)
(none)
)
:post
lurkerworm-default-post-behavior
)
(defmethod copy-defaults! lurkerworm ((obj lurkerworm) (arg0 res-lump))
(set! (-> obj mask) (logior (process-mask enemy) (-> 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) nothing)
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 6) 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-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 24576.0)
(dummy-46 s4-0)
(let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
(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 1))
(set! (-> s2-0 prim-core offense) 4)
(set! (-> s2-0 transform-index) 3)
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0)
)
(dummy-28 s3-0)
(let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
(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 1))
(set! (-> s2-1 prim-core offense) 4)
(set! (-> s2-1 transform-index) 5)
(set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4096.0)
)
(dummy-28 s3-0)
(let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
(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 1))
(set! (-> s2-2 prim-core offense) 4)
(set! (-> s2-2 transform-index) 6)
(set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 4096.0)
)
(dummy-28 s3-0)
(let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
(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 1))
(set! (-> s2-3 prim-core offense) 4)
(set! (-> s2-3 transform-index) 7)
(set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 4096.0)
)
(dummy-28 s3-0)
(let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
(set! (-> s2-4 prim-core collide-as) (the-as uint 256))
(set! (-> s2-4 collide-with) (the-as uint 16))
(set! (-> s2-4 prim-core action) (the-as uint 1))
(set! (-> s2-4 prim-core offense) 4)
(set! (-> s2-4 transform-index) 8)
(set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 4096.0)
)
(dummy-28 s3-0)
(let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1))))
(set! (-> s2-5 prim-core collide-as) (the-as uint 256))
(set! (-> s2-5 collide-with) (the-as uint 16))
(set! (-> s2-5 prim-core offense) 2)
(set! (-> s2-5 transform-index) 11)
(set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 6144.0)
)
(dummy-28 s3-0)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(dummy-50 s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *lurkerworm-sg* '())
(set!
(-> obj fact)
(new
'process
'fact-info-enemy
obj
(pickup-type eco-pill-random)
(-> *FACT-bank* default-pill-inc)
)
)
(set! (-> obj angle) 0.0)
(set! (-> obj vulnerable) #f)
(set!
(-> obj part)
(create-launch-control (-> *part-group-id-table* 157) obj)
)
(set!
(-> obj part2)
(create-launch-control (-> *part-group-id-table* 158) obj)
)
(set!
(-> obj twister)
(new 'process 'twister 3 15 1092.2667 72.81778 0.25 0.001)
)
(TODO-RENAME-9 (-> obj twister) 3 9 910.2222)
(set! (-> obj head-tilt) 0.0)
(set!
(-> obj skel prebind-function)
(the-as
(function pointer int process-drawable none)
lurkerworm-prebind-function
)
)
(set!
(-> obj skel postbind-function)
(the-as
(function pointer int process-drawable none)
lurkerworm-joint-callback
)
)
(set! (-> obj root-override nav-radius) 12288.0)
(nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f))
(go lurkerworm-idle)
(none)
)
+12 -16
View File
@@ -5,7 +5,8 @@
;; name in dgo: twister
;; dgos: BEA, L1
;; definition of type twist-joint
;; DECOMP BEGINS
(deftype twist-joint (structure)
((ry float :offset-assert 0)
(max-dry float :offset-assert 4)
@@ -15,7 +16,7 @@
:flag-assert #x900000008
)
;; definition of type twister
(deftype twister (basic)
((num-joints int32 :offset-assert 4)
(first-joint int32 :offset-assert 8)
@@ -33,7 +34,7 @@
:size-assert #x28
:flag-assert #xd00000028
(:methods
(new (symbol _type_ int int float float float float) _type_ 0)
(new (symbol type int int float float float float) _type_ 0)
(TODO-RENAME-9 (_type_ int int float) none 9)
(set-target! (_type_ float) none 10)
(TODO-RENAME-11 (_type_) none 11)
@@ -41,12 +42,12 @@
)
)
;; definition for method 0 of type twister
(defmethod
new
twister
((allocation symbol)
(type-to-make twister)
(type-to-make type)
(arg0 int)
(arg1 int)
(arg2 float)
@@ -58,8 +59,8 @@
(v0-0
(object-new
allocation
(the-as type type-to-make)
(the-as int (+ (-> type-to-make something) (* gp-0 16)))
type-to-make
(the-as int (+ (-> type-to-make size) (* gp-0 16)))
)
)
)
@@ -80,13 +81,10 @@
)
)
;; definition for method 5 of type twister
(defmethod asize-of twister ((obj twister))
(+ (* (-> obj num-joints) 16) 40)
)
;; definition for method 9 of type twister
;; INFO: Return type mismatch int vs none.
(defmethod
TODO-RENAME-9
twister
@@ -103,16 +101,12 @@
(none)
)
;; definition for method 10 of type twister
;; INFO: Return type mismatch int vs none.
(defmethod set-target! twister ((obj twister) (arg0 float))
(set! (-> obj target) arg0)
0
(none)
)
;; definition for method 11 of type twister
;; INFO: Return type mismatch int vs none.
(defmethod TODO-RENAME-11 twister ((obj twister))
(let* ((s5-0 (+ (-> obj num-joints) -1))
(s4-0 (-> obj data s5-0))
@@ -176,8 +170,6 @@
(none)
)
;; definition for method 12 of type twister
;; INFO: Return type mismatch int vs none.
(defmethod TODO-RENAME-12 twister ((obj twister) (arg0 process-drawable))
(let ((s4-0 (new 'stack-no-clear 'matrix)))
(dotimes (s3-0 (-> obj num-joints))
@@ -196,3 +188,7 @@
0
(none)
)
File diff suppressed because it is too large Load Diff
+153
View File
@@ -5,3 +5,156 @@
;; name in dgo: citb-bunny
;; dgos: CIT, L1
(define-extern *citb-bunny-sg* skeleton-group)
;; DECOMP BEGINS
(deftype citb-bunny (snow-bunny)
()
:heap-base #x190
:method-count-assert 77
:size-assert #x200
:flag-assert #x4d01900200
(:methods
(TODO-RENAME-48 (_type_ object) none :replace 48)
)
)
(defskelgroup *citb-bunny-sg* citb-bunny
0
3
((1 (meters 999999)))
:bounds (static-spherem 0 0.25 0 2)
:longest-edge (meters 0)
)
(define
*citb-bunny-nav-enemy-info*
(new 'static 'nav-enemy-info
:idle-anim 3
:walk-anim 3
:turn-anim 3
:notice-anim 7
:run-anim 3
:jump-anim 5
:jump-land-anim 8
:victory-anim 7
:taunt-anim 7
:die-anim 9
:neck-joint 5
:player-look-at-joint 5
:run-travel-speed (meters 6.0)
:run-rotate-speed (degrees 2880.0)
:run-acceleration (meters 1.0)
:run-turn-time (seconds 0.1)
:walk-travel-speed (meters 4.0)
:walk-rotate-speed (degrees 720.0)
:walk-acceleration (meters 1.0)
:walk-turn-time (seconds 0.5)
:shadow-size (meters 2.0)
:notice-nav-radius (meters 1.2)
:nav-nearest-y-threshold (meters 10.0)
:notice-distance (meters 130.0)
:stop-chase-distance (meters 150.0)
:frustration-distance (meters 8.0)
:frustration-time #x4b0
:die-anim-hold-frame 31.0
:jump-anim-start-frame 11.0
:jump-land-anim-end-frame 10000000000.0
:jump-height-min (meters 1.0)
:jump-height-factor 0.6
:jump-start-anim-speed 1.0
:shadow-max-y (meters 0.25)
:shadow-min-y (meters -3.5)
:shadow-locus-dist (meters 150.0)
:use-align #f
:draw-shadow #t
:move-to-ground #t
:hover-if-no-ground #f
:use-momentum #f
:use-flee #f
:use-proximity-notice #f
:use-jump-blocked #f
:use-jump-patrol #f
:gnd-collide-with #x1
:debug-draw-neck #f
:debug-draw-jump #f
)
)
(defmethod dummy-60 citb-bunny ((obj citb-bunny) (arg0 object))
(initialize-skeleton obj *citb-bunny-sg* '())
(set! (-> obj draw origin-joint-index) (the-as uint 3))
(the-as symbol 0)
)
(defmethod TODO-RENAME-48 citb-bunny ((obj citb-bunny) (arg0 object))
(dummy-60 obj arg0)
(TODO-RENAME-45 obj *citb-bunny-nav-enemy-info*)
(set!
(-> obj draw shadow-ctrl settings flags)
(logand -9 (-> obj draw shadow-ctrl settings flags))
)
(cond
((zero? (res-lump-value (-> obj entity) 'mode uint128))
(set! (-> obj defense) (the-as uint 1))
(set! (-> obj retreat-timeout) 5.0)
)
(else
(set! (-> obj defense) (the-as uint 0))
(set! (-> obj retreat-timeout) 0.1)
)
)
(set!
(-> obj last-nondangerous-time)
(the-as uint (-> *display* base-frame-counter))
)
(set! (-> obj gnd-popup) 16384.0)
(set! (-> obj got-jump-event?) #f)
(set! (-> obj notice-land-anim) 8)
(set! (-> obj attack-anim) 4)
(set! (-> obj neck up) (the-as uint 1))
(set! (-> obj neck nose) (the-as uint 2))
(set! (-> obj neck ear) (the-as uint 0))
(set! (-> obj patrol-rand-distraction) (+ (nav-enemy-rnd-int-count 5) 1))
(set! (-> obj patrol-hop-failed?) #f)
(logclear! (-> obj mask) (process-mask actor-pause))
0
(none)
)
(defmethod set-jump-height-factor! citb-bunny ((obj citb-bunny) (arg0 int))
(let ((v1-0 arg0))
(cond
((zero? v1-0)
(set! (-> obj jump-anim) 6)
(set! (-> obj jump-height-min) 4096.0)
(let ((f0-1 0.6))
(set! (-> obj jump-height-factor) f0-1)
f0-1
)
)
((= v1-0 1)
(set! (-> obj jump-anim) 5)
(set! (-> obj jump-height-min) 4096.0)
(let ((f0-3 0.6))
(set! (-> obj jump-height-factor) f0-3)
f0-3
)
)
((= v1-0 2)
(set! (-> obj jump-anim) 5)
(set! (-> obj jump-height-min) 4096.0)
(let ((f0-5 0.4))
(set! (-> obj jump-height-factor) f0-5)
f0-5
)
)
)
)
)
+2 -2
View File
@@ -103,8 +103,8 @@
(dummy-24 (_type_) none 24)
(dummy-25 () none 25)
(dummy-26 (_type_) none 26)
(dummy-27 (_type_) none 27)
(dummy-28 () none 28)
(dummy-27 (_type_ joint-exploder-list) none 27)
(dummy-28 (_type_) none 28)
)
)
+5 -5
View File
@@ -141,11 +141,11 @@
(dummy-53 (_type_) symbol 53)
(dummy-54 (_type_) none 54)
(dummy-55 (_type_) none 55)
(dummy-56 (_type_) none 56)
(dummy-57 (_type_) none 57)
(dummy-58 (_type_) none 58)
(set-jump-height-factor! (_type_ int) float 56)
(dummy-57 (_type_) vector 57)
(dummy-58 (_type_) vector 58)
(TODO-RENAME-59 (_type_) none 59)
(dummy-60 (_type_) none 60)
(dummy-60 (_type_ object) symbol 60)
(dummy-61 (_type_) none 61)
(dummy-62 (_type_) none 62)
(dummy-63 (_type_) none 63)
@@ -156,7 +156,7 @@
(dummy-68 (_type_) none 68)
(dummy-69 (_type_) none 69)
(dummy-70 (_type_) none 70)
(dummy-71 (_type_) none 71)
(dummy-71 () _type_ :state 71)
(nav-enemy-touch-handler (_type_ process event-message-block) object 72)
(nav-enemy-attack-handler (_type_ process event-message-block) object 73)
(nav-enemy-jump-blocked () _type_ :state 74)
+5 -1
View File
@@ -526,7 +526,11 @@ nav-enemy-default-event-handler
(set! (-> self nav travel quad) (-> gp-1 quad))
)
(vector-normalize! (-> self nav travel) 409600.0)
(dummy-24 (-> self nav) 204.8 #f)
(dummy-24
(-> self nav)
204.8
(the-as clip-travel-vector-to-mesh-return-info #f)
)
(vector+!
(-> self nav target-pos)
(-> self collide-info trans)
+30
View File
@@ -5,3 +5,33 @@
;; name in dgo: snow-bunny
;; dgos: CIT, L1, SNO
(deftype snow-bunny (nav-enemy)
((patrol-rand-distraction int32 :offset-assert 400)
(base-hop-dist float :offset-assert 404)
(halfway-dist float :offset-assert 408)
(retreat-timeout float :offset-assert 412)
(gnd-popup float :offset-assert 416)
(jump-height-min float :offset-assert 420)
(jump-height-factor float :offset-assert 424)
(jump-anim-start-frame float :offset-assert 428)
(defense uint64 :offset-assert 432)
(retreat-timeout-time uint64 :offset-assert 440)
(last-nondangerous-time uint64 :offset-assert 448)
(patrol-hop-failed? basic :offset-assert 456)
(should-retreat? basic :offset-assert 460)
(got-jump-event? basic :offset-assert 464)
(using-jump-event? basic :offset-assert 468)
(jump-anim int8 :offset-assert 472)
(notice-land-anim int8 :offset-assert 473)
(attack-anim int8 :offset-assert 474)
(final-dest vector :inline :offset-assert 480)
(jump-event-dest vector :inline :offset-assert 496)
)
:method-count-assert 77
:size-assert #x200
:heap-base #x190
:flag-assert #x4d01900200
(:methods
(dummy-76 () none 76))
)
@@ -40,7 +40,7 @@
0
-1
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 5.95)
:bounds (static-spherem 0 0 0 5.949999809265137)
:longest-edge (meters 0)
:shadow 2
)
+2 -2
View File
@@ -1144,7 +1144,7 @@ baby-spider-default-event-handler
(set! (-> self enemy-info pickup-amount) (the float (-> arg3 pickup-amount)))
(create-connection!
*cavecrystal-light-control*
(the-as cavecrystal self)
self
(-> self entity)
(the-as
(function object object object object object)
@@ -1191,7 +1191,7 @@ baby-spider-default-event-handler
)
(create-connection!
*cavecrystal-light-control*
(the-as cavecrystal obj)
obj
(-> obj entity)
(the-as
(function object object object object object)
+2 -2
View File
@@ -51,8 +51,8 @@
0
-1
((1 (meters 999999)))
:bounds (static-spherem 0 0.75 0 3.9)
:longest-edge (meters 1.3)
:bounds (static-spherem 0 0.75 0 3.9000000953674316)
:longest-edge (meters 1.2999999523162842)
)
(define
+217
View File
@@ -5,3 +5,220 @@
;; name in dgo: floating-launcher
;; dgos: L1, SUN, SUNKEN
;; DECOMP BEGINS
(deftype floating-launcher (baseplat)
((trigger-height float :offset-assert 228)
(launcher (pointer launcher) :offset-assert 232)
)
:heap-base #x80
:method-count-assert 27
:size-assert #xec
:flag-assert #x1b008000ec
(:states
floating-launcher-idle
floating-launcher-lowering
floating-launcher-ready
)
)
(defskelgroup *floating-launcher-sg* floating-launcher
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 5)
:longest-edge (meters 0)
)
(defstate floating-launcher-idle (floating-launcher)
:event
(the-as
(function process int symbol event-message-block object :behavior floating-launcher)
plat-event
)
:trans
(behavior ()
(plat-trans)
(when
(<
(vector-xz-length
(vector-!
(new 'stack-no-clear 'vector)
(target-pos 0)
(-> self root-override trans)
)
)
81920.0
)
(if
(and
(>= (-> (target-pos 0) y) (-> self trigger-height))
(logtest? (-> *target* control status) 2)
)
(go floating-launcher-lowering)
)
)
(none)
)
:code
(behavior ()
(transform-post)
(suspend)
(transform-post)
(suspend)
(while #t
(suspend)
)
(none)
)
:post
(the-as (function none :behavior floating-launcher) plat-post)
)
(defstate floating-launcher-lowering (floating-launcher)
:event
(the-as
(function process int symbol event-message-block object :behavior floating-launcher)
plat-event
)
:trans
(the-as (function none :behavior floating-launcher) plat-trans)
:code
(behavior ()
(let ((a0-1 (entity-actor-lookup (-> self entity) 'alt-actor 0)))
(if a0-1
(entity-birth-no-kill a0-1)
)
)
(let ((f30-0 1.0))
(while (!= f30-0 0.0)
(set! f30-0 (seek f30-0 0.0 (-> *display* seconds-per-frame)))
(eval-path-curve-div! (-> self path) (-> self basetrans) f30-0 'interp)
(set!
(-> self launcher 0 root-override trans quad)
(-> self basetrans quad)
)
(dummy-47 (-> self launcher 0 root-override))
(suspend)
)
)
(eval-path-curve-div! (-> self path) (-> self basetrans) 0.0 'interp)
(set! (-> self launcher 0 root-override trans quad) (-> self basetrans quad))
(dummy-47 (-> self launcher 0 root-override))
(go floating-launcher-ready)
(none)
)
:post
(the-as (function none :behavior floating-launcher) plat-post)
)
(defstate floating-launcher-ready (floating-launcher)
:event
(the-as
(function process int symbol event-message-block object :behavior floating-launcher)
plat-event
)
:trans
(the-as (function none :behavior floating-launcher) plat-trans)
:code
(the-as (function none :behavior floating-launcher) plat-code)
:post
(the-as (function none :behavior floating-launcher) plat-post)
)
(defmethod
copy-defaults!
floating-launcher
((obj floating-launcher) (arg0 res-lump))
(set! (-> obj mask) (logior (process-mask platform) (-> obj mask)))
(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) nothing)
(dummy-29 s4-0 1)
(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 2048))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 3))
(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 11468.8)
)
(dummy-46 s4-0)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(dummy-50 s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(set! (-> obj path) (new 'process 'path-control obj 'path 0.0))
(logior!
(-> obj path flags)
(path-control-flag display draw-line draw-point draw-text)
)
(eval-path-curve-div! (-> obj path) (-> obj root-override trans) 1.0 'interp)
(let ((f30-0 (res-lump-float arg0 'spring-height :default 163840.0))
(s4-1 (get-process *default-dead-pool* launcher #x4000))
)
(set! (-> obj launcher) (the-as (pointer launcher) (when s4-1
(let
((t9-11
(method-of-type
launcher
activate
)
)
)
(t9-11
(the-as launcher s4-1)
obj
'launcher
(the-as
pointer
#x70004000
)
)
)
(run-now-in-process
s4-1
launcher-init-by-other
(->
obj
root-override
trans
)
f30-0
0
81920.0
)
(-> s4-1 ppointer)
)
)
)
)
(initialize-skeleton obj *floating-launcher-sg* '())
(logior! (-> obj skel status) 1)
(dummy-47 (-> obj root-override))
(dummy-21 obj)
(set! (-> obj trigger-height) (res-lump-float arg0 'trigger-height))
(go floating-launcher-idle)
(none)
)
+186
View File
@@ -5,3 +5,189 @@
;; name in dgo: shover
;; dgos: L1, SUN, SUNKEN
(declare-type shover process-drawable)
(define-extern *shover* shover) ;; unknown type
;; DECOMP BEGINS
(deftype shover (process-drawable)
((root-override collide-shape :offset 112)
(shove-up float :offset-assert 176)
)
:heap-base #x50
:method-count-assert 20
:size-assert #xb4
:flag-assert #x14005000b4
(:states
shover-idle
)
)
(defskelgroup *shover-sg* shover
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 2)
:longest-edge (meters 0)
)
(defstate shover-idle (shover)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('touch 'attack)
(when (= (-> arg0 type) target)
(when
((method-of-type touching-shapes-entry dummy-13)
(the-as touching-shapes-entry (-> arg3 param 0))
(-> *target* control)
1
0
)
(let ((s4-0 (new 'stack 'attack-info)))
(dummy-41 (-> self root-override) s4-0 (-> self shove-up))
(level-hint-spawn
(game-text-id sunken-take-it-easy-hot-pipes)
"sksp0134"
(the-as entity #f)
*entity-pool*
(game-task none)
)
(cond
((or
(= (-> *target* control unknown-surface00 mode) 'air)
(>=
(+ (-> *display* base-frame-counter) -60)
(-> *target* control unknown-dword10)
)
(< 0.75 (-> *target* control poly-normal y))
)
(let ((a1-6 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-6 from) self)
(set! (-> a1-6 num-params) 2)
(set! (-> a1-6 message) 'attack-or-shove)
(set! (-> a1-6 param 0) (-> arg3 param 0))
(let ((v1-22 (new 'static 'attack-info :mask #xa2)))
(set! (-> v1-22 mode) 'burn)
(set! (-> v1-22 vector quad) (-> s4-0 vector quad))
(set! (-> v1-22 shove-up) (-> s4-0 shove-up))
(set! (-> a1-6 param 1) (the-as uint v1-22))
)
(send-event-function arg0 a1-6)
)
)
(else
(let ((a1-7 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-7 from) self)
(set! (-> a1-7 num-params) 2)
(set! (-> a1-7 message) 'attack-or-shove)
(set! (-> a1-7 param 0) (-> arg3 param 0))
(let ((v1-26 (new 'static 'attack-info :mask #x8e2)))
(set! (-> v1-26 mode) 'burn)
(set! (-> v1-26 shove-up) 0.0)
(set! (-> v1-26 shove-back) 8192.0)
(set!
(-> v1-26 vector quad)
(-> *target* control poly-normal quad)
)
(set! (-> v1-26 angle) 'shove)
(set! (-> a1-7 param 1) (the-as uint v1-26))
)
(send-event-function arg0 a1-7)
)
)
)
)
)
)
)
)
)
:code
(the-as (function none :behavior shover) anim-loop)
)
(defmethod copy-defaults! shover ((obj shover) (arg0 res-lump))
(local-vars (sv-16 res-tag))
(set! (-> obj shove-up) (res-lump-float arg0 'shove :default 12288.0))
(let ((s3-0 (res-lump-value arg0 'collision-mesh-id uint128))
(s4-0
(new 'process 'collide-shape obj (collide-list-enum hit-by-player))
)
)
(let
((s3-1
(new
'process
'collide-shape-prim-mesh
s4-0
(the-as uint s3-0)
(the-as uint 0)
)
)
)
(set! (-> s3-1 prim-core collide-as) (the-as uint 512))
(set! (-> s3-1 collide-with) (the-as uint 16))
(set! (-> s3-1 prim-core action) (the-as uint 1))
(set! (-> s3-1 prim-core offense) 4)
(set! (-> s3-1 transform-index) 0)
(set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 53248.0)
)
(dummy-46 s4-0)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(dummy-50 s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *shover-sg* '())
(let ((v1-17 (new 'process 'path-control obj 'path 0.0)))
(set! (-> obj path) v1-17)
(logior!
(-> v1-17 flags)
(path-control-flag display draw-line draw-point draw-text)
)
(if (<= (-> v1-17 curve num-cverts) 0)
(go process-drawable-art-error "no path")
)
)
(set! sv-16 (new 'static 'res-tag))
(let
((v1-23
(res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16))
)
)
(when v1-23
(+! (-> obj root-override trans x) (-> v1-23 0))
(+! (-> obj root-override trans y) (-> v1-23 1))
(+! (-> obj root-override trans z) (-> v1-23 2))
)
)
(let ((f0-13 (res-lump-float arg0 'rotoffset)))
(if (!= f0-13 0.0)
(quaternion-rotate-y!
(-> obj root-override quat)
(-> obj root-override quat)
f0-13
)
)
)
(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 2))
num-func-identity
)
(set! (-> s5-1 frame-num) 0.0)
)
(ja-post)
(dummy-47 (-> obj root-override))
(set! *shover* obj)
(go shover-idle)
(none)
)
+993
View File
@@ -5,3 +5,996 @@
;; name in dgo: steam-cap
;; dgos: L1, SUN, SUNKEN
;; DECOMP BEGINS
(deftype steam-cap-control-pt (structure)
((trans vector :inline :offset-assert 0)
(transv vector :inline :offset-assert 16)
)
:method-count-assert 9
:size-assert #x20
:flag-assert #x900000020
)
(deftype steam-cap (process-drawable)
((root-override collide-shape-moving :offset 112)
(do-burst? symbol :offset-assert 176)
(do-falling-sound? symbol :offset-assert 180)
(do-landing-sound? symbol :offset-assert 184)
(begin-travel-up float :offset-assert 188)
(begin-travel-down float :offset-assert 192)
(sync sync-info :inline :offset-assert 196)
(part2 sparticle-launch-control :offset-assert 204)
(part3 sparticle-launch-control :offset-assert 208)
(down vector :inline :offset-assert 224)
(up vector :inline :offset-assert 240)
(control-pt steam-cap-control-pt 3 :inline :offset-assert 256)
)
:heap-base #xf0
:method-count-assert 22
:size-assert #x160
:flag-assert #x1600f00160
(:methods
(dummy-20 (_type_) none 20)
(dummy-21 (_type_) quaternion 21)
)
(:states
steam-cap-idle
)
)
(set!
(-> *part-group-id-table* 441)
(new 'static 'sparticle-launch-group
:length 7
:duration #xbb8
:linger-duration #x5dc
:name "group-steam-cap-sides"
:launcher
(new 'static 'inline-array sparticle-group-item 7
(sp-item 1718 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75)
(sp-item 1719 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75 :offset 60)
(sp-item 1720 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75 :offset 120)
(sp-item 1721 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75)
(sp-item 1722 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75 :offset 60)
(sp-item 1723 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75 :offset 120)
(sp-item 1724 :fade-after (meters 60.0) :falloff-to (meters 60.0) :period 180 :length 75 :offset 120)
)
:bounds (new 'static 'sphere :w 40960.0)
)
)
(set!
(-> *part-id-table* 1724)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 16
(sp-flt spt-num 1.0)
(sp-int spt-rot-x 5)
(sp-flt spt-r 4096.0)
(sp-flt spt-g 2867.2)
(sp-flt spt-b 3276.8)
(sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0)
(sp-flt spt-accel-y 0.13653333)
(sp-rnd-flt spt-friction 0.92 0.02 1.0)
(sp-int spt-timer 300)
(sp-cpuinfo-flags aux-list)
(sp-int spt-next-time 150)
(sp-launcher-by-id spt-next-launcher 1725)
(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 2.5))
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1725)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 2
(sp-flt spt-fade-b -2.7306666)
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1718)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 25
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-rnd-flt spt-num 0.0 2.0 1.0)
(sp-flt spt-y (meters -0.5))
(sp-rnd-flt spt-scale-x (meters 0.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 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-rnd-flt spt-a 0.0 16.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0)
(sp-flt spt-scalevel-x (meters 0.01))
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a 0.10666667)
(sp-flt spt-accel-y 0.13653333)
(sp-rnd-flt spt-friction 0.92 0.02 1.0)
(sp-int spt-timer 300)
(sp-cpuinfo-flags bit2 bit3)
(sp-int spt-next-time 150)
(sp-launcher-by-id spt-next-launcher 1726)
(sp-flt spt-conerot-x (degrees 90.0))
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 120.0) 1.0)
(sp-flt spt-conerot-radius (meters 2.5))
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1721)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 25
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-rnd-flt spt-num 0.0 2.0 1.0)
(sp-flt spt-y (meters -0.5))
(sp-rnd-flt spt-scale-x (meters 0.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 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-rnd-flt spt-a 0.0 16.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0)
(sp-flt spt-scalevel-x (meters 0.01))
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a 0.10666667)
(sp-flt spt-accel-y 0.13653333)
(sp-rnd-flt spt-friction 0.92 0.02 1.0)
(sp-int spt-timer 300)
(sp-cpuinfo-flags bit2)
(sp-int spt-next-time 150)
(sp-launcher-by-id spt-next-launcher 1726)
(sp-flt spt-conerot-x (degrees 90.0))
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 120.0) 1.0)
(sp-flt spt-conerot-radius (meters 2.5))
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1719)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 25
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-rnd-flt spt-num 0.0 2.0 1.0)
(sp-flt spt-y (meters -0.5))
(sp-rnd-flt spt-scale-x (meters 0.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 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-rnd-flt spt-a 0.0 16.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0)
(sp-flt spt-scalevel-x (meters 0.01))
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a 0.10666667)
(sp-flt spt-accel-y 0.13653333)
(sp-rnd-flt spt-friction 0.92 0.02 1.0)
(sp-int spt-timer 300)
(sp-cpuinfo-flags bit2 bit3)
(sp-int spt-next-time 150)
(sp-launcher-by-id spt-next-launcher 1726)
(sp-flt spt-conerot-x (degrees 90.0))
(sp-rnd-flt spt-conerot-y (degrees 120.0) (degrees 120.0) 1.0)
(sp-flt spt-conerot-radius (meters 2.5))
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1722)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 25
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-rnd-flt spt-num 0.0 2.0 1.0)
(sp-flt spt-y (meters -0.5))
(sp-rnd-flt spt-scale-x (meters 0.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 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-rnd-flt spt-a 0.0 16.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0)
(sp-flt spt-scalevel-x (meters 0.01))
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a 0.10666667)
(sp-flt spt-accel-y 0.13653333)
(sp-rnd-flt spt-friction 0.92 0.02 1.0)
(sp-int spt-timer 300)
(sp-cpuinfo-flags bit2)
(sp-int spt-next-time 150)
(sp-launcher-by-id spt-next-launcher 1726)
(sp-flt spt-conerot-x (degrees 90.0))
(sp-rnd-flt spt-conerot-y (degrees 120.0) (degrees 120.0) 1.0)
(sp-flt spt-conerot-radius (meters 2.5))
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1720)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 25
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-rnd-flt spt-num 0.0 2.0 1.0)
(sp-flt spt-y (meters -0.5))
(sp-rnd-flt spt-scale-x (meters 0.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 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-rnd-flt spt-a 0.0 16.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0)
(sp-flt spt-scalevel-x (meters 0.01))
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a 0.10666667)
(sp-flt spt-accel-y 0.13653333)
(sp-rnd-flt spt-friction 0.92 0.02 1.0)
(sp-int spt-timer 300)
(sp-cpuinfo-flags bit2 bit3)
(sp-int spt-next-time 150)
(sp-launcher-by-id spt-next-launcher 1726)
(sp-flt spt-conerot-x (degrees 90.0))
(sp-rnd-flt spt-conerot-y (degrees 240.0) (degrees 120.0) 1.0)
(sp-flt spt-conerot-radius (meters 2.5))
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1723)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 25
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-rnd-flt spt-num 0.0 2.0 1.0)
(sp-flt spt-y (meters -0.5))
(sp-rnd-flt spt-scale-x (meters 0.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 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-rnd-flt spt-a 0.0 16.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0)
(sp-flt spt-scalevel-x (meters 0.01))
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a 0.10666667)
(sp-flt spt-accel-y 0.13653333)
(sp-rnd-flt spt-friction 0.92 0.02 1.0)
(sp-int spt-timer 300)
(sp-cpuinfo-flags bit2)
(sp-int spt-next-time 150)
(sp-launcher-by-id spt-next-launcher 1726)
(sp-flt spt-conerot-x (degrees 90.0))
(sp-rnd-flt spt-conerot-y (degrees 240.0) (degrees 120.0) 1.0)
(sp-flt spt-conerot-radius (meters 2.5))
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1726)
(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* 442)
(new 'static 'sparticle-launch-group
:length 4
:duration #xbb8
:linger-duration #x5dc
:name "group-steam-cap-plume"
:launcher
(new 'static 'inline-array sparticle-group-item 4
(sp-item 1727 :fade-after (meters 120.0) :falloff-to (meters 160.0))
(sp-item 1728 :fade-after (meters 120.0) :falloff-to (meters 160.0))
(sp-item 1729 :fade-after (meters 60.0) :falloff-to (meters 60.0))
(sp-item 1730 :fade-after (meters 60.0) :falloff-to (meters 60.0) :flags (start-dead))
)
:bounds (new 'static 'sphere :w 131072.0)
)
)
(set!
(-> *part-group-id-table* 443)
(new 'static 'sparticle-launch-group
:length 2
:duration #xbb8
:linger-duration #x5dc
:name "group-steam-cap-plume-spread"
:launcher
(new 'static 'inline-array sparticle-group-item 2
(sp-item 1731 :fade-after (meters 120.0) :falloff-to (meters 160.0))
(sp-item 1732 :fade-after (meters 120.0) :falloff-to (meters 160.0))
)
:bounds (new 'static 'sphere :w 131072.0)
)
)
(set!
(-> *part-id-table* 1730)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 16
(sp-flt spt-num 0.4)
(sp-int spt-rot-x 5)
(sp-flt spt-r 6144.0)
(sp-flt spt-g 2867.2)
(sp-flt spt-b 3276.8)
(sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0)
(sp-flt spt-accel-y 0.13653333)
(sp-rnd-flt spt-friction 0.94 0.02 1.0)
(sp-int spt-timer 300)
(sp-cpuinfo-flags aux-list)
(sp-int spt-next-time 150)
(sp-launcher-by-id spt-next-launcher 1725)
(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 2.5))
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1732)
(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 0.5)
(sp-flt spt-y (meters -0.5))
(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-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-rnd-flt spt-a 16.0 32.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.026666667) 1.0)
(sp-flt spt-scalevel-x (meters 0.013333334))
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-accel-y 0.13653333)
(sp-rnd-flt spt-friction 0.92 0.02 1.0)
(sp-int spt-timer 300)
(sp-cpuinfo-flags bit2 bit3)
(sp-int spt-next-time 150)
(sp-launcher-by-id spt-next-launcher 1735)
(sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 15.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0.5))
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1731)
(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 0.5)
(sp-flt spt-y (meters -0.5))
(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-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-rnd-flt spt-a 16.0 32.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.026666667) 1.0)
(sp-flt spt-scalevel-x (meters 0.013333334))
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-accel-y 0.13653333)
(sp-rnd-flt spt-friction 0.92 0.02 1.0)
(sp-int spt-timer 300)
(sp-cpuinfo-flags bit2)
(sp-int spt-next-time 150)
(sp-launcher-by-id spt-next-launcher 1735)
(sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 15.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0.5))
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1735)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 2
(sp-flt spt-fade-a -0.32)
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1727)
(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-rnd-flt spt-num 0.5 0.5 1.0)
(sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0)
(sp-flt spt-y (meters -1.0))
(sp-rnd-flt spt-scale-x (meters 2.0) (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-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-rnd-flt spt-a 16.0 16.0 1.0)
(sp-flt spt-vel-y (meters 0.053333335))
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-flt spt-accel-y 2.7306666)
(sp-int spt-timer 153)
(sp-cpuinfo-flags bit2)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 15.0) 1.0)
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1728)
(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-rnd-flt spt-num 0.5 0.5 1.0)
(sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0)
(sp-flt spt-y (meters -1.0))
(sp-rnd-flt spt-scale-x (meters 2.0) (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-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-rnd-flt spt-a 32.0 32.0 1.0)
(sp-flt spt-vel-y (meters 0.053333335))
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-flt spt-accel-y 2.7306666)
(sp-int spt-timer 153)
(sp-cpuinfo-flags bit2 bit3)
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1729)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 11
(sp-flt spt-num 0.5)
(sp-rnd-flt spt-x (meters 0.5) (meters 0.5) 1.0)
(sp-int spt-rot-x 5)
(sp-flt spt-r 6144.0)
(sp-flt spt-g 2457.6)
(sp-flt spt-b 3276.8)
(sp-flt spt-vel-y (meters 0.053333335))
(sp-int spt-timer 153)
(sp-cpuinfo-flags aux-list)
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-end)
)
)
)
(defskelgroup *steam-cap-sg* steam-cap
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 3)
:longest-edge (meters 0)
)
(defmethod dummy-20 steam-cap ((obj steam-cap))
(with-pp
(when *target*
(let* ((a1-0 (target-pos 0))
(f0-0 (-> a1-0 y))
)
(when
(and
(>= f0-0 (+ -8192.0 (-> obj down y)))
(and
(>= (+ -4096.0 (-> obj root-override trans y)) f0-0)
(zero? (-> obj root-override riders num-riders))
)
)
(let ((f0-1 (vector-vector-xz-distance-squared (-> obj down) a1-0)))
(when (>= 104857600.0 f0-1)
(let ((s5-0 (>= 37748736.0 f0-1)))
(when (not s5-0)
(when (>= (- (-> obj root-override trans y) (-> obj down y)) 3072.0)
(let ((a1-1 (new 'stack-no-clear 'vector)))
(set! (-> a1-1 x) (the-as float 1))
(set! (-> a1-1 y) (the-as float #f))
(if (dummy-40 (-> obj root-override) a1-1)
(set! s5-0 #t)
)
)
)
)
(when s5-0
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) pp)
(set! (-> a1-2 num-params) 2)
(set! (-> a1-2 message) 'shove)
(set! (-> a1-2 param 0) (the-as uint #f))
(let ((v1-16 (new 'static 'attack-info :mask #xc0)))
(set! (-> v1-16 shove-up) 2048.0)
(set! (-> v1-16 shove-back) 6144.0)
(set! (-> a1-2 param 1) (the-as uint v1-16))
)
(send-event-function *target* a1-2)
)
)
)
)
)
)
)
)
(none)
)
)
(defmethod dummy-21 steam-cap ((obj steam-cap))
(local-vars (at-0 int) (at-1 int) (s5-0 symbol))
(rlet ((vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
)
(init-vf0-vector)
(let ((f0-0 (get-current-phase (-> obj sync))))
#t
(cond
((< f0-0 (-> obj begin-travel-up))
(let ((f30-0 (/ f0-0 (-> obj begin-travel-up))))
(set! s5-0 #t)
(dotimes (s4-0 3)
(let ((s3-0 (-> obj control-pt s4-0)))
(when (= (-> s3-0 trans y) (-> obj down y))
(set! (-> obj do-burst?) #t)
(let ((a0-2 (+ (the int (* 60.0 (- 1.0 f30-0))) 3)))
(if (zero? (rand-vu-int-count a0-2))
(+!
(-> s3-0 transv y)
(* (rand-vu-float-range 40960.0 57344.0) f30-0)
)
)
)
)
)
)
(let ((a0-4 (+ (the int (* 60.0 (- 1.0 f30-0))) 1)))
(if (zero? (rand-vu-int-count a0-4))
(spawn (-> obj part) (-> obj down))
)
)
)
)
((< f0-0 (-> obj begin-travel-down))
(let
((f30-1
(/
(- f0-0 (-> obj begin-travel-up))
(- (-> obj begin-travel-down) (-> obj begin-travel-up))
)
)
)
(set! s5-0 #f)
(set! (-> obj do-falling-sound?) #t)
(when (-> obj do-burst?)
(sound-play-by-name
(static-sound-name "sunk-top-rises")
(new-sound-id)
1024
0
0
1
#t
)
(set! (-> obj do-burst?) #f)
(spawn (-> obj part) (-> obj down))
(spawn (-> obj part) (-> obj down))
(spawn (-> obj part) (-> obj down))
(spawn (-> obj part) (-> obj down))
)
(when (< f30-1 0.94)
(spawn (-> obj part2) (-> obj down))
(let ((a1-8 (new 'stack-no-clear 'vector)))
(set! (-> a1-8 quad) (-> obj root-override trans quad))
(set! (-> a1-8 y) (+ -3072.0 (-> a1-8 y)))
(spawn (-> obj part3) a1-8)
)
)
)
)
(else
(set! s5-0 #t)
(when (-> obj do-falling-sound?)
(set! (-> obj do-falling-sound?) #f)
(sound-play-by-name
(static-sound-name "sunk-top-falls")
(new-sound-id)
1024
0
0
1
#t
)
)
)
)
)
(dotimes (s4-3 3)
(let ((s2-0 (-> obj control-pt s4-3))
(s3-3 (new 'stack-no-clear 'vector))
)
(set! (-> s3-3 quad) (-> s2-0 trans quad))
(cond
(s5-0
(+! (-> s2-0 transv y) (* -819200.0 (-> *display* seconds-per-frame)))
(let ((a1-10 s3-3)
(v1-42 s3-3)
(a0-21 (new 'stack-no-clear 'vector))
)
(.lvf vf1 (&-> (-> s2-0 transv) quad))
(let ((f0-17 (-> *display* seconds-per-frame)))
(.mov at-0 f0-17)
)
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.svf (&-> a0-21 quad) vf1)
(vector+! a1-10 v1-42 a0-21)
)
(when (< (-> s3-3 y) (-> obj down y))
(when (-> obj do-landing-sound?)
(set! (-> obj do-landing-sound?) #f)
(sound-play-by-name
(static-sound-name "sunk-top-lands")
(new-sound-id)
1024
0
0
1
#t
)
)
(set! (-> s3-3 y) (-> obj down y))
(let ((f0-20 (-> s2-0 transv y)))
(when (< f0-20 0.0)
(let ((f0-22 (* 0.3 (- f0-20))))
(set! (-> s2-0 transv y) f0-22)
(if (< 7782.4 f0-22)
(sound-play-by-name
(static-sound-name "sunk-top-lands")
(new-sound-id)
614
0
0
1
#t
)
)
)
)
)
)
)
(else
(set! (-> obj do-landing-sound?) #t)
(let ((f0-24 (* 0.000048828126 (- (-> obj up y) (-> s2-0 trans y)))))
(cond
((< 1.0 f0-24)
(set! f0-24 1.0)
)
((< f0-24 -1.0)
(set! f0-24 -1.0)
)
)
(+!
(-> s2-0 transv y)
(* 819200.0 (-> *display* seconds-per-frame) f0-24)
)
(let ((f1-24 (-> s2-0 transv y)))
(when (< 122880.0 (fabs f1-24))
(if (>= f1-24 0.0)
(set! (-> s2-0 transv y) 122880.0)
(set! (-> s2-0 transv y) -122880.0)
)
)
)
(let ((a1-14 s3-3)
(v1-61 s3-3)
(a0-26 (new 'stack-no-clear 'vector))
)
(.lvf vf1 (&-> (-> s2-0 transv) quad))
(let ((f1-27 (-> *display* seconds-per-frame)))
(.mov at-1 f1-27)
)
(.mov vf2 at-1)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.svf (&-> a0-26 quad) vf1)
(vector+! a1-14 v1-61 a0-26)
)
(let ((f1-29 (- (-> obj up y) (-> s3-3 y)))
(v1-62 (>= f0-24 0.0))
)
(when (!= v1-62 (>= f1-29 0.0))
(let ((f0-26 (-> s2-0 transv y)))
(when (< 40960.0 (fabs f0-26))
(if (>= f0-26 0.0)
(set! (-> s2-0 transv y) 40960.0)
(set! (-> s2-0 transv y) -40960.0)
)
)
)
(set! (-> s2-0 transv y) (* 0.8 (-> s2-0 transv y)))
)
)
)
)
)
(set! (-> s2-0 trans quad) (-> s3-3 quad))
)
)
(let ((f0-31 0.0))
(dotimes (v1-71 3)
(+! f0-31 (-> obj control-pt v1-71 trans y))
)
(let ((f0-32 (* 0.33333334 f0-31))
(a1-16 (new 'stack-no-clear 'vector))
)
(set! (-> a1-16 quad) (-> obj root-override trans quad))
(set! (-> a1-16 y) f0-32)
(TODO-RENAME-30 (-> obj root-override) a1-16)
)
)
(let ((v1-77 (new 'stack-no-clear 'vector))
(a0-35 (new 'stack-no-clear 'vector))
(s5-1 (new 'stack-no-clear 'vector))
)
(vector-!
v1-77
(the-as vector (&-> obj stack 176))
(the-as vector (-> obj control-pt))
)
(vector-!
a0-35
(the-as vector (&-> obj stack 208))
(the-as vector (-> obj control-pt))
)
(vector-cross! s5-1 v1-77 a0-35)
(vector-normalize! s5-1 1.0)
(forward-up-nopitch->quaternion
(-> obj root-override quat)
(vector-z-quaternion! (new-stack-vector0) (-> obj root-override quat))
s5-1
)
)
)
)
(defstate steam-cap-idle (steam-cap)
:trans
(the-as (function none :behavior steam-cap) rider-trans)
:code
(behavior ()
(while #t
(dummy-20 self)
(dummy-21 self)
(suspend)
)
(none)
)
:post
(the-as (function none :behavior steam-cap) rider-post)
)
(defmethod relocate steam-cap ((obj steam-cap) (arg0 int))
(if (nonzero? (-> obj part2))
(&+! (-> obj part2) arg0)
)
(if (nonzero? (-> obj part3))
(&+! (-> obj part3) arg0)
)
(the-as
steam-cap
((the-as
(function process-drawable int process-drawable)
(find-parent-method steam-cap 7)
)
obj
arg0
)
)
)
(defmethod deactivate steam-cap ((obj steam-cap))
(if (nonzero? (-> obj part2))
(kill-and-free-particles (-> obj part2))
)
(if (nonzero? (-> obj part3))
(kill-and-free-particles (-> obj part3))
)
((method-of-type process-drawable deactivate) obj)
(none)
)
(defmethod copy-defaults! steam-cap ((obj steam-cap) (arg0 res-lump))
(local-vars (sv-16 int))
(set! (-> obj mask) (logior (process-mask platform) (-> obj mask)))
(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) nothing)
(dummy-29 s4-0 1)
(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 2048))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 3))
(set! (-> s3-0 prim-core offense) 4)
(set! (-> s3-0 transform-index) 4)
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0)
)
(dummy-46 s4-0)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(dummy-50 s4-0)
(set! (-> obj root-override) s4-0)
)
(set! (-> obj do-burst?) #f)
(set! (-> obj do-falling-sound?) #f)
(set! (-> obj do-landing-sound?) #f)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *steam-cap-sg* '())
(logior! (-> obj skel status) 1)
(ja-channel-set! 1)
(let ((s4-1 (-> obj skel root-channel 0)))
(joint-control-channel-group-eval!
s4-1
(the-as art-joint-anim (-> obj draw art-group data 2))
num-func-identity
)
(set! (-> s4-1 frame-num) 0.0)
)
(dummy-47 (-> obj root-override))
(load-params! (-> obj sync) obj (the-as uint 1800) 0.0 0.15 0.15)
(let ((f30-0 0.4)
(f28-0 0.9)
)
(set! sv-16 0)
(let
((v1-36
(res-lump-data
arg0
'percent
(pointer float)
:tag-ptr
(the-as (pointer res-tag) (& sv-16))
)
)
)
(when v1-36
(set! f30-0 (-> v1-36 0))
(set! f28-0 (-> v1-36 1))
(if (>= 0.01 f30-0)
(set! f30-0 0.01)
)
(if (>= 0.01 f28-0)
(set! f28-0 0.01)
)
(if (>= f30-0 f28-0)
(set! f28-0 (+ 0.01 f30-0))
)
(when (>= f30-0 1.0)
(set! f28-0 (* 0.9 (/ f28-0 f30-0)))
(set! f30-0 0.9)
)
)
)
(set! (-> obj begin-travel-up) f30-0)
(set! (-> obj begin-travel-down) f28-0)
)
(set! (-> obj down quad) (-> obj root-override trans quad))
(set! (-> obj up quad) (-> obj root-override trans quad))
(set! (-> obj up y) (+ 40960.0 (-> obj up y)))
(set!
(-> obj part)
(create-launch-control (-> *part-group-id-table* 441) obj)
)
(set!
(-> obj part2)
(create-launch-control (-> *part-group-id-table* 442) obj)
)
(set!
(-> obj part3)
(create-launch-control (-> *part-group-id-table* 443) obj)
)
(vector-reset! (-> obj root-override transv))
(let ((s5-1 (new 'stack-no-clear 'vector))
(f30-1 0.0)
)
(dotimes (s4-2 3)
(let ((s3-1 (-> obj control-pt s4-2)))
(set-vector! s5-1 0.0 0.0 10240.0 1.0)
(vector-rotate-around-y! s5-1 s5-1 f30-1)
(set! f30-1 (+ 21845.334 f30-1))
(vector+! (-> s3-1 trans) s5-1 (-> obj root-override trans))
(vector-reset! (-> s3-1 transv))
)
)
)
(go steam-cap-idle)
(none)
)
+597
View File
@@ -5,3 +5,600 @@
;; name in dgo: sun-iris-door
;; dgos: L1, SUN, SUNKEN
;; DECOMP BEGINS
(deftype sun-iris-door (process-drawable)
((root-override collide-shape :offset 112)
(timeout float :offset-assert 176)
(proximity? symbol :offset-assert 180)
(directional-proximity? symbol :offset-assert 184)
(move-to? symbol :offset-assert 188)
(locked-by-task? symbol :offset-assert 192)
(close-dist float :offset-assert 196)
(open-dist float :offset-assert 200)
(move-to-pos vector :inline :offset-assert 208)
(outward-vec vector :inline :offset-assert 224)
(move-to-quat quaternion :inline :offset-assert 240)
)
:heap-base #x90
:method-count-assert 22
:size-assert #x100
:flag-assert #x1600900100
(:methods
(should-close? (_type_) symbol 20)
(should-open? (_type_) symbol 21)
)
(:states
sun-iris-door-closed
sun-iris-door-closing
sun-iris-door-open
sun-iris-door-opening
)
)
(defskelgroup *sun-iris-door-sg* sun-iris-door
0
3
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 4.5)
:longest-edge (meters 0)
)
(defmethod should-open? sun-iris-door ((obj sun-iris-door))
(let ((f30-0 1228800.0))
0.0
(let ((f0-7 (cond
((-> obj directional-proximity?)
(let ((s5-0 (new 'stack-no-clear 'vector)))
(when *target*
(vector-! s5-0 (target-pos 0) (-> obj root-override trans))
(set! (-> s5-0 y) 0.0)
(set! f30-0 (fabs (vector-dot s5-0 (-> obj outward-vec))))
)
(vector-! s5-0 (camera-pos) (-> obj root-override trans))
(set! (-> s5-0 y) 0.0)
(fabs (vector-dot s5-0 (-> obj outward-vec)))
)
)
(else
(if *target*
(set!
f30-0
(vector-vector-xz-distance
(-> obj root-override trans)
(target-pos 0)
)
)
)
(vector-vector-xz-distance
(-> obj root-override trans)
(camera-pos)
)
)
)
)
)
(when (or (>= (-> obj open-dist) f30-0) (>= (-> obj open-dist) f0-7))
(if
(or
(not (-> obj locked-by-task?))
(task-complete? *game-info* (-> obj entity extra perm task))
)
(return #t)
)
)
)
)
#f
)
(defstate sun-iris-door-closed (sun-iris-door)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('trigger)
(go sun-iris-door-opening)
)
(('move-to)
(set! (-> self move-to?) #t)
(set!
(-> self move-to-pos quad)
(-> (the-as vector (-> arg3 param 0)) quad)
)
(quaternion-copy!
(-> self move-to-quat)
(the-as quaternion (-> arg3 param 1))
)
)
)
)
:trans
(behavior ()
(when (-> self proximity?)
(if (should-open? self)
(go sun-iris-door-opening)
)
)
(none)
)
:code
(behavior ()
(while #t
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
:post
(behavior ()
(when (-> self move-to?)
(set! (-> self move-to?) #f)
(TODO-RENAME-30 (-> self root-override) (-> self move-to-pos))
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
(ja-post)
)
(none)
)
)
(defstate sun-iris-door-opening (sun-iris-door)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('untrigger)
(go sun-iris-door-closing)
)
(('move-to)
(set! (-> self move-to?) #t)
(set!
(-> self move-to-pos quad)
(-> (the-as vector (-> arg3 param 0)) quad)
)
(quaternion-copy!
(-> self move-to-quat)
(the-as quaternion (-> arg3 param 1))
)
)
)
)
:code
(behavior ()
(sound-play-by-name
(static-sound-name "irisdoor2")
(new-sound-id)
1024
0
0
1
#t
)
(let ((a0-2 (-> self skel root-channel 0)))
(set!
(-> a0-2 param 0)
(the float (+ (-> a0-2 frame-group data 0 length) -1))
)
(set! (-> a0-2 param 1) 1.0)
(joint-control-channel-group!
a0-2
(the-as art-joint-anim #f)
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!
)
)
)
(ja-post)
(go sun-iris-door-open)
(none)
)
:post
(behavior ()
(cond
((-> self move-to?)
(set! (-> self move-to?) #f)
(TODO-RENAME-30 (-> self root-override) (-> self move-to-pos))
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
(ja-post)
)
(else
(transform-post)
)
)
(none)
)
)
(defmethod should-close? sun-iris-door ((obj sun-iris-door))
(let ((f30-0 1228800.0))
0.0
(let ((f0-7 (cond
((-> obj directional-proximity?)
(let ((s5-0 (new 'stack-no-clear 'vector)))
(when *target*
(vector-! s5-0 (target-pos 0) (-> obj root-override trans))
(set! (-> s5-0 y) 0.0)
(set! f30-0 (fabs (vector-dot s5-0 (-> obj outward-vec))))
)
(vector-! s5-0 (camera-pos) (-> obj root-override trans))
(set! (-> s5-0 y) 0.0)
(fabs (vector-dot s5-0 (-> obj outward-vec)))
)
)
(else
(if *target*
(set!
f30-0
(vector-vector-xz-distance
(-> obj root-override trans)
(target-pos 0)
)
)
)
(vector-vector-xz-distance
(-> obj root-override trans)
(camera-pos)
)
)
)
)
)
(when (and (>= f30-0 (-> obj close-dist)) (>= f0-7 (-> obj close-dist)))
(cond
((and *target* (-> obj directional-proximity?))
(let ((s4-6 (new 'stack-no-clear 'vector))
(s5-3 (new 'stack-no-clear 'vector))
)
(vector-! s4-6 (target-pos 0) (-> obj root-override trans))
(set! (-> s4-6 y) 0.0)
(vector-! s5-3 (camera-pos) (-> obj root-override trans))
(set! (-> s5-3 y) 0.0)
(case (>= (vector-dot (-> obj outward-vec) s4-6) 0.0)
(((>= (vector-dot (-> obj outward-vec) s5-3) 0.0))
(return #t)
)
)
)
)
(else
(return #t)
)
)
)
)
)
#f
)
(defstate sun-iris-door-open (sun-iris-door)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('trigger)
(let ((v0-0 (the-as object (-> *display* base-frame-counter))))
(set! (-> self state-time) (the-as int v0-0))
v0-0
)
)
(('untrigger)
(go sun-iris-door-closing)
)
(('move-to)
(set! (-> self move-to?) #t)
(set!
(-> self move-to-pos quad)
(-> (the-as vector (-> arg3 param 0)) quad)
)
(quaternion-copy!
(-> self move-to-quat)
(the-as quaternion (-> arg3 param 1))
)
)
)
)
:enter
(behavior ()
(set! (-> self state-time) (-> *display* base-frame-counter))
(dummy-48 (-> self root-override))
(logior! (-> self draw status) 2)
(none)
)
:exit
(behavior ()
(dummy-49 (-> self root-override))
(set! (-> self draw status) (logand -3 (-> self draw status)))
(none)
)
:trans
(behavior ()
(when (-> self proximity?)
(if (should-close? self)
(go sun-iris-door-closing)
)
)
(if
(and
(!= (-> self timeout) 0.0)
(>=
(- (-> *display* base-frame-counter) (-> self state-time))
(the int (* 300.0 (-> self timeout)))
)
)
(go sun-iris-door-closing)
)
(none)
)
:code
(behavior ()
(while #t
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
:post
(behavior ()
(when (-> self move-to?)
(set! (-> self move-to?) #f)
(TODO-RENAME-30 (-> self root-override) (-> self move-to-pos))
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
(ja-post)
)
(none)
)
)
(defstate sun-iris-door-closing (sun-iris-door)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('trigger)
(go sun-iris-door-opening)
)
(('move-to)
(set! (-> self move-to?) #t)
(set!
(-> self move-to-pos quad)
(-> (the-as vector (-> arg3 param 0)) quad)
)
(quaternion-copy!
(-> self move-to-quat)
(the-as quaternion (-> arg3 param 1))
)
)
)
)
:code
(behavior ()
(sound-play-by-name
(static-sound-name "irisdoor2")
(new-sound-id)
1024
0
0
1
#t
)
(let ((a0-2 (-> self skel root-channel 0)))
(set! (-> a0-2 param 0) 0.0)
(set! (-> a0-2 param 1) 1.0)
(joint-control-channel-group!
a0-2
(the-as art-joint-anim #f)
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((a0-3 (-> self skel root-channel 0)))
(set! (-> a0-3 param 0) 0.0)
(set! (-> a0-3 param 1) 1.0)
(joint-control-channel-group-eval!
a0-3
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(ja-post)
(go sun-iris-door-closed)
(none)
)
:post
(behavior ()
(cond
((-> self move-to?)
(set! (-> self move-to?) #f)
(TODO-RENAME-30 (-> self root-override) (-> self move-to-pos))
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
(ja-post)
)
(else
(transform-post)
)
)
(none)
)
)
(defmethod copy-defaults! sun-iris-door ((obj sun-iris-door) (arg0 res-lump))
(local-vars (sv-16 int))
(set! (-> obj move-to?) #f)
(let
((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others))))
(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 0.0 0.0 24576.0)
)
(dummy-46 s4-0)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(dummy-50 s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *sun-iris-door-sg* '())
(set! (-> obj close-dist) 49152.0)
(set! (-> obj open-dist) 40960.0)
(set! (-> obj timeout) (res-lump-float arg0 'timeout))
(set! (-> obj proximity?) (nonzero? (res-lump-value arg0 'proximity uint128)))
(set! (-> obj directional-proximity?) #f)
(when (name= (-> obj name) "sun-iris-door-6")
(set! (-> obj close-dist) 16384.0)
(set! (-> obj open-dist) 8192.0)
(set! (-> obj directional-proximity?) #t)
)
(set! (-> obj locked-by-task?) (nonzero? (-> obj entity extra perm task)))
(let ((f0-11 (res-lump-float arg0 'scale-factor :default 1.0)))
(set-vector! (-> obj root-override scale) f0-11 f0-11 f0-11 1.0)
(set! (-> obj draw bounds w) (* 18432.0 f0-11))
(let ((v1-25 (-> obj root-override root-prim)))
(set! (-> v1-25 local-sphere w) (* 24576.0 f0-11 f0-11))
)
)
(set! sv-16 0)
(let
((v1-28
(res-lump-data
(-> obj entity)
'trans-offset
(pointer float)
:tag-ptr
(the-as (pointer res-tag) (& sv-16))
)
)
)
(when v1-28
(+! (-> obj root-override trans x) (-> v1-28 0))
(+! (-> obj root-override trans y) (-> v1-28 1))
(+! (-> obj root-override trans z) (-> v1-28 2))
)
)
(let ((f30-0 (quaternion-y-angle (-> obj root-override quat))))
(set-vector! (-> obj outward-vec) (sin f30-0) 0.0 (cos f30-0) 1.0)
)
(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)
)
(dummy-47 (-> obj root-override))
(ja-post)
(go sun-iris-door-closed)
(none)
)
(defbehavior
sun-iris-door-init-by-other sun-iris-door
((arg0 vector) (arg1 quaternion) (arg2 symbol))
(set! (-> self move-to?) #f)
(let
((s3-0 (new 'process 'collide-shape self (collide-list-enum hit-by-others))))
(let
((s2-0
(new
'process
'collide-shape-prim-mesh
s3-0
(the-as uint 0)
(the-as uint 0)
)
)
)
(set! (-> s2-0 prim-core collide-as) (the-as uint 512))
(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) 0)
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0)
)
(dummy-46 s3-0)
(set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w)))
(dummy-50 s3-0)
(set! (-> self root-override) s3-0)
)
(set! (-> self root-override trans quad) (-> arg0 quad))
(quaternion-copy! (-> self root-override quat) arg1)
(initialize-skeleton self *sun-iris-door-sg* '())
(set! (-> self close-dist) 49152.0)
(set! (-> self open-dist) 40960.0)
(set! (-> self timeout) 0.0)
(set! (-> self proximity?) #f)
(set! (-> self directional-proximity?) #f)
(ja-channel-set! 1)
(cond
(arg2
(let ((s5-1 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
s5-1
(the-as art-joint-anim (-> self draw art-group data 3))
num-func-identity
)
(set!
(-> s5-1 frame-num)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 3))
data
0
length
)
-1
)
)
)
)
)
(else
(let ((s5-2 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
s5-2
(the-as art-joint-anim (-> self draw art-group data 3))
num-func-identity
)
(set! (-> s5-2 frame-num) 0.0)
)
)
)
(transform-post)
(if arg2
(go sun-iris-door-open)
(go sun-iris-door-closed)
)
(none)
)
+494
View File
@@ -5,3 +5,497 @@
;; name in dgo: whirlpool
;; dgos: L1, SUN, SUNKEN
;; DECOMP BEGINS
(deftype whirlpool (process-drawable)
((root-override collide-shape :offset 112)
(spin-ry float :offset-assert 176)
(spin-speed-idle float :offset-assert 180)
(spin-speed-delta float :offset-assert 184)
(sync sync-info-paused :inline :offset-assert 188)
)
:heap-base #x60
:method-count-assert 21
:size-assert #xcc
:flag-assert #x15006000cc
(:methods
(dummy-20 (_type_ float) uint 20)
)
(:states
whirlpool-idle
)
)
(defskelgroup *whirlpool-sg* whirlpool
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0.6000000238418579 0 3)
:longest-edge (meters 0)
)
(set!
(-> *part-group-id-table* 447)
(new 'static 'sparticle-launch-group
:length #xbb
:duration #xbb8
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-whirlpool-swirl"
:launcher
(new 'static 'inline-array sparticle-group-item 187
(sp-item 1739 :fade-after (meters 60.0) :falloff-to (meters 60.0) :binding 1737)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
)
:bounds (new 'static 'sphere :w 32768.0)
)
)
(set!
(-> *part-id-table* 1739)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 11
(sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-y (meters 6.6))
(sp-flt spt-scale-x (meters 0.2))
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-g 0.0)
(sp-flt spt-a 128.0)
(sp-flt spt-accel-y -0.68266666)
(sp-int spt-timer 510)
(sp-cpuinfo-flags bit2 bit3)
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1737)
(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 1.0)
(sp-flt spt-x (meters 0.0))
(sp-flt spt-y (meters 0.0))
(sp-rnd-flt spt-z 16384.0 4096.0 1.0)
(sp-flt spt-scale-x (meters 3.2))
(sp-flt spt-scale-y (meters 1.0))
(sp-flt spt-r 150.0)
(sp-flt spt-g 150.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 0.0)
(sp-rnd-flt spt-omega 0.0 65536.0 1.0)
(sp-flt spt-vel-x (meters 0.053333335))
(sp-flt spt-vel-y (meters 0.0))
(sp-flt spt-vel-z (meters -0.01))
(sp-flt spt-scalevel-x (meters -0.004888889))
(sp-flt spt-fade-a 0.42666668)
(sp-int spt-timer 450)
(sp-cpuinfo-flags bit2 bit3 bit7)
(sp-int-plain-rnd spt-next-time 37 36 1)
(sp-launcher-by-id spt-next-launcher 1740)
(sp-end)
)
)
)
(set!
(-> *part-id-table* 1740)
(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* 1738)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 12
(sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
(sp-flt spt-num 1.0)
(sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 255.0)
(sp-flt spt-g 255.0)
(sp-flt spt-b 255.0)
(sp-rnd-flt spt-a 32.0 32.0 1.0)
(sp-flt spt-fade-a -1.8285716)
(sp-int spt-timer 30)
(sp-cpuinfo-flags bit2 bit3)
(sp-end)
)
)
)
(defmethod dummy-20 whirlpool ((obj whirlpool) (arg0 float))
(let* ((gp-0 (target-pos 0))
(f28-0 (vector-vector-xz-distance (-> obj root-override trans) gp-0))
)
(when (< f28-0 40960.0)
(let* ((f0-2 (* 0.000024414063 (- 40960.0 f28-0)))
(f26-0 (* f0-2 f0-2))
(f0-7
(atan
(- (-> gp-0 x) (-> obj root-override trans x))
(- (-> gp-0 z) (-> obj root-override trans z))
)
)
(f30-0 (* 0.5 f26-0 arg0 (-> *display* seconds-per-frame)))
(f24-0 (+ f0-7 f30-0))
(f28-1
(-
f28-0
(fmin
f28-0
(* 0.16874999 f26-0 (fabs arg0) (-> *display* seconds-per-frame))
)
)
)
(s4-1 (new 'stack-no-clear 'vector))
)
(set-vector! s4-1 (* (sin f24-0) f28-1) 0.0 (* (cos f24-0) f28-1) 1.0)
(vector+! s4-1 s4-1 (-> obj root-override trans))
(set!
(-> s4-1 x)
(* (- (-> s4-1 x) (-> gp-0 x)) (-> *display* frames-per-second))
)
(set! (-> s4-1 y) 0.0)
(set!
(-> s4-1 z)
(* (- (-> s4-1 z) (-> gp-0 z)) (-> *display* frames-per-second))
)
(let ((gp-1 (-> *target* control)))
(send-event (-> gp-1 process) 'rotate-y-angle f30-0)
(dummy-32 gp-1 8192.0 (-> gp-1 root-prim collide-with))
(let ((s3-0 (-> gp-1 status)))
(dummy-37 gp-1 s4-1)
(set! (-> gp-1 status) s3-0)
s3-0
)
)
)
)
)
)
(defstate whirlpool-idle (whirlpool)
:trans
(behavior ()
(let
((f30-0
(+
(*
(get-current-phase-with-mirror (-> self sync))
(-> self spin-speed-delta)
)
(-> self spin-speed-idle)
)
)
)
(when (>= (fabs f30-0) 45511.11)
(let ((a1-0 (new 'stack-no-clear 'vector)))
(set! (-> a1-0 quad) (-> self root-override trans quad))
(set! (-> a1-0 y) (+ -8192.0 (-> a1-0 y)))
(spawn (-> self part) a1-0)
)
)
(+! (-> self spin-ry) (* f30-0 (-> *display* seconds-per-frame)))
(quaternion-axis-angle!
(-> self root-override quat)
0.0
1.0
0.0
(-> self spin-ry)
)
(if (and *target* (logtest? (-> *target* water flags) 512))
(dummy-20 self f30-0)
)
(update! (-> self sound))
(let
((f0-9
(fmin 1.0 (* 0.000007608261 (fmax 0.0 (+ -28580.979 (fabs f30-0)))))
)
)
(update-vol! (-> self sound) (the int (* 100.0 f0-9)))
)
)
(none)
)
:code
(the-as (function none :behavior whirlpool) anim-loop)
:post
(the-as (function none :behavior whirlpool) ja-post)
)
(defmethod deactivate whirlpool ((obj whirlpool))
(if (nonzero? (-> obj sound))
(stop! (-> obj sound))
)
((method-of-type process-drawable deactivate) obj)
(none)
)
(defmethod copy-defaults! whirlpool ((obj whirlpool) (arg0 res-lump))
(local-vars (sv-16 res-tag))
(set! (-> obj spin-ry) (rand-vu-float-range 0.0 65536.0))
(let
((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
(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 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-vector! (-> s3-0 local-sphere) 0.0 -819.2 0.0 11468.8)
)
(dummy-46 s4-0)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(dummy-50 s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *whirlpool-sg* '())
(load-params! (-> obj sync) obj (the-as uint 1500) 0.0 0.15 0.15)
(let ((f30-0 32768.0)
(f28-0 145635.56)
)
(set! sv-16 (new 'static 'res-tag))
(let ((v1-17 (res-lump-data arg0 'speed (pointer float) :tag-ptr (& sv-16))))
(when v1-17
(set! f30-0 (-> v1-17 0))
(set! f28-0 (-> v1-17 1))
)
)
(set! (-> obj spin-speed-idle) f30-0)
(set! (-> obj spin-speed-delta) (- f28-0 f30-0))
)
(set!
(-> obj part)
(create-launch-control (-> *part-group-id-table* 447) obj)
)
(set!
(-> obj sound)
(new
'process
'ambient-sound
(new 'static 'sound-spec
:mask #x80
:num 1.0
:group #x1
:sound-name (static-sound-name "whirlpool")
:volume #x400
:fo-max 55
)
(-> obj root-override 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 2))
num-func-identity
)
(set! (-> s5-1 frame-num) 0.0)
)
(ja-post)
(dummy-47 (-> obj root-override))
(go whirlpool-idle)
(none)
)
File diff suppressed because it is too large Load Diff
+2 -6
View File
@@ -6,6 +6,7 @@
;; dgos: L1, SWA
(declare-type swamp-rat-nest process-drawable)
(declare-type billy process-taskable)
;; DECOMP BEGINS
@@ -858,12 +859,7 @@ swamp-rat-default-event-handler
(defbehavior
swamp-rat-init-by-other swamp-rat
((arg0 swamp-rat-nest)
(arg1 vector)
(arg2 vector)
(arg3 pickup-type)
(arg4 symbol)
)
((arg0 billy) (arg1 vector) (arg2 vector) (arg3 pickup-type) (arg4 symbol))
(initialize-collision self)
(if arg4
(logclear! (-> self mask) (process-mask actor-pause))
+10 -2
View File
@@ -432,7 +432,11 @@ yakow-default-event-handler
(set! (-> gp-1 y) 0.0)
(set! (-> self nav travel quad) (-> gp-1 quad))
(vector-normalize! (-> self nav travel) 409600.0)
(dummy-24 (-> self nav) 204.8 #f)
(dummy-24
(-> self nav)
204.8
(the-as clip-travel-vector-to-mesh-return-info #f)
)
(when (not (-> self enable-turn-around))
(set! (-> gp-1 quad) (-> self nav travel quad))
(let ((f30-0 (vector-length gp-1)))
@@ -443,7 +447,11 @@ yakow-default-event-handler
)
(set! (-> self nav travel quad) (-> s5-1 quad))
(vector-normalize! (-> self nav travel) 409600.0)
(dummy-24 (-> self nav) 204.8 #f)
(dummy-24
(-> self nav)
204.8
(the-as clip-travel-vector-to-mesh-return-info #f)
)
(vector-length (-> self nav travel))
)
)
+4 -4
View File
@@ -324,7 +324,7 @@
:flag-assert #x1d0000005c
(:methods
(new (symbol type basic uint uint) _type_ 0)
(dummy-28 () none 28)
(dummy-28 (_type_ int) none 28)
)
)
@@ -411,16 +411,16 @@
(dummy-29 (_type_ int) none 29)
(TODO-RENAME-30 (_type_ vector) none 30)
(dummy-31 () none 31)
(dummy-32 () none 32)
(dummy-32 (_type_ float uint) none 32)
(dummy-33 (_type_ vector uint) none 33)
(dummy-34 (_type_ uint) collide-shape-prim 34)
(dummy-35 (_type_) none 35)
(dummy-36 () none 36)
(dummy-37 () none 37)
(dummy-37 (_type_ vector) none 37)
(dummy-38 () none 38)
(dummy-39 () none 39)
(dummy-40 (_type_ structure) none 40)
(dummy-41 () none 41)
(dummy-41 (_type_ attack-info float) none 41)
(dummy-42 () none 42)
(dummy-43 () none 43)
(dummy-44 (_type_) none 44)
+1 -1
View File
@@ -133,7 +133,7 @@
(touched-shape (_type_ collide-shape-moving) collide-shape 10)
(dummy-11 () none 11)
(prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12)
(dummy-13 () none 13)
(dummy-13 (_type_ control-info int int) none 13)
(dummy-14 () none 14)
(dummy-15 () none 15)
(get-head (_type_) touching-prims-entry 16)
+4 -1
View File
@@ -69,7 +69,10 @@
a2-0
(*
0.006666667
(the float (- (-> *display* base-frame-counter) (-> arg0 start-time)))
(the
float
(- (-> *display* base-frame-counter) (the-as int (-> arg0 start-time)))
)
)
)
)
+13 -13
View File
@@ -78,19 +78,19 @@
;; definition of type part-tracker
(deftype part-tracker (process)
((root trsqv :offset-assert 112)
(part sparticle-launch-control :offset-assert 116)
(target handle :offset-assert 120)
(callback (function part-tracker none) :offset-assert 128)
(linger-callback (function part-tracker none) :offset-assert 132)
(duration int64 :offset-assert 136)
(linger-duration int64 :offset-assert 144)
(start-time int64 :offset-assert 152)
(offset vector :inline :offset-assert 160)
(userdata uint64 :offset-assert 176)
(user-time int64 2 :offset-assert 184)
(user-vector vector 2 :inline :offset-assert 208)
(user-handle uint32 2 :offset-assert 240)
((root trsqv :offset-assert 112)
(part sparticle-launch-control :offset-assert 116)
(target handle :offset-assert 120)
(callback (function part-tracker vector) :offset-assert 128)
(linger-callback (function part-tracker vector) :offset-assert 132)
(duration uint64 :offset-assert 136)
(linger-duration uint64 :offset-assert 144)
(start-time uint64 :offset-assert 152)
(offset vector :inline :offset-assert 160)
(userdata uint64 :offset-assert 176)
(user-time int64 2 :offset-assert 184)
(user-vector vector 2 :inline :offset-assert 208)
(user-handle uint32 2 :offset-assert 240)
)
:heap-base #x90
:method-count-assert 14
+10 -7
View File
@@ -767,11 +767,11 @@
(defstate part-tracker-process (part-tracker)
:code
(behavior ()
(set! (-> self start-time) (-> *display* base-frame-counter))
(set! (-> self start-time) (the-as uint (-> *display* base-frame-counter)))
(while
(<
(- (-> *display* base-frame-counter) (-> self start-time))
(-> self duration)
(- (-> *display* base-frame-counter) (the-as int (-> self start-time)))
(the-as int (-> self duration))
)
(let ((gp-0 (handle->process (-> self target))))
(when gp-0
@@ -799,7 +799,10 @@
)
(let ((gp-2 (-> *display* base-frame-counter)))
(until
(>= (- (-> *display* base-frame-counter) gp-2) (-> self linger-duration))
(>=
(- (-> *display* base-frame-counter) gp-2)
(the-as int (-> self linger-duration))
)
(if (-> self linger-callback)
((-> self linger-callback) self)
)
@@ -832,7 +835,7 @@
(set! (-> self root) (new 'process 'trsqv))
(set! (-> self root trans quad) (-> arg5 world-sphere quad))
(set! (-> self offset quad) (-> arg5 world-sphere quad))
(set! (-> self callback) arg2)
(set! (-> self callback) (the-as (function part-tracker vector) arg2))
(set! (-> self linger-callback) #f)
(set! (-> self userdata) (the-as uint arg3))
(set! (-> self target) (process->handle arg4))
@@ -846,8 +849,8 @@
)
)
)
(set! (-> self duration) arg1)
(set! (-> self linger-duration) (the-as int (-> arg0 linger-duration)))
(set! (-> self duration) (the-as uint arg1))
(set! (-> self linger-duration) (-> arg0 linger-duration))
(set! (-> self part) (create-launch-control arg0 self))
(go part-tracker-process)
(none)
+2 -2
View File
@@ -393,8 +393,8 @@
(dummy-20 () none 20)
(dummy-21 () none 21)
(dummy-22 () none 22)
(dummy-23 () none 23)
(dummy-24 (_type_ float symbol) none 24)
(dummy-23 (_type_ vector check-vector-collision-with-nav-spheres-info) float 23)
(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)
+2
View File
@@ -118,6 +118,7 @@
(damping float :offset-assert 16)
(accel float :offset-assert 20)
)
:pack-me
:method-count-assert 11
:size-assert #x18
:flag-assert #xb00000018
@@ -147,6 +148,7 @@
(elasticity float :offset-assert 32)
(state int32 :offset-assert 36)
)
:pack-me
:method-count-assert 13
:size-assert #x28
:flag-assert #xd00000028
File diff suppressed because it is too large Load Diff
+4 -8
View File
@@ -37,7 +37,7 @@
:size-assert #x28
:flag-assert #xd00000028
(:methods
(new (symbol _type_ int int float float float float) _type_ 0)
(new (symbol type int int float float float float) _type_ 0)
(TODO-RENAME-9 (_type_ int int float) none 9)
(set-target! (_type_ float) none 10)
(TODO-RENAME-11 (_type_) none 11)
@@ -66,7 +66,7 @@
new
twister
((allocation symbol)
(type-to-make twister)
(type-to-make type)
(arg0 int)
(arg1 int)
(arg2 float)
@@ -78,8 +78,8 @@
(v0-0
(object-new
allocation
(the-as type type-to-make)
(the-as int (+ (-> type-to-make something) (* gp-0 16)))
type-to-make
(the-as int (+ (-> type-to-make size) (* gp-0 16)))
)
)
)
@@ -216,7 +216,3 @@
0
(none)
)
File diff suppressed because it is too large Load Diff
+163
View File
@@ -0,0 +1,163 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type citb-bunny
(deftype citb-bunny (snow-bunny)
()
:heap-base #x190
:method-count-assert 77
:size-assert #x200
:flag-assert #x4d01900200
(:methods
(TODO-RENAME-48 (_type_ object) none :replace 48)
)
)
;; definition for method 3 of type citb-bunny
(defmethod inspect citb-bunny ((obj citb-bunny))
(let ((t9-0 (method-of-type snow-bunny inspect)))
(t9-0 obj)
)
obj
)
;; failed to figure out what this is:
(defskelgroup *citb-bunny-sg* citb-bunny
0
3
((1 (meters 999999)))
:bounds (static-spherem 0 0.25 0 2)
:longest-edge (meters 0)
)
;; definition for symbol *citb-bunny-nav-enemy-info*, type nav-enemy-info
(define
*citb-bunny-nav-enemy-info*
(new 'static 'nav-enemy-info
:idle-anim 3
:walk-anim 3
:turn-anim 3
:notice-anim 7
:run-anim 3
:jump-anim 5
:jump-land-anim 8
:victory-anim 7
:taunt-anim 7
:die-anim 9
:neck-joint 5
:player-look-at-joint 5
:run-travel-speed (meters 6.0)
:run-rotate-speed (degrees 2880.0)
:run-acceleration (meters 1.0)
:run-turn-time (seconds 0.1)
:walk-travel-speed (meters 4.0)
:walk-rotate-speed (degrees 720.0)
:walk-acceleration (meters 1.0)
:walk-turn-time (seconds 0.5)
:shadow-size (meters 2.0)
:notice-nav-radius (meters 1.2)
:nav-nearest-y-threshold (meters 10.0)
:notice-distance (meters 130.0)
:stop-chase-distance (meters 150.0)
:frustration-distance (meters 8.0)
:frustration-time #x4b0
:die-anim-hold-frame 31.0
:jump-anim-start-frame 11.0
:jump-land-anim-end-frame 10000000000.0
:jump-height-min (meters 1.0)
:jump-height-factor 0.6
:jump-start-anim-speed 1.0
:shadow-max-y (meters 0.25)
:shadow-min-y (meters -3.5)
:shadow-locus-dist (meters 150.0)
:use-align #f
:draw-shadow #t
:move-to-ground #t
:hover-if-no-ground #f
:use-momentum #f
:use-flee #f
:use-proximity-notice #f
:use-jump-blocked #f
:use-jump-patrol #f
:gnd-collide-with #x1
:debug-draw-neck #f
:debug-draw-jump #f
)
)
;; definition for method 60 of type citb-bunny
;; INFO: Return type mismatch int vs symbol.
(defmethod dummy-60 citb-bunny ((obj citb-bunny) (arg0 object))
(initialize-skeleton obj *citb-bunny-sg* '())
(set! (-> obj draw origin-joint-index) (the-as uint 3))
(the-as symbol 0)
)
;; definition for method 48 of type citb-bunny
;; INFO: Return type mismatch int vs none.
(defmethod TODO-RENAME-48 citb-bunny ((obj citb-bunny) (arg0 object))
(dummy-60 obj arg0)
(TODO-RENAME-45 obj *citb-bunny-nav-enemy-info*)
(set!
(-> obj draw shadow-ctrl settings flags)
(logand -9 (-> obj draw shadow-ctrl settings flags))
)
(cond
((zero? (res-lump-value (-> obj entity) 'mode uint128))
(set! (-> obj defense) (the-as uint 1))
(set! (-> obj retreat-timeout) 5.0)
)
(else
(set! (-> obj defense) (the-as uint 0))
(set! (-> obj retreat-timeout) 0.1)
)
)
(set!
(-> obj last-nondangerous-time)
(the-as uint (-> *display* base-frame-counter))
)
(set! (-> obj gnd-popup) 16384.0)
(set! (-> obj got-jump-event?) #f)
(set! (-> obj notice-land-anim) 8)
(set! (-> obj attack-anim) 4)
(set! (-> obj neck up) (the-as uint 1))
(set! (-> obj neck nose) (the-as uint 2))
(set! (-> obj neck ear) (the-as uint 0))
(set! (-> obj patrol-rand-distraction) (+ (nav-enemy-rnd-int-count 5) 1))
(set! (-> obj patrol-hop-failed?) #f)
(logclear! (-> obj mask) (process-mask actor-pause))
0
(none)
)
;; definition for method 56 of type citb-bunny
(defmethod set-jump-height-factor! citb-bunny ((obj citb-bunny) (arg0 int))
(let ((v1-0 arg0))
(cond
((zero? v1-0)
(set! (-> obj jump-anim) 6)
(set! (-> obj jump-height-min) 4096.0)
(let ((f0-1 0.6))
(set! (-> obj jump-height-factor) f0-1)
f0-1
)
)
((= v1-0 1)
(set! (-> obj jump-anim) 5)
(set! (-> obj jump-height-min) 4096.0)
(let ((f0-3 0.6))
(set! (-> obj jump-height-factor) f0-3)
f0-3
)
)
((= v1-0 2)
(set! (-> obj jump-anim) 5)
(set! (-> obj jump-height-min) 4096.0)
(let ((f0-5 0.4))
(set! (-> obj jump-height-factor) f0-5)
f0-5
)
)
)
)
)
+5 -5
View File
@@ -207,11 +207,11 @@
(dummy-53 (_type_) symbol 53)
(dummy-54 (_type_) none 54)
(dummy-55 (_type_) none 55)
(dummy-56 (_type_) none 56)
(dummy-57 (_type_) none 57)
(dummy-58 (_type_) none 58)
(set-jump-height-factor! (_type_ int) float 56)
(dummy-57 (_type_) vector 57)
(dummy-58 (_type_) vector 58)
(TODO-RENAME-59 (_type_) none 59)
(dummy-60 (_type_) none 60)
(dummy-60 (_type_ object) symbol 60)
(dummy-61 (_type_) none 61)
(dummy-62 (_type_) none 62)
(dummy-63 (_type_) none 63)
@@ -222,7 +222,7 @@
(dummy-68 (_type_) none 68)
(dummy-69 (_type_) none 69)
(dummy-70 (_type_) none 70)
(dummy-71 (_type_) none 71)
(dummy-71 () _type_ :state 71)
(nav-enemy-touch-handler (_type_ process event-message-block) object 72)
(nav-enemy-attack-handler (_type_ process event-message-block) object 73)
(nav-enemy-jump-blocked () _type_ :state 74)
+5 -1
View File
@@ -566,7 +566,11 @@ nav-enemy-default-event-handler
(set! (-> self nav travel quad) (-> gp-1 quad))
)
(vector-normalize! (-> self nav travel) 409600.0)
(dummy-24 (-> self nav) 204.8 #f)
(dummy-24
(-> self nav)
204.8
(the-as clip-travel-vector-to-mesh-return-info #f)
)
(vector+!
(-> self nav target-pos)
(-> self collide-info trans)
+1 -1
View File
@@ -308,7 +308,7 @@
(the-as part-tracker (-> self particles gp-0 tracker process 0))
start-time
)
(-> *display* base-frame-counter)
(the-as uint (-> *display* base-frame-counter))
)
)
((-> self particles gp-0 kind)
+230
View File
@@ -0,0 +1,230 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type floating-launcher
(deftype floating-launcher (baseplat)
((trigger-height float :offset-assert 228)
(launcher (pointer launcher) :offset-assert 232)
)
:heap-base #x80
:method-count-assert 27
:size-assert #xec
:flag-assert #x1b008000ec
(:states
floating-launcher-idle
floating-launcher-lowering
floating-launcher-ready
)
)
;; definition for method 3 of type floating-launcher
(defmethod inspect floating-launcher ((obj floating-launcher))
(let ((t9-0 (method-of-type baseplat inspect)))
(t9-0 obj)
)
(format #t "~T~Ttrigger-height: ~f~%" (-> obj trigger-height))
(format #t "~T~Tlauncher: #x~X~%" (-> obj launcher))
obj
)
;; failed to figure out what this is:
(defskelgroup *floating-launcher-sg* floating-launcher
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 5)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(defstate floating-launcher-idle (floating-launcher)
:event
(the-as
(function process int symbol event-message-block object :behavior floating-launcher)
plat-event
)
:trans
(behavior ()
(plat-trans)
(when
(<
(vector-xz-length
(vector-!
(new 'stack-no-clear 'vector)
(target-pos 0)
(-> self root-override trans)
)
)
81920.0
)
(if
(and
(>= (-> (target-pos 0) y) (-> self trigger-height))
(logtest? (-> *target* control status) 2)
)
(go floating-launcher-lowering)
)
)
(none)
)
:code
(behavior ()
(transform-post)
(suspend)
(transform-post)
(suspend)
(while #t
(suspend)
)
(none)
)
:post
(the-as (function none :behavior floating-launcher) plat-post)
)
;; failed to figure out what this is:
(defstate floating-launcher-lowering (floating-launcher)
:event
(the-as
(function process int symbol event-message-block object :behavior floating-launcher)
plat-event
)
:trans
(the-as (function none :behavior floating-launcher) plat-trans)
:code
(behavior ()
(let ((a0-1 (entity-actor-lookup (-> self entity) 'alt-actor 0)))
(if a0-1
(entity-birth-no-kill a0-1)
)
)
(let ((f30-0 1.0))
(while (!= f30-0 0.0)
(set! f30-0 (seek f30-0 0.0 (-> *display* seconds-per-frame)))
(eval-path-curve-div! (-> self path) (-> self basetrans) f30-0 'interp)
(set!
(-> self launcher 0 root-override trans quad)
(-> self basetrans quad)
)
(dummy-47 (-> self launcher 0 root-override))
(suspend)
)
)
(eval-path-curve-div! (-> self path) (-> self basetrans) 0.0 'interp)
(set! (-> self launcher 0 root-override trans quad) (-> self basetrans quad))
(dummy-47 (-> self launcher 0 root-override))
(go floating-launcher-ready)
(none)
)
:post
(the-as (function none :behavior floating-launcher) plat-post)
)
;; failed to figure out what this is:
(defstate floating-launcher-ready (floating-launcher)
:event
(the-as
(function process int symbol event-message-block object :behavior floating-launcher)
plat-event
)
:trans
(the-as (function none :behavior floating-launcher) plat-trans)
:code
(the-as (function none :behavior floating-launcher) plat-code)
:post
(the-as (function none :behavior floating-launcher) plat-post)
)
;; definition for method 11 of type floating-launcher
;; INFO: Return type mismatch object vs none.
(defmethod
copy-defaults!
floating-launcher
((obj floating-launcher) (arg0 res-lump))
(set! (-> obj mask) (logior (process-mask platform) (-> obj mask)))
(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) nothing)
(dummy-29 s4-0 1)
(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 2048))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 3))
(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 11468.8)
)
(dummy-46 s4-0)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(dummy-50 s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(set! (-> obj path) (new 'process 'path-control obj 'path 0.0))
(logior!
(-> obj path flags)
(path-control-flag display draw-line draw-point draw-text)
)
(eval-path-curve-div! (-> obj path) (-> obj root-override trans) 1.0 'interp)
(let ((f30-0 (res-lump-float arg0 'spring-height :default 163840.0))
(s4-1 (get-process *default-dead-pool* launcher #x4000))
)
(set! (-> obj launcher) (the-as (pointer launcher) (when s4-1
(let
((t9-11
(method-of-type
launcher
activate
)
)
)
(t9-11
(the-as launcher s4-1)
obj
'launcher
(the-as
pointer
#x70004000
)
)
)
(run-now-in-process
s4-1
launcher-init-by-other
(->
obj
root-override
trans
)
f30-0
0
81920.0
)
(-> s4-1 ppointer)
)
)
)
)
(initialize-skeleton obj *floating-launcher-sg* '())
(logior! (-> obj skel status) 1)
(dummy-47 (-> obj root-override))
(dummy-21 obj)
(set! (-> obj trigger-height) (res-lump-float arg0 'trigger-height))
(go floating-launcher-idle)
(none)
)
+194
View File
@@ -0,0 +1,194 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type shover
(deftype shover (process-drawable)
((root-override collide-shape :offset 112)
(shove-up float :offset-assert 176)
)
:heap-base #x50
:method-count-assert 20
:size-assert #xb4
:flag-assert #x14005000b4
(:states
shover-idle
)
)
;; definition for method 3 of type shover
(defmethod inspect shover ((obj shover))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tshove-up: ~f~%" (-> obj shove-up))
obj
)
;; failed to figure out what this is:
(defskelgroup *shover-sg* shover
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 2)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(defstate shover-idle (shover)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('touch 'attack)
(when (= (-> arg0 type) target)
(when
((method-of-type touching-shapes-entry dummy-13)
(the-as touching-shapes-entry (-> arg3 param 0))
(-> *target* control)
1
0
)
(let ((s4-0 (new 'stack 'attack-info)))
(dummy-41 (-> self root-override) s4-0 (-> self shove-up))
(level-hint-spawn
(game-text-id sunken-take-it-easy-hot-pipes)
"sksp0134"
(the-as entity #f)
*entity-pool*
(game-task none)
)
(cond
((or
(= (-> *target* control unknown-surface00 mode) 'air)
(>=
(+ (-> *display* base-frame-counter) -60)
(-> *target* control unknown-dword10)
)
(< 0.75 (-> *target* control poly-normal y))
)
(let ((a1-6 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-6 from) self)
(set! (-> a1-6 num-params) 2)
(set! (-> a1-6 message) 'attack-or-shove)
(set! (-> a1-6 param 0) (-> arg3 param 0))
(let ((v1-22 (new 'static 'attack-info :mask #xa2)))
(set! (-> v1-22 mode) 'burn)
(set! (-> v1-22 vector quad) (-> s4-0 vector quad))
(set! (-> v1-22 shove-up) (-> s4-0 shove-up))
(set! (-> a1-6 param 1) (the-as uint v1-22))
)
(send-event-function arg0 a1-6)
)
)
(else
(let ((a1-7 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-7 from) self)
(set! (-> a1-7 num-params) 2)
(set! (-> a1-7 message) 'attack-or-shove)
(set! (-> a1-7 param 0) (-> arg3 param 0))
(let ((v1-26 (new 'static 'attack-info :mask #x8e2)))
(set! (-> v1-26 mode) 'burn)
(set! (-> v1-26 shove-up) 0.0)
(set! (-> v1-26 shove-back) 8192.0)
(set!
(-> v1-26 vector quad)
(-> *target* control poly-normal quad)
)
(set! (-> v1-26 angle) 'shove)
(set! (-> a1-7 param 1) (the-as uint v1-26))
)
(send-event-function arg0 a1-7)
)
)
)
)
)
)
)
)
)
:code
(the-as (function none :behavior shover) anim-loop)
)
;; definition for method 11 of type shover
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod copy-defaults! shover ((obj shover) (arg0 res-lump))
(local-vars (sv-16 res-tag))
(set! (-> obj shove-up) (res-lump-float arg0 'shove :default 12288.0))
(let ((s3-0 (res-lump-value arg0 'collision-mesh-id uint128))
(s4-0
(new 'process 'collide-shape obj (collide-list-enum hit-by-player))
)
)
(let
((s3-1
(new
'process
'collide-shape-prim-mesh
s4-0
(the-as uint s3-0)
(the-as uint 0)
)
)
)
(set! (-> s3-1 prim-core collide-as) (the-as uint 512))
(set! (-> s3-1 collide-with) (the-as uint 16))
(set! (-> s3-1 prim-core action) (the-as uint 1))
(set! (-> s3-1 prim-core offense) 4)
(set! (-> s3-1 transform-index) 0)
(set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 53248.0)
)
(dummy-46 s4-0)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(dummy-50 s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *shover-sg* '())
(let ((v1-17 (new 'process 'path-control obj 'path 0.0)))
(set! (-> obj path) v1-17)
(logior!
(-> v1-17 flags)
(path-control-flag display draw-line draw-point draw-text)
)
(if (<= (-> v1-17 curve num-cverts) 0)
(go process-drawable-art-error "no path")
)
)
(set! sv-16 (new 'static 'res-tag))
(let
((v1-23
(res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16))
)
)
(when v1-23
(+! (-> obj root-override trans x) (-> v1-23 0))
(+! (-> obj root-override trans y) (-> v1-23 1))
(+! (-> obj root-override trans z) (-> v1-23 2))
)
)
(let ((f0-13 (res-lump-float arg0 'rotoffset)))
(if (!= f0-13 0.0)
(quaternion-rotate-y!
(-> obj root-override quat)
(-> obj root-override quat)
f0-13
)
)
)
(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 2))
num-func-identity
)
(set! (-> s5-1 frame-num) 0.0)
)
(ja-post)
(dummy-47 (-> obj root-override))
(set! *shover* obj)
(go shover-idle)
(none)
)
File diff suppressed because it is too large Load Diff
+625
View File
@@ -0,0 +1,625 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type sun-iris-door
(deftype sun-iris-door (process-drawable)
((root-override collide-shape :offset 112)
(timeout float :offset-assert 176)
(proximity? symbol :offset-assert 180)
(directional-proximity? symbol :offset-assert 184)
(move-to? symbol :offset-assert 188)
(locked-by-task? symbol :offset-assert 192)
(close-dist float :offset-assert 196)
(open-dist float :offset-assert 200)
(move-to-pos vector :inline :offset-assert 208)
(outward-vec vector :inline :offset-assert 224)
(move-to-quat quaternion :inline :offset-assert 240)
)
:heap-base #x90
:method-count-assert 22
:size-assert #x100
:flag-assert #x1600900100
(:methods
(should-close? (_type_) symbol 20)
(should-open? (_type_) symbol 21)
)
(:states
sun-iris-door-closed
sun-iris-door-closing
sun-iris-door-open
sun-iris-door-opening
)
)
;; definition for method 3 of type sun-iris-door
(defmethod inspect sun-iris-door ((obj sun-iris-door))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Ttimeout: ~f~%" (-> obj timeout))
(format #t "~T~Tproximity?: ~A~%" (-> obj proximity?))
(format #t "~T~Tdirectional-proximity?: ~A~%" (-> obj directional-proximity?))
(format #t "~T~Tmove-to?: ~A~%" (-> obj move-to?))
(format #t "~T~Tlocked-by-task?: ~A~%" (-> obj locked-by-task?))
(format #t "~T~Tclose-dist: ~f~%" (-> obj close-dist))
(format #t "~T~Topen-dist: ~f~%" (-> obj open-dist))
(format #t "~T~Tmove-to-pos: #<vector @ #x~X>~%" (-> obj move-to-pos))
(format #t "~T~Toutward-vec: #<vector @ #x~X>~%" (-> obj outward-vec))
(format #t "~T~Tmove-to-quat: #<quaternion @ #x~X>~%" (-> obj move-to-quat))
obj
)
;; failed to figure out what this is:
(defskelgroup *sun-iris-door-sg* sun-iris-door
0
3
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 4.5)
:longest-edge (meters 0)
)
;; definition for method 21 of type sun-iris-door
(defmethod should-open? sun-iris-door ((obj sun-iris-door))
(let ((f30-0 1228800.0))
0.0
(let ((f0-7 (cond
((-> obj directional-proximity?)
(let ((s5-0 (new 'stack-no-clear 'vector)))
(when *target*
(vector-! s5-0 (target-pos 0) (-> obj root-override trans))
(set! (-> s5-0 y) 0.0)
(set! f30-0 (fabs (vector-dot s5-0 (-> obj outward-vec))))
)
(vector-! s5-0 (camera-pos) (-> obj root-override trans))
(set! (-> s5-0 y) 0.0)
(fabs (vector-dot s5-0 (-> obj outward-vec)))
)
)
(else
(if *target*
(set!
f30-0
(vector-vector-xz-distance
(-> obj root-override trans)
(target-pos 0)
)
)
)
(vector-vector-xz-distance
(-> obj root-override trans)
(camera-pos)
)
)
)
)
)
(when (or (>= (-> obj open-dist) f30-0) (>= (-> obj open-dist) f0-7))
(if
(or
(not (-> obj locked-by-task?))
(task-complete? *game-info* (-> obj entity extra perm task))
)
(return #t)
)
)
)
)
#f
)
;; failed to figure out what this is:
(defstate sun-iris-door-closed (sun-iris-door)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('trigger)
(go sun-iris-door-opening)
)
(('move-to)
(set! (-> self move-to?) #t)
(set!
(-> self move-to-pos quad)
(-> (the-as vector (-> arg3 param 0)) quad)
)
(quaternion-copy!
(-> self move-to-quat)
(the-as quaternion (-> arg3 param 1))
)
)
)
)
:trans
(behavior ()
(when (-> self proximity?)
(if (should-open? self)
(go sun-iris-door-opening)
)
)
(none)
)
:code
(behavior ()
(while #t
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
:post
(behavior ()
(when (-> self move-to?)
(set! (-> self move-to?) #f)
(TODO-RENAME-30 (-> self root-override) (-> self move-to-pos))
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
(ja-post)
)
(none)
)
)
;; failed to figure out what this is:
(defstate sun-iris-door-opening (sun-iris-door)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('untrigger)
(go sun-iris-door-closing)
)
(('move-to)
(set! (-> self move-to?) #t)
(set!
(-> self move-to-pos quad)
(-> (the-as vector (-> arg3 param 0)) quad)
)
(quaternion-copy!
(-> self move-to-quat)
(the-as quaternion (-> arg3 param 1))
)
)
)
)
:code
(behavior ()
(sound-play-by-name
(static-sound-name "irisdoor2")
(new-sound-id)
1024
0
0
1
#t
)
(let ((a0-2 (-> self skel root-channel 0)))
(set!
(-> a0-2 param 0)
(the float (+ (-> a0-2 frame-group data 0 length) -1))
)
(set! (-> a0-2 param 1) 1.0)
(joint-control-channel-group!
a0-2
(the-as art-joint-anim #f)
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!
)
)
)
(ja-post)
(go sun-iris-door-open)
(none)
)
:post
(behavior ()
(cond
((-> self move-to?)
(set! (-> self move-to?) #f)
(TODO-RENAME-30 (-> self root-override) (-> self move-to-pos))
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
(ja-post)
)
(else
(transform-post)
)
)
(none)
)
)
;; definition for method 20 of type sun-iris-door
(defmethod should-close? sun-iris-door ((obj sun-iris-door))
(let ((f30-0 1228800.0))
0.0
(let ((f0-7 (cond
((-> obj directional-proximity?)
(let ((s5-0 (new 'stack-no-clear 'vector)))
(when *target*
(vector-! s5-0 (target-pos 0) (-> obj root-override trans))
(set! (-> s5-0 y) 0.0)
(set! f30-0 (fabs (vector-dot s5-0 (-> obj outward-vec))))
)
(vector-! s5-0 (camera-pos) (-> obj root-override trans))
(set! (-> s5-0 y) 0.0)
(fabs (vector-dot s5-0 (-> obj outward-vec)))
)
)
(else
(if *target*
(set!
f30-0
(vector-vector-xz-distance
(-> obj root-override trans)
(target-pos 0)
)
)
)
(vector-vector-xz-distance
(-> obj root-override trans)
(camera-pos)
)
)
)
)
)
(when (and (>= f30-0 (-> obj close-dist)) (>= f0-7 (-> obj close-dist)))
(cond
((and *target* (-> obj directional-proximity?))
(let ((s4-6 (new 'stack-no-clear 'vector))
(s5-3 (new 'stack-no-clear 'vector))
)
(vector-! s4-6 (target-pos 0) (-> obj root-override trans))
(set! (-> s4-6 y) 0.0)
(vector-! s5-3 (camera-pos) (-> obj root-override trans))
(set! (-> s5-3 y) 0.0)
(case (>= (vector-dot (-> obj outward-vec) s4-6) 0.0)
(((>= (vector-dot (-> obj outward-vec) s5-3) 0.0))
(return #t)
)
)
)
)
(else
(return #t)
)
)
)
)
)
#f
)
;; failed to figure out what this is:
(defstate sun-iris-door-open (sun-iris-door)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('trigger)
(let ((v0-0 (the-as object (-> *display* base-frame-counter))))
(set! (-> self state-time) (the-as int v0-0))
v0-0
)
)
(('untrigger)
(go sun-iris-door-closing)
)
(('move-to)
(set! (-> self move-to?) #t)
(set!
(-> self move-to-pos quad)
(-> (the-as vector (-> arg3 param 0)) quad)
)
(quaternion-copy!
(-> self move-to-quat)
(the-as quaternion (-> arg3 param 1))
)
)
)
)
:enter
(behavior ()
(set! (-> self state-time) (-> *display* base-frame-counter))
(dummy-48 (-> self root-override))
(logior! (-> self draw status) 2)
(none)
)
:exit
(behavior ()
(dummy-49 (-> self root-override))
(set! (-> self draw status) (logand -3 (-> self draw status)))
(none)
)
:trans
(behavior ()
(when (-> self proximity?)
(if (should-close? self)
(go sun-iris-door-closing)
)
)
(if
(and
(!= (-> self timeout) 0.0)
(>=
(- (-> *display* base-frame-counter) (-> self state-time))
(the int (* 300.0 (-> self timeout)))
)
)
(go sun-iris-door-closing)
)
(none)
)
:code
(behavior ()
(while #t
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
:post
(behavior ()
(when (-> self move-to?)
(set! (-> self move-to?) #f)
(TODO-RENAME-30 (-> self root-override) (-> self move-to-pos))
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
(ja-post)
)
(none)
)
)
;; failed to figure out what this is:
(defstate sun-iris-door-closing (sun-iris-door)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('trigger)
(go sun-iris-door-opening)
)
(('move-to)
(set! (-> self move-to?) #t)
(set!
(-> self move-to-pos quad)
(-> (the-as vector (-> arg3 param 0)) quad)
)
(quaternion-copy!
(-> self move-to-quat)
(the-as quaternion (-> arg3 param 1))
)
)
)
)
:code
(behavior ()
(sound-play-by-name
(static-sound-name "irisdoor2")
(new-sound-id)
1024
0
0
1
#t
)
(let ((a0-2 (-> self skel root-channel 0)))
(set! (-> a0-2 param 0) 0.0)
(set! (-> a0-2 param 1) 1.0)
(joint-control-channel-group!
a0-2
(the-as art-joint-anim #f)
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((a0-3 (-> self skel root-channel 0)))
(set! (-> a0-3 param 0) 0.0)
(set! (-> a0-3 param 1) 1.0)
(joint-control-channel-group-eval!
a0-3
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(ja-post)
(go sun-iris-door-closed)
(none)
)
:post
(behavior ()
(cond
((-> self move-to?)
(set! (-> self move-to?) #f)
(TODO-RENAME-30 (-> self root-override) (-> self move-to-pos))
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
(ja-post)
)
(else
(transform-post)
)
)
(none)
)
)
;; definition for method 11 of type sun-iris-door
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod copy-defaults! sun-iris-door ((obj sun-iris-door) (arg0 res-lump))
(local-vars (sv-16 res-tag))
(set! (-> obj move-to?) #f)
(let
((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others))))
(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 0.0 0.0 24576.0)
)
(dummy-46 s4-0)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(dummy-50 s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *sun-iris-door-sg* '())
(set! (-> obj close-dist) 49152.0)
(set! (-> obj open-dist) 40960.0)
(set! (-> obj timeout) (res-lump-float arg0 'timeout))
(set! (-> obj proximity?) (nonzero? (res-lump-value arg0 'proximity uint128)))
(set! (-> obj directional-proximity?) #f)
(when (name= (-> obj name) "sun-iris-door-6")
(set! (-> obj close-dist) 16384.0)
(set! (-> obj open-dist) 8192.0)
(set! (-> obj directional-proximity?) #t)
)
(set! (-> obj locked-by-task?) (nonzero? (-> obj entity extra perm task)))
(let ((f0-11 (res-lump-float arg0 'scale-factor :default 1.0)))
(set-vector! (-> obj root-override scale) f0-11 f0-11 f0-11 1.0)
(set! (-> obj draw bounds w) (* 18432.0 f0-11))
(let ((v1-25 (-> obj root-override root-prim)))
(set! (-> v1-25 local-sphere w) (* 24576.0 f0-11 f0-11))
)
)
(set! sv-16 (new 'static 'res-tag))
(let
((v1-28
(res-lump-data
(-> obj entity)
'trans-offset
(pointer float)
:tag-ptr
(& sv-16)
)
)
)
(when v1-28
(+! (-> obj root-override trans x) (-> v1-28 0))
(+! (-> obj root-override trans y) (-> v1-28 1))
(+! (-> obj root-override trans z) (-> v1-28 2))
)
)
(let ((f30-0 (quaternion-y-angle (-> obj root-override quat))))
(set-vector! (-> obj outward-vec) (sin f30-0) 0.0 (cos f30-0) 1.0)
)
(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)
)
(dummy-47 (-> obj root-override))
(ja-post)
(go sun-iris-door-closed)
(none)
)
;; definition for function sun-iris-door-init-by-other
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defbehavior
sun-iris-door-init-by-other sun-iris-door
((arg0 vector) (arg1 quaternion) (arg2 symbol))
(set! (-> self move-to?) #f)
(let
((s3-0 (new 'process 'collide-shape self (collide-list-enum hit-by-others))))
(let
((s2-0
(new
'process
'collide-shape-prim-mesh
s3-0
(the-as uint 0)
(the-as uint 0)
)
)
)
(set! (-> s2-0 prim-core collide-as) (the-as uint 512))
(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) 0)
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0)
)
(dummy-46 s3-0)
(set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w)))
(dummy-50 s3-0)
(set! (-> self root-override) s3-0)
)
(set! (-> self root-override trans quad) (-> arg0 quad))
(quaternion-copy! (-> self root-override quat) arg1)
(initialize-skeleton self *sun-iris-door-sg* '())
(set! (-> self close-dist) 49152.0)
(set! (-> self open-dist) 40960.0)
(set! (-> self timeout) 0.0)
(set! (-> self proximity?) #f)
(set! (-> self directional-proximity?) #f)
(ja-channel-set! 1)
(cond
(arg2
(let ((s5-1 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
s5-1
(the-as art-joint-anim (-> self draw art-group data 3))
num-func-identity
)
(set!
(-> s5-1 frame-num)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 3))
data
0
length
)
-1
)
)
)
)
)
(else
(let ((s5-2 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
s5-2
(the-as art-joint-anim (-> self draw art-group data 3))
num-func-identity
)
(set! (-> s5-2 frame-num) 0.0)
)
)
)
(transform-post)
(if arg2
(go sun-iris-door-open)
(go sun-iris-door-closed)
)
(none)
)
+515
View File
@@ -0,0 +1,515 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type whirlpool
(deftype whirlpool (process-drawable)
((root-override collide-shape :offset 112)
(spin-ry float :offset-assert 176)
(spin-speed-idle float :offset-assert 180)
(spin-speed-delta float :offset-assert 184)
(sync sync-info-paused :inline :offset-assert 188)
)
:heap-base #x60
:method-count-assert 21
:size-assert #xcc
:flag-assert #x15006000cc
(:methods
(dummy-20 (_type_ float) uint 20)
)
(:states
whirlpool-idle
)
)
;; definition for method 3 of type whirlpool
(defmethod inspect whirlpool ((obj whirlpool))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tspin-ry: ~f~%" (-> obj spin-ry))
(format #t "~T~Tspin-speed-idle: ~f~%" (-> obj spin-speed-idle))
(format #t "~T~Tspin-speed-delta: ~f~%" (-> obj spin-speed-delta))
(format #t "~T~Tsync: #<sync-info-paused @ #x~X>~%" (-> obj sync))
obj
)
;; failed to figure out what this is:
(defskelgroup *whirlpool-sg* whirlpool
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0.6000000238418579 0 3)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(set!
(-> *part-group-id-table* 447)
(new 'static 'sparticle-launch-group
:length #xbb
:duration #xbb8
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-whirlpool-swirl"
:launcher
(new 'static 'inline-array sparticle-group-item 187
(sp-item 1739 :fade-after (meters 60.0) :falloff-to (meters 60.0) :binding 1737)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
)
:bounds (new 'static 'sphere :w 32768.0)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 1739)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 11
(sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-y (meters 6.6))
(sp-flt spt-scale-x (meters 0.2))
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-g 0.0)
(sp-flt spt-a 128.0)
(sp-flt spt-accel-y -0.68266666)
(sp-int spt-timer 510)
(sp-cpuinfo-flags bit2 bit3)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 1737)
(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 1.0)
(sp-flt spt-x (meters 0.0))
(sp-flt spt-y (meters 0.0))
(sp-rnd-flt spt-z 16384.0 4096.0 1.0)
(sp-flt spt-scale-x (meters 3.2))
(sp-flt spt-scale-y (meters 1.0))
(sp-flt spt-r 150.0)
(sp-flt spt-g 150.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 0.0)
(sp-rnd-flt spt-omega 0.0 65536.0 1.0)
(sp-flt spt-vel-x (meters 0.053333335))
(sp-flt spt-vel-y (meters 0.0))
(sp-flt spt-vel-z (meters -0.01))
(sp-flt spt-scalevel-x (meters -0.004888889))
(sp-flt spt-fade-a 0.42666668)
(sp-int spt-timer 450)
(sp-cpuinfo-flags bit2 bit3 bit7)
(sp-int-plain-rnd spt-next-time 37 36 1)
(sp-launcher-by-id spt-next-launcher 1740)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 1740)
(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* 1738)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 12
(sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
(sp-flt spt-num 1.0)
(sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 255.0)
(sp-flt spt-g 255.0)
(sp-flt spt-b 255.0)
(sp-rnd-flt spt-a 32.0 32.0 1.0)
(sp-flt spt-fade-a -1.8285716)
(sp-int spt-timer 30)
(sp-cpuinfo-flags bit2 bit3)
(sp-end)
)
)
)
;; definition for method 20 of type whirlpool
(defmethod dummy-20 whirlpool ((obj whirlpool) (arg0 float))
(let* ((gp-0 (target-pos 0))
(f28-0 (vector-vector-xz-distance (-> obj root-override trans) gp-0))
)
(when (< f28-0 40960.0)
(let* ((f0-2 (* 0.000024414063 (- 40960.0 f28-0)))
(f26-0 (* f0-2 f0-2))
(f0-7
(atan
(- (-> gp-0 x) (-> obj root-override trans x))
(- (-> gp-0 z) (-> obj root-override trans z))
)
)
(f30-0 (* 0.5 f26-0 arg0 (-> *display* seconds-per-frame)))
(f24-0 (+ f0-7 f30-0))
(f28-1
(-
f28-0
(fmin
f28-0
(* 0.16874999 f26-0 (fabs arg0) (-> *display* seconds-per-frame))
)
)
)
(s4-1 (new 'stack-no-clear 'vector))
)
(set-vector! s4-1 (* (sin f24-0) f28-1) 0.0 (* (cos f24-0) f28-1) 1.0)
(vector+! s4-1 s4-1 (-> obj root-override trans))
(set!
(-> s4-1 x)
(* (- (-> s4-1 x) (-> gp-0 x)) (-> *display* frames-per-second))
)
(set! (-> s4-1 y) 0.0)
(set!
(-> s4-1 z)
(* (- (-> s4-1 z) (-> gp-0 z)) (-> *display* frames-per-second))
)
(let ((gp-1 (-> *target* control)))
(send-event (-> gp-1 process) 'rotate-y-angle f30-0)
(dummy-32 gp-1 8192.0 (-> gp-1 root-prim collide-with))
(let ((s3-0 (-> gp-1 status)))
(dummy-37 gp-1 s4-1)
(set! (-> gp-1 status) s3-0)
s3-0
)
)
)
)
)
)
;; failed to figure out what this is:
(defstate whirlpool-idle (whirlpool)
:trans
(behavior ()
(let
((f30-0
(+
(*
(get-current-phase-with-mirror (-> self sync))
(-> self spin-speed-delta)
)
(-> self spin-speed-idle)
)
)
)
(when (>= (fabs f30-0) 45511.11)
(let ((a1-0 (new 'stack-no-clear 'vector)))
(set! (-> a1-0 quad) (-> self root-override trans quad))
(set! (-> a1-0 y) (+ -8192.0 (-> a1-0 y)))
(spawn (-> self part) a1-0)
)
)
(+! (-> self spin-ry) (* f30-0 (-> *display* seconds-per-frame)))
(quaternion-axis-angle!
(-> self root-override quat)
0.0
1.0
0.0
(-> self spin-ry)
)
(if (and *target* (logtest? (-> *target* water flags) 512))
(dummy-20 self f30-0)
)
(update! (-> self sound))
(let
((f0-9
(fmin 1.0 (* 0.000007608261 (fmax 0.0 (+ -28580.979 (fabs f30-0)))))
)
)
(update-vol! (-> self sound) (the int (* 100.0 f0-9)))
)
)
(none)
)
:code
(the-as (function none :behavior whirlpool) anim-loop)
:post
(the-as (function none :behavior whirlpool) ja-post)
)
;; definition for method 10 of type whirlpool
(defmethod deactivate whirlpool ((obj whirlpool))
(if (nonzero? (-> obj sound))
(stop! (-> obj sound))
)
((method-of-type process-drawable deactivate) obj)
(none)
)
;; definition for method 11 of type whirlpool
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod copy-defaults! whirlpool ((obj whirlpool) (arg0 res-lump))
(local-vars (sv-16 res-tag))
(set! (-> obj spin-ry) (rand-vu-float-range 0.0 65536.0))
(let
((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
(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 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-vector! (-> s3-0 local-sphere) 0.0 -819.2 0.0 11468.8)
)
(dummy-46 s4-0)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(dummy-50 s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *whirlpool-sg* '())
(load-params! (-> obj sync) obj (the-as uint 1500) 0.0 0.15 0.15)
(let ((f30-0 32768.0)
(f28-0 145635.56)
)
(set! sv-16 (new 'static 'res-tag))
(let ((v1-17 (res-lump-data arg0 'speed (pointer float) :tag-ptr (& sv-16))))
(when v1-17
(set! f30-0 (-> v1-17 0))
(set! f28-0 (-> v1-17 1))
)
)
(set! (-> obj spin-speed-idle) f30-0)
(set! (-> obj spin-speed-delta) (- f28-0 f30-0))
)
(set!
(-> obj part)
(create-launch-control (-> *part-group-id-table* 447) obj)
)
(set!
(-> obj sound)
(new
'process
'ambient-sound
(new 'static 'sound-spec
:mask #x80
:num 1.0
:group #x1
:sound-name (static-sound-name "whirlpool")
:volume #x400
:fo-max 55
)
(-> obj root-override 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 2))
num-func-identity
)
(set! (-> s5-1 frame-num) 0.0)
)
(ja-post)
(dummy-47 (-> obj root-override))
(go whirlpool-idle)
(none)
)
File diff suppressed because it is too large Load Diff
+1 -6
View File
@@ -901,12 +901,7 @@ swamp-rat-default-event-handler
;; Used lq/sq
(defbehavior
swamp-rat-init-by-other swamp-rat
((arg0 swamp-rat-nest)
(arg1 vector)
(arg2 vector)
(arg3 pickup-type)
(arg4 symbol)
)
((arg0 billy) (arg1 vector) (arg2 vector) (arg3 pickup-type) (arg4 symbol))
(initialize-collision self)
(if arg4
(logclear! (-> self mask) (process-mask actor-pause))
+10 -2
View File
@@ -495,7 +495,11 @@ yakow-default-event-handler
(set! (-> gp-1 y) 0.0)
(set! (-> self nav travel quad) (-> gp-1 quad))
(vector-normalize! (-> self nav travel) 409600.0)
(dummy-24 (-> self nav) 204.8 #f)
(dummy-24
(-> self nav)
204.8
(the-as clip-travel-vector-to-mesh-return-info #f)
)
(when (not (-> self enable-turn-around))
(set! (-> gp-1 quad) (-> self nav travel quad))
(let ((f30-0 (vector-length gp-1)))
@@ -506,7 +510,11 @@ yakow-default-event-handler
)
(set! (-> self nav travel quad) (-> s5-1 quad))
(vector-normalize! (-> self nav travel) 409600.0)
(dummy-24 (-> self nav) 204.8 #f)
(dummy-24
(-> self nav)
204.8
(the-as clip-travel-vector-to-mesh-return-info #f)
)
(vector-length (-> self nav travel))
)
)
+5 -2
View File
@@ -892,7 +892,10 @@
((handle->process (-> self tracker))
(let
((v1-6 (-> (the-as (pointer part-tracker) (-> self tracker process)) 0)))
(set! (-> v1-6 start-time) (-> *display* base-frame-counter))
(set!
(-> v1-6 start-time)
(the-as uint (-> *display* base-frame-counter))
)
(set! v0-1 (-> v1-6 root trans))
)
(set! (-> (the-as vector v0-1) quad) (-> gp-0 quad))
@@ -1131,7 +1134,7 @@
0
start-time
)
(-> *display* base-frame-counter)
(the-as uint (-> *display* base-frame-counter))
)
)
(else