mirror of
https://github.com/open-goal/jak-project.git
synced 2025-02-17 12:40:04 +00:00
[jak2] allow going to metal head nest after winning game (#2753)
This is a major deviation from the original game, which did not have any way to access the nest after beating Metal Kor as the air train gets hidden when he is beaten. This was mostly annoying because there are precursor orbs in that level that you might miss. This makes it so the air train can once again be used to enter the nest even after beating Metal Kor. The rest of the level remains mostly the same, except the Rift Ring does not spawn and an invisible wall is added to the Metal Kor arena to prevent you from entering it as you are normally unable to leave it anyway.
This commit is contained in:
parent
910681bde8
commit
53050fabc1
@ -5735,7 +5735,7 @@
|
||||
|
||||
(deftype level-vis-info (basic)
|
||||
((level level :offset-assert 4)
|
||||
(from-level level :offset-assert 8)
|
||||
(from-level symbol :offset-assert 8)
|
||||
(from-bsp bsp-header :offset-assert 12)
|
||||
(flags vis-info-flag :offset-assert 16)
|
||||
(length uint32 :offset-assert 20)
|
||||
@ -5928,8 +5928,8 @@
|
||||
(declare-type text-id uint32)
|
||||
(deftype level (basic)
|
||||
((name symbol :offset-assert 4)
|
||||
(load-name string :offset-assert 8)
|
||||
(nickname string :offset-assert 12)
|
||||
(load-name symbol :offset-assert 8)
|
||||
(nickname symbol :offset-assert 12)
|
||||
(index int32 :offset-assert 16)
|
||||
(status symbol :offset-assert 20)
|
||||
(borrow-level level 2 :offset-assert 24)
|
||||
@ -6060,7 +6060,7 @@
|
||||
(heap kheap :inline :offset-assert 112)
|
||||
(sound-bank basic 4 :offset-assert 128)
|
||||
(disk-load-timing? symbol :offset-assert 144)
|
||||
(load-level basic :offset-assert 148)
|
||||
(load-level symbol :offset-assert 148)
|
||||
(load-size uint32 :offset-assert 152)
|
||||
(load-time float :offset-assert 156)
|
||||
(load-login-time float :offset-assert 160)
|
||||
|
@ -546,13 +546,13 @@
|
||||
(a1-5 "~8D ~3D ~-8S #x~4X")
|
||||
(a2-4 (-> obj extra perm aid))
|
||||
(a3-3 (-> obj extra perm task))
|
||||
(t0-3 (the-as object (-> obj extra level nickname)))
|
||||
(t0-3 (-> obj extra level nickname))
|
||||
)
|
||||
(set! t0-3 (cond
|
||||
((the-as string t0-3)
|
||||
(empty)
|
||||
t0-3
|
||||
)
|
||||
(t0-3
|
||||
(empty)
|
||||
t0-3
|
||||
)
|
||||
(else
|
||||
(-> obj extra level name)
|
||||
)
|
||||
|
@ -2618,7 +2618,12 @@
|
||||
(set! (-> arg0 times 1 w) 1.0)
|
||||
(update-mood-caustics arg0 2 (-> gp-1 rot) 10922.667 0.75 0.25)
|
||||
(update-mood-caustics arg0 3 (-> gp-1 rot) 0.0 0.75 0.25)
|
||||
(update-mood-pulse arg0 4 0 0.875 0.125 (* 196608.0 (-> self clock seconds-per-frame)) 0.0)
|
||||
;; note : updated for pc port for nest revisit
|
||||
(#if PC_PORT
|
||||
(if (process-by-name "blocking-plane-nestb" *active-pool*)
|
||||
(set! (-> arg0 times 4 w) 0.0)
|
||||
(update-mood-pulse arg0 4 0 0.875 0.125 (* 196608.0 (-> self clock seconds-per-frame)) 0.0))
|
||||
(update-mood-pulse arg0 4 0 0.875 0.125 (* 196608.0 (-> self clock seconds-per-frame)) 0.0))
|
||||
(set! (-> arg0 times 5 w) (+ (-> gp-1 purple) (-> gp-1 purple-noise)))
|
||||
(when (not (paused?))
|
||||
(seek! (-> gp-1 purple) 0.0 (* 4.0 (-> self clock seconds-per-frame)))
|
||||
|
@ -152,7 +152,7 @@
|
||||
|
||||
(deftype level-vis-info (basic)
|
||||
((level level :offset-assert 4)
|
||||
(from-level level :offset-assert 8)
|
||||
(from-level symbol :offset-assert 8)
|
||||
(from-bsp bsp-header :offset-assert 12)
|
||||
(flags vis-info-flag :offset-assert 16)
|
||||
(length uint32 :offset-assert 20)
|
||||
@ -262,8 +262,8 @@
|
||||
|
||||
(deftype level (basic)
|
||||
((name symbol :offset-assert 4)
|
||||
(load-name string :offset-assert 8)
|
||||
(nickname string :offset-assert 12)
|
||||
(load-name symbol :offset-assert 8)
|
||||
(nickname symbol :offset-assert 12)
|
||||
(index int32 :offset-assert 16)
|
||||
(status symbol :offset-assert 20)
|
||||
(borrow-level level 2 :offset-assert 24)
|
||||
@ -380,7 +380,7 @@
|
||||
(heap kheap :inline :offset-assert 112)
|
||||
(sound-bank basic 4 :offset-assert 128)
|
||||
(disk-load-timing? symbol :offset-assert 144)
|
||||
(load-level basic :offset-assert 148)
|
||||
(load-level symbol :offset-assert 148)
|
||||
(load-size uint32 :offset-assert 152)
|
||||
(load-time float :offset-assert 156)
|
||||
(load-login-time float :offset-assert 160)
|
||||
|
@ -374,7 +374,7 @@ into 7 sections, which might explain the weird sizes in the center.
|
||||
;; set up the level info
|
||||
(set! (-> s5-1 info) s2-0)
|
||||
(set! (-> s5-1 name) arg0)
|
||||
(set! (-> s5-1 load-name) (the-as string s1-0))
|
||||
(set! (-> s5-1 load-name) s1-0)
|
||||
)
|
||||
|
||||
;; other setup from level-info
|
||||
@ -1341,11 +1341,11 @@ into 7 sections, which might explain the weird sizes in the center.
|
||||
;; final!
|
||||
|
||||
;; name
|
||||
(set! (-> lev nickname) (the-as string (-> lev bsp nickname)))
|
||||
(set! (-> lev nickname) (-> lev bsp nickname))
|
||||
|
||||
;; added: tombc has the wrong nickname in the bsp file...
|
||||
(if (and (= (-> lev bsp name) 'tombc) (= (-> lev bsp nickname) 'toa))
|
||||
(set! (-> lev nickname) (the-as string 'toc))
|
||||
(set! (-> lev nickname) 'toc)
|
||||
)
|
||||
|
||||
;; subdivide distances
|
||||
@ -2808,7 +2808,7 @@ into 7 sections, which might explain the weird sizes in the center.
|
||||
(set! (-> s2-1 from-bsp) (-> s4-3 bsp))
|
||||
)
|
||||
(else
|
||||
(let ((v1-114 (level-get obj (the-as symbol (-> s2-1 from-level)))))
|
||||
(let ((v1-114 (level-get obj (-> s2-1 from-level))))
|
||||
(set! (-> s2-1 from-bsp) (if v1-114
|
||||
(-> v1-114 bsp)
|
||||
)
|
||||
@ -2928,7 +2928,7 @@ into 7 sections, which might explain the weird sizes in the center.
|
||||
(s4-5 *stdcon*)
|
||||
(s3-2 "~0Kload ~16S ~5S ~5DK ~5,,2fs ~5,,2fs~1K ~5,,0f k/s~%")
|
||||
(s2-2 (-> obj load-level))
|
||||
(v1-180 (lookup-level-info (the-as symbol (-> obj load-level))))
|
||||
(v1-180 (lookup-level-info (-> obj load-level)))
|
||||
)
|
||||
(s5-6
|
||||
s4-5
|
||||
|
@ -770,6 +770,17 @@
|
||||
(set! (-> self root-override trans quad) (-> arg1 quad))
|
||||
)
|
||||
(logior! (-> self mask) (process-mask actor-pause))
|
||||
(#when PC_PORT
|
||||
(when (string= (-> self name) "air-train-1")
|
||||
(set! (-> (the (pointer pair) (get-tag-index-data arg0 2)))
|
||||
'(cond
|
||||
((task-closed? "nest-boss-resolution") '("nest-warp" (scene-play '("city-air-train-in-nest" "nest-air-train-out")) #f (want-anim "city-air-train-in-nest")))
|
||||
((task-closed? "nest-get-to-gun-introduction") '("nest-warp" (scene-play '("city-air-train-in-nest" "nest-air-train-out")) #f (want-anim "city-air-train-in-nest")))
|
||||
((task-closed? "dig-find-totem-introduction") '("caspad-warp" (scene-play '("city-air-train-in-caspad" "caspad-air-train-out")) #f (want-anim "city-air-train-in-caspad")))
|
||||
((task-closed? "dig-knock-down-introduction") '("caspad-warp" (scene-play '("city-air-train-in-caspad" "caspad-air-train-out")) #f (want-anim "city-air-train-in-caspad"))))
|
||||
)
|
||||
)
|
||||
)
|
||||
(setup-fields self)
|
||||
(go-virtual idle)
|
||||
(none)
|
||||
|
@ -1751,12 +1751,38 @@ This commonly includes things such as:
|
||||
(set-time-for-random-weather! *mood-control* 0.0 0.0)
|
||||
)
|
||||
(set! *nav-network* (the-as nav-network 0))
|
||||
(#when PC_PORT
|
||||
;; for nest revisit
|
||||
(kill-by-name "blocking-plane-nestb" *active-pool*)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun nestb-activate ((arg0 level))
|
||||
(nav-network-method-10 *nav-network* arg0 *nestb-adjacency*)
|
||||
(#when PC_PORT
|
||||
;; for nest revisit
|
||||
(when (task-node-closed? (game-task-node nest-boss-resolution))
|
||||
(script-eval '(begin
|
||||
(kill "metalkor-1")
|
||||
(kill "rift-ring-ingame-1")
|
||||
(kill "crate-942")
|
||||
(kill "crate-943")
|
||||
(kill "crate-944")
|
||||
(kill "crate-945")
|
||||
(kill "crate-946")
|
||||
(kill "crate-947")
|
||||
(kill "crate-948")
|
||||
(kill "crate-949")
|
||||
))
|
||||
(let ((wall-pts (new 'stack-no-clear 'inline-array 'vector 2)))
|
||||
(set-vector! (-> wall-pts 0) (meters 172.4628) (meters 32) (meters -380.7990) 1.0)
|
||||
(set-vector! (-> wall-pts 1) (meters 151.7022) (meters 32) (meters -417.1884) 1.0)
|
||||
(process-spawn blocking-plane wall-pts (meters 60) :name "blocking-plane-nestb")
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
@ -43,12 +43,12 @@
|
||||
)
|
||||
|
||||
;; start writing text
|
||||
(let* ((begin-y (- LINE_HEIGHT (* (-> inspect-info scroll-y) LINE_HEIGHT))) (cur-y begin-y) (y-adv 16))
|
||||
(let* ((begin-y (- (* 2 LINE_HEIGHT) (* (-> inspect-info scroll-y) LINE_HEIGHT))) (cur-y begin-y) (y-adv LINE_HEIGHT))
|
||||
(with-dma-buffer-add-bucket ((debug-buf (-> (current-frame) debug-buf))
|
||||
(bucket-id debug-no-zbuf1))
|
||||
;; basic info, actor id, etc
|
||||
(draw-string-xy
|
||||
(string-format "~3L~A~0L ~A~%tags: ~D size: ~D aid: #x~x~%R1/L1 scroll L3 toggle display-actor-info~%--------------------" (-> e type) name (length e) (asize-of e) (-> e aid))
|
||||
(string-format "~3L~A~0L ~A~%tags: ~D size: ~D aid: #x~x level: ~S~%R1/L1 scroll L3 toggle display-actor-info~%--------------------" (-> e type) name (length e) (asize-of e) (-> e aid) (aif (-> e extra) (-> it level name)))
|
||||
debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle))
|
||||
(+! cur-y (* LINE_HEIGHT 4))
|
||||
(cond
|
||||
|
@ -643,8 +643,6 @@
|
||||
)
|
||||
|
||||
(when (-> self movie-mode?)
|
||||
(if *debug-segment*
|
||||
(format *stdcon* "subtitle2 movie-mode~%"))
|
||||
(set! (-> self movie-gui) #f)
|
||||
(set! (-> self movie-mode?) #f)
|
||||
(clear (-> self movie-line))
|
||||
|
10
test/decompiler/reference/jak2/engine/entity/entity_REF.gc
generated
vendored
10
test/decompiler/reference/jak2/engine/entity/entity_REF.gc
generated
vendored
@ -667,13 +667,13 @@
|
||||
(a1-5 "~8D ~3D ~-8S #x~4X")
|
||||
(a2-4 (-> obj extra perm aid))
|
||||
(a3-3 (-> obj extra perm task))
|
||||
(t0-3 (the-as object (-> obj extra level nickname)))
|
||||
(t0-3 (-> obj extra level nickname))
|
||||
)
|
||||
(set! t0-3 (cond
|
||||
((the-as string t0-3)
|
||||
(empty)
|
||||
t0-3
|
||||
)
|
||||
(t0-3
|
||||
(empty)
|
||||
t0-3
|
||||
)
|
||||
(else
|
||||
(-> obj extra level name)
|
||||
)
|
||||
|
8
test/decompiler/reference/jak2/engine/level/level-h_REF.gc
generated
vendored
8
test/decompiler/reference/jak2/engine/level/level-h_REF.gc
generated
vendored
@ -4,7 +4,7 @@
|
||||
;; definition of type level-vis-info
|
||||
(deftype level-vis-info (basic)
|
||||
((level level :offset-assert 4)
|
||||
(from-level level :offset-assert 8)
|
||||
(from-level symbol :offset-assert 8)
|
||||
(from-bsp bsp-header :offset-assert 12)
|
||||
(flags vis-info-flag :offset-assert 16)
|
||||
(length uint32 :offset-assert 20)
|
||||
@ -395,8 +395,8 @@
|
||||
;; definition of type level
|
||||
(deftype level (basic)
|
||||
((name symbol :offset-assert 4)
|
||||
(load-name string :offset-assert 8)
|
||||
(nickname string :offset-assert 12)
|
||||
(load-name symbol :offset-assert 8)
|
||||
(nickname symbol :offset-assert 12)
|
||||
(index int32 :offset-assert 16)
|
||||
(status symbol :offset-assert 20)
|
||||
(borrow-level level 2 :offset-assert 24)
|
||||
@ -660,7 +660,7 @@
|
||||
(heap kheap :inline :offset-assert 112)
|
||||
(sound-bank basic 4 :offset-assert 128)
|
||||
(disk-load-timing? symbol :offset-assert 144)
|
||||
(load-level basic :offset-assert 148)
|
||||
(load-level symbol :offset-assert 148)
|
||||
(load-size uint32 :offset-assert 152)
|
||||
(load-time float :offset-assert 156)
|
||||
(load-login-time float :offset-assert 160)
|
||||
|
8
test/decompiler/reference/jak2/engine/level/level_REF.gc
generated
vendored
8
test/decompiler/reference/jak2/engine/level/level_REF.gc
generated
vendored
@ -242,7 +242,7 @@
|
||||
)
|
||||
(set! (-> s5-1 info) s2-0)
|
||||
(set! (-> s5-1 name) arg0)
|
||||
(set! (-> s5-1 load-name) (the-as string s1-0))
|
||||
(set! (-> s5-1 load-name) s1-0)
|
||||
)
|
||||
(set! (-> s5-1 mood-func) (the-as (function mood-context float int none) (-> s5-1 info mood-func value)))
|
||||
(set! (-> s5-1 mood-init) (the-as (function mood-context none) (-> s5-1 info mood-init value)))
|
||||
@ -1033,7 +1033,7 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> lev nickname) (the-as string (-> lev bsp nickname)))
|
||||
(set! (-> lev nickname) (-> lev bsp nickname))
|
||||
(let ((close-dist (-> lev bsp subdivide-close))
|
||||
(far-dist (-> lev bsp subdivide-far))
|
||||
)
|
||||
@ -2339,7 +2339,7 @@
|
||||
(set! (-> s2-1 from-bsp) (-> s4-3 bsp))
|
||||
)
|
||||
(else
|
||||
(let ((v1-114 (level-get obj (the-as symbol (-> s2-1 from-level)))))
|
||||
(let ((v1-114 (level-get obj (-> s2-1 from-level))))
|
||||
(set! (-> s2-1 from-bsp) (if v1-114
|
||||
(-> v1-114 bsp)
|
||||
)
|
||||
@ -2459,7 +2459,7 @@
|
||||
(s4-5 *stdcon*)
|
||||
(s3-2 "~0Kload ~16S ~5S ~5DK ~5,,2fs ~5,,2fs~1K ~5,,0f k/s~%")
|
||||
(s2-2 (-> obj load-level))
|
||||
(v1-180 (lookup-level-info (the-as symbol (-> obj load-level))))
|
||||
(v1-180 (lookup-level-info (-> obj load-level)))
|
||||
)
|
||||
(s5-6
|
||||
s4-5
|
||||
|
Loading…
x
Reference in New Issue
Block a user