[jak2] minor decomp cleanup + add force actors and sprite pc hacks (#2291)

I didn't actually visually notice much of a difference with these hacks
unlike in Jak 1, but I also avoided checking the missions thoroughly
since the game crashes very often right now.
This commit is contained in:
ManDude
2023-02-28 00:35:57 +00:00
committed by GitHub
parent c3310e1833
commit 1d0a5ade8d
52 changed files with 640 additions and 518 deletions
+1 -1
View File
@@ -1257,7 +1257,7 @@
(defbehavior enemy-init-by-other enemy ((arg0 process-drawable) (arg1 transformq))
(let ((a1-1 (-> arg1 scale x)))
(if a1-1
(process-entity-set! self (the-as entity-actor a1-1))
(process-entity-set! self (the-as entity a1-1))
)
)
(if (-> arg1 scale y)
+4 -4
View File
@@ -4,11 +4,11 @@
;; definition for symbol *traffic-manager*, type process
(define *traffic-manager* (the-as process #f))
;; definition for symbol *ctywide-entity*, type object
(define *ctywide-entity* (the-as object #f))
;; definition for symbol *ctywide-entity*, type entity
(define *ctywide-entity* (the-as entity #f))
;; definition for symbol *lwide-entity*, type object
(define *lwide-entity* (the-as object #f))
;; definition for symbol *lwide-entity*, type entity
(define *lwide-entity* (the-as entity #f))
;; definition for symbol *race-vehicle-entity*, type entity-actor
(define *race-vehicle-entity* (the-as entity-actor #f))
+1 -1
View File
@@ -2699,7 +2699,7 @@ This commonly includes things such as:
(logclear! (-> obj flags) (collectable-flag fadeout))
)
(((pickup-type board))
(process-entity-set! obj (the-as entity-actor #f))
(process-entity-set! obj (the-as entity #f))
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-board" (the-as (pointer uint32) #f)))
+1 -1
View File
@@ -496,7 +496,7 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
(defbehavior projectile-init-by-other projectile ((arg0 projectile-init-by-other-params))
(stack-size-set! (-> self main-thread) 512)
(logclear! (-> self mask) (process-mask actor-pause))
(process-entity-set! self (the-as entity-actor (-> arg0 ent)))
(process-entity-set! self (-> arg0 ent))
(set! (-> self charge-level) (-> arg0 charge))
(set! (-> self options) (-> arg0 options))
(set! (-> self notify-handle) (-> arg0 notify-handle))
+1 -1
View File
@@ -657,7 +657,7 @@ This commonly includes things such as:
;; INFO: Used lq/sq
;; WARN: Return type mismatch object vs none.
(defbehavior judge-init-by-other judge ((arg0 vector) (arg1 uint))
(process-entity-set! self (the-as entity-actor #f))
(process-entity-set! self (the-as entity #f))
(set! (-> self score) arg1)
(setup-collision self)
(init self)
+2 -2
View File
@@ -516,8 +516,8 @@
)
;; definition for function process-entity-set!
(defun process-entity-set! ((arg0 process) (arg1 entity-actor))
(set! (-> arg0 entity) arg1)
(defun process-entity-set! ((arg0 process) (arg1 entity))
(set! (-> arg0 entity) (the-as entity-actor arg1))
(if arg1
(set! (-> arg0 level) (-> arg1 extra level))
(set! (-> arg0 level) (-> *level* default-level))
+1 -1
View File
@@ -1906,7 +1906,7 @@
)
)
(if a1-6
(process-entity-set! self (the-as entity-actor a1-6))
(process-entity-set! self a1-6)
)
)
)
+1 -1
View File
@@ -1761,7 +1761,7 @@
;; WARN: Using new Jak 2 rtype-of
(defbehavior scene-player-init scene-player ((arg0 object) (arg1 symbol) (arg2 string))
"`object` arg can be an `(array scene)`, `pair of scene` or a `scene`"
(process-entity-set! self (the-as entity-actor #f))
(process-entity-set! self (the-as entity #f))
(stack-size-set! (-> self main-thread) 512)
(set! (-> self root) (new 'process 'trsqv))
(case (rtype-of arg0)
+1 -1
View File
@@ -1171,7 +1171,7 @@
(let ((s4-1 (-> self entity))
(s3-0 (-> self level))
)
(process-entity-set! self (the-as entity-actor (-> self mech entity)))
(process-entity-set! self (the-as entity (-> self mech entity)))
(let ((s2-0 (get-process *16k-dead-pool* manipy #x4000)))
(set! (-> self manipy)
(the-as
+1 -1
View File
@@ -14,7 +14,7 @@
(max-user-count uint8 :offset-assert 12)
(user-count uint8 :offset-assert 13)
(width uint8 :offset-assert 14)
(flags uint8 :offset-assert 15)
(flags nav-branch-flags :offset-assert 15)
)
:method-count-assert 21
:size-assert #x10
+22 -22
View File
@@ -248,7 +248,7 @@
(city-level-info-method-12 (_type_ vector nav-branch vector) vector 12)
(lookup-cell-by-position (_type_ vector) vis-cell 13)
(get-first-cell-in-box (_type_ vis-grid-box) vis-cell 14)
(sphere-in-grid? (_type_ int int) symbol 15)
(sphere-in-grid? (_type_ vector int) symbol 15)
(callback-on-nav-segments-in-sphere (_type_ vector int traffic-find-segment-struct (function traffic-find-segment-struct nav-segment none)) none 16)
(update-suppressions-from-traffic-engine (_type_ traffic-engine) none 17)
(city-level-info-method-18 (_type_) none 18)
@@ -561,18 +561,18 @@
;; definition of type traffic-object-type-info
(deftype traffic-object-type-info (structure)
((flags uint8 :offset-assert 0)
(target-count int8 :offset-assert 1)
(active-count int8 :offset-assert 2)
(inactive-count int8 :offset-assert 3)
(reserve-count uint16 :offset-assert 4)
(killed-count uint16 :offset-assert 6)
(want-count int8 :offset-assert 8)
(tracker-index uint8 :offset-assert 9)
(parking-spot-prob uint8 :offset-assert 10)
(guard-type uint8 :offset-assert 11)
(array (pointer handle) :offset-assert 12)
(level level :offset-assert 16)
((flags traffic-type-flags :offset-assert 0)
(target-count int8 :offset-assert 1)
(active-count int8 :offset-assert 2)
(inactive-count int8 :offset-assert 3)
(reserve-count uint16 :offset-assert 4)
(killed-count uint16 :offset-assert 6)
(want-count int8 :offset-assert 8)
(tracker-index uint8 :offset-assert 9)
(parking-spot-prob uint8 :offset-assert 10)
(guard-type uint8 :offset-assert 11)
(array (pointer handle) :offset-assert 12)
(level symbol :offset-assert 16)
)
:method-count-assert 9
:size-assert #x14
@@ -722,7 +722,7 @@
(stop-alarm-sound (_type_) none 11)
(debug-unused (_type_) none 12)
(add-object (_type_ traffic-type process) none 13)
(sphere-in-loaded-city-infos? (_type_ int vector) symbol 14)
(sphere-in-loaded-city-infos? (_type_ vector int) symbol 14)
(activate-one-citizen (_type_ nav-segment float) none 15)
(activate-one-vehicle (_type_ nav-segment float) none 16)
(can-dest-be-used? (_type_ nav-branch) symbol 17)
@@ -742,7 +742,7 @@
(decrease-alert-level (_type_ int) none 31)
(set-alert-level (_type_ int) none 32)
(set-max-alert-level (_type_ int) none 33)
(set-alert-duration (_type_ int) none 34)
(set-alert-duration (_type_ time-frame) none 34)
(get-alert-level (_type_) int 35)
(get-target (_type_) target 36)
(set-object-target-level (_type_ int float) none 37)
@@ -769,18 +769,18 @@
(set-object-auto-activate (_type_ int object) none 58)
(debug-check-proc-in-tracker (_type_ process int) none 59)
(kill-traffic-sphere (_type_ sphere) none 60)
(level-loaded (_type_ level) none 61)
(level-killed (_type_ level) none 62)
(level-link (_type_ level) none 61)
(level-unlink (_type_ level) none 62)
(traffic-engine-method-63 (_type_) none 63)
(traffic-engine-method-64 (_type_) none 64)
(handle-new-vis-cell (_type_ vis-cell) none 65)
(update-sync-from-frame-counter (_type_) none 66)
(per-frame-guard-update (_type_) none 67)
(per-frame-activate-deactivate (_type_) none 68)
(per-frame-danger-update (_type_) none 69)
(update-guards (_type_) none 67)
(update-traffic-amount (_type_) none 68)
(update-danger (_type_) none 69)
(update-danger-from-target (_type_) none 70)
(per-frame-alert-update (_type_) none 71)
(per-frame-suppressor-update (_type_) none 72)
(update-alert-state (_type_) none 71)
(update-suppressor (_type_) none 72)
(recompute-supressions (_type_) none 73)
)
)
+77 -73
View File
@@ -636,9 +636,9 @@ Process is recycled and moved to reserved, if it deactivates."
(when (and (> (-> v1-2 inactive-count) 0)
(> (-> v1-2 reserve-count) 0)
(< (-> v1-2 active-count) (-> v1-2 target-count))
(logtest? (-> v1-2 flags) 4)
(logtest? (-> v1-2 flags) 8)
(or (not (logtest? (-> v1-2 flags) 1))
(logtest? (-> v1-2 flags) (traffic-type-flags trtflags-2))
(logtest? (-> v1-2 flags) (traffic-type-flags trtflags-3))
(or (not (logtest? (-> v1-2 flags) (traffic-type-flags trtflags-0)))
(zero? (logand (-> obj traffic alert-state flags) (traffic-alert-flag alert-ending)))
)
)
@@ -789,7 +789,7 @@ Process is recycled and moved to reserved, if it deactivates."
(let ((v1-4 (-> obj inactive-object-array)))
(dotimes (a0-5 21)
(let ((a1-3 (-> obj object-type-info-array a0-5)))
(set! (-> a1-3 flags) (the-as uint 6))
(set! (-> a1-3 flags) (traffic-type-flags trtflags-1 trtflags-2))
(set! (-> a1-3 inactive-count) 0)
(set! (-> a1-3 active-count) 0)
(set! (-> a1-3 target-count) 20)
@@ -802,7 +802,7 @@ Process is recycled and moved to reserved, if it deactivates."
)
)
(set! (-> obj object-type-info-array 6 guard-type) (the-as uint 0))
(set! (-> obj object-type-info-array 20 level) (the-as level 'ctywide))
(set! (-> obj object-type-info-array 20 level) 'ctywide)
(let ((v1-8 11))
(dotimes (a0-6 10)
(set! (-> obj object-type-info-array v1-8 tracker-index) (the-as uint 0))
@@ -845,7 +845,7 @@ Process is recycled and moved to reserved, if it deactivates."
(dotimes (s5-2 (-> *level* length))
(let ((a1-12 (-> *level* level s5-2)))
(if (= (-> a1-12 status) 'active)
(level-loaded obj a1-12)
(level-link obj a1-12)
)
)
)
@@ -864,7 +864,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 61 of type traffic-engine
;; WARN: Return type mismatch int vs none.
(defmethod level-loaded traffic-engine ((obj traffic-engine) (arg0 level))
(defmethod level-link traffic-engine ((obj traffic-engine) (arg0 level))
"Call after loading a level to patch the data in the bsp"
(format #t "traffic-engine: level birth ~S~%" (-> arg0 nickname))
(cond
@@ -998,7 +998,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 62 of type traffic-engine
;; WARN: Return type mismatch int vs none.
(defmethod level-killed traffic-engine ((obj traffic-engine) (arg0 level))
(defmethod level-unlink traffic-engine ((obj traffic-engine) (arg0 level))
"Call after removing a level. Kills processes and unlinks nav"
(let ((s4-0 (-> arg0 bsp city-level-info nav-graph)))
(dotimes (v1-2 2)
@@ -1257,11 +1257,11 @@ Process is recycled and moved to reserved, if it deactivates."
)
;; definition for method 14 of type traffic-engine
(defmethod sphere-in-loaded-city-infos? traffic-engine ((obj traffic-engine) (arg0 int) (arg1 vector))
(defmethod sphere-in-loaded-city-infos? traffic-engine ((obj traffic-engine) (arg0 vector) (arg1 int))
(dotimes (s3-0 2)
(let ((v1-3 (-> obj level-data-array s3-0)))
(when (nonzero? (-> v1-3 city-info))
(if (sphere-in-grid? (-> v1-3 city-info) arg0 (the-as int arg1))
(if (sphere-in-grid? (-> v1-3 city-info) arg0 arg1)
(return #t)
)
)
@@ -1273,7 +1273,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 17 of type traffic-engine
(defmethod can-dest-be-used? traffic-engine ((obj traffic-engine) (arg0 nav-branch))
(let ((v1-0 (-> arg0 src-node)))
(or (logtest? (-> arg0 flags) 1)
(or (logtest? (-> arg0 flags) (nav-branch-flags nabflags-0))
(logtest? (-> v1-0 flags) (nav-node-flag-byte blocked))
(not (-> arg0 dest-node))
(>= (-> arg0 user-count) (-> arg0 max-user-count))
@@ -1387,44 +1387,44 @@ Process is recycled and moved to reserved, if it deactivates."
(let ((v1-1 (-> obj danger-sphere-array)))
(set! (-> v1-1 0 handle) (process->handle s5-0))
(let ((a0-4 (-> s5-0 focus-status))
(f0-0 0.0)
(f1-0 0.0)
(f3-0 1.0)
(f2-0 0.0)
(notify-radius 0.0)
(danger-radius 0.0)
(decay-rate 1.0)
(danger-level 0.0)
)
(cond
((logtest? (focus-status mech dark shooting) a0-4)
(set! f0-0 245760.0)
(set! f1-0 163840.0)
(set! f2-0 1.0)
(set! f3-0 0.0)
(set! notify-radius 245760.0)
(set! danger-radius 163840.0)
(set! danger-level 1.0)
(set! decay-rate 0.0)
)
((logtest? (focus-status gun) a0-4)
(set! f0-0 102400.0)
(set! f1-0 61440.0)
(set! f2-0 0.5)
(set! f3-0 0.5)
(set! notify-radius 102400.0)
(set! danger-radius 61440.0)
(set! danger-level 0.5)
(set! decay-rate 0.5)
)
((logtest? (focus-status board pilot) a0-4)
(set! f0-0 40960.0)
(set! f1-0 24576.0)
(set! f2-0 0.5)
(set! notify-radius 40960.0)
(set! danger-radius 24576.0)
(set! danger-level 0.5)
)
((logtest? a0-4 (focus-status dangerous))
(set! f0-0 61440.0)
(set! f1-0 40960.0)
(set! f3-0 0.0)
(set! f2-0 0.5)
(set! notify-radius 61440.0)
(set! danger-radius 40960.0)
(set! decay-rate 0.0)
(set! danger-level 0.5)
)
(else
(set! f3-0 1.5)
(set! decay-rate 1.5)
)
)
(set! (-> v1-1 0 decay-rate) (* 0.1 f3-0))
(when (< (-> v1-1 0 danger-level) f2-0)
(set! (-> v1-1 0 danger-level) f2-0)
(set! (-> v1-1 0 sphere r) f1-0)
(set! (-> v1-1 0 notify-radius) f0-0)
(set! (-> v1-1 0 decay-rate) (* 0.1 decay-rate))
(when (< (-> v1-1 0 danger-level) danger-level)
(set! (-> v1-1 0 danger-level) danger-level)
(set! (-> v1-1 0 sphere r) danger-radius)
(set! (-> v1-1 0 notify-radius) notify-radius)
)
)
(let ((f0-1 (-> v1-1 0 sphere r)))
@@ -1552,7 +1552,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 69 of type traffic-engine
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod per-frame-danger-update traffic-engine ((obj traffic-engine))
(defmethod update-danger traffic-engine ((obj traffic-engine))
"see what's dangerous and make people avoid it."
(update-danger-from-target obj)
(dotimes (s5-0 (-> obj danger-sphere-count))
@@ -1667,8 +1667,8 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 68 of type traffic-engine
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod per-frame-activate-deactivate traffic-engine ((obj traffic-engine))
"per-frame activate and deactivate processes."
(defmethod update-traffic-amount traffic-engine ((obj traffic-engine))
"kills inactive traffic and spawns more if needed."
(local-vars (sv-48 int) (sv-64 nav-segment))
(set! (-> obj object-hash object-count) 0)
(let* ((v1-1 (-> obj object-hash))
@@ -1725,7 +1725,7 @@ Process is recycled and moved to reserved, if it deactivates."
(set! (-> s5-0 quad) (-> v1-33 trans quad))
(set! (-> s5-0 w) (-> v1-33 root-prim prim-core world-sphere w))
)
(sphere-in-loaded-city-infos? obj (the-as int s5-0) (the-as vector 0))
(sphere-in-loaded-city-infos? obj s5-0 0)
)
(set! (-> (the-as vehicle s3-0) traffic-hash-id)
(spatial-hash-method-39 (-> obj object-hash) s5-0 (the-as hash-object-info s3-0))
@@ -1755,7 +1755,7 @@ Process is recycled and moved to reserved, if it deactivates."
(set! (-> s5-0 quad) (-> v1-54 trans quad))
(set! (-> s5-0 w) (-> v1-54 root-prim prim-core world-sphere w))
)
(sphere-in-loaded-city-infos? obj (the-as int s5-0) (the-as vector 1))
(sphere-in-loaded-city-infos? obj s5-0 1)
)
(spatial-hash-method-39 (-> obj object-hash) s5-0 (the-as hash-object-info s3-1))
)
@@ -1835,7 +1835,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; WARN: Return type mismatch int vs none.
(defmethod update-traffic traffic-engine ((obj traffic-engine))
(update-sync-from-frame-counter obj)
(per-frame-suppressor-update obj)
(update-suppressor obj)
(let ((s5-0 (new 'stack-no-clear 'bounding-box)))
(set-vector!
(-> s5-0 min)
@@ -1862,11 +1862,11 @@ Process is recycled and moved to reserved, if it deactivates."
)
(update-grid-for-objects-in-box (-> obj object-hash) 253 (-> s5-0 min) (-> s5-0 max))
)
(per-frame-activate-deactivate obj)
(update-traffic-amount obj)
(set! (-> obj alert-state guard-aim-count) 0)
(per-frame-alert-update obj)
(per-frame-guard-update obj)
(per-frame-danger-update obj)
(update-alert-state obj)
(update-guards obj)
(update-danger obj)
0
(none)
)
@@ -2438,7 +2438,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 34 of type traffic-engine
;; WARN: Return type mismatch int vs none.
(defmethod set-alert-duration traffic-engine ((obj traffic-engine) (arg0 int))
(defmethod set-alert-duration traffic-engine ((obj traffic-engine) (arg0 time-frame))
(set! (-> obj alert-state duration) (the-as uint arg0))
0
(none)
@@ -2765,7 +2765,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 67 of type traffic-engine
;; WARN: Return type mismatch int vs none.
(defmethod per-frame-guard-update traffic-engine ((obj traffic-engine))
(defmethod update-guards traffic-engine ((obj traffic-engine))
(dotimes (v1-0 6)
(set! (-> obj alert-state guard-type-info-array v1-0 count) 0)
)
@@ -2899,7 +2899,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 71 of type traffic-engine
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod per-frame-alert-update traffic-engine ((obj traffic-engine))
(defmethod update-alert-state traffic-engine ((obj traffic-engine))
(with-pp
(if (and (logtest? (-> obj alert-state flags) (traffic-alert-flag target-jak)) *target*)
(set! (-> obj alert-state target-status-array 0 handle) (process->handle *target*))
@@ -3064,7 +3064,7 @@ Process is recycled and moved to reserved, if it deactivates."
*target*
)
(for-all-active-processes obj (lambda ((arg0 process-focusable) (arg1 traffic-object-type-info))
(if (logtest? (-> arg1 flags) 1)
(if (logtest? (-> arg1 flags) (traffic-type-flags trtflags-0))
(send-event arg0 'alert-begin *target*)
)
(none)
@@ -3074,7 +3074,7 @@ Process is recycled and moved to reserved, if it deactivates."
)
(else
(for-all-active-processes obj (lambda ((arg0 process-focusable) (arg1 traffic-object-type-info))
(if (logtest? (-> arg1 flags) 1)
(if (logtest? (-> arg1 flags) (traffic-type-flags trtflags-0))
(send-event arg0 'alert-end)
)
(none)
@@ -3103,54 +3103,56 @@ Process is recycled and moved to reserved, if it deactivates."
(logclear! (-> v1-6 0 flags) (traffic-target-flag force-visible))
)
(set-target-level obj 1.0)
(set-alert-duration obj 9000)
(set-alert-duration obj (seconds 30))
(set-max-alert-level obj 4)
(let ((v1-13 42))
(dotimes (a0-7 21)
(let ((a1-6 (-> obj object-type-info-array a0-7)))
(set! (-> a1-6 flags) (the-as uint 6))
(set! (-> a1-6 flags) (traffic-type-flags trtflags-1 trtflags-2))
(set! (-> a1-6 reserve-count) (the-as uint (max 1000 (min #xfde8 (* 1000 (-> a1-6 want-count))))))
(set! (-> a1-6 killed-count) (the-as uint 0))
(set! (-> a1-6 parking-spot-prob)
(the-as uint (if (and (zero? (-> a1-6 tracker-index)) (zero? (logand (-> a1-6 flags) 1)))
v1-13
0
)
)
(the-as
uint
(if (and (zero? (-> a1-6 tracker-index)) (zero? (logand (-> a1-6 flags) (traffic-type-flags trtflags-0))))
v1-13
0
)
)
)
)
)
)
(let ((v1-16 (-> obj object-type-info-array 6)))
(logior! (-> v1-16 flags) 1)
(logior! (-> v1-16 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-17 (-> obj object-type-info-array 7)))
(logior! (-> v1-17 flags) 1)
(logior! (-> v1-17 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-18 (-> obj object-type-info-array 18)))
(logior! (-> v1-18 flags) 1)
(logior! (-> v1-18 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-19 (-> obj object-type-info-array 19)))
(logior! (-> v1-19 flags) 1)
(logior! (-> v1-19 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-20 (-> obj object-type-info-array 20)))
(logior! (-> v1-20 flags) 1)
(logior! (-> v1-20 flags) (traffic-type-flags trtflags-0))
)
(let ((v1-21 (-> obj object-type-info-array 5)))
(set! (-> v1-21 target-count) 0)
(set! (-> v1-21 flags) (logand -7 (-> v1-21 flags)))
(logclear! (-> v1-21 flags) (traffic-type-flags trtflags-1 trtflags-2))
)
(let ((v1-22 (-> obj object-type-info-array 3)))
(set! (-> v1-22 target-count) 0)
(set! (-> v1-22 flags) (logand -5 (-> v1-22 flags)))
(logclear! (-> v1-22 flags) (traffic-type-flags trtflags-2))
)
(let ((v1-23 (-> obj object-type-info-array 4)))
(set! (-> v1-23 target-count) 0)
(set! (-> v1-23 flags) (logand -5 (-> v1-23 flags)))
(logclear! (-> v1-23 flags) (traffic-type-flags trtflags-2))
)
(let ((v1-24 (-> obj object-type-info-array 17)))
(set! (-> v1-24 target-count) 0)
(set! (-> v1-24 flags) (logand -7 (-> v1-24 flags)))
(logclear! (-> v1-24 flags) (traffic-type-flags trtflags-1 trtflags-2))
)
(dotimes (v1-25 6)
(let ((a0-28 (-> obj alert-state guard-type-info-array v1-25)))
@@ -3222,8 +3224,8 @@ Process is recycled and moved to reserved, if it deactivates."
(defmethod set-object-auto-activate traffic-engine ((obj traffic-engine) (arg0 int) (arg1 object))
(let ((v1-2 (-> obj object-type-info-array arg0)))
(if arg1
(logior! (-> v1-2 flags) 4)
(set! (-> v1-2 flags) (logand -5 (-> v1-2 flags)))
(logior! (-> v1-2 flags) (traffic-type-flags trtflags-2))
(logclear! (-> v1-2 flags) (traffic-type-flags trtflags-2))
)
)
0
@@ -3299,7 +3301,9 @@ Process is recycled and moved to reserved, if it deactivates."
)
(while (< (the-as uint s5-0) (the-as uint 21))
(let ((s2-0 (-> obj object-type-info-array s5-0)))
(when (and (logtest? (-> s2-0 flags) 8) (= (level-status *level* (the-as symbol (-> s2-0 level))) 'active))
(when (and (logtest? (-> s2-0 flags) (traffic-type-flags trtflags-3))
(= (level-status *level* (-> s2-0 level)) 'active)
)
(+! s3-0 (-> s2-0 parking-spot-prob))
(b! (>= (the-as uint s3-0) (the-as uint s4-0)) cfg-10)
)
@@ -3353,7 +3357,7 @@ Process is recycled and moved to reserved, if it deactivates."
;; definition for method 72 of type traffic-engine
;; WARN: Return type mismatch int vs none.
(defmethod per-frame-suppressor-update traffic-engine ((obj traffic-engine))
(defmethod update-suppressor traffic-engine ((obj traffic-engine))
(let ((v1-3 (- (-> *display* game-clock frame-counter) (-> *display* game-clock old-frame-counter))))
(dotimes (a1-3 16)
(let ((a2-2 (-> obj suppressor array a1-3)))
@@ -3415,12 +3419,12 @@ Process is recycled and moved to reserved, if it deactivates."
)
;; definition for method 15 of type city-level-info
(defmethod sphere-in-grid? city-level-info ((obj city-level-info) (arg0 int) (arg1 int))
(defmethod sphere-in-grid? city-level-info ((obj city-level-info) (arg0 vector) (arg1 int))
(let ((gp-0 #f))
(let ((s3-0 (new 'stack-no-clear 'vis-grid-box))
(s2-0 (new 'stack-no-clear 'vis-grid-box))
)
(lookup-box-for-sphere (-> obj grid-info) s2-0 (the-as vector arg0))
(lookup-box-for-sphere (-> obj grid-info) s2-0 arg0)
(set! (-> s3-0 min y) (-> s2-0 min y))
(let ((v1-6 (+ (- 1 (-> s2-0 min y)) (-> s2-0 max y))))
(b! #t cfg-13 :delay (nop!))
+103 -99
View File
@@ -10,7 +10,7 @@
;; definition of type traffic-manager
(deftype traffic-manager (process)
((traffic-engine traffic-engine :offset-assert 128)
(fast-spawn basic :offset-assert 132)
(fast-spawn symbol :offset-assert 132)
(dark-guard-ratio int32 :offset-assert 136)
(spawn-params traffic-object-spawn-params :inline :offset-assert 144)
)
@@ -21,12 +21,12 @@
(:methods
(idle () _type_ :state 14)
(active () _type_ :state 15)
(traffic-manager-method-16 (_type_) none 16)
(update (_type_) none 16)
(spawn-all (_type_) none 17)
(traffic-manager-method-18 (_type_) none 18)
(kill-all (_type_) none 19)
(traffic-manager-method-20 (_type_) none 20)
(traffic-manager-method-21 (_type_) none 21)
(kill-excess-once (_type_) none 18)
(kill-all-inactive (_type_) none 19)
(reset-and-init (_type_) none 20)
(init-params (_type_) none 21)
)
)
@@ -71,9 +71,9 @@
;; definition for method 16 of type traffic-manager
;; WARN: Return type mismatch int vs none.
(defmethod traffic-manager-method-16 traffic-manager ((obj traffic-manager))
(defmethod update traffic-manager ((obj traffic-manager))
(update-traffic (-> obj traffic-engine))
(traffic-manager-method-18 obj)
(kill-excess-once obj)
(spawn-all obj)
(if *debug-segment*
(debug-unused (-> obj traffic-engine))
@@ -94,16 +94,16 @@
;; definition for method 18 of type traffic-manager
;; WARN: Return type mismatch int vs none.
(defmethod traffic-manager-method-18 traffic-manager ((obj traffic-manager))
(let ((s5-0 0))
(while (< (the-as uint s5-0) (the-as uint 21))
(let ((v1-2 (-> obj traffic-engine object-type-info-array s5-0)))
(when (logtest? (-> v1-2 flags) 2)
(let ((a0-5 (+ (-> v1-2 active-count) (-> v1-2 inactive-count))))
(when (< (-> v1-2 want-count) a0-5)
(defmethod kill-excess-once traffic-manager ((obj traffic-manager))
(let ((type-i 0))
(while (< (the-as uint type-i) (the-as uint 21))
(let ((traffic (-> obj traffic-engine object-type-info-array type-i)))
(when (logtest? (-> traffic flags) (traffic-type-flags trtflags-1))
(let ((total-count (+ (-> traffic active-count) (-> traffic inactive-count))))
(when (< (-> traffic want-count) total-count)
(let ((a0-10 (handle->process (get-from-inactive-by-type
(-> obj traffic-engine tracker-array (-> v1-2 tracker-index))
(the-as traffic-type s5-0)
(-> obj traffic-engine tracker-array (-> traffic tracker-index))
(the-as traffic-type type-i)
)
)
)
@@ -116,7 +116,7 @@
)
)
)
(+! s5-0 1)
(+! type-i 1)
)
)
0
@@ -125,7 +125,7 @@
;; definition for method 19 of type traffic-manager
;; WARN: Return type mismatch int vs none.
(defmethod kill-all traffic-manager ((obj traffic-manager))
(defmethod kill-all-inactive traffic-manager ((obj traffic-manager))
(let ((s5-0 0))
(while (< (the-as uint s5-0) (the-as uint 21))
(let ((s4-0 (-> obj traffic-engine object-type-info-array s5-0)))
@@ -157,9 +157,9 @@
(b! #t cfg-4 :delay (nop!))
(label cfg-1)
(let ((s4-0 (-> obj traffic-engine object-type-info-array s5-0)))
(set! (-> s4-0 flags) (logand -9 (-> s4-0 flags)))
(if (= (level-status *level* (the-as symbol (-> s4-0 level))) 'active)
(logior! (-> s4-0 flags) 8)
(logclear! (-> s4-0 flags) (traffic-type-flags trtflags-3))
(if (= (level-status *level* (-> s4-0 level)) 'active)
(logior! (-> s4-0 flags) (traffic-type-flags trtflags-3))
)
)
(+! s5-0 1)
@@ -182,7 +182,11 @@
(let ((s0-0 (-> obj traffic-engine object-type-info-array s1-0)))
(let ((v1-21 (+ (-> s0-0 active-count) (-> s0-0 inactive-count))))
(b!
(not (and (logtest? (-> s0-0 flags) 2) (logtest? (-> s0-0 flags) 8) (< v1-21 (-> s0-0 want-count))))
(not (and (logtest? (-> s0-0 flags) (traffic-type-flags trtflags-1))
(logtest? (-> s0-0 flags) (traffic-type-flags trtflags-3))
(< v1-21 (-> s0-0 want-count))
)
)
cfg-29
:delay (nop!)
)
@@ -385,7 +389,7 @@
;; definition for method 20 of type traffic-manager
;; WARN: Return type mismatch int vs none.
(defmethod traffic-manager-method-20 traffic-manager ((obj traffic-manager))
(defmethod reset-and-init traffic-manager ((obj traffic-manager))
(set! (-> obj traffic-engine) *traffic-engine*)
(reset-and-init-from-manager (-> obj traffic-engine) obj)
(restore-city-speeches)
@@ -416,54 +420,54 @@
;; definition for method 21 of type traffic-manager
;; WARN: Return type mismatch int vs none.
(defmethod traffic-manager-method-21 traffic-manager ((obj traffic-manager))
(let ((s5-0 (new 'stack-no-clear 'array 'int8 21)))
(set! (-> s5-0 11) 8)
(set! (-> s5-0 12) 8)
(set! (-> s5-0 13) 8)
(set! (-> s5-0 14) 7)
(set! (-> s5-0 15) 7)
(set! (-> s5-0 16) 7)
(set! (-> s5-0 18) 4)
(set! (-> s5-0 19) 3)
(set! (-> s5-0 20) 0)
(set! (-> s5-0 0) 15)
(set! (-> s5-0 1) 15)
(set! (-> s5-0 2) 14)
(set! (-> s5-0 3) 1)
(set! (-> s5-0 4) 1)
(set! (-> s5-0 6) 9)
(set! (-> s5-0 7) 0)
(set! (-> s5-0 8) 14)
(set! (-> s5-0 9) 14)
(set! (-> s5-0 10) 14)
(set! (-> obj fast-spawn) (the-as basic *traffic-fast-spawn*))
(traffic-manager-method-20 obj)
(defmethod init-params traffic-manager ((obj traffic-manager))
(let ((traffic-want-counts (new 'stack-no-clear 'array 'int8 21)))
(set! (-> traffic-want-counts 11) 8)
(set! (-> traffic-want-counts 12) 8)
(set! (-> traffic-want-counts 13) 8)
(set! (-> traffic-want-counts 14) 7)
(set! (-> traffic-want-counts 15) 7)
(set! (-> traffic-want-counts 16) 7)
(set! (-> traffic-want-counts 18) 4)
(set! (-> traffic-want-counts 19) 3)
(set! (-> traffic-want-counts 20) 0)
(set! (-> traffic-want-counts 0) 15)
(set! (-> traffic-want-counts 1) 15)
(set! (-> traffic-want-counts 2) 14)
(set! (-> traffic-want-counts 3) 1)
(set! (-> traffic-want-counts 4) 1)
(set! (-> traffic-want-counts 6) 9)
(set! (-> traffic-want-counts 7) 0)
(set! (-> traffic-want-counts 8) 14)
(set! (-> traffic-want-counts 9) 14)
(set! (-> traffic-want-counts 10) 14)
(set! (-> obj fast-spawn) *traffic-fast-spawn*)
(reset-and-init obj)
(let ((v1-20 (-> obj traffic-engine)))
(dotimes (a0-2 21)
(set! (-> v1-20 object-type-info-array a0-2 want-count) (-> s5-0 a0-2))
(set! (-> v1-20 object-type-info-array a0-2 want-count) (-> traffic-want-counts a0-2))
)
)
)
(let ((s5-1 (-> obj spawn-params)))
(set! (-> s5-1 object-type) (traffic-type crimson-guard-1))
(set! (-> s5-1 behavior) (the-as uint 1))
(set! (-> s5-1 id) (the-as uint 0))
(set! (-> s5-1 nav-mesh) #f)
(set! (-> s5-1 nav-branch) #f)
(set! (-> s5-1 proc) #f)
(set! (-> s5-1 handle) (the-as handle #f))
(set! (-> s5-1 user-data) (the-as uint 0))
(set! (-> s5-1 flags) (the-as uint 2))
(set! (-> s5-1 guard-type) (the-as uint 7))
(vector-reset! (-> s5-1 velocity))
(vector-reset! (-> s5-1 position))
(let ((params (-> obj spawn-params)))
(set! (-> params object-type) (traffic-type crimson-guard-1))
(set! (-> params behavior) (the-as uint 1))
(set! (-> params id) (the-as uint 0))
(set! (-> params nav-mesh) #f)
(set! (-> params nav-branch) #f)
(set! (-> params proc) #f)
(set! (-> params handle) (the-as handle #f))
(set! (-> params user-data) (the-as uint 0))
(set! (-> params flags) (the-as uint 2))
(set! (-> params guard-type) (the-as uint 7))
(vector-reset! (-> params velocity))
(vector-reset! (-> params position))
(forward-up-nopitch->quaternion
(-> s5-1 rotation)
(-> params rotation)
(new 'static 'vector :z 1.0 :w 1.0)
(new 'static 'vector :y 1.0 :w 1.0)
)
(set! (-> s5-1 id) (the-as uint 1))
(set! (-> params id) (the-as uint 1))
)
(set! (-> obj dark-guard-ratio) (if (task-node-closed? (game-task-node tomb-boss-resolution))
5
@@ -510,7 +514,7 @@
)
(('set-alert-duration)
(let ((a1-8 (-> arg3 param 0)))
(set-alert-duration (-> self traffic-engine) (the-as int a1-8))
(set-alert-duration (-> self traffic-engine) (the-as time-frame a1-8))
)
)
(('deactivate-all)
@@ -647,12 +651,12 @@
)
(('level-loaded)
(let ((a1-29 (-> arg3 param 0)))
(level-loaded (-> self traffic-engine) (the-as level a1-29))
(level-link (-> self traffic-engine) (the-as level a1-29))
)
)
(('level-killed)
(let ((s5-1 (the-as object (-> arg3 param 0))))
(level-killed (-> self traffic-engine) (the-as level s5-1))
(level-unlink (-> self traffic-engine) (the-as level s5-1))
(format #t "traffic-manager : level killed ~S~%" (-> (the-as level s5-1) nickname))
)
)
@@ -666,11 +670,11 @@
(('kill-all)
(format #t "traffic-manager::kill-all~%")
(deactivate-all (-> self traffic-engine))
(kill-all self)
(kill-all-inactive self)
)
(('spawn-all)
(format #t "traffic-manager::spawn-all~%")
(set! (-> self fast-spawn) (the-as basic #t))
(set! (-> self fast-spawn) #t)
(spawn-all self)
)
(('set-density-factor)
@@ -707,7 +711,7 @@
(defbehavior traffic-manager-init-by-other traffic-manager ()
(stack-size-set! (-> self main-thread) 128)
(ctywide-entity-hack)
(traffic-manager-method-21 self)
(init-params self)
(add-setting! 'task-mask 'clear 0 #x4000)
(set! (-> self event-hook) traffic-manager-event-handler)
(rigid-body-queue-manager-spawn *traffic-rigid-body-queue* self)
@@ -753,7 +757,7 @@
:event traffic-manager-event-handler
:code (the-as (function none :behavior traffic-manager) sleep-code)
:post (behavior ()
(traffic-manager-method-16 self)
(update self)
(none)
)
)
@@ -812,54 +816,54 @@
(when gp-0
(case (-> arg0 name)
(('lwidea)
(set! (-> gp-0 object-type-info-array 0 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 1 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 2 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 3 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 4 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 0 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 1 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 2 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 3 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 4 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 5 level) #f)
(set! (-> gp-0 object-type-info-array 6 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 6 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 7 level) #f)
(set! (-> gp-0 object-type-info-array 8 level) #f)
(set! (-> gp-0 object-type-info-array 9 level) #f)
(set! (-> gp-0 object-type-info-array 10 level) #f)
(set! (-> gp-0 object-type-info-array 11 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 12 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 13 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 14 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 15 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 16 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 11 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 12 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 13 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 14 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 15 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 16 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 17 level) #f)
(set! (-> gp-0 object-type-info-array 18 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 19 level) (the-as level 'lwidea))
(set! (-> gp-0 object-type-info-array 18 level) 'lwidea)
(set! (-> gp-0 object-type-info-array 19 level) 'lwidea)
(logior! (-> gp-0 alert-state flags) (traffic-alert-flag target-jak))
(set! *traffic-alert-level-force* #f)
)
(('lwideb)
(set! (-> gp-0 object-type-info-array 0 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 0 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 1 level) #f)
(set! (-> gp-0 object-type-info-array 2 level) #f)
(set! (-> gp-0 object-type-info-array 3 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 4 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 3 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 4 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 5 level) #f)
(set! (-> gp-0 object-type-info-array 6 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 6 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 7 level) #f)
(set! (-> gp-0 object-type-info-array 8 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 9 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 10 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 11 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 8 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 9 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 10 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 11 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 12 level) #f)
(set! (-> gp-0 object-type-info-array 13 level) #f)
(set! (-> gp-0 object-type-info-array 14 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 14 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 15 level) #f)
(set! (-> gp-0 object-type-info-array 16 level) #f)
(set! (-> gp-0 object-type-info-array 17 level) #f)
(set! (-> gp-0 object-type-info-array 18 level) (the-as level 'lwideb))
(set! (-> gp-0 object-type-info-array 18 level) 'lwideb)
(set! (-> gp-0 object-type-info-array 19 level) #f)
(logclear! (-> gp-0 alert-state flags) (traffic-alert-flag target-jak))
(set-alert-level gp-0 3)
(logior! (-> gp-0 alert-state flags) (traffic-alert-flag guard-multi-focus))
(set-alert-duration gp-0 #x6c258c00)
(set-alert-duration gp-0 (seconds 6048000))
(set! *traffic-alert-level-force* #t)
)
)
@@ -872,7 +876,7 @@
;; definition for function lwide-deactivate
;; WARN: Return type mismatch int vs none.
(defun lwide-deactivate ()
(set! *lwide-entity* (the-as object #f))
(set! *lwide-entity* #f)
(send-event *traffic-manager* 'kill-all)
0
(none)
@@ -881,7 +885,7 @@
;; definition for function ctywide-deactivate
;; WARN: Return type mismatch int vs none.
(defun ctywide-deactivate ()
(set! *ctywide-entity* (the-as object #f))
(set! *ctywide-entity* #f)
(set! *traffic-engine* #f)
(set! *trail-graph* #f)
(init *city-dead-pool* 'loading-level 0)
@@ -902,7 +906,7 @@
)
)
(else
(process-entity-set! pp (the-as entity-actor *ctywide-entity*))
(process-entity-set! pp *ctywide-entity*)
)
)
0
@@ -914,7 +918,7 @@
;; WARN: Return type mismatch int vs none.
(defun lwide-entity-hack ()
(with-pp
(process-entity-set! pp (the-as entity-actor *lwide-entity*))
(process-entity-set! pp *lwide-entity*)
0
(none)
)
+1 -1
View File
@@ -1059,7 +1059,7 @@
)
)
)
(process-entity-set! self (the-as entity-actor a1-2))
(process-entity-set! self a1-2)
)
(set-setting! 'allow-pause #f 0 0)
(set-setting! 'allow-progress #f 0 0)
+1 -1
View File
@@ -201,7 +201,7 @@
;; INFO: Used lq/sq
;; WARN: Return type mismatch object vs none.
(defbehavior canyon-lightning-thingy-init-by-other canyon-lightning-thingy ((arg0 vector) (arg1 vector))
(process-entity-set! self (the-as entity-actor #f))
(process-entity-set! self (the-as entity #f))
(set! (-> self root) (new 'process 'trsqv))
(set! (-> self root trans quad) (-> arg0 quad))
(let ((a2-1 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg1 1.0)))
+1 -1
View File
@@ -955,7 +955,7 @@
)
)
)
(process-entity-set! self (the-as entity-actor a1-2))
(process-entity-set! self a1-2)
)
(set-setting! 'allow-pause #f 0 0)
(set-setting! 'allow-progress #f 0 0)