fix many instances of bad bone data being used (#2580)

Fixes cutscenes starting way too early and various cutscene softlocks.

Fixes #2579
Fixes #2577 

Supersedes #2578
This commit is contained in:
ManDude 2023-04-29 16:13:56 +01:00 committed by GitHub
parent aff67d6bb7
commit 0d3e272876
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 154 additions and 222 deletions

View File

@ -12,7 +12,7 @@
"CGO/KERNEL.CGO",
"CGO/ENGINE.CGO",
"CGO/GAME.CGO",
"CGO/COMMON.CGO",
// "CGO/COMMON.CGO",
"DGO/LWIDEB.DGO",
"DGO/LMEETBRT.DGO",
"DGO/CTA.DGO",

View File

@ -4212,5 +4212,11 @@
"vars": {
"gp-0": "charp"
}
},
"(method 55 enemy)": {
"args": ["self"]
},
"(method 55 nav-enemy)": {
"args": ["self"]
}
}

View File

@ -1,38 +0,0 @@
("COMMON.CGO"
("los-control-h.o"
"airlock.o"
"water-anim.o"
"blocking-plane.o"
"idle-control.o"
"dark-eco-pool.o"
"enemy-h.o"
"nav-enemy-h.o"
"rigid-body-h.o"
"enemy.o"
"nav-enemy.o"
"base-plat.o"
"plat.o"
"basebutton.o"
"bouncer.o"
"conveyor.o"
"elevator.o"
"rigid-body.o"
"rigid-body-queue.o"
"rigid-body-plat.o"
"joint-exploder.o"
"simple-focus.o"
"simple-nav-sphere.o"
"process-taskable.o"
"scene-actor.o"
"scene-looper.o"
"warp-gate.o"
"guard-projectile.o"
"metalhead-projectile.o"
"los-control.o"
"grunt.o"
"flitter.o"
"battle.o"
"elec-gate.o"
"cty-guard-turret-button.o"
"entity-debug.o" ;; added
))

View File

