From 64baff96149d45212c996fca18cc29adbd6e4233 Mon Sep 17 00:00:00 2001
From: rocket <117489720+1rocket1@users.noreply.github.com>
Date: Fri, 3 Apr 2026 18:41:47 +0000
Subject: [PATCH] jak2/jak3: fix overlapping layers on non-playable Hellcats
(#4161)
fix for issue #4120, along with other areas this happens in Jak II and
Jak 3
**Before**
**After**
**Before**
**After**
---------
Co-authored-by: Matt Dallmeyer
---
goal_src/jak2/levels/atoll/atoll-obs.gc | 4 ++++
goal_src/jak2/levels/atoll/atoll-scenes.gc | 2 ++
goal_src/jak2/levels/castle/boss/castle-scenes.gc | 1 +
goal_src/jak2/levels/city/ctywide-scenes.gc | 1 +
goal_src/jak2/levels/common/warp-gate.gc | 1 +
goal_src/jak3/levels/desert/oasis/oasis-defense.gc | 4 ++++
goal_src/jak3/levels/intro/intro-scenes.gc | 1 +
goal_src/jak3/levels/tower/tower-scenes.gc | 1 +
8 files changed, 15 insertions(+)
diff --git a/goal_src/jak2/levels/atoll/atoll-obs.gc b/goal_src/jak2/levels/atoll/atoll-obs.gc
index 60cf98367c..a7ad37cf0f 100644
--- a/goal_src/jak2/levels/atoll/atoll-obs.gc
+++ b/goal_src/jak2/levels/atoll/atoll-obs.gc
@@ -1116,6 +1116,10 @@
(defstate idle (atoll-hellcat)
:virtual #t
+ ;; og:preserve-this fixes overlapping Hellcat layers
+ :enter (behavior ()
+ (setup-masks (-> self draw) #x1fe #x1fe)
+ )
:code sleep-code
)
diff --git a/goal_src/jak2/levels/atoll/atoll-scenes.gc b/goal_src/jak2/levels/atoll/atoll-scenes.gc
index 2da9a075d1..afac99e3ea 100644
--- a/goal_src/jak2/levels/atoll/atoll-scenes.gc
+++ b/goal_src/jak2/levels/atoll/atoll-scenes.gc
@@ -1239,6 +1239,7 @@
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
+ :no-draw-seg #x1fe ;; og:preserve-this fixes overlapping Hellcat layers
)
)
:load-point-obj "atoll-movie"
@@ -1634,6 +1635,7 @@
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
+ :no-draw-seg #x1fe ;; og:preserve-this fixes overlapping Hellcat layers
)
(new 'static 'scene-actor
:name "palmpilot"
diff --git a/goal_src/jak2/levels/castle/boss/castle-scenes.gc b/goal_src/jak2/levels/castle/boss/castle-scenes.gc
index 473aaec7b9..2edc199b4b 100644
--- a/goal_src/jak2/levels/castle/boss/castle-scenes.gc
+++ b/goal_src/jak2/levels/castle/boss/castle-scenes.gc
@@ -779,6 +779,7 @@
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
+ :no-draw-seg #x1fe ;; og:preserve-this fixes overlapping Hellcat layers
)
(new 'static 'scene-actor
:name "particleman"
diff --git a/goal_src/jak2/levels/city/ctywide-scenes.gc b/goal_src/jak2/levels/city/ctywide-scenes.gc
index 60b37acee7..01d37cc6d2 100644
--- a/goal_src/jak2/levels/city/ctywide-scenes.gc
+++ b/goal_src/jak2/levels/city/ctywide-scenes.gc
@@ -779,6 +779,7 @@
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
+ :no-draw-seg #x1fe ;; og:preserve-this fixes overlapping Hellcat layers
)
(new 'static 'scene-actor
:name "crimson-guard-highres"
diff --git a/goal_src/jak2/levels/common/warp-gate.gc b/goal_src/jak2/levels/common/warp-gate.gc
index 443cd82861..50624e7de1 100644
--- a/goal_src/jak2/levels/common/warp-gate.gc
+++ b/goal_src/jak2/levels/common/warp-gate.gc
@@ -1772,6 +1772,7 @@
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
+ :no-draw-seg #x1fe ;; og:preserve-this fixes overlapping Hellcat layers
)
)
:load-point-obj "ctyport-air-train-ashelin"
diff --git a/goal_src/jak3/levels/desert/oasis/oasis-defense.gc b/goal_src/jak3/levels/desert/oasis/oasis-defense.gc
index 291a429db6..c090c3d3e8 100644
--- a/goal_src/jak3/levels/desert/oasis/oasis-defense.gc
+++ b/goal_src/jak3/levels/desert/oasis/oasis-defense.gc
@@ -773,6 +773,10 @@
(defstate idle (desoasis-hellcat)
:virtual #t
+ ;; og:preserve-this fixes overlapping Hellcat layers
+ :enter (behavior ()
+ (setup-masks (-> self draw) #x1fe #x1fe)
+ )
:code sleep-code
)
diff --git a/goal_src/jak3/levels/intro/intro-scenes.gc b/goal_src/jak3/levels/intro/intro-scenes.gc
index c3eb9731f8..54e2a75cbc 100644
--- a/goal_src/jak3/levels/intro/intro-scenes.gc
+++ b/goal_src/jak3/levels/intro/intro-scenes.gc
@@ -5524,6 +5524,7 @@
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
+ :no-draw-seg #x1fe ;; og:preserve-this fixes overlapping Hellcat layers
)
(new 'static 'scene-actor
:name "hellcat-lowres-fma"
diff --git a/goal_src/jak3/levels/tower/tower-scenes.gc b/goal_src/jak3/levels/tower/tower-scenes.gc
index 1a7e16c3ce..13f8ac2dfd 100644
--- a/goal_src/jak3/levels/tower/tower-scenes.gc
+++ b/goal_src/jak3/levels/tower/tower-scenes.gc
@@ -440,6 +440,7 @@
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
+ :no-draw-seg #x1fe ;; og:preserve-this fixes overlapping Hellcat layers
)
(new 'static 'scene-actor
:name "sidekick-highres"