2022-06-30 01:22:51 -04:00
|
|
|
;;-*-Lisp-*-
|
|
|
|
(in-package goal)
|
|
|
|
|
|
|
|
;; name: enemy-h.gc
|
|
|
|
;; name in dgo: enemy-h
|
|
|
|
;; dgos: GAME, COMMON
|
|
|
|
|
2022-10-11 23:20:36 -04:00
|
|
|
(define-extern get-penetrate-using-from-attack-event (function process-drawable event-message-block penetrate))
|
|
|
|
|
2022-10-29 18:27:31 -04:00
|
|
|
;; NOTE - for battle
|
|
|
|
(declare-type enemy process-focusable)
|
2023-09-20 05:46:48 -04:00
|
|
|
(declare-type enemy-init-by-other-params structure)
|
|
|
|
(define-extern enemy-init-by-other (function process-drawable enemy-init-by-other-params none :behavior enemy))
|
2022-10-29 18:27:31 -04:00
|
|
|
|
2022-10-29 16:28:52 -04:00
|
|
|
;; +++enemy-flag
|
2022-10-01 13:39:56 -04:00
|
|
|
(defenum enemy-flag
|
|
|
|
:type int64
|
|
|
|
:bitfield #t
|
|
|
|
(lock-focus 0)
|
|
|
|
(death-start 1)
|
|
|
|
(enable-on-active 2)
|
|
|
|
(checking-water 3)
|
|
|
|
(check-water 4)
|
|
|
|
(spawn-gem 5)
|
|
|
|
(chase-startup 6)
|
|
|
|
(attackable-backup 7)
|
|
|
|
(look-at-focus 8)
|
|
|
|
(use-notice-distance 9)
|
|
|
|
(enable-on-notice 10)
|
|
|
|
(look-at-move-dest 11)
|
|
|
|
(notice 12)
|
|
|
|
(auto-reset-penetrate 13)
|
|
|
|
(jump-check-blocked 14)
|
|
|
|
(drawn-mirrored 15)
|
|
|
|
(multi-focus 16)
|
|
|
|
(alert 17)
|
|
|
|
(victory 18)
|
|
|
|
(dangerous-backup 19)
|
|
|
|
(actor-pause-backup 20)
|
|
|
|
(trackable 21)
|
|
|
|
(called-dying 22)
|
|
|
|
(check-water-backup 23)
|
|
|
|
(no-initial-move-to-ground 24)
|
|
|
|
(cam-attack-mode 25)
|
|
|
|
(trackable-backup 26)
|
|
|
|
(enable-on-hostile 27)
|
|
|
|
(directed-ready 28)
|
|
|
|
(use-trigger 29)
|
|
|
|
(directed 30)
|
|
|
|
(dislike-combo 31)
|
|
|
|
(recover-applied-velocity 32)
|
|
|
|
(vulnerable-backup 33)
|
|
|
|
(vulnerable 34)
|
|
|
|
(recover 35)
|
2022-10-29 16:28:52 -04:00
|
|
|
(enemy-flag36 36)
|
|
|
|
(enemy-flag37 37)
|
|
|
|
(enemy-flag38 38)
|
2023-06-07 20:04:16 -04:00
|
|
|
(not-frustrated 39)
|
2022-10-29 16:28:52 -04:00
|
|
|
(enemy-flag40 40)
|
|
|
|
(enemy-flag41 41)
|
|
|
|
(enemy-flag42 42)
|
|
|
|
(enemy-flag43 43)
|
2022-10-01 13:39:56 -04:00
|
|
|
)
|
2022-10-29 16:28:52 -04:00
|
|
|
;; ---enemy-flag
|
|
|
|
|
|
|
|
|
|
|
|
;; +++enemy-aware
|
|
|
|
(defenum enemy-aware
|
|
|
|
:type uint64
|
|
|
|
(enemy-aware-0 0)
|
2023-01-21 19:50:48 -05:00
|
|
|
(enemy-aware-1 1)
|
2022-10-29 16:28:52 -04:00
|
|
|
(enemy-aware-2 2)
|
|
|
|
(enemy-aware-3 3)
|
2023-01-21 20:26:51 -05:00
|
|
|
(unaware 4)
|
2022-10-29 16:28:52 -04:00
|
|
|
)
|
|
|
|
;; ---enemy-aware
|
|
|
|
|
|
|
|
|
|
|
|
;; +++knocked-type
|
|
|
|
(defenum knocked-type
|
|
|
|
:type uint8
|
2022-11-29 19:19:05 -05:00
|
|
|
(knocked-type-0 0)
|
2022-10-29 16:28:52 -04:00
|
|
|
(knocked-type-1 1)
|
|
|
|
(knocked-type-2 2)
|
|
|
|
(knocked-type-3 3)
|
2023-01-21 20:26:51 -05:00
|
|
|
(knocked-type-4 4) ;; what the heck is this! (its on gator, and cant trigger it for the life of me)
|
2022-10-29 16:28:52 -04:00
|
|
|
(knocked-type-5 5)
|
|
|
|
(knocked-type-6 6)
|
|
|
|
(knocked-type-7 7)
|
|
|
|
)
|
|
|
|
;; ---knocked-type
|
|
|
|
|
|
|
|
;; DECOMP BEGINS
|
2022-10-01 13:39:56 -04:00
|
|
|
|
|
|
|
(deftype enemy-focus (focus)
|
2022-10-29 16:28:52 -04:00
|
|
|
((aware enemy-aware :offset-assert 16)
|
|
|
|
(flags enemy-flag :offset-assert 24)
|
2022-10-01 13:39:56 -04:00
|
|
|
)
|
|
|
|
:method-count-assert 14
|
|
|
|
:size-assert #x20
|
|
|
|
:flag-assert #xe00000020
|
|
|
|
(:methods
|
2022-10-29 16:28:52 -04:00
|
|
|
(try-update-focus (_type_ process-focusable enemy) symbol :replace 12)
|
|
|
|
(enemy-focus-method-13 (_type_ process-focusable enemy-aware) symbol 13)
|
2022-10-01 13:39:56 -04:00
|
|
|
)
|
|
|
|
)
|
|
|
|
|
2022-10-29 16:28:52 -04:00
|
|
|
|
2022-10-01 13:39:56 -04:00
|
|
|
(deftype enemy-info (basic)
|
decomp: `tomb-*` files, `target-indax`, `grunt-mech`, `breakable-wall`, `pillar-collapse`, `mechtest-obs`, `ruins-obs` (#2114)
Manual patches in:
- `tomb-boulder`: a few `ppointer->handle`s (I think) were not being
decompiled properly (all used in combination with `clone-anim-once`)
- `ruins-obs`, `pillar-collapse`: `art-joint-anim` casts
- `tomb-beetle`: commented out a call to `shadow-control-method-14` that
was crashing the game when spawning the beetles
- `grunt-mech`: commented out `(.mula.s)` instruction
Notes:
- `enemy-info`'s `idle-anim-script` is most likely a `(pointer
idle-control-frame)`, however, some `nav-enemy-info` labels set it to
`#f` (first encountered in `tomb-beetle`, but also present in `hal`,
`roboguard` and `metalkor-setup`), which crashes the decompiler. This
may become a problem in the future when we eventually get to these
files. For this PR, I made `tomb-beetle` decompile with
`idle-anim-script` set to `#f` and have not noticed any issues/crashes
with that.
- `tomb-boulder` compiles and doesn't crash, but when trying to play the
Daxter chase sequence, the boulder sometimes either spawns at the origin
or spawns in the correct place, but doesn't move.
Co-authored-by: water <awaterford111445@gmail.com>
2023-01-14 13:53:31 -05:00
|
|
|
((fact-defaults fact-info-enemy-defaults :offset-assert 4)
|
|
|
|
(use-die-falling symbol :offset-assert 8)
|
|
|
|
(use-victory symbol :offset-assert 12)
|
|
|
|
(use-jump-blocked symbol :offset-assert 16)
|
|
|
|
(debug-draw-neck symbol :offset-assert 20)
|
|
|
|
(jump-debug-draw symbol :offset-assert 24)
|
|
|
|
(move-to-ground symbol :offset-assert 28)
|
|
|
|
(hover-if-no-ground symbol :offset-assert 32)
|
|
|
|
(idle-anim-script (pointer idle-control-frame) :offset-assert 36)
|
|
|
|
(idle-anim int32 :offset-assert 40)
|
|
|
|
(notice-anim int32 :offset-assert 44)
|
|
|
|
(hostile-anim int32 :offset-assert 48)
|
|
|
|
(hit-anim int32 :offset-assert 52)
|
|
|
|
(knocked-anim int32 :offset-assert 56)
|
|
|
|
(knocked-land-anim int32 :offset-assert 60)
|
|
|
|
(die-anim int32 :offset-assert 64)
|
|
|
|
(die-falling-anim int32 :offset-assert 68)
|
|
|
|
(victory-anim int32 :offset-assert 72)
|
|
|
|
(jump-wind-up-anim int32 :offset-assert 76)
|
|
|
|
(jump-in-air-anim int32 :offset-assert 80)
|
|
|
|
(jump-land-anim int32 :offset-assert 84)
|
|
|
|
(neck-joint int32 :offset-assert 88)
|
|
|
|
(look-at-joint int32 :offset-assert 92)
|
|
|
|
(bullseye-joint int32 :offset-assert 96)
|
|
|
|
(sound-hit sound-name :offset-assert 112)
|
|
|
|
(sound-die sound-name :offset-assert 128)
|
|
|
|
(notice-distance meters :offset-assert 144)
|
|
|
|
(notice-distance-delta meters :offset-assert 148)
|
|
|
|
(proximity-notice-distance meters :offset-assert 152)
|
|
|
|
(default-hit-points int32 :offset-assert 156)
|
|
|
|
(gnd-collide-with collide-spec :offset-assert 160)
|
|
|
|
(overlaps-others-collide-with-filter collide-spec :offset-assert 164)
|
2023-01-21 20:26:51 -05:00
|
|
|
(penetrate-flinch penetrate :offset-assert 168)
|
|
|
|
(penetrate-knocked penetrate :offset-assert 176)
|
decomp: `tomb-*` files, `target-indax`, `grunt-mech`, `breakable-wall`, `pillar-collapse`, `mechtest-obs`, `ruins-obs` (#2114)
Manual patches in:
- `tomb-boulder`: a few `ppointer->handle`s (I think) were not being
decompiled properly (all used in combination with `clone-anim-once`)
- `ruins-obs`, `pillar-collapse`: `art-joint-anim` casts
- `tomb-beetle`: commented out a call to `shadow-control-method-14` that
was crashing the game when spawning the beetles
- `grunt-mech`: commented out `(.mula.s)` instruction
Notes:
- `enemy-info`'s `idle-anim-script` is most likely a `(pointer
idle-control-frame)`, however, some `nav-enemy-info` labels set it to
`#f` (first encountered in `tomb-beetle`, but also present in `hal`,
`roboguard` and `metalkor-setup`), which crashes the decompiler. This
may become a problem in the future when we eventually get to these
files. For this PR, I made `tomb-beetle` decompile with
`idle-anim-script` set to `#f` and have not noticed any issues/crashes
with that.
- `tomb-boulder` compiles and doesn't crash, but when trying to play the
Daxter chase sequence, the boulder sometimes either spawns at the origin
or spawns in the correct place, but doesn't move.
Co-authored-by: water <awaterford111445@gmail.com>
2023-01-14 13:53:31 -05:00
|
|
|
(movement-gravity meters :offset-assert 184)
|
|
|
|
(friction float :offset-assert 188)
|
|
|
|
(slip-factor float :offset-assert 192)
|
|
|
|
(attack-shove-back meters :offset-assert 196)
|
|
|
|
(attack-shove-up meters :offset-assert 200)
|
|
|
|
(attack-mode symbol :offset-assert 204)
|
|
|
|
(attack-damage int32 :offset-assert 208)
|
|
|
|
(recover-gnd-collide-with collide-spec :offset-assert 212)
|
|
|
|
(jump-height-min meters :offset-assert 216)
|
|
|
|
(jump-height-factor float :offset-assert 220)
|
|
|
|
(knocked-seek-ry-clamp float :offset-assert 224)
|
|
|
|
(knocked-soft-vxz-lo float :offset-assert 228)
|
|
|
|
(knocked-soft-vxz-hi float :offset-assert 232)
|
|
|
|
(knocked-soft-vy-lo float :offset-assert 236)
|
|
|
|
(knocked-soft-vy-hi float :offset-assert 240)
|
|
|
|
(knocked-medium-vxz-lo float :offset-assert 244)
|
|
|
|
(knocked-medium-vxz-hi float :offset-assert 248)
|
|
|
|
(knocked-medium-vy-lo float :offset-assert 252)
|
|
|
|
(knocked-medium-vy-hi float :offset-assert 256)
|
|
|
|
(knocked-hard-vxz-lo float :offset-assert 260)
|
|
|
|
(knocked-hard-vxz-hi float :offset-assert 264)
|
|
|
|
(knocked-hard-vy-lo float :offset-assert 268)
|
|
|
|
(knocked-hard-vy-hi float :offset-assert 272)
|
|
|
|
(knocked-huge-vxz-lo float :offset-assert 276)
|
|
|
|
(knocked-huge-vxz-hi float :offset-assert 280)
|
|
|
|
(knocked-huge-vy-lo float :offset-assert 284)
|
|
|
|
(knocked-huge-vy-hi float :offset-assert 288)
|
|
|
|
(knocked-yellow-vxz-lo float :offset-assert 292)
|
|
|
|
(knocked-yellow-vxz-hi float :offset-assert 296)
|
|
|
|
(knocked-yellow-vy-lo float :offset-assert 300)
|
|
|
|
(knocked-yellow-vy-hi float :offset-assert 304)
|
|
|
|
(knocked-red-vxz-lo float :offset-assert 308)
|
|
|
|
(knocked-red-vxz-hi float :offset-assert 312)
|
|
|
|
(knocked-red-vy-lo float :offset-assert 316)
|
|
|
|
(knocked-red-vy-hi float :offset-assert 320)
|
|
|
|
(knocked-blue-vxz-lo float :offset-assert 324)
|
|
|
|
(knocked-blue-vxz-hi float :offset-assert 328)
|
|
|
|
(knocked-blue-vy-lo float :offset-assert 332)
|
|
|
|
(knocked-blue-vy-hi float :offset-assert 336)
|
|
|
|
(shadow-size meters :offset-assert 340)
|
|
|
|
(shadow-max-y meters :offset-assert 344)
|
|
|
|
(shadow-min-y meters :offset-assert 348)
|
|
|
|
(shadow-locus-dist meters :offset-assert 352)
|
|
|
|
(gem-joint int32 :offset-assert 356)
|
|
|
|
(gem-seg uint32 :offset-assert 360)
|
|
|
|
(gem-no-seg uint32 :offset-assert 364)
|
|
|
|
(gem-offset sphere :inline :offset-assert 368)
|
2022-10-01 13:39:56 -04:00
|
|
|
)
|
|
|
|
:method-count-assert 10
|
|
|
|
:size-assert #x180
|
|
|
|
:flag-assert #xa00000180
|
|
|
|
(:methods
|
2022-10-29 16:28:52 -04:00
|
|
|
(copy-enemy-info! (_type_ _type_) none 9)
|
2022-10-01 13:39:56 -04:00
|
|
|
)
|
|
|
|
)
|
|
|
|
|
2022-10-29 16:28:52 -04:00
|
|
|
|
2022-10-01 13:39:56 -04:00
|
|
|
(deftype enemy-knocked-info (structure)
|
2022-10-29 16:28:52 -04:00
|
|
|
((anim-speed float :offset-assert 0)
|
|
|
|
(on-surface-count int32 :offset-assert 4)
|
|
|
|
(move-count int32 :offset-assert 8)
|
|
|
|
(land-can-land-time time-frame :offset-assert 16)
|
2022-10-01 13:39:56 -04:00
|
|
|
)
|
|
|
|
:method-count-assert 9
|
|
|
|
:size-assert #x18
|
|
|
|
:flag-assert #x900000018
|
|
|
|
)
|
|
|
|
|
2022-10-29 16:28:52 -04:00
|
|
|
|
2022-10-01 13:39:56 -04:00
|
|
|
(deftype enemy-jump-info (structure)
|
2022-10-29 16:28:52 -04:00
|
|
|
((flags uint8 :offset-assert 0)
|
|
|
|
(anim-speed float :offset-assert 4)
|
|
|
|
(hang-time time-frame :offset-assert 8)
|
|
|
|
(start-pos vector :inline :offset-assert 16)
|
|
|
|
(dest-pos vector :inline :offset-assert 32)
|
|
|
|
(traj trajectory :inline :offset-assert 48)
|
2022-10-01 13:39:56 -04:00
|
|
|
)
|
|
|
|
:method-count-assert 9
|
|
|
|
:size-assert #x58
|
|
|
|
:flag-assert #x900000058
|
|
|
|
)
|
|
|
|
|
2022-10-29 16:28:52 -04:00
|
|
|
|
2022-10-01 13:39:56 -04:00
|
|
|
(deftype enemy-init-by-other-params (structure)
|
2022-10-29 16:28:52 -04:00
|
|
|
((trans vector :inline :offset-assert 0)
|
|
|
|
(quat quaternion :inline :offset-assert 16)
|
2022-11-29 19:19:05 -05:00
|
|
|
(entity entity :offset-assert 32)
|
2022-10-29 16:28:52 -04:00
|
|
|
(directed? symbol :offset-assert 36)
|
|
|
|
(no-initial-move-to-ground? symbol :offset-assert 40)
|
2022-10-01 13:39:56 -04:00
|
|
|
)
|
|
|
|
:method-count-assert 9
|
|
|
|
:size-assert #x2c
|
|
|
|
:flag-assert #x90000002c
|
|
|
|
)
|
|
|
|
|
2022-10-29 16:28:52 -04:00
|
|
|
|
2022-10-01 13:39:56 -04:00
|
|
|
(deftype enemy-attack-info (structure)
|
2022-10-29 16:28:52 -04:00
|
|
|
((attack-id uint32 :offset-assert 0)
|
|
|
|
(knocked-type knocked-type :offset-assert 4)
|
|
|
|
(blue-juggle-count uint8 :offset-assert 5)
|
|
|
|
(attacker-handle handle :offset-assert 8)
|
|
|
|
(attack-time time-frame :offset-assert 16)
|
|
|
|
(penetrate-using uint64 :offset-assert 24)
|
|
|
|
(attacker-pos vector :inline :offset-assert 32)
|
|
|
|
(attack-direction vector :inline :offset-assert 48)
|
2022-10-01 13:39:56 -04:00
|
|
|
)
|
|
|
|
:method-count-assert 9
|
|
|
|
:size-assert #x40
|
|
|
|
:flag-assert #x900000040
|
|
|
|
)
|
|
|
|
|
2022-10-29 16:28:52 -04:00
|
|
|
|
2022-10-01 13:39:56 -04:00
|
|
|
(deftype enemy-best-focus (structure)
|
2022-11-29 19:19:05 -05:00
|
|
|
((proc process :offset-assert 0)
|
|
|
|
(rating float :offset-assert 4)
|
|
|
|
(aware enemy-aware :offset-assert 8)
|
2022-10-01 13:39:56 -04:00
|
|
|
)
|
|
|
|
:method-count-assert 9
|
|
|
|
:size-assert #x10
|
|
|
|
:flag-assert #x900000010
|
|
|
|
)
|
|
|
|
|
2022-10-29 16:28:52 -04:00
|
|
|
|
2022-10-01 13:39:56 -04:00
|
|
|
(deftype enemy (process-focusable)
|
2023-07-04 17:23:24 -04:00
|
|
|
((root collide-shape-moving :override)
|
|
|
|
(fact fact-info-enemy :override)
|
2023-01-01 21:03:07 -05:00
|
|
|
(enemy-flags enemy-flag :offset-assert 208)
|
|
|
|
(enemy-info enemy-info :offset-assert 216)
|
|
|
|
(hit-points int32 :offset-assert 220)
|
|
|
|
(gnd-collide uint32 :offset-assert 224)
|
|
|
|
(attack-id uint32 :offset-assert 228)
|
|
|
|
(persistent-attack-id uint32 :offset-assert 232)
|
|
|
|
(water-max-height meters :offset-assert 236)
|
|
|
|
(water-surface-height meters :offset-assert 240)
|
|
|
|
(desired-angle degrees :offset-assert 244)
|
|
|
|
(jump-why uint64 :offset-assert 248)
|
|
|
|
(penetrated-by-all penetrate :offset-assert 256)
|
|
|
|
(penetrated-flinch penetrate :offset-assert 264)
|
|
|
|
(penetrated-knocked penetrate :offset-assert 272)
|
2023-01-21 20:26:51 -05:00
|
|
|
(reaction-time time-frame :offset-assert 280)
|
|
|
|
(notice-time time-frame :offset-assert 288)
|
|
|
|
(state-timeout time-frame :offset-assert 296)
|
|
|
|
(auto-reset-penetrate-time time-frame :offset-assert 304)
|
|
|
|
(hit-focus-time time-frame :offset-assert 312)
|
|
|
|
(last-draw-time time-frame :offset-assert 320)
|
|
|
|
(starting-time time-frame :offset-assert 328)
|
|
|
|
(fated-time time-frame :offset-assert 336)
|
2023-01-01 21:03:07 -05:00
|
|
|
(focus-pos vector :inline :offset-assert 352)
|
|
|
|
(event-param-point vector :inline :offset-assert 368)
|
|
|
|
(jump-dest vector :inline :offset 368)
|
|
|
|
(focus enemy-focus :inline :offset-assert 384)
|
|
|
|
(incoming enemy-attack-info :inline :offset-assert 416)
|
|
|
|
(actor-group (pointer actor-group) :offset-assert 480)
|
|
|
|
(actor-group-count int32 :offset-assert 484)
|
|
|
|
(neck joint-mod :offset-assert 488)
|
|
|
|
(on-notice symbol :offset-assert 492)
|
|
|
|
(on-active symbol :offset-assert 496)
|
|
|
|
(on-hostile symbol :offset-assert 500)
|
|
|
|
(on-death symbol :offset-assert 504)
|
|
|
|
(idle-anim-player idle-control :inline :offset-assert 512)
|
|
|
|
(rand-gen symbol :offset-assert 528)
|
2022-10-29 16:28:52 -04:00
|
|
|
)
|
|
|
|
:heap-base #x1a0
|
2022-10-01 13:39:56 -04:00
|
|
|
:method-count-assert 137
|
|
|
|
:size-assert #x214
|
|
|
|
:flag-assert #x8901a00214
|
|
|
|
(:methods
|
2022-10-29 16:28:52 -04:00
|
|
|
(dormant () _type_ :state 27)
|
|
|
|
(dormant-aware () _type_ :state 28)
|
|
|
|
(hit () _type_ :state 29)
|
|
|
|
(knocked () _type_ :state 30)
|
|
|
|
(idle () _type_ :state 31)
|
|
|
|
(active () _type_ :state 32)
|
|
|
|
(notice () _type_ :state 33)
|
|
|
|
(flee () _type_ :state 34)
|
|
|
|
(stare () _type_ :state 35)
|
|
|
|
(hostile () _type_ :state 36)
|
|
|
|
(victory () _type_ :state 37)
|
|
|
|
(die () _type_ :state 38)
|
|
|
|
(die-falling () _type_ :state 39)
|
|
|
|
(die-fast () _type_ :state 40)
|
|
|
|
(directed () _type_ :state 41)
|
|
|
|
(jump () _type_ :state 42)
|
|
|
|
(jump-blocked () _type_ :state 43)
|
|
|
|
(ambush () _type_ :state 44)
|
|
|
|
(view-anims () _type_ :state 45)
|
2022-11-29 19:19:05 -05:00
|
|
|
(enemy-method-46 (_type_ int) none 46)
|
2022-10-29 16:28:52 -04:00
|
|
|
(enemy-method-47 (_type_ vector) float 47)
|
2023-08-06 19:15:53 -04:00
|
|
|
(take-damage-from-attack (_type_ process event-message-block) int 48)
|
2022-10-29 16:28:52 -04:00
|
|
|
(enemy-method-49 (_type_) time-frame :behavior enemy 49)
|
|
|
|
(enemy-method-50 (_type_ vector) vector 50)
|
|
|
|
(enemy-method-51 (_type_) float 51)
|
|
|
|
(enemy-method-52 (_type_ vector) none 52)
|
|
|
|
(enemy-method-53 (_type_ process-focusable) symbol 53)
|
|
|
|
(enemy-method-54 (_type_) enemy-flag 54)
|
2023-01-21 20:26:51 -05:00
|
|
|
(track-target! (_type_) none 55)
|
|
|
|
(damage-amount-from-attack (_type_ process event-message-block) int 56)
|
|
|
|
(update-target-awareness! (_type_ process-focusable enemy-best-focus) enemy-aware 57)
|
2023-01-07 17:14:12 -05:00
|
|
|
(enemy-method-58 (_type_ process event-message-block) symbol 58)
|
2023-01-21 20:26:51 -05:00
|
|
|
(get-penetrate-info (_type_) penetrate 59)
|
2022-10-29 16:28:52 -04:00
|
|
|
(coin-flip? (_type_) symbol 60)
|
|
|
|
(enemy-method-61 (_type_ int) int :behavior enemy 61)
|
|
|
|
(enemy-method-62 (_type_) none 62)
|
2023-01-21 20:26:51 -05:00
|
|
|
(enemy-method-63 (_type_ process-focusable enemy-aware) symbol 63)
|
2022-10-29 16:28:52 -04:00
|
|
|
(enemy-method-64 (_type_) none 64)
|
|
|
|
(enemy-method-65 (_type_) none 65)
|
2023-09-22 05:54:49 -04:00
|
|
|
(go-ambush (_type_) object 66)
|
|
|
|
(go-stare (_type_) object 67)
|
|
|
|
(go-stare2 (_type_) object 68)
|
|
|
|
(go-directed (_type_) object 69)
|
|
|
|
(go-hostile (_type_) object 70)
|
|
|
|
(go-flee (_type_) object 71)
|
|
|
|
(react-to-focus (_type_) object 72)
|
2023-01-31 18:32:50 -05:00
|
|
|
(kill-prefer-falling (_type_) object 73)
|
2023-01-21 20:26:51 -05:00
|
|
|
(general-event-handler (_type_ process int symbol event-message-block) object 74)
|
2023-04-13 21:09:12 -04:00
|
|
|
(enemy-method-75 (_type_ process event-message-block) object 75)
|
2022-11-29 19:19:05 -05:00
|
|
|
(enemy-method-76 (_type_ process event-message-block) symbol 76)
|
|
|
|
(enemy-method-77 (_type_ (pointer float)) symbol 77)
|
|
|
|
(enemy-method-78 (_type_ (pointer float)) symbol 78)
|
|
|
|
(enemy-method-79 (_type_ int enemy-knocked-info) symbol 79)
|
|
|
|
(enemy-method-80 (_type_ enemy-knocked-info) symbol 80)
|
2022-10-29 16:28:52 -04:00
|
|
|
(enemy-method-81 (_type_) symbol 81)
|
2022-11-29 19:19:05 -05:00
|
|
|
(enemy-method-82 (_type_ enemy-jump-info) symbol 82)
|
2022-10-29 16:28:52 -04:00
|
|
|
(enemy-method-83 (_type_ enemy-jump-info) none 83)
|
|
|
|
(enemy-method-84 (_type_ enemy-jump-info) none 84)
|
|
|
|
(enemy-method-85 (_type_) float 85)
|
|
|
|
(enemy-method-86 (_type_) symbol 86)
|
2022-11-29 19:19:05 -05:00
|
|
|
(enemy-method-87 (_type_ enemy-jump-info) symbol 87)
|
|
|
|
(enemy-method-88 (_type_ enemy-jump-info) symbol 88)
|
|
|
|
(enemy-method-89 (_type_ enemy-jump-info) symbol 89)
|
|
|
|
(enemy-method-90 (_type_ int enemy-jump-info) symbol 90)
|
2022-10-29 16:28:52 -04:00
|
|
|
(enemy-method-91 (_type_ int enemy-jump-info) none 91)
|
|
|
|
(enemy-method-92 (_type_ int nav-poly) none 92)
|
|
|
|
(enemy-method-93 (_type_) none 93)
|
|
|
|
(enemy-method-94 (_type_ vector float) symbol 94)
|
|
|
|
(enemy-method-95 (_type_ vector float) symbol 95)
|
|
|
|
(enemy-method-96 (_type_ float symbol) symbol 96)
|
2022-11-29 19:19:05 -05:00
|
|
|
(enemy-method-97 (_type_) process 97)
|
2023-01-21 20:26:51 -05:00
|
|
|
(in-aggro-range? (_type_ process-focusable vector) symbol 98)
|
2022-11-29 19:19:05 -05:00
|
|
|
(enemy-method-99 (_type_ process-focusable) symbol 99)
|
2022-10-29 16:28:52 -04:00
|
|
|
(enemy-method-100 (_type_) symbol 100)
|
|
|
|
(enemy-method-101 (_type_) none 101)
|
|
|
|
(enemy-method-102 (_type_) symbol 102)
|
|
|
|
(enemy-method-103 (_type_) collide-spec 103)
|
2023-04-13 21:09:12 -04:00
|
|
|
(enemy-method-104 (_type_ process touching-shapes-entry uint) symbol :behavior process 104)
|
2022-11-29 19:19:05 -05:00
|
|
|
(enemy-method-105 (_type_ process) enemy-flag 105)
|
|
|
|
(enemy-method-106 (_type_ process object int attack-info) none :behavior enemy 106)
|
2023-01-21 20:26:51 -05:00
|
|
|
(get-enemy-target (_type_) process-focusable 107)
|
2022-11-29 19:19:05 -05:00
|
|
|
(enemy-method-108 (_type_ enemy event-message-block) int 108)
|
2023-01-21 20:26:51 -05:00
|
|
|
(look-at-target! (_type_ enemy-flag) none 109)
|
|
|
|
(stop-looking-at-target! (_type_) none 110)
|
2022-10-29 16:28:52 -04:00
|
|
|
(enemy-method-111 (_type_) none :behavior enemy 111)
|
2023-01-21 20:26:51 -05:00
|
|
|
(set-enemy-info! (_type_ enemy-info) none 112)
|
|
|
|
(init-enemy-behaviour-and-stats! (_type_ enemy-info) none 113)
|
|
|
|
(init-enemy-collision! (_type_) none 114)
|
|
|
|
(init-enemy! (_type_) none 115)
|
2022-10-29 16:28:52 -04:00
|
|
|
(go-idle (_type_) none 116)
|
|
|
|
(get-rand-float (_type_) float 117)
|
|
|
|
(get-rand-float-range (_type_ float float) float 118)
|
|
|
|
(get-rand-int (_type_ int) int 119)
|
|
|
|
(enemy-method-120 (_type_ int int) int 120)
|
|
|
|
(get-rand-int-range (_type_ int int) int 121)
|
|
|
|
(rng-hit? (_type_ float) symbol 122)
|
|
|
|
(enemy-method-123 (_type_ float) symbol 123)
|
|
|
|
(enemy-method-124 (_type_) collide-spec 124)
|
2022-11-29 19:19:05 -05:00
|
|
|
(enemy-method-125 (_type_ collide-query collide-spec float float float) pat-surface 125)
|
2023-01-21 20:26:51 -05:00
|
|
|
(enemy-above-ground? (_type_ collide-query vector collide-spec float float float) symbol 126)
|
2022-11-29 19:19:05 -05:00
|
|
|
(enemy-method-127 (_type_ float float symbol collide-spec) symbol 127)
|
2022-10-29 16:28:52 -04:00
|
|
|
(enemy-method-128 (_type_ vector move-above-ground-params) none 128)
|
|
|
|
(enemy-method-129 (_type_) none 129)
|
2022-11-29 19:19:05 -05:00
|
|
|
(enemy-method-130 (_type_ float) symbol 130)
|
|
|
|
(enemy-method-131 (_type_ int) uint 131)
|
2023-01-21 20:26:51 -05:00
|
|
|
(dispose! (_type_) none 132)
|
2022-11-29 19:19:05 -05:00
|
|
|
(enemy-method-133 (_type_) symbol 133)
|
2022-11-12 11:19:04 -05:00
|
|
|
(enemy-method-134 (_type_ process attack-info) process-focusable 134)
|
2022-10-29 16:28:52 -04:00
|
|
|
(enemy-method-135 (_type_ int) sound-id 135)
|
|
|
|
(enemy-method-136 (_type_) enemy-flag 136)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
(deftype anim-info (structure)
|
|
|
|
((anim-index int32 :offset-assert 0)
|
|
|
|
(travel-speed meters :offset-assert 4)
|
|
|
|
)
|
|
|
|
:method-count-assert 9
|
|
|
|
:size-assert #x8
|
|
|
|
:flag-assert #x900000008
|
|
|
|
)
|
|
|
|
|
|
|
|
|
2023-09-26 10:17:00 -04:00
|
|
|
(defmethod try-update-focus enemy-focus ((this enemy-focus) (arg0 process-focusable) (arg1 enemy))
|
2022-10-29 16:28:52 -04:00
|
|
|
(let* ((t9-0 (method-of-type focus try-update-focus))
|
2023-09-26 10:17:00 -04:00
|
|
|
(s3-0 (t9-0 this arg0))
|
2022-10-29 16:28:52 -04:00
|
|
|
)
|
|
|
|
(when (not s3-0)
|
2023-09-26 10:17:00 -04:00
|
|
|
(logclear! (-> this flags) (enemy-flag lock-focus))
|
|
|
|
(set! (-> this aware)
|
2022-10-29 16:28:52 -04:00
|
|
|
(the-as
|
|
|
|
enemy-aware
|
2023-01-21 20:26:51 -05:00
|
|
|
(enemy-method-61 arg1 (the-as int (update-target-awareness! arg1 arg0 (the-as enemy-best-focus #f))))
|
2022-10-29 16:28:52 -04:00
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
s3-0
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
2023-09-26 10:17:00 -04:00
|
|
|
(defmethod enemy-focus-method-13 enemy-focus ((this enemy-focus) (arg0 process-focusable) (arg1 enemy-aware))
|
2022-10-29 16:28:52 -04:00
|
|
|
(let* ((t9-0 (method-of-type focus try-update-focus))
|
2023-09-26 10:17:00 -04:00
|
|
|
(v0-0 (t9-0 this arg0))
|
2022-10-29 16:28:52 -04:00
|
|
|
)
|
2023-09-26 10:17:00 -04:00
|
|
|
(set! (-> this aware) arg1)
|
2022-10-29 16:28:52 -04:00
|
|
|
(if (not v0-0)
|
2023-09-26 10:17:00 -04:00
|
|
|
(logclear! (-> this flags) (enemy-flag lock-focus))
|
2022-10-29 16:28:52 -04:00
|
|
|
)
|
|
|
|
v0-0
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
;; WARN: Return type mismatch enemy-flag vs none.
|
2023-09-26 10:17:00 -04:00
|
|
|
(defmethod clear-focused enemy-focus ((this enemy-focus))
|
2022-10-29 16:28:52 -04:00
|
|
|
(let ((t9-0 (method-of-type focus clear-focused)))
|
2023-09-26 10:17:00 -04:00
|
|
|
(t9-0 this)
|
2022-10-01 13:39:56 -04:00
|
|
|
)
|
2023-09-26 10:17:00 -04:00
|
|
|
(set! (-> this aware) (enemy-aware enemy-aware-0))
|
|
|
|
(logclear! (-> this flags) (enemy-flag lock-focus))
|
2022-10-29 16:28:52 -04:00
|
|
|
(none)
|
2022-10-01 13:39:56 -04:00
|
|
|
)
|