jak-project/goal_src/jak2/engine/nav/nav-enemy-h.gc
ManDude b50b9eadb2
[decompiler] new features + fixes, + other jak2 fixes (#2796)
Fixes empty boxed arrays of strings breaking some decomp
(`ctywide-speech` and `race-info`).

Adds `decomp-as` tag to decompiler types so that the static data
decompiler can use macros like `meters` and `seconds` on fields that
aren't of type `meters` or `time-frame`.

Adds `override` tag to decompiler types which overrides the type of
field with that name. The type must be a child type of the original
field's type (or the same type, but why would you do this?).

Fixes the camera being offset for `drillmtn` after loading `palout`
once.

This is a huge refactor sadly.
2023-07-04 17:23:24 -04:00

127 lines
5.4 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: nav-enemy-h.gc
;; name in dgo: nav-enemy-h
;; dgos: GAME, COMMON
;; grunt
(declare-type nav-enemy enemy)
(define-extern nav-enemy-falling-post (function none :behavior nav-enemy))
(define-extern nav-enemy-chase-post (function none :behavior nav-enemy))
(define-extern nav-enemy-simple-post (function none :behavior nav-enemy))
(declare-type nav-callback-info structure)
(define-extern *nav-enemy-null-callback-info* nav-callback-info)
;; flitter
(define-extern nav-enemy-travel-post (function none :behavior nav-enemy))
;; DECOMP BEGINS
(deftype nav-enemy-info (enemy-info)
((callback-info nav-callback-info :offset-assert 384)
(use-momentum symbol :offset-assert 388)
(use-frustration symbol :offset-assert 392)
(use-stop-chase symbol :offset-assert 396)
(use-circling symbol :offset-assert 400)
(use-pacing symbol :offset-assert 404)
(walk-anim int32 :offset-assert 408)
(turn-anim int32 :offset-assert 412)
(run-anim int32 :offset-assert 416)
(taunt-anim int32 :offset-assert 420)
(run-travel-speed meters :offset-assert 424)
(run-acceleration meters :offset-assert 428)
(run-turning-acceleration meters :offset-assert 432)
(walk-travel-speed meters :offset-assert 436)
(walk-acceleration meters :offset-assert 440)
(walk-turning-acceleration meters :offset-assert 444)
(maximum-rotation-rate degrees :offset-assert 448)
(notice-nav-radius meters :offset-assert 452)
(frustration-distance meters :offset-assert 456)
(frustration-time time-frame :offset-assert 464)
(blocked-time time-frame :offset-assert 472)
(circle-dist-lo float :offset-assert 480)
(circle-dist-hi float :offset-assert 484)
(nav-mesh nav-mesh :offset-assert 488)
)
:method-count-assert 11
:size-assert #x1ec
:flag-assert #xb000001ec
(:methods
(copy-nav-enemy-info! (_type_ nav-enemy-info) none 10)
)
)
(deftype nav-enemy (enemy)
((enemy-info nav-enemy-info :override)
(frustration-point vector :inline :offset-assert 544)
(move-dest vector :inline :offset-assert 560)
(frustration-time time-frame :offset-assert 576)
(blocked-start-time time-frame :offset-assert 584)
(restore-nav-radius-time time-frame :offset-assert 592)
(nav-radius-backup float :offset-assert 600)
)
:heap-base #x1e0
:method-count-assert 178
:size-assert #x25c
:flag-assert #xb201e0025c
(:methods
(set-enemy-info! (_type_ nav-enemy-info) none :replace 112)
(init-enemy-behaviour-and-stats! (_type_ nav-enemy-info) none :replace 113)
(taunt () _type_ :state 137)
(pacing () _type_ :state 138)
(circling () _type_ :state 139)
(stop-chase () _type_ :state 140)
(debug-control () _type_ :state 141)
(nav-enemy-method-142 (_type_ nav-control) none 142)
(nav-enemy-method-143 (_type_ nav-control) none 143)
(nav-enemy-method-144 (_type_) time-frame :behavior nav-enemy 144)
(nav-enemy-method-145 (_type_ nav-control) none 145)
(nav-enemy-method-146 (_type_ nav-control) none 146)
(nav-enemy-method-147 (_type_ nav-control) none 147)
(nav-enemy-method-148 (_type_ nav-control) none 148)
(nav-enemy-method-149 (_type_ nav-control) none 149)
(nav-enemy-method-150 (_type_ nav-control) none 150)
(nav-enemy-method-151 (_type_ nav-control) none 151)
(nav-enemy-method-152 (_type_ nav-control) none 152)
(nav-enemy-method-153 (_type_ nav-control) none 153)
(nav-enemy-method-154 (_type_ nav-control) none 154)
(nav-enemy-method-155 (_type_) none 155)
(nav-enemy-method-156 (_type_) none 156)
(nav-enemy-method-157 (_type_ vector) nav-poly 157)
(nav-enemy-method-158 (_type_ vector) object 158)
(nav-enemy-method-159 (_type_ vector) symbol 159)
(nav-enemy-method-160 (_type_) none 160)
(nav-enemy-method-161 (_type_) none 161)
(nav-enemy-method-162 (_type_) none 162)
(nav-enemy-method-163 (_type_) symbol 163)
(nav-enemy-method-164 (_type_) none 164)
(nav-enemy-method-165 (_type_) none 165)
(nav-enemy-method-166 (_type_) none 166)
(nav-enemy-method-167 (_type_) none 167)
(nav-enemy-method-168 (_type_) float 168)
(nav-enemy-method-169 (_type_ float symbol) float 169)
(nav-enemy-method-170 (_type_) none 170)
(nav-enemy-method-171 (_type_) none 171)
(nav-enemy-method-172 (_type_) none 172)
(nav-enemy-method-173 (_type_) none 173)
(nav-enemy-method-174 (_type_) symbol 174)
(nav-enemy-method-175 (_type_) symbol 175)
(nav-enemy-method-176 (_type_) none :behavior nav-enemy 176)
(nav-enemy-method-177 (_type_) none 177)
)
)
(deftype nav-enemy-debug-control-info (basic)
((enable basic :offset-assert 4)
(steering float :offset-assert 8)
(throttle float :offset-assert 12)
)
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
)