From 15ef95e036e178120e6a23ee79184e75cf25b796 Mon Sep 17 00:00:00 2001 From: ManDude <7569514+ManDude@users.noreply.github.com> Date: Tue, 20 Jun 2023 04:25:03 +0100 Subject: [PATCH] fix orb in sewers being unobtainable after starting sewer escort (+ some more type fixes) (#2757) Total hack but it does seem to work correctly. Fixes #2756 --- decompiler/config/jak2/all-types.gc | 4 +- .../jak2/engine/common_objs/collectables.gc | 14 ++-- goal_src/jak2/engine/common_objs/crates.gc | 4 +- goal_src/jak2/engine/entity/entity-h.gc | 4 +- goal_src/jak2/engine/entity/entity.gc | 14 ++-- goal_src/jak2/engine/game/game-info.gc | 2 +- goal_src/jak2/engine/game/task/game-task.gc | 2 +- goal_src/jak2/engine/level/level-info.gc | 5 ++ goal_src/jak2/engine/nav/nav-control.gc | 2 +- goal_src/jak2/engine/nav/nav-mesh.gc | 2 +- .../process-drawable/process-drawable.gc | 4 +- .../jak2/levels/drill_platform/drill-obs.gc | 2 +- .../jak2/levels/drill_platform/drill-obs2.gc | 6 +- goal_src/jak2/levels/sewer/sewer-obs.gc | 80 +++++++++++++++++++ goal_src/jak2/levels/strip/strip-obs.gc | 2 +- goal_src/jak2/pc/debug/default-menu-pc.gc | 8 +- goal_src/jak2/pc/debug/entity-debug.gc | 23 +++++- .../engine/common_objs/collectables_REF.gc | 14 ++-- .../jak2/engine/common_objs/crates_REF.gc | 4 +- .../jak2/engine/entity/entity-h_REF.gc | 2 +- .../jak2/engine/entity/entity_REF.gc | 14 ++-- .../jak2/engine/game/game-info_REF.gc | 2 +- .../jak2/engine/game/task/game-task_REF.gc | 2 +- .../jak2/engine/nav/nav-control_REF.gc | 2 +- .../reference/jak2/engine/nav/nav-mesh_REF.gc | 2 +- .../process-drawable/process-drawable_REF.gc | 4 +- .../levels/drill_platform/drill-obs2_REF.gc | 6 +- .../levels/drill_platform/drill-obs_REF.gc | 2 +- .../jak2/levels/strip/strip-obs_REF.gc | 2 +- 29 files changed, 169 insertions(+), 65 deletions(-) diff --git a/decompiler/config/jak2/all-types.gc b/decompiler/config/jak2/all-types.gc index bdeaea32c9..a13bbb23c4 100644 --- a/decompiler/config/jak2/all-types.gc +++ b/decompiler/config/jak2/all-types.gc @@ -20253,7 +20253,7 @@ :bitfield #t :type uint16 (bit-0 0) ;; blocks birth - (bit-1 1) ;; dead? error? + (error 1) (dead 2) (no-kill 3) (bit-4 4) @@ -20279,7 +20279,7 @@ (user-uint8 uint8 8 :offset 0) ;; guessed by decompiler (status entity-perm-status :offset 8) ;; entity-perm-status (dummy uint8 1 :offset 10) ;; guessed by decompiler - (task uint8 :offset 11) ;; game-task + (task game-task :offset 11) ;; game-task (aid actor-id :offset 12) ;; guessed by decompiler (quad uint128 :offset 0) ) diff --git a/goal_src/jak2/engine/common_objs/collectables.gc b/goal_src/jak2/engine/common_objs/collectables.gc index d48ab0a195..613f7fa359 100644 --- a/goal_src/jak2/engine/common_objs/collectables.gc +++ b/goal_src/jak2/engine/common_objs/collectables.gc @@ -818,7 +818,7 @@ (defstate blocked (collectable) :virtual #t :trans (behavior () - (if (task-complete? *game-info* (the-as game-task (-> self entity extra perm task))) + (if (task-complete? *game-info* (-> self entity extra perm task)) (go-virtual wait) ) (none) @@ -1615,11 +1615,11 @@ This commonly includes things such as: (if (when a0-11 (let ((a0-12 (-> a0-11 extra perm task))) (if a0-12 - (zero? a0-12) + (= a0-12 (game-task none)) ) ) ) - (set! (-> obj entity extra perm task) (the-as uint 1)) + (set! (-> obj entity extra perm task) (game-task complete)) ) ) (initialize-skeleton @@ -1930,10 +1930,10 @@ This commonly includes things such as: (let ((v1-22 (-> obj entity))) (if (and (-> obj entity) (-> v1-22 extra perm task) - (zero? (-> v1-22 extra perm task)) + (= (-> v1-22 extra perm task) (game-task none)) (type-type? (-> v1-22 etype) crate) ) - (set! (-> obj entity extra perm task) (the-as uint 1)) + (set! (-> obj entity extra perm task) (game-task complete)) ) ) (initialize-skeleton @@ -2024,11 +2024,11 @@ This commonly includes things such as: (if (when a0-11 (let ((a0-12 (-> a0-11 extra perm task))) (if a0-12 - (zero? a0-12) + (= a0-12 (game-task none)) ) ) ) - (set! (-> obj entity extra perm task) (the-as uint 1)) + (set! (-> obj entity extra perm task) (game-task complete)) ) ) (initialize-skeleton diff --git a/goal_src/jak2/engine/common_objs/crates.gc b/goal_src/jak2/engine/common_objs/crates.gc index 6a736633c8..2716c639cc 100644 --- a/goal_src/jak2/engine/common_objs/crates.gc +++ b/goal_src/jak2/engine/common_objs/crates.gc @@ -1137,11 +1137,11 @@ (if (when a0-6 (let ((a0-7 (-> a0-6 extra perm task))) (if a0-7 - (zero? a0-7) + (= a0-7 (game-task none)) ) ) ) - (set! (-> self entity extra perm task) (the-as uint 1)) + (set! (-> self entity extra perm task) (game-task complete)) ) ) ) diff --git a/goal_src/jak2/engine/entity/entity-h.gc b/goal_src/jak2/engine/entity/entity-h.gc index 3d1cc3837e..8fbe03783b 100644 --- a/goal_src/jak2/engine/entity/entity-h.gc +++ b/goal_src/jak2/engine/entity/entity-h.gc @@ -9,7 +9,7 @@ :bitfield #t :type uint16 (bit-0 0) ;; blocks birth - (bit-1 1) + (error 1) (dead 2) (no-kill 3) (bit-4 4) @@ -80,7 +80,7 @@ (user-uint8 uint8 8 :offset 0) (status entity-perm-status :offset 8) (dummy uint8 1 :offset 10) - (task uint8 :offset 11) + (task game-task :offset 11) (aid actor-id :offset 12) (quad uint128 :offset 0) ) diff --git a/goal_src/jak2/engine/entity/entity.gc b/goal_src/jak2/engine/entity/entity.gc index a60633c791..f6eb7a8e7c 100644 --- a/goal_src/jak2/engine/entity/entity.gc +++ b/goal_src/jak2/engine/entity/entity.gc @@ -706,11 +706,11 @@ ) (cond ((= (-> obj type) entity-actor) - (set! (-> obj extra perm task) (the-as uint (-> obj task))) + (set! (-> obj extra perm task) (-> obj task)) (set! (-> obj extra vis-id) (-> obj vis-id)) ) (else - (set! (-> obj extra perm task) (the-as uint 0)) + (set! (-> obj extra perm task) (game-task none)) (set! (-> obj extra vis-id) 0) 0 ) @@ -1105,7 +1105,7 @@ (bucket-id debug-no-zbuf1) (res-lump-struct sv-16 'name string) (-> (the-as process-drawable arg0) root trans) - (if (logtest? (-> sv-16 extra perm status) (entity-perm-status bit-0 bit-1)) + (if (logtest? (-> sv-16 extra perm status) (entity-perm-status bit-0 error)) (font-color red) (font-color white) ) @@ -1250,7 +1250,7 @@ (set! sv-32 (the-as int (bucket-id debug-no-zbuf1))) (let ((a2-4 (res-lump-struct s2-0 'name structure)) (a3-2 sv-20) - (t0-1 (if (logtest? (-> s2-0 extra perm status) (entity-perm-status bit-0 bit-1)) + (t0-1 (if (logtest? (-> s2-0 extra perm status) (entity-perm-status bit-0 error)) 1 5 ) @@ -1621,7 +1621,7 @@ ;; WARN: Return type mismatch symbol vs none. (defun entity-deactivate-handler ((arg0 process) (arg1 entity-actor)) (when (= arg0 (-> arg1 extra process)) - (logclear! (-> arg1 extra perm status) (entity-perm-status bit-1 no-kill)) + (logclear! (-> arg1 extra perm status) (entity-perm-status error no-kill)) (set! (-> arg1 extra process) #f) ) (none) @@ -1928,7 +1928,7 @@ ((= arg0 'game) (logclear! (-> obj status) arg1) ) - ((task-complete? *game-info* (the-as game-task (-> obj task))) + ((task-complete? *game-info* (-> obj task)) (logclear! (-> obj status) (logior (if (logtest? (-> obj status) (entity-perm-status bit-4)) 524 0 @@ -2319,7 +2319,7 @@ (defun entity-task-complete-off ((arg0 entity)) (let ((v1-0 (-> arg0 extra))) - (if (!= (-> v1-0 perm task) 1) + (if (!= (-> v1-0 perm task) (game-task complete)) (logclear! (-> *game-info* task-perm-list data (-> v1-0 perm task) status) (entity-perm-status complete)) ) ) diff --git a/goal_src/jak2/engine/game/game-info.gc b/goal_src/jak2/engine/game/game-info.gc index d56928d5b5..60954cd88a 100644 --- a/goal_src/jak2/engine/game/game-info.gc +++ b/goal_src/jak2/engine/game/game-info.gc @@ -1166,7 +1166,7 @@ ) (when actor-perm (set! (-> entity-perm quad) (-> actor-perm quad)) - (update entity-perm 'try (entity-perm-status bit-0 bit-1 dead no-kill bit-5 subtask-complete bit-9 bit-12)) + (update entity-perm 'try (entity-perm-status bit-0 error dead no-kill bit-5 subtask-complete bit-9 bit-12)) ) ) ) diff --git a/goal_src/jak2/engine/game/task/game-task.gc b/goal_src/jak2/engine/game/task/game-task.gc index b49450b7cd..5aac3cc653 100644 --- a/goal_src/jak2/engine/game/task/game-task.gc +++ b/goal_src/jak2/engine/game/task/game-task.gc @@ -12315,7 +12315,7 @@ (let ((v1-8 (new 'global 'entity-perm-array 110))) (set! (-> gp-0 task-perm-list) v1-8) (dotimes (a0-16 (-> v1-8 length)) - (set! (-> v1-8 data a0-16 task) (the-as uint a0-16)) + (set! (-> v1-8 data a0-16 task) (the-as game-task a0-16)) ) (logior! (-> v1-8 data 1 status) (entity-perm-status complete)) ) diff --git a/goal_src/jak2/engine/level/level-info.gc b/goal_src/jak2/engine/level/level-info.gc index d3d0f6f116..adf59612b4 100644 --- a/goal_src/jak2/engine/level/level-info.gc +++ b/goal_src/jak2/engine/level/level-info.gc @@ -14643,6 +14643,11 @@ (set! (-> demo memory-mode) (load-buffer-mode small-edge)) ) +(#when PC_PORT + (set! (-> sewesc activate-func) 'sewesc-activate) + (set! (-> sewesc deactivate-func) 'sewesc-deactivate) + ) + (define *level-load-list* '(default-level intro demo diff --git a/goal_src/jak2/engine/nav/nav-control.gc b/goal_src/jak2/engine/nav/nav-control.gc index c870db2b91..e801b5aa3a 100644 --- a/goal_src/jak2/engine/nav/nav-control.gc +++ b/goal_src/jak2/engine/nav/nav-control.gc @@ -193,7 +193,7 @@ Note that this doesn't actually return the nav-control, but instead adds this pr ) (when (not arg1) (if (-> arg0 entity) - (logior! (-> arg0 entity extra perm status) (entity-perm-status bit-1)) + (logior! (-> arg0 entity extra perm status) (entity-perm-status error)) ) (go process-drawable-art-error "no nav-mesh") (return 0) diff --git a/goal_src/jak2/engine/nav/nav-mesh.gc b/goal_src/jak2/engine/nav/nav-mesh.gc index d8d3f311cd..68f84fd31f 100644 --- a/goal_src/jak2/engine/nav/nav-mesh.gc +++ b/goal_src/jak2/engine/nav/nav-mesh.gc @@ -243,7 +243,7 @@ ) (else (if (-> arg0 entity) - (logior! (-> arg0 entity extra perm status) (entity-perm-status bit-1)) + (logior! (-> arg0 entity extra perm status) (entity-perm-status error)) ) #f ) diff --git a/goal_src/jak2/engine/process-drawable/process-drawable.gc b/goal_src/jak2/engine/process-drawable/process-drawable.gc index 4bae6bc3f7..3c26311485 100644 --- a/goal_src/jak2/engine/process-drawable/process-drawable.gc +++ b/goal_src/jak2/engine/process-drawable/process-drawable.gc @@ -600,7 +600,7 @@ :code (behavior ((arg0 string)) (format 0 "ART ERROR: ~A for ~A~%" arg0 self) (if (-> self entity) - (logior! (-> self entity extra perm status) (entity-perm-status bit-1)) + (logior! (-> self entity extra perm status) (entity-perm-status error)) ) (let* ((s5-0 (-> self root)) (v1-6 (if (type? s5-0 collide-shape) @@ -1832,7 +1832,7 @@ (if arg2 (set! (-> s4-0 options) (actor-option auto-pickup)) ) - (when (and (nonzero? s5-0) (not (task-complete? *game-info* (the-as game-task s5-0)))) + (when (and (nonzero? s5-0) (not (task-complete? *game-info* s5-0))) (label cfg-12) (birth-pickup-at-point gp-0 (pickup-type fuel-cell) (the float s5-0) #f self s4-0) (when (not (-> self child)) diff --git a/goal_src/jak2/levels/drill_platform/drill-obs.gc b/goal_src/jak2/levels/drill_platform/drill-obs.gc index 225eb37d3c..5eda058739 100644 --- a/goal_src/jak2/levels/drill_platform/drill-obs.gc +++ b/goal_src/jak2/levels/drill_platform/drill-obs.gc @@ -1344,7 +1344,7 @@ This commonly includes things such as: (logior! (-> obj button-status) (button-status button-status-3)) (set! (-> obj event-going-down) 'trigger) (set! (-> obj event-going-up) 'untrigger) - (if (and (= (-> obj entity extra perm task) 61) + (if (and (= (-> obj entity extra perm task) (game-task drill-mech)) (task-node-closed? (game-task-node drill-mech-smash-consoles)) (= (-> obj timeout) 0.0) ) diff --git a/goal_src/jak2/levels/drill_platform/drill-obs2.gc b/goal_src/jak2/levels/drill_platform/drill-obs2.gc index 330e5bba19..5b0302b80b 100644 --- a/goal_src/jak2/levels/drill_platform/drill-obs2.gc +++ b/goal_src/jak2/levels/drill_platform/drill-obs2.gc @@ -193,7 +193,9 @@ (defmethod set-flipped-state drill-flip-step ((obj drill-flip-step)) "Set the state of the platform based on the completion of the drill-mech task." - (if (and (= (-> obj entity extra perm task) 61) (task-node-closed? (game-task-node drill-mech-smash-consoles))) + (if (and (= (-> obj entity extra perm task) (game-task drill-mech)) + (task-node-closed? (game-task-node drill-mech-smash-consoles)) + ) (process-entity-status! obj (entity-perm-status bit-12) #t) ) (if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status bit-12))) @@ -899,7 +901,7 @@ This commonly includes things such as: (init-collision! obj) (process-drawable-from-entity! obj arg0) (skel-init! obj) - (set! (-> obj entity extra perm task) (the-as uint 26)) + (set! (-> obj entity extra perm task) (game-task drill-eggs)) (set! (-> obj notify-actor) (entity-actor-lookup (-> obj entity) 'alt-actor 0)) (set! sv-16 (new 'static 'res-tag)) (let ((v1-6 (res-lump-data (-> obj entity) 'actor-groups pointer :tag-ptr (& sv-16)))) diff --git a/goal_src/jak2/levels/sewer/sewer-obs.gc b/goal_src/jak2/levels/sewer/sewer-obs.gc index 982bdf459f..5448ba4f1b 100644 --- a/goal_src/jak2/levels/sewer/sewer-obs.gc +++ b/goal_src/jak2/levels/sewer/sewer-obs.gc @@ -1177,3 +1177,83 @@ This commonly includes things such as: 0 (none) ) + +(#when PC_PORT +;; added to fix missing skill + +;; serves as a template +(define *skill-sewesc-from-sewer* (new 'static 'entity-perm + :task (game-task complete) + :status (entity-perm-status) + :aid #x8917)) + +(defun get-skill-sewesc-from-sewer-perm () + "returns the entity perm for the skill-sewesc-from-sewer process." + (let ((game-perms (-> *game-info* perm-list)) + (skill-perm (actor-perm *game-info* (-> *skill-sewesc-from-sewer* aid)))) + (cond + (skill-perm + skill-perm) + ((< (-> game-perms length) (-> game-perms allocated-length)) + (set! (-> game-perms data (-> game-perms length) quad) (-> *skill-sewesc-from-sewer* quad)) + (+! (-> game-perms length) 1) + (-> game-perms data (1- (-> game-perms length)))) + ) + ) + ) + +(defun sewesc-deactivate () + "deactivate func for sewesc. + added." + + (kill-by-name "skill-sewesc-from-sewer-tracker" *active-pool*) + (kill-by-name "skill-sewesc-from-sewer" *active-pool*) + + (let ((perm-to-use (get-skill-sewesc-from-sewer-perm))) + (logclear! (-> perm-to-use status) (entity-perm-status error)) + ) + + 0) + +(defun sewesc-activate () + "activate func for sewesc. + added." + + (process-spawn-function process :name "skill-sewesc-from-sewer-tracker" + (lambda :behavior process () + (suspend) + (suspend) + (loop + + (let ((perm-to-use (get-skill-sewesc-from-sewer-perm))) + + (cond + ((logtest? (-> perm-to-use status) (entity-perm-status dead)) + ;; skill is already collected + ) + ((process-by-name "skill-sewesc-from-sewer" *active-pool*) + ;; skill is alive + (logior! (-> perm-to-use status) (entity-perm-status error))) + ((logtest? (-> perm-to-use status) (entity-perm-status error)) + ;; skill spawned and is now collected + (logior! (-> perm-to-use status) (entity-perm-status dead))) + (else + ;; skill is not alive and not collected + (let ((fact (new 'stack 'fact-info self (pickup-type eco-pill-random) (-> *FACT-bank* default-eco-pill-green-inc)))) + (logior! (-> fact options) (actor-option fade-out)) + (set! (-> fact fade-time) 0) + (awhen (birth-pickup-at-point (new 'static 'vector :x 5341306.5 :y -358441.1562 :z 2525436.5000 :w 1.0) + (pickup-type skill) 1.0 #f self fact) + (format 0 "sewesc -> skill birthed~%") + (set! (-> it 0 name) "skill-sewesc-from-sewer") + (logior! (-> perm-to-use status) (entity-perm-status error)) ;; mark as been spawned once + ) + ) + ) + ) + ) + + (suspend)) + )) + ) +) diff --git a/goal_src/jak2/levels/strip/strip-obs.gc b/goal_src/jak2/levels/strip/strip-obs.gc index 0d27ea5ee8..9f21d36e56 100644 --- a/goal_src/jak2/levels/strip/strip-obs.gc +++ b/goal_src/jak2/levels/strip/strip-obs.gc @@ -868,7 +868,7 @@ This commonly includes things such as: (kill-and-free-particles (-> self part)) (stop! (-> self sound)) (set! (-> self sound spec) (static-sound-spec "eco-plume2" :fo-min 5 :fo-max 90)) - (while (not (task-complete? *game-info* (the-as game-task (-> self entity extra perm task)))) + (while (not (task-complete? *game-info* (-> self entity extra perm task))) (spawn (-> self part2) (-> self root-override trans)) (update! (-> self sound)) (suspend) diff --git a/goal_src/jak2/pc/debug/default-menu-pc.gc b/goal_src/jak2/pc/debug/default-menu-pc.gc index 66a5ee921b..5a5d9f68ff 100644 --- a/goal_src/jak2/pc/debug/default-menu-pc.gc +++ b/goal_src/jak2/pc/debug/default-menu-pc.gc @@ -204,11 +204,11 @@ (= (-> *entity-debug-inspect* entity) e) ) -(define *entity-debug-include-part-spawner* #t) (define *entity-debug-part-spawner-list* '(stadiumb-part)) -(define *entity-debug-include-cameras* #t) -(define *entity-debug-include-nav-meshes* #t) -(define *entity-debug-include-race-meshes* #t) +(define *entity-debug-include-part-spawner* #f) +(define *entity-debug-include-cameras* #f) +(define *entity-debug-include-nav-meshes* #f) +(define *entity-debug-include-race-meshes* #f) (defun build-entity-list () "Fill the entity pick menu" ;; clear old list diff --git a/goal_src/jak2/pc/debug/entity-debug.gc b/goal_src/jak2/pc/debug/entity-debug.gc index a472bbb58f..b88a57d0c3 100644 --- a/goal_src/jak2/pc/debug/entity-debug.gc +++ b/goal_src/jak2/pc/debug/entity-debug.gc @@ -59,10 +59,25 @@ (string-format "etype: ~A~%vis: ~D task: ~S" (-> actor etype) (-> actor vis-id) (game-task->string (-> actor task))) debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle)) (+! cur-y (* LINE_HEIGHT 2)) - (format (clear *debug-temp-string*) "(~S)" (begin (bit-enum->string task-mask (-> actor kill-mask) (clear *temp-string*)) *temp-string*)) - (draw-string-xy (string-format "kill-mask: ~S" *debug-temp-string*) - debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle)) - (+! cur-y (* LINE_HEIGHT 1)) + + (when (and (nonzero? (-> actor extra)) (-> actor extra)) + (draw-string-xy (string-format "perm: #x~X task: ~S" (-> actor extra perm user-uint64) (game-task->string (-> actor extra perm task))) + debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle)) + (+! cur-y (* LINE_HEIGHT 1)) + (when (nonzero? (-> actor extra perm status)) + (format (clear *debug-temp-string*) "(~S)" (begin (bit-enum->string entity-perm-status (-> actor extra perm status) (clear *temp-string*)) *temp-string*)) + (draw-string-xy (string-format "perm-status: ~S" *debug-temp-string*) + debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle)) + (+! cur-y (* LINE_HEIGHT 1)) + ) + ) + + (when (nonzero? (-> actor kill-mask)) + (format (clear *debug-temp-string*) "(~S)" (begin (bit-enum->string task-mask (-> actor kill-mask) (clear *temp-string*)) *temp-string*)) + (draw-string-xy (string-format "kill-mask: ~S" *debug-temp-string*) + debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle)) + (+! cur-y (* LINE_HEIGHT 1)) + ) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/common_objs/collectables_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/collectables_REF.gc index e35b56e0bc..6cefbe24f4 100644 --- a/test/decompiler/reference/jak2/engine/common_objs/collectables_REF.gc +++ b/test/decompiler/reference/jak2/engine/common_objs/collectables_REF.gc @@ -883,7 +883,7 @@ (defstate blocked (collectable) :virtual #t :trans (behavior () - (if (task-complete? *game-info* (the-as game-task (-> self entity extra perm task))) + (if (task-complete? *game-info* (-> self entity extra perm task)) (go-virtual wait) ) (none) @@ -1814,11 +1814,11 @@ This commonly includes things such as: (if (when a0-11 (let ((a0-12 (-> a0-11 extra perm task))) (if a0-12 - (zero? a0-12) + (= a0-12 (game-task none)) ) ) ) - (set! (-> obj entity extra perm task) (the-as uint 1)) + (set! (-> obj entity extra perm task) (game-task complete)) ) ) (initialize-skeleton @@ -2155,10 +2155,10 @@ This commonly includes things such as: (let ((v1-22 (-> obj entity))) (if (and (-> obj entity) (-> v1-22 extra perm task) - (zero? (-> v1-22 extra perm task)) + (= (-> v1-22 extra perm task) (game-task none)) (type-type? (-> v1-22 etype) crate) ) - (set! (-> obj entity extra perm task) (the-as uint 1)) + (set! (-> obj entity extra perm task) (game-task complete)) ) ) (initialize-skeleton @@ -2266,11 +2266,11 @@ This commonly includes things such as: (if (when a0-11 (let ((a0-12 (-> a0-11 extra perm task))) (if a0-12 - (zero? a0-12) + (= a0-12 (game-task none)) ) ) ) - (set! (-> obj entity extra perm task) (the-as uint 1)) + (set! (-> obj entity extra perm task) (game-task complete)) ) ) (initialize-skeleton diff --git a/test/decompiler/reference/jak2/engine/common_objs/crates_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/crates_REF.gc index 48a61961ed..cb17ee2f01 100644 --- a/test/decompiler/reference/jak2/engine/common_objs/crates_REF.gc +++ b/test/decompiler/reference/jak2/engine/common_objs/crates_REF.gc @@ -1198,11 +1198,11 @@ (if (when a0-6 (let ((a0-7 (-> a0-6 extra perm task))) (if a0-7 - (zero? a0-7) + (= a0-7 (game-task none)) ) ) ) - (set! (-> self entity extra perm task) (the-as uint 1)) + (set! (-> self entity extra perm task) (game-task complete)) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/entity/entity-h_REF.gc b/test/decompiler/reference/jak2/engine/entity/entity-h_REF.gc index ed0d296a9c..04d7e3771c 100644 --- a/test/decompiler/reference/jak2/engine/entity/entity-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/entity/entity-h_REF.gc @@ -23,7 +23,7 @@ (user-uint8 uint8 8 :offset 0) (status entity-perm-status :offset 8) (dummy uint8 1 :offset 10) - (task uint8 :offset 11) + (task game-task :offset 11) (aid actor-id :offset 12) (quad uint128 :offset 0) ) diff --git a/test/decompiler/reference/jak2/engine/entity/entity_REF.gc b/test/decompiler/reference/jak2/engine/entity/entity_REF.gc index f6a11beeae..65cd196b5d 100644 --- a/test/decompiler/reference/jak2/engine/entity/entity_REF.gc +++ b/test/decompiler/reference/jak2/engine/entity/entity_REF.gc @@ -831,11 +831,11 @@ ) (cond ((= (-> obj type) entity-actor) - (set! (-> obj extra perm task) (the-as uint (-> obj task))) + (set! (-> obj extra perm task) (-> obj task)) (set! (-> obj extra vis-id) (-> obj vis-id)) ) (else - (set! (-> obj extra perm task) (the-as uint 0)) + (set! (-> obj extra perm task) (game-task none)) (set! (-> obj extra vis-id) 0) 0 ) @@ -1308,7 +1308,7 @@ (bucket-id debug-no-zbuf1) (res-lump-struct sv-16 'name string) (-> (the-as process-drawable arg0) root trans) - (if (logtest? (-> sv-16 extra perm status) (entity-perm-status bit-0 bit-1)) + (if (logtest? (-> sv-16 extra perm status) (entity-perm-status bit-0 error)) (font-color red) (font-color white) ) @@ -1456,7 +1456,7 @@ (set! sv-32 318) (let ((a2-4 (res-lump-struct s2-0 'name structure)) (a3-2 sv-20) - (t0-1 (if (logtest? (-> s2-0 extra perm status) (entity-perm-status bit-0 bit-1)) + (t0-1 (if (logtest? (-> s2-0 extra perm status) (entity-perm-status bit-0 error)) 1 5 ) @@ -1835,7 +1835,7 @@ ;; WARN: Return type mismatch symbol vs none. (defun entity-deactivate-handler ((arg0 process) (arg1 entity-actor)) (when (= arg0 (-> arg1 extra process)) - (logclear! (-> arg1 extra perm status) (entity-perm-status bit-1 no-kill)) + (logclear! (-> arg1 extra perm status) (entity-perm-status error no-kill)) (set! (-> arg1 extra process) #f) ) (none) @@ -2154,7 +2154,7 @@ ((= arg0 'game) (logclear! (-> obj status) arg1) ) - ((task-complete? *game-info* (the-as game-task (-> obj task))) + ((task-complete? *game-info* (-> obj task)) (logclear! (-> obj status) (logior (if (logtest? (-> obj status) (entity-perm-status bit-4)) 524 0 @@ -2541,7 +2541,7 @@ ;; WARN: Return type mismatch int vs none. (defun entity-task-complete-off ((arg0 entity)) (let ((v1-0 (-> arg0 extra))) - (if (!= (-> v1-0 perm task) 1) + (if (!= (-> v1-0 perm task) (game-task complete)) (logclear! (-> *game-info* task-perm-list data (-> v1-0 perm task) status) (entity-perm-status complete)) ) ) diff --git a/test/decompiler/reference/jak2/engine/game/game-info_REF.gc b/test/decompiler/reference/jak2/engine/game/game-info_REF.gc index 4d779b3f43..17ebde20ac 100644 --- a/test/decompiler/reference/jak2/engine/game/game-info_REF.gc +++ b/test/decompiler/reference/jak2/engine/game/game-info_REF.gc @@ -1059,7 +1059,7 @@ ) (when actor-perm (set! (-> entity-perm quad) (-> actor-perm quad)) - (update entity-perm 'try (entity-perm-status bit-0 bit-1 dead no-kill bit-5 subtask-complete bit-9 bit-12)) + (update entity-perm 'try (entity-perm-status bit-0 error dead no-kill bit-5 subtask-complete bit-9 bit-12)) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/game/task/game-task_REF.gc b/test/decompiler/reference/jak2/engine/game/task/game-task_REF.gc index 7766ad327d..a607014e8c 100644 --- a/test/decompiler/reference/jak2/engine/game/task/game-task_REF.gc +++ b/test/decompiler/reference/jak2/engine/game/task/game-task_REF.gc @@ -12311,7 +12311,7 @@ (let ((v1-8 (new 'global 'entity-perm-array 110))) (set! (-> gp-0 task-perm-list) v1-8) (dotimes (a0-16 (-> v1-8 length)) - (set! (-> v1-8 data a0-16 task) (the-as uint a0-16)) + (set! (-> v1-8 data a0-16 task) (the-as game-task a0-16)) ) (logior! (-> v1-8 data 1 status) (entity-perm-status complete)) ) diff --git a/test/decompiler/reference/jak2/engine/nav/nav-control_REF.gc b/test/decompiler/reference/jak2/engine/nav/nav-control_REF.gc index f465d040f3..83b8a6aeb3 100644 --- a/test/decompiler/reference/jak2/engine/nav/nav-control_REF.gc +++ b/test/decompiler/reference/jak2/engine/nav/nav-control_REF.gc @@ -230,7 +230,7 @@ Note that this doesn't actually return the nav-control, but instead adds this pr ) (when (not arg1) (if (-> arg0 entity) - (logior! (-> arg0 entity extra perm status) (entity-perm-status bit-1)) + (logior! (-> arg0 entity extra perm status) (entity-perm-status error)) ) (go process-drawable-art-error "no nav-mesh") (return 0) diff --git a/test/decompiler/reference/jak2/engine/nav/nav-mesh_REF.gc b/test/decompiler/reference/jak2/engine/nav/nav-mesh_REF.gc index e8ad13e772..7ca8b4100d 100644 --- a/test/decompiler/reference/jak2/engine/nav/nav-mesh_REF.gc +++ b/test/decompiler/reference/jak2/engine/nav/nav-mesh_REF.gc @@ -249,7 +249,7 @@ ) (else (if (-> arg0 entity) - (logior! (-> arg0 entity extra perm status) (entity-perm-status bit-1)) + (logior! (-> arg0 entity extra perm status) (entity-perm-status error)) ) #f ) diff --git a/test/decompiler/reference/jak2/engine/process-drawable/process-drawable_REF.gc b/test/decompiler/reference/jak2/engine/process-drawable/process-drawable_REF.gc index defe7aa01b..16c4902479 100644 --- a/test/decompiler/reference/jak2/engine/process-drawable/process-drawable_REF.gc +++ b/test/decompiler/reference/jak2/engine/process-drawable/process-drawable_REF.gc @@ -576,7 +576,7 @@ ) :code (behavior ((arg0 string)) (if (-> self entity) - (logior! (-> self entity extra perm status) (entity-perm-status bit-1)) + (logior! (-> self entity extra perm status) (entity-perm-status error)) ) (let* ((s5-0 (-> self root)) (v1-6 (if (type? s5-0 collide-shape) @@ -1867,7 +1867,7 @@ (if arg2 (set! (-> s4-0 options) (actor-option auto-pickup)) ) - (when (and (nonzero? s5-0) (not (task-complete? *game-info* (the-as game-task s5-0)))) + (when (and (nonzero? s5-0) (not (task-complete? *game-info* s5-0))) (label cfg-12) (birth-pickup-at-point gp-0 (pickup-type fuel-cell) (the float s5-0) #f self s4-0) (when (not (-> self child)) diff --git a/test/decompiler/reference/jak2/levels/drill_platform/drill-obs2_REF.gc b/test/decompiler/reference/jak2/levels/drill_platform/drill-obs2_REF.gc index 23cb0ffe9f..98146e4f08 100644 --- a/test/decompiler/reference/jak2/levels/drill_platform/drill-obs2_REF.gc +++ b/test/decompiler/reference/jak2/levels/drill_platform/drill-obs2_REF.gc @@ -210,7 +210,9 @@ ;; WARN: Return type mismatch int vs none. (defmethod set-flipped-state drill-flip-step ((obj drill-flip-step)) "Set the state of the platform based on the completion of the drill-mech task." - (if (and (= (-> obj entity extra perm task) 61) (task-node-closed? (game-task-node drill-mech-smash-consoles))) + (if (and (= (-> obj entity extra perm task) (game-task drill-mech)) + (task-node-closed? (game-task-node drill-mech-smash-consoles)) + ) (process-entity-status! obj (entity-perm-status bit-12) #t) ) (if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status bit-12))) @@ -1012,7 +1014,7 @@ This commonly includes things such as: (init-collision! obj) (process-drawable-from-entity! obj arg0) (skel-init! obj) - (set! (-> obj entity extra perm task) (the-as uint 26)) + (set! (-> obj entity extra perm task) (game-task drill-eggs)) (set! (-> obj notify-actor) (entity-actor-lookup (-> obj entity) 'alt-actor 0)) (set! sv-16 (new 'static 'res-tag)) (let ((v1-6 (res-lump-data (-> obj entity) 'actor-groups pointer :tag-ptr (& sv-16)))) diff --git a/test/decompiler/reference/jak2/levels/drill_platform/drill-obs_REF.gc b/test/decompiler/reference/jak2/levels/drill_platform/drill-obs_REF.gc index fc2d2bff08..51c9849b7f 100644 --- a/test/decompiler/reference/jak2/levels/drill_platform/drill-obs_REF.gc +++ b/test/decompiler/reference/jak2/levels/drill_platform/drill-obs_REF.gc @@ -1531,7 +1531,7 @@ This commonly includes things such as: (logior! (-> obj button-status) (button-status button-status-3)) (set! (-> obj event-going-down) 'trigger) (set! (-> obj event-going-up) 'untrigger) - (if (and (= (-> obj entity extra perm task) 61) + (if (and (= (-> obj entity extra perm task) (game-task drill-mech)) (task-node-closed? (game-task-node drill-mech-smash-consoles)) (= (-> obj timeout) 0.0) ) diff --git a/test/decompiler/reference/jak2/levels/strip/strip-obs_REF.gc b/test/decompiler/reference/jak2/levels/strip/strip-obs_REF.gc index 4a82367ec8..eb1c06770c 100644 --- a/test/decompiler/reference/jak2/levels/strip/strip-obs_REF.gc +++ b/test/decompiler/reference/jak2/levels/strip/strip-obs_REF.gc @@ -977,7 +977,7 @@ This commonly includes things such as: (kill-and-free-particles (-> self part)) (stop! (-> self sound)) (set! (-> self sound spec) (static-sound-spec "eco-plume2" :fo-min 5 :fo-max 90)) - (while (not (task-complete? *game-info* (the-as game-task (-> self entity extra perm task)))) + (while (not (task-complete? *game-info* (-> self entity extra perm task))) (spawn (-> self part2) (-> self root-override trans)) (update! (-> self sound)) (suspend)