mirror of
https://github.com/open-goal/jak-project
synced 2026-08-09 18:58:50 -04:00
67d4eda169
Manual patches: - `drill-turret`: The static data for `*turret-13-path*`, `*turret-14-path*` and `*turret-15-path*` was decompiled by hand and the integers in the `set-speed-mult` events have been replaced with boxed integer arrays that contain only that integer in order to make the compiler happy. To that effect, the event handler in `target-turret` was changed to access that array instead of just accessing the int. - `hover-nav-control`: In `hover-nav-control::10`, `arg2` is usually a `vector`, but there are some places where it is called with `#t` as `arg2` and, subsequently, crashes the game because it tries to access the `quad` of `arg2` if `arg2` is truthy. To mitigate this, the condition `arg2` has been replaced with `(and (!= arg2 #t) arg2)` (in this case, it would jump to the `else` that just resets the `dest-vel` and `transv` `quad`s) - `drill-baron`: The static data for `*drill-ship-turret-speed-event*` has been decompiled by hand. TODOs: - Jellyfish crash the game - Destroying the metalhead eggs that are on the breakable wall crashes the game (already happened with the Peacemaker before) - Figure out why static data of type `turret-path-event` doesn't decompile The docs for all the hover-nav and nav-network code could use some love in the future, I'm not smart enough to figure out what any of that code actually means, but it seems to work... Also threw in the fix for the ▲ that was accidentally left commented out.
83 lines
3.9 KiB
Common Lisp
83 lines
3.9 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: hover-enemy-h.gc
|
|
;; name in dgo: hover-enemy-h
|
|
;; dgos: FOR, DMI, FRA, STR, NEB, D3A, UNB
|
|
|
|
;; DECOMP BEGINS
|
|
|
|
(deftype hover-enemy-info (structure)
|
|
((fly-forward-anim int32 :offset-assert 0)
|
|
(fly-backward-anim int32 :offset-assert 4)
|
|
(fly-left-anim int32 :offset-assert 8)
|
|
(fly-right-anim int32 :offset-assert 12)
|
|
(shoot-anim int32 :offset-assert 16)
|
|
(main-joint int32 :offset-assert 20)
|
|
(gun-base int32 :offset-assert 24)
|
|
(engine-left int32 :offset-assert 28)
|
|
(engine-right int32 :offset-assert 32)
|
|
(thrust-rotate-left float :offset-assert 36)
|
|
(thrust-rotate-right float :offset-assert 40)
|
|
)
|
|
:method-count-assert 9
|
|
:size-assert #x2c
|
|
:flag-assert #x90000002c
|
|
)
|
|
|
|
|
|
(deftype hover-enemy (enemy)
|
|
((hover hover-nav-control :offset-assert 532)
|
|
(hover-info hover-enemy-info :offset-assert 536)
|
|
(formation-entity entity :offset-assert 540)
|
|
(fly-anim-speed float :offset-assert 544)
|
|
(restart-fly-anims symbol :offset-assert 548)
|
|
(main-joint-acc vector :inline :offset-assert 560)
|
|
(main-joint-vel vector :inline :offset-assert 576)
|
|
(main-joint-pos vector :inline :offset-assert 592)
|
|
(thrust float 2 :offset-assert 608)
|
|
(rotation-vec vector :inline :offset-assert 624)
|
|
(dest-pos vector :inline :offset-assert 640)
|
|
(offset vector :inline :offset-assert 656)
|
|
(surface-normal vector :inline :offset-assert 672)
|
|
(local-dir vector :inline :offset-assert 688)
|
|
(scale float :offset-assert 704)
|
|
(scale-timer uint64 :offset-assert 712)
|
|
(hit-surface? symbol :offset-assert 720)
|
|
(knocked-start-level float :offset-assert 724)
|
|
(knocked-fall-dist float :offset-assert 728)
|
|
(flying-death-anim int32 :offset-assert 732)
|
|
(flying-death-transv vector :inline :offset-assert 736)
|
|
(flying-death-engine int32 :offset-assert 752)
|
|
(flying-death-thrust-rotate float :offset-assert 756)
|
|
(flying-death-spin float :offset-assert 760)
|
|
(flying-death-spin-dest float :offset-assert 764)
|
|
(flying-death-spin-axis vector :inline :offset-assert 768)
|
|
)
|
|
:heap-base #x290
|
|
:method-count-assert 156
|
|
:size-assert #x310
|
|
:flag-assert #x9c02900310
|
|
(:methods
|
|
(knocked-recover () _type_ :state 137)
|
|
(flying-death () _type_ :state 138)
|
|
(flying-death-explode () _type_ :state 139)
|
|
(hover-enemy-method-140 (_type_ symbol) none 140)
|
|
(hover-enemy-method-141 (_type_ float) none 141)
|
|
(hover-enemy-method-142 (_type_) none 142)
|
|
(hover-enemy-method-143 (_type_ int float) none 143)
|
|
(hover-enemy-method-144 (_type_) none 144)
|
|
(hover-enemy-method-145 (_type_ int float int int) none 145)
|
|
(hover-enemy-method-146 (_type_) none 146)
|
|
(hover-enemy-method-147 (_type_) none 147)
|
|
(hover-enemy-method-148 (_type_) none 148)
|
|
(hover-enemy-method-149 (_type_) none 149)
|
|
(hover-enemy-method-150 (_type_) enemy-info 150)
|
|
(hover-enemy-method-151 (_type_) hover-enemy-info 151)
|
|
(hover-enemy-method-152 (_type_) hover-nav-params 152)
|
|
(hover-enemy-method-153 (_type_) none 153)
|
|
(hover-enemy-method-154 (_type_) none 154)
|
|
(hover-enemy-method-155 (_type_) none 155)
|
|
)
|
|
)
|