From fedd27ebfd8532ede1842837ef15127463a4a8c6 Mon Sep 17 00:00:00 2001 From: Alex <7569514+ManDude@users.noreply.github.com> Date: Sun, 12 Apr 2026 01:57:55 +0200 Subject: [PATCH] Adjust projectile focus fix to also work on semi-solid targets + fix tracking issues with dm-tentacles (#4207) Fixes #4177 Also additionally fixes the setting not doing anything to the terraformer tentacles. Tentacles are no longer considered 'solid' when dead while the setting is on. --- goal_src/jak3/engine/collide/find-nearest.gc | 2 +- goal_src/jak3/engine/target/gun/gun-util.gc | 2 +- goal_src/jak3/levels/desert/boss/deswalk-obs.gc | 9 +++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/goal_src/jak3/engine/collide/find-nearest.gc b/goal_src/jak3/engine/collide/find-nearest.gc index eab4591745..9e4ec2176c 100644 --- a/goal_src/jak3/engine/collide/find-nearest.gc +++ b/goal_src/jak3/engine/collide/find-nearest.gc @@ -102,7 +102,7 @@ (let* ((s2-1 (get-trans (the-as process-focusable s3-0) 3)) (f30-0 (- (vector-vector-distance (-> gp-0 point) s2-1) (-> s2-1 w))) ) - (when (#if PC_PORT (and (nonzero? (-> s0-0 root-prim prim-core collide-as)) (or (not (-> *pc-settings* fix-projectile-focus)) (logtest? (collide-action solid) (-> s0-0 root-prim prim-core action)))) + (when (#if PC_PORT (and (nonzero? (-> s0-0 root-prim prim-core collide-as)) (or (not (-> *pc-settings* fix-projectile-focus)) (logtest? (collide-action solid semi-solid) (-> s0-0 root-prim prim-core action)))) (nonzero? (-> s0-0 root-prim prim-core collide-as))) (let ((s0-1 (search-info-flag))) 0.0 diff --git a/goal_src/jak3/engine/target/gun/gun-util.gc b/goal_src/jak3/engine/target/gun/gun-util.gc index 79f81ef1f6..8bc526b6ad 100644 --- a/goal_src/jak3/engine/target/gun/gun-util.gc +++ b/goal_src/jak3/engine/target/gun/gun-util.gc @@ -6,7 +6,7 @@ ;; dgos: GAME (defmacro pc-check-focus-fix (focusable) - `(#if PC_PORT (or (not (-> *pc-settings* fix-projectile-focus)) (logtest? (collide-action solid) (-> ,focusable root root-prim prim-core action))) #t)) + `(#if PC_PORT (or (not (-> *pc-settings* fix-projectile-focus)) (logtest? (collide-action solid semi-solid) (-> ,focusable root root-prim prim-core action))) #t)) ;; DECOMP BEGINS diff --git a/goal_src/jak3/levels/desert/boss/deswalk-obs.gc b/goal_src/jak3/levels/desert/boss/deswalk-obs.gc index 9f5e8fe592..96da254683 100644 --- a/goal_src/jak3/levels/desert/boss/deswalk-obs.gc +++ b/goal_src/jak3/levels/desert/boss/deswalk-obs.gc @@ -1245,8 +1245,17 @@ (dm-tentacle-adjust-collision 12 0) (logclear! (-> self flags) (dm-tentacle-flag dt7)) (set! (-> self hit-points) 10.0) + (#when PC_PORT ;; og:preserve-this fix dead tentacles being targetable + (set! (-> self root root-prim prim-core action) (collide-action solid))) ) :code sleep-code + :post (behavior () + (#when PC_PORT ;; og:preserve-this fix dead tentacles being targetable + (if (or (not (-> *pc-settings* fix-projectile-focus))) + (set! (-> self root root-prim prim-core action) (collide-action solid)) + (set! (-> self root root-prim prim-core action) (collide-action))) + ) + ) ) (defstate strike (dm-tentacle)