jak3: misc fixes (#3686)

- Fix global heap display in cheat mode
- Fix `tpl-watcher` NaNs after they fire their laser (`vf0` was being
clobbered) (Fixes #3684)
- Fix `artifact-race` talkers (Fixes #3685)
This commit is contained in:
Hat Kid
2024-09-23 18:41:34 +02:00
committed by GitHub
parent f60a155c0f
commit 7de5eb9fc0
7 changed files with 388 additions and 44 deletions
@@ -422,7 +422,7 @@
)
;; definition for symbol *artifact-race-speech-list*, type (inline-array talker-speech-class)
(define *artifact-race-speech-list* (new 'static 'inline-array talker-speech-class 16
(define *artifact-race-speech-list* (new 'static 'inline-array talker-speech-class 32
(new 'static 'talker-speech-class :name "none")
(new 'static 'talker-speech-class
:name "dax128"
@@ -573,6 +573,166 @@
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax177"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x10
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax178"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x11
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax179"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x12
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax180"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x13
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax181"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x14
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax182"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x15
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax183"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x16
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax184"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x17
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax185"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x18
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax186"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x19
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax187"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x1a
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax188"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x1b
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax189"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x1c
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax190"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x1d
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax191"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x1e
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
(new 'static 'talker-speech-class
:name "dax192"
:channel (gui-channel daxter)
:flags (talker-flags tf0)
:speech #x1f
:text-duration (seconds 1)
:neg #x1
:on-close #f
:camera #f
)
)
)
@@ -1008,3 +1168,7 @@
)
)
)
+12 -8
View File
@@ -272,9 +272,9 @@
(within-outer-ring symbol)
(within-inner-ring symbol)
(ouched symbol)
(bound-cam basic)
(bound-cam string)
(trans vector :inline)
(state-time uint64)
(state-time time-frame)
(jak-in-hint-region symbol)
(watchers-vulnerable symbol)
)
@@ -408,7 +408,7 @@
(logior! (-> v1-8 status) (entity-perm-status bit-14))
)
)
(set! (-> self bound-cam) (the-as basic (-> arg3 param 0)))
(set! (-> self bound-cam) (the-as string (-> arg3 param 0)))
(set! (-> self ouched) #t)
(go-virtual until-watchers-dead)
)
@@ -470,7 +470,7 @@
:virtual #t
:event tpl-watcher-manager-ehandler
:enter (behavior ()
(set! (-> self state-time) (the-as uint (current-time)))
(set-time! (-> self state-time))
)
:trans watcher-man-trans
:code (behavior ()
@@ -511,7 +511,7 @@
)
)
)
(until (time-elapsed? (the-as int (-> self state-time)) (seconds 1))
(until (time-elapsed? (-> self state-time) (seconds 1))
(suspend)
)
(task-close! "temple-oracle-watchers-complete")
@@ -615,7 +615,7 @@
standing-down
)
(:methods
(tpl-watcher-method-32 (_type_) none)
(init-collision! (_type_) none)
)
)
@@ -1120,7 +1120,7 @@
;; definition for method 32 of type tpl-watcher
;; WARN: Return type mismatch collide-shape-moving vs none.
(defmethod tpl-watcher-method-32 ((this tpl-watcher))
(defmethod init-collision! ((this tpl-watcher))
(let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player))))
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s5-0 reaction) cshape-reaction-default)
@@ -1179,7 +1179,7 @@
(defmethod init-from-entity! ((this tpl-watcher) (arg0 entity-actor))
(local-vars (sv-16 res-tag))
(stack-size-set! (-> this main-thread) 384)
(tpl-watcher-method-32 this)
(init-collision! this)
(process-drawable-from-entity! this arg0)
(logior! (-> this mask) (process-mask enemy))
(initialize-skeleton
@@ -2235,3 +2235,7 @@
((method-of-type process-focusable deactivate) (the-as process-focusable this))
(none)
)