@ -289,60 +289,54 @@
)
)
(defmethod track-target! enemy ((obj enemy))
(defmethod track-target! enemy ((self enemy))
"Does a lot of various things relating to interacting with the target
- tracks when the enemy was last drawn
- looks at the target and handles attacking
@TODO Not extremely well understood yet"
(with-pp
(if (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-control-status on-screen)))
(set! (-> obj last-draw-time) (-> pp clock frame-counter))
(if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) (draw-control-status on-screen)))
(set! (-> self last-draw-time) (-> pp clock frame-counter))
)
(enemy-method-129 obj)
(if (logtest? (enemy-flag use-trigger) (-> obj enemy-flags))
(enemy-method-100 obj)
(enemy-method-129 self)
(if (logtest? (enemy-flag use-trigger) (-> self enemy-flags))
(enemy-method-100 self)
)
(when *target*
(if *target*
(look-at!
(-> *target* neck)
(the-as vector (-> obj root-override2 root-prim prim-core))
(if (logtest? (-> obj enemy-flags) (enemy-flag use-notice-distance))
'attacking
)
obj
)
)
(target-look-at-me! :trans (the-as vector (-> self root-override2 root-prim prim-core))
:message (if (logtest? (-> self enemy-flags) (enemy-flag use-notice-distance))
'attacking
))
)
(when (nonzero? (-> obj neck))
(when (logtest? (-> obj enemy-flags) (enemy-flag lock-focus))
(let ((a0-9 (handle->process (-> obj focus handle))))
(when (nonzero? (-> self neck))
(when (logtest? (-> self enemy-flags) (enemy-flag lock-focus))
(let ((a0-9 (handle->process (-> self focus handle))))
(if a0-9
(target-set! (-> obj neck) (get-trans (the-as process-focusable a0-9) 2))
(target-set! (-> self neck) (get-trans (the-as process-focusable a0-9) 2))
)
)
)
)
(when (and (logtest? (-> obj enemy-flags) (enemy-flag attackable-backup))
(>= (- (-> pp clock frame-counter) (-> obj auto-reset-penetrate-time)) (seconds 0.1))
(when (and (logtest? (-> self enemy-flags) (enemy-flag attackable-backup))
(>= (- (-> pp clock frame-counter) (-> self auto-reset-penetrate-time)) (seconds 0.1))
)
(logclear! (-> obj enemy-flags) (enemy-flag attackable-backup))
(set! (-> obj root-override2 penetrated-by) (get-penetrate-info obj))
(logclear! (-> self enemy-flags) (enemy-flag attackable-backup))
(set! (-> self root-override2 penetrated-by) (get-penetrate-info self))
(let ((v1-48 0))
(if (logtest? (penetrate knocked) (-> obj root-override2 penetrate-using))
(if (logtest? (penetrate knocked) (-> self root-override2 penetrate-using))
(set! v1-48 (logior (shl 1 32) v1-48))
)
(set! (-> obj root-override2 penetrate-using) (the-as penetrate v1-48))
(set! (-> self root-override2 penetrate-using) (the-as penetrate v1-48))
)
)
(if (logtest? (-> obj enemy-flags) (enemy-flag look-at-focus))
(enemy-method-136 obj)
(if (logtest? (-> self enemy-flags) (enemy-flag look-at-focus))
(enemy-method-136 self)
)
(if (logtest? (enemy-flag trackable-backup directed-ready) (-> obj enemy-flags))
(enemy-method-54 obj)
(if (logtest? (enemy-flag trackable-backup directed-ready) (-> self enemy-flags))
(enemy-method-54 self)
)
(if (and *debug-segment* (-> obj enemy-info debug-draw-neck) (nonzero? (-> obj neck)))
(joint-mod-debug-draw (-> obj neck))
(if (and *debug-segment* (-> self enemy-info debug-draw-neck) (nonzero? (-> self neck)))
(joint-mod-debug-draw (-> self neck))
)
(ja-post)
0

View File

@ -639,3 +639,10 @@
(enable-set! (_type_ symbol) none 10)
)
)
(defmacro target-look-at-me! (&key trans &key (message 'nothing-special))
"make target look at a trans in self. PC PORT NOTE : added check to see if lods have been set"
`(if (and (logtest? (-> self draw status) (draw-control-status lod-set)) *target*)
(look-at! (-> *target* neck) ,trans ,message self)))

View File

@ -1205,9 +1205,10 @@
;; PC port note : we ALWAYS disable the envmap hack when a process-drawable has warp effect enabled
(when (or (= lod-idx (-> dc cur-lod)) (logtest? (-> dc status) (draw-control-status lod-set)))
(protect ((-> *pc-settings* force-envmap?))
(dotimes (eff-i (-> dc mgeo header effect-count))
(if (logtest? (effect-bits cross-fade) (-> dc mgeo effect eff-i effect-bits))
(false! (-> *pc-settings* force-envmap?))))
(when (not (movie?))
(dotimes (eff-i (-> dc mgeo header effect-count))
(if (logtest? (effect-bits cross-fade) (-> dc mgeo effect eff-i effect-bits))
(false! (-> *pc-settings* force-envmap?)))))
(foreground-draw dc dma-buf dist-w)
)
)

View File

@ -3514,7 +3514,7 @@
)
:on-open #f
:info #f
:borrow '((hiphog 0 ltess special)) ;; (ctywide 0 lsack display) PC PORT NOTE : removed bad borrow!!
:borrow '((hiphog 0 ltess special) (ctywide 0 lsack display))
:open? #f
:on-close #f
:description (text-id text-x202)

View File

@ -217,48 +217,42 @@
)
)
(defmethod track-target! nav-enemy ((obj nav-enemy))
(defmethod track-target! nav-enemy ((self nav-enemy))
"Does a lot of various things relating to interacting with the target
- tracks when the enemy was last drawn
- looks at the target and handles attacking
@TODO Not extremely well understood yet"
(with-pp
(if (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-control-status on-screen)))
(set! (-> obj last-draw-time) (-> pp clock frame-counter))
(if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) (draw-control-status on-screen)))
(set! (-> self last-draw-time) (-> pp clock frame-counter))
)
(enemy-method-129 obj)
(when (logtest? (enemy-flag use-trigger) (-> obj enemy-flags))
(if (-> obj nav)
(enemy-method-100 obj)
(enemy-method-103 obj)
(enemy-method-129 self)
(when (logtest? (enemy-flag use-trigger) (-> self enemy-flags))
(if (-> self nav)
(enemy-method-100 self)
(enemy-method-103 self)
)
)
(when *target*
(if *target*
(look-at!
(-> *target* neck)
(the-as vector (-> obj root-override2 root-prim prim-core))
(if (logtest? (-> obj enemy-flags) (enemy-flag use-notice-distance))
'attacking
)
obj
)
)
(target-look-at-me! :trans (the-as vector (-> self root-override2 root-prim prim-core))
:message (if (logtest? (-> self enemy-flags) (enemy-flag use-notice-distance))
'attacking
))
)
(when (nonzero? (-> obj neck))
(when (nonzero? (-> self neck))
(cond
((logtest? (-> obj enemy-flags) (enemy-flag lock-focus))
(let ((a0-10 (handle->process (-> obj focus handle))))
((logtest? (-> self enemy-flags) (enemy-flag lock-focus))
(let ((a0-10 (handle->process (-> self focus handle))))
(if a0-10
(target-set! (-> obj neck) (get-trans (the-as process-focusable a0-10) 2))
(target-set! (-> self neck) (get-trans (the-as process-focusable a0-10) 2))
)
)
)
((logtest? (-> obj enemy-flags) (enemy-flag death-start))
(let ((s5-1 (-> obj move-dest))
((logtest? (-> self enemy-flags) (enemy-flag death-start))
(let ((s5-1 (-> self move-dest))
(v1-47 (vector<-cspace!
(new 'stack-no-clear 'vector)
(-> obj node-list data (-> obj enemy-info-override neck-joint))
(-> self node-list data (-> self enemy-info-override neck-joint))
)
)
(a1-6 (new 'stack-no-clear 'vector))
@ -267,39 +261,39 @@
(set! (-> a1-6 y) (-> v1-47 y))
(set! (-> a1-6 z) (-> s5-1 z))
(set! (-> a1-6 w) 1.0)
(target-set! (-> obj neck) a1-6)
(target-set! (-> self neck) a1-6)
)
)
)
)
(when (and (logtest? (-> obj enemy-flags) (enemy-flag attackable-backup))
(>= (- (-> pp clock frame-counter) (-> obj auto-reset-penetrate-time)) (seconds 0.1))
(when (and (logtest? (-> self enemy-flags) (enemy-flag attackable-backup))
(>= (- (-> pp clock frame-counter) (-> self auto-reset-penetrate-time)) (seconds 0.1))
)
(logclear! (-> obj enemy-flags) (enemy-flag attackable-backup))
(set! (-> obj root-override2 penetrated-by) (get-penetrate-info obj))
(logclear! (-> self enemy-flags) (enemy-flag attackable-backup))
(set! (-> self root-override2 penetrated-by) (get-penetrate-info self))
(let ((v1-62 0))
(if (logtest? (penetrate knocked) (-> obj root-override2 penetrate-using))
(if (logtest? (penetrate knocked) (-> self root-override2 penetrate-using))
(set! v1-62 (logior (shl 1 32) v1-62))
)
(set! (-> obj root-override2 penetrate-using) (the-as penetrate v1-62))
(set! (-> self root-override2 penetrate-using) (the-as penetrate v1-62))
)
)
(if (logtest? (-> obj enemy-flags) (enemy-flag look-at-focus))
(enemy-method-136 obj)
(if (logtest? (-> self enemy-flags) (enemy-flag look-at-focus))
(enemy-method-136 self)
)
(if (logtest? (enemy-flag trackable-backup directed-ready) (-> obj enemy-flags))
(enemy-method-54 obj)
(if (logtest? (enemy-flag trackable-backup directed-ready) (-> self enemy-flags))
(enemy-method-54 self)
)
(let ((v1-73 (-> obj restore-nav-radius-time)))
(let ((v1-73 (-> self restore-nav-radius-time)))
(when (nonzero? v1-73)
(when (>= (-> pp clock frame-counter) v1-73)
(set! (-> obj restore-nav-radius-time) 0)
(set! (-> obj root-override2 nav-radius) (-> obj nav-radius-backup))
(set! (-> self restore-nav-radius-time) 0)
(set! (-> self root-override2 nav-radius) (-> self nav-radius-backup))
)
)
)
(if (and *debug-segment* (-> obj enemy-info-override debug-draw-neck) (nonzero? (-> obj neck)))
(joint-mod-debug-draw (-> obj neck))
(if (and *debug-segment* (-> self enemy-info-override debug-draw-neck) (nonzero? (-> self neck)))
(joint-mod-debug-draw (-> self neck))
)
(ja-post)
0

View File

@ -76,7 +76,10 @@
(-> (the-as collide-shape-moving gp-0) gspot-pos)
)
((and (or (= arg0 2) (= arg0 3)) (type? gp-0 collide-shape))
(-> gp-0 root-prim prim-core)
;; PC PORT NOTE : added lod-set check so we don't use invalid bones
(if (not (logtest? (-> obj draw status) (draw-control-status lod-set)))
(-> gp-0 trans)
(-> gp-0 root-prim prim-core))
)
(else
(-> gp-0 trans)

View File

@ -308,9 +308,7 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
(logclear! (-> self draw status) (draw-control-status no-draw))
)
(when (-> self look-at-me)
(if *target*
(look-at! (-> *target* neck) (get-trans self 2) 'nothing-special self)
)
(target-look-at-me! :trans (get-trans self 2))
)
(transform-post)
(none)

View File

@ -200,18 +200,7 @@
(go-virtual pickup (method-of-object self wait-for-return))
)
)
(if *target*
(look-at!
(-> *target* neck)
(vector+!
(new 'stack-no-clear 'vector)
(the-as vector (-> self root-override root-prim prim-core))
(new 'static 'vector :y 2048.0 :w 1.0)
)
'nothing-special
self
)
)
(target-look-at-me! :trans (vector+! (new 'stack-no-clear 'vector) (the-as vector (-> self root-override root-prim prim-core)) (new 'static 'vector :y 2048.0 :w 1.0)))
(mech-method-24 self)
(suspend)
)

View File

@ -990,18 +990,7 @@
(go-virtual setup)
)
)
(if *target*
(look-at!
(-> *target* neck)
(vector+!
(new 'stack-no-clear 'vector)
(the-as vector (-> self root-override root-prim prim-core))
(new 'static 'vector :y 2048.0 :w 1.0)
)
'nothing-special
self
)
)
(target-look-at-me! :trans (vector+! (new 'stack-no-clear 'vector) (the-as vector (-> self root-override root-prim prim-core)) (new 'static 'vector :y 2048.0 :w 1.0)))
(base-turret-method-36 self)
(suspend)
)
@ -1427,18 +1416,7 @@
(ja :group! (-> self draw art-group data 2))
(until #f
(base-turret-method-37 self)
(if *target*
(look-at!
(-> *target* neck)
(vector+!
(new 'stack-no-clear 'vector)
(the-as vector (-> self root-override root-prim prim-core))
(new 'static 'vector :y 2048.0 :w 1.0)
)
'nothing-special
self
)
)
(target-look-at-me! :trans (vector+! (new 'stack-no-clear 'vector) (the-as vector (-> self root-override root-prim prim-core)) (new 'static 'vector :y 2048.0 :w 1.0)))
(suspend)
)
#f

View File

@ -2700,6 +2700,12 @@ This commonly includes things such as:
)
)
;; PC PORT NOTE : added complete hook for collection bbush tasks where we wait for the hud to die first
(set-subtask-hook! *game-info* 269 4
(lambda :behavior task-manager ()
(while (handle->process (-> self hud-counter))
(suspend))))
(copy-hooks! (-> *game-info* sub-task-list 287) (-> *game-info* sub-task-list 269))
(copy-hooks! (-> *game-info* sub-task-list 305) (-> *game-info* sub-task-list 269))

View File

@ -872,9 +872,7 @@
(if (logtest? (-> self flags) 512)
(los-control-method-9 (-> self los) gp-0 (the-as vector #f) 1638.4)
)
(if *target*
(look-at! (-> *target* neck) (the-as vector (-> self root-override root-prim prim-core)) 'attacking self)
)
(target-look-at-me! :trans (the-as vector (-> self root-override root-prim prim-core)) :message 'attacking)
(set! (-> self aim-pos 0 quad) (-> self aim-pos-2 quad))
(set! (-> self aim-pos-2 quad) (-> (get-trans gp-0 0) quad))
(let ((s5-2 (-> self aim-pos-1))

View File

@ -305,60 +305,60 @@
;; definition for method 55 of type enemy
;; WARN: Return type mismatch int vs none.
(defmethod track-target! enemy ((obj enemy))
(defmethod track-target! enemy ((self enemy))
"Does a lot of various things relating to interacting with the target
- tracks when the enemy was last drawn
- looks at the target and handles attacking
@TODO Not extremely well understood yet"
(with-pp
(if (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-control-status on-screen)))
(set! (-> obj last-draw-time) (-> pp clock frame-counter))
(if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) (draw-control-status on-screen)))
(set! (-> self last-draw-time) (-> pp clock frame-counter))
)
(enemy-method-129 obj)
(if (logtest? (enemy-flag use-trigger) (-> obj enemy-flags))
(enemy-method-100 obj)
(enemy-method-129 self)
(if (logtest? (enemy-flag use-trigger) (-> self enemy-flags))
(enemy-method-100 self)
)
(when *target*
(if *target*
(look-at!
(-> *target* neck)
(the-as vector (-> obj root-override2 root-prim prim-core))
(if (logtest? (-> obj enemy-flags) (enemy-flag use-notice-distance))
(the-as vector (-> self root-override2 root-prim prim-core))
(if (logtest? (-> self enemy-flags) (enemy-flag use-notice-distance))
'attacking
)
obj
self
)
)
)
(when (nonzero? (-> obj neck))
(when (logtest? (-> obj enemy-flags) (enemy-flag lock-focus))
(let ((a0-9 (handle->process (-> obj focus handle))))
(when (nonzero? (-> self neck))
(when (logtest? (-> self enemy-flags) (enemy-flag lock-focus))
(let ((a0-9 (handle->process (-> self focus handle))))
(if a0-9
(target-set! (-> obj neck) (get-trans (the-as process-focusable a0-9) 2))
(target-set! (-> self neck) (get-trans (the-as process-focusable a0-9) 2))
)
)
)
)
(when (and (logtest? (-> obj enemy-flags) (enemy-flag attackable-backup))
(>= (- (-> pp clock frame-counter) (-> obj auto-reset-penetrate-time)) (seconds 0.1))
(when (and (logtest? (-> self enemy-flags) (enemy-flag attackable-backup))
(>= (- (-> pp clock frame-counter) (-> self auto-reset-penetrate-time)) (seconds 0.1))
)
(logclear! (-> obj enemy-flags) (enemy-flag attackable-backup))
(set! (-> obj root-override2 penetrated-by) (get-penetrate-info obj))
(logclear! (-> self enemy-flags) (enemy-flag attackable-backup))
(set! (-> self root-override2 penetrated-by) (get-penetrate-info self))
(let ((v1-48 0))
(if (logtest? (penetrate knocked) (-> obj root-override2 penetrate-using))
(if (logtest? (penetrate knocked) (-> self root-override2 penetrate-using))
(set! v1-48 (logior (shl 1 32) v1-48))
)
(set! (-> obj root-override2 penetrate-using) (the-as penetrate v1-48))
(set! (-> self root-override2 penetrate-using) (the-as penetrate v1-48))
)
)
(if (logtest? (-> obj enemy-flags) (enemy-flag look-at-focus))
(enemy-method-136 obj)
(if (logtest? (-> self enemy-flags) (enemy-flag look-at-focus))
(enemy-method-136 self)
)
(if (logtest? (enemy-flag trackable-backup directed-ready) (-> obj enemy-flags))
(enemy-method-54 obj)
(if (logtest? (enemy-flag trackable-backup directed-ready) (-> self enemy-flags))
(enemy-method-54 self)
)
(if (and *debug-segment* (-> obj enemy-info debug-draw-neck) (nonzero? (-> obj neck)))
(joint-mod-debug-draw (-> obj neck))
(if (and *debug-segment* (-> self enemy-info debug-draw-neck) (nonzero? (-> self neck)))
(joint-mod-debug-draw (-> self neck))
)
(ja-post)
0
@ -3901,7 +3901,3 @@ This commonly includes things such as:
(defbehavior ja-group-index? enemy ((arg0 int))
(ja-group? (-> self draw art-group data arg0))
)

View File

@ -225,48 +225,48 @@
;; definition for method 55 of type nav-enemy
;; WARN: Return type mismatch int vs none.
(defmethod track-target! nav-enemy ((obj nav-enemy))
(defmethod track-target! nav-enemy ((self nav-enemy))
"Does a lot of various things relating to interacting with the target
- tracks when the enemy was last drawn
- looks at the target and handles attacking
@TODO Not extremely well understood yet"
(with-pp
(if (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-control-status on-screen)))
(set! (-> obj last-draw-time) (-> pp clock frame-counter))
(if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) (draw-control-status on-screen)))
(set! (-> self last-draw-time) (-> pp clock frame-counter))
)
(enemy-method-129 obj)
(when (logtest? (enemy-flag use-trigger) (-> obj enemy-flags))
(if (-> obj nav)
(enemy-method-100 obj)
(enemy-method-103 obj)
(enemy-method-129 self)
(when (logtest? (enemy-flag use-trigger) (-> self enemy-flags))
(if (-> self nav)
(enemy-method-100 self)
(enemy-method-103 self)
)
)
(when *target*
(if *target*
(look-at!
(-> *target* neck)
(the-as vector (-> obj root-override2 root-prim prim-core))
(if (logtest? (-> obj enemy-flags) (enemy-flag use-notice-distance))
(the-as vector (-> self root-override2 root-prim prim-core))
(if (logtest? (-> self enemy-flags) (enemy-flag use-notice-distance))
'attacking
)
obj
self
)
)
)
(when (nonzero? (-> obj neck))
(when (nonzero? (-> self neck))
(cond
((logtest? (-> obj enemy-flags) (enemy-flag lock-focus))
(let ((a0-10 (handle->process (-> obj focus handle))))
((logtest? (-> self enemy-flags) (enemy-flag lock-focus))
(let ((a0-10 (handle->process (-> self focus handle))))
(if a0-10
(target-set! (-> obj neck) (get-trans (the-as process-focusable a0-10) 2))
(target-set! (-> self neck) (get-trans (the-as process-focusable a0-10) 2))
)
)
)
((logtest? (-> obj enemy-flags) (enemy-flag death-start))
(let ((s5-1 (-> obj move-dest))
((logtest? (-> self enemy-flags) (enemy-flag death-start))
(let ((s5-1 (-> self move-dest))
(v1-47 (vector<-cspace!
(new 'stack-no-clear 'vector)
(-> obj node-list data (-> obj enemy-info-override neck-joint))
(-> self node-list data (-> self enemy-info-override neck-joint))
)
)
(a1-6 (new 'stack-no-clear 'vector))
@ -275,39 +275,39 @@
(set! (-> a1-6 y) (-> v1-47 y))
(set! (-> a1-6 z) (-> s5-1 z))
(set! (-> a1-6 w) 1.0)
(target-set! (-> obj neck) a1-6)
(target-set! (-> self neck) a1-6)
)
)
)
)
(when (and (logtest? (-> obj enemy-flags) (enemy-flag attackable-backup))
(>= (- (-> pp clock frame-counter) (-> obj auto-reset-penetrate-time)) (seconds 0.1))
(when (and (logtest? (-> self enemy-flags) (enemy-flag attackable-backup))
(>= (- (-> pp clock frame-counter) (-> self auto-reset-penetrate-time)) (seconds 0.1))
)
(logclear! (-> obj enemy-flags) (enemy-flag attackable-backup))
(set! (-> obj root-override2 penetrated-by) (get-penetrate-info obj))
(logclear! (-> self enemy-flags) (enemy-flag attackable-backup))
(set! (-> self root-override2 penetrated-by) (get-penetrate-info self))
(let ((v1-62 0))
(if (logtest? (penetrate knocked) (-> obj root-override2 penetrate-using))
(if (logtest? (penetrate knocked) (-> self root-override2 penetrate-using))
(set! v1-62 (logior (shl 1 32) v1-62))
)
(set! (-> obj root-override2 penetrate-using) (the-as penetrate v1-62))
(set! (-> self root-override2 penetrate-using) (the-as penetrate v1-62))
)
)
(if (logtest? (-> obj enemy-flags) (enemy-flag look-at-focus))
(enemy-method-136 obj)
(if (logtest? (-> self enemy-flags) (enemy-flag look-at-focus))
(enemy-method-136 self)
)
(if (logtest? (enemy-flag trackable-backup directed-ready) (-> obj enemy-flags))
(enemy-method-54 obj)
(if (logtest? (enemy-flag trackable-backup directed-ready) (-> self enemy-flags))
(enemy-method-54 self)
)
(let ((v1-73 (-> obj restore-nav-radius-time)))
(let ((v1-73 (-> self restore-nav-radius-time)))
(when (nonzero? v1-73)
(when (>= (-> pp clock frame-counter) v1-73)
(set! (-> obj restore-nav-radius-time) 0)
(set! (-> obj root-override2 nav-radius) (-> obj nav-radius-backup))
(set! (-> self restore-nav-radius-time) 0)
(set! (-> self root-override2 nav-radius) (-> self nav-radius-backup))
)
)
)
(if (and *debug-segment* (-> obj enemy-info-override debug-draw-neck) (nonzero? (-> obj neck)))
(joint-mod-debug-draw (-> obj neck))
(if (and *debug-segment* (-> self enemy-info-override debug-draw-neck) (nonzero? (-> self neck)))
(joint-mod-debug-draw (-> self neck))
)
(ja-post)
0