d/jak2: mostly complete sewer-enemy and sewer-board missions (#2108)

Finishes the following files:
- `sewer-scenes`
- `sewgun-turret`
- `fordumpc-part`
- `sewer-obs`
- `sewer-obs2`
- `gator`

Fixes #2052
This commit is contained in:
Tyler Wilding
2023-01-14 10:54:39 -05:00
committed by GitHub
parent fa0f386bf0
commit a75f4c187b
25 changed files with 19090 additions and 249 deletions
+122 -151
View File
@@ -33539,6 +33539,16 @@
(prevent-jump)
(elevator-flags-6)
(elevator-flags-7)
(elevator-flags-8)
(elevator-flags-9)
(elevator-flags-10)
(elevator-flags-11)
(elevator-flags-12)
(elevator-flags-13)
(elevator-flags-14)
(elevator-flags-15)
(elevator-flags-16)
(elevator-flags-17)
)
;; ---elevator:elevator-flags
@@ -40631,12 +40641,11 @@
;; jinx-bomb ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#|
(deftype jinx-bomb (process-focusable)
((fuse-delay uint32 :offset-assert 200)
(attack-id uint32 :offset-assert 204)
(shake-screen? basic :offset-assert 208)
(explode-func basic :offset-assert 212)
((fuse-delay uint32 :offset-assert 204)
(attack-id uint32 :offset-assert 208)
(shake-screen? symbol :offset-assert 212)
(explode-func basic :offset-assert 216)
)
:method-count-assert 29
:size-assert #xdc
@@ -40646,9 +40655,8 @@
(explode () _type_ :state 28)
)
)
|#
;; (define-extern jinx-bomb-init-by-other function)
(define-extern jinx-bomb-init-by-other (function vector quaternion none :behavior jinx-bomb))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; jinx ;;
@@ -40760,27 +40768,24 @@
;; sewer-obs ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#|
(deftype sew-blade (process-drawable)
((y-min float :offset-assert 196)
(y-max float :offset-assert 200)
(snd-water uint128 :offset-assert 204)
(snd-no-water uint128 :offset-assert 220)
(last-sound int32 :offset-assert 236)
(attack-id uint32 :offset-assert 240)
((y-min float :offset-assert 200)
(y-max float :offset-assert 204)
(snd-water uint128 :offset-assert 208)
(snd-no-water uint128 :offset-assert 224)
(last-sound int32 :offset-assert 240)
(attack-id uint32 :offset-assert 244)
)
:method-count-assert 21
:size-assert #xf8
:flag-assert #x15008000f8
(:methods
(sew-blade-method-20 () none 20)
(sew-blade-method-20 (_type_) none 20)
)
)
|#
#|
(deftype sew-single-blade (sew-blade)
((quat quaternion :inline :offset-assert 252)
((quat quaternion :inline :offset-assert 256)
)
:method-count-assert 22
:size-assert #x110
@@ -40789,13 +40794,11 @@
(idle () _type_ :state 21)
)
)
|#
#|
(deftype sew-tri-blade (sew-blade)
((anim-time float :offset-assert 244)
(anim-offset float :offset-assert 248)
(switch-state int32 :offset-assert 252)
((anim-time float :offset-assert 248)
(anim-offset float :offset-assert 252)
(switch-state int32 :offset-assert 256)
)
:method-count-assert 22
:size-assert #x104
@@ -40804,9 +40807,7 @@
(idle () _type_ :state 21)
)
)
|#
#|
(deftype sew-arm-blade (sew-blade)
()
:method-count-assert 22
@@ -40816,9 +40817,7 @@
(idle () _type_ :state 21)
)
)
|#
#|
(deftype sew-multi-blade (sew-blade)
()
:method-count-assert 22
@@ -40828,11 +40827,11 @@
(idle () _type_ :state 21)
)
)
|#
#|
(deftype sew-twist-blade (sew-blade)
((no-collision-timer uint64 :offset-assert 244)
(
(root-overide collide-shape-moving :offset 128 :score 100)
(no-collision-timer uint64 :offset-assert 248)
)
:method-count-assert 22
:size-assert #x100
@@ -40841,50 +40840,43 @@
(idle () _type_ :state 21)
)
)
|#
#|
(deftype sew-light-switch (process-drawable)
()
(
(light-state symbol :offset-assert 200)
(actor-group (pointer actor-group) :offset-assert 204)
(actor-group-count int32 :offset-assert 208)
)
:method-count-assert 24
:size-assert #xd4
:flag-assert #x18006000d4
;; Failed to read fields.
(:methods
(idle () _type_ :state 20)
(pressed () _type_ :state 21)
(sew-light-switch-method-22 () none 22)
(sew-light-switch-method-23 () none 23)
(sew-light-switch-method-22 (_type_) none 22)
(sew-light-switch-method-23 (_type_ symbol) none 23)
)
)
|#
#|
(deftype sew-light-control (process)
((search-switches basic :offset-assert 124)
(search-turrets basic :offset-assert 128)
(switch-ent basic :offset-assert 132)
(turret-ent basic :offset-assert 136)
((search-switches basic :offset-assert 128)
(search-turrets basic :offset-assert 132)
(switch-ent entity-actor :offset-assert 136)
(turret-ent entity-actor :offset-assert 140)
)
:method-count-assert 17
:size-assert #x90
:flag-assert #x1100100090
(:methods
(sew-light-control-method-9 () none 9)
(sew-light-control-method-10 () none 10)
(sew-light-control-method-11 () none 11)
(sew-light-control-method-12 () none 12)
(sew-light-control-method-13 () none 13)
(idle () _type_ :state 14)
(sew-light-control-method-15 () none 15)
(sew-light-control-method-16 () none 16)
(sew-light-control-method-15 (_type_ symbol symbol) float 15)
(sew-light-control-method-16 (_type_ object vector float) symbol 16)
)
)
|#
;; (define-extern sew-tri-blade-joint-callback function)
;; (define-extern sew-light-control-init-by-other function)
;; (define-extern sewer-startup function)
(define-extern sew-tri-blade-joint-callback (function draw-control cspace-array joint-control none))
(define-extern sew-light-control-init-by-other (function entity-actor entity-actor none :behavior sew-light-control))
(define-extern sewer-startup (function none))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; sewer-obs2 ;;
@@ -40897,25 +40889,28 @@
:size-assert #x174
:flag-assert #x3201000174
(:methods
(sew-elevator-method-49 () none 49)
(sew-elevator-method-49 (_type_ symbol) none 49)
)
)
#|
(deftype sew-valve (process-drawable)
()
(
(joint joint-mod-rotate-local :offset-assert 200)
(actor-group (pointer actor-group) :offset-assert 204)
(actor-group-count int32 :offset-assert 208)
(water-height float :offset-assert 212)
(spin float :offset-assert 216)
(spin-rate float :offset-assert 220)
)
:method-count-assert 22
:size-assert #xe0
:flag-assert #x16006000e0
;; Failed to read fields.
(:methods
(idle () _type_ :state 20)
(turn () _type_ :state 21)
)
)
|#
#|
(deftype sew-mar-statue-debris (process-drawable)
()
:method-count-assert 21
@@ -40925,9 +40920,7 @@
(idle () _type_ :state 20)
)
)
|#
#|
(deftype sew-mar-statue-debris-b (process-drawable)
()
:method-count-assert 21
@@ -40937,11 +40930,11 @@
(idle () _type_ :state 20)
)
)
|#
#|
(deftype sew-mar-statue (process-drawable)
((spawned-debris? basic :offset-assert 196)
(
(root-override collide-shape :offset 128 :score 100)
(spawned-debris? symbol :offset-assert 200)
)
:method-count-assert 22
:size-assert #xcc
@@ -40951,9 +40944,7 @@
(hidden () _type_ :state 21)
)
)
|#
#|
(deftype sew-catwalk (drop-plat)
()
:method-count-assert 36
@@ -40962,11 +40953,11 @@
(:methods
)
)
|#
#|
(deftype sew-mine (process-drawable)
((last-time time-frame :offset-assert 196)
(
(root-override collide-shape-moving :offset 128 :score 100)
(last-time time-frame :offset-assert 200)
)
:method-count-assert 23
:size-assert #xd0
@@ -40974,12 +40965,10 @@
(:methods
(idle () _type_ :state 20)
(die () _type_ :state 21)
(sew-mine-method-22 () none 22)
(sew-mine-method-22 (_type_) none 22)
)
)
|#
#|
(deftype sew-mine-a (sew-mine)
()
:method-count-assert 23
@@ -40988,14 +40977,12 @@
(:methods
)
)
|#
#|
(deftype sew-mine-b (sew-mine)
((base-height float :offset-assert 204)
(center vector :inline :offset-assert 220)
(time-skew uint64 :offset-assert 236)
(period float :offset-assert 244)
((base-height float :offset-assert 208)
(center vector :inline :offset-assert 224)
(time-skew uint64 :offset-assert 240)
(period float :offset-assert 248)
)
:method-count-assert 23
:size-assert #xfc
@@ -41003,29 +40990,25 @@
(:methods
)
)
|#
#|
(deftype sew-wall (process-focusable)
((deadly-radius float :offset-assert 200)
(prev-deadly-radius float :offset-assert 204)
(attack-id uint32 :offset-assert 208)
(first-wall? basic :offset-assert 212)
(anim basic :offset-assert 216)
(art-name basic :offset-assert 220)
((deadly-radius float :offset-assert 204)
(prev-deadly-radius float :offset-assert 208)
(attack-id uint32 :offset-assert 212)
(first-wall? basic :offset-assert 216)
(anim spool-anim :offset-assert 220)
(art-name basic :offset-assert 224)
)
:method-count-assert 30
:size-assert #xe4
:flag-assert #x1e007000e4
(:methods
(idle () _type_ :state 27)
(hit () _type_ :state 28)
(sew-wall-method-29 () none 29)
(hit (symbol) _type_ :state 28)
(sew-wall-method-29 (_type_) none 29)
)
)
|#
#|
(deftype sew-grill (process-drawable)
()
:method-count-assert 21
@@ -41035,14 +41018,12 @@
(idle () _type_ :state 20)
)
)
|#
#|
(deftype sew-scare-grunt (grunt)
((anim basic :offset-assert 688)
(manipy uint32 :offset-assert 692)
(spooled-sound-id uint32 :offset-assert 696)
(grill-actor basic :offset-assert 700)
((anim spool-anim :offset-assert 692)
(manipy (pointer manipy) :offset-assert 696)
(spooled-sound-id uint32 :offset-assert 700)
(grill-actor entity-actor :offset-assert 704)
)
:method-count-assert 188
:size-assert #x2c4
@@ -41052,12 +41033,11 @@
(scare () _type_ :state 187)
)
)
|#
;; (define-extern sew-mar-statue-debris-init-by-other function)
;; (define-extern sew-mar-statue-debris-b-init-by-other function)
;; (define-extern sew-mar-statue-event-handler function)
;; (define-extern *sew-scare-grunt-nav-enemy-info* nav-enemy-info)
(define-extern sew-mar-statue-debris-init-by-other (function none :behavior sew-mar-statue-debris))
(define-extern sew-mar-statue-debris-b-init-by-other (function none :behavior sew-mar-statue-debris-b))
(define-extern sew-mar-statue-event-handler (function process int symbol event-message-block object :behavior sew-mar-statue))
(define-extern *sew-scare-grunt-nav-enemy-info* nav-enemy-info)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; hosehead ;;
@@ -41187,34 +41167,32 @@
;; (define-extern hosehead-fake-event-handler function)
;; (define-extern hosehead-fake-init-by-other function)
;; (define-extern *hosehead-fakes* array)
;; (define-extern spawn-hosehead-fakes function)
;; (define-extern hosehead-fake-trigger function)
(define-extern spawn-hosehead-fakes (function none))
(define-extern hosehead-fake-trigger (function int none))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; gator ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#|
(deftype gator (nav-enemy)
((ocean-y float :offset-assert 600)
(lock-nav-target basic :offset-assert 604)
(new-facing vector :inline :offset-assert 620)
(old-facing vector :inline :offset-assert 636)
(turn-time time-frame :offset-assert 652)
((ocean-y float :offset-assert 604)
(lock-nav-target basic :offset-assert 608)
(new-facing vector :inline :offset-assert 624)
(old-facing vector :inline :offset-assert 640)
(turn-time time-frame :offset-assert 656)
)
:method-count-assert 182
:size-assert #x298
:flag-assert #xb602200298
(:methods
(attack-forward () _type_ :state 178)
(gator-method-179 () none 179)
(gator-method-180 () none 180)
(gator-method-181 () none 181)
(gator-method-179 (_type_) float 179)
(gator-method-180 (_type_ vector) vector 180)
(gator-method-181 (_type_ float float symbol) time-frame 181)
)
)
|#
;; (define-extern *gator-nav-enemy-info* nav-enemy-info)
(define-extern *gator-nav-enemy-info* nav-enemy-info)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; hal2-course ;;
@@ -41316,85 +41294,78 @@
;; sewer-scenes ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#|
(deftype fake-jinx-bomb-info (basic)
((handle uint64 :offset-assert 8)
((handle handle :offset-assert 8)
)
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
)
|#
;; (define-extern *fake-jinx-bomb-info* fake-jinx-bomb-info)
(define-extern *fake-jinx-bomb-info* fake-jinx-bomb-info)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; sew-gunturret ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#|
(deftype gun-turret-params (structure)
((normal-sg basic :offset-assert 0)
(explode-sg basic :offset-assert 4)
(enemy-info basic :offset-assert 8)
((normal-sg skeleton-group :offset-assert 0)
(explode-sg skeleton-group :offset-assert 4)
(enemy-info enemy-info :offset-assert 8)
(idle-anim int32 :offset-assert 12)
(shoot-anim int32 :offset-assert 16)
(track-joint int32 :offset-assert 20)
(barrel-joint int32 :offset-assert 24)
(gun-joint int32 :offset-assert 28)
(hole-joints UNKNOWN 8 :offset-assert 32)
(hole-joints int32 8 :offset-assert 32)
)
:method-count-assert 9
:size-assert #x40
:flag-assert #x900000040
)
|#
#|
(deftype sew-gunturret (enemy)
((gun-tilt-jm basic :offset-assert 528)
(params gun-turret-params :offset-assert 532)
(aim-pos vector :inline :offset-assert 540)
(gun-twist float :offset-assert 556)
(gun-tilt float :offset-assert 560)
(desired-twist float :offset-assert 564)
(desired-tilt float :offset-assert 568)
(los-clear basic :offset-assert 572)
(smoke-part basic :offset-assert 576)
(casing-part basic :offset-assert 580)
(flash-state basic :offset-assert 584)
(can-shoot basic :offset-assert 588)
(last-hit-time time-frame :offset-assert 596)
(init-mat matrix :inline :offset-assert 604)
(activate-distance float :offset-assert 668)
((gun-tilt-jm joint-mod :offset-assert 532)
(params gun-turret-params :offset-assert 536)
(aim-pos vector :inline :offset-assert 544)
(gun-twist float :offset-assert 560)
(gun-tilt float :offset-assert 564)
(desired-twist float :offset-assert 568)
(desired-tilt float :offset-assert 572)
(los-clear basic :offset-assert 576)
(smoke-part sparticle-launch-control :offset-assert 580)
(casing-part sparticle-launch-control :offset-assert 584)
(flash-state basic :offset-assert 588)
(can-shoot symbol :offset-assert 592)
(last-hit-time time-frame :offset-assert 600)
(init-mat matrix :inline :offset-assert 608)
(activate-distance float :offset-assert 672)
)
:method-count-assert 142
:size-assert #x2a4
:flag-assert #x8e023002a4
(:methods
(sew-gunturret-method-137 () none 137)
(sew-gunturret-method-138 () none 138)
(sew-gunturret-method-139 () none 139)
(sew-gunturret-method-140 () none 140)
(sew-gunturret-method-141 () none 141)
(sew-gunturret-method-137 (_type_ symbol) none 137)
(sew-gunturret-method-138 (_type_) none 138)
(sew-gunturret-method-139 (_type_) none 139)
(sew-gunturret-method-140 (_type_ symbol) none 140)
(sew-gunturret-method-141 (_type_) none 141)
)
)
|#
#|
(deftype pal-gun-turret (sew-gunturret)
()
:method-count-assert 142
:size-assert #x2a4
:flag-assert #x8e023002a4
(:methods
(pal-gun-turret-method-140 (_type_ symbol) float :replace 140)
)
)
|#
;; (define-extern *sew-gunturret-exploder-params* joint-exploder-static-params)
;; (define-extern *sew-gunturret-enemy-info* enemy-info)
;; (define-extern *pal-gun-turret-enemy-info* enemy-info)
(define-extern *sew-gunturret-exploder-params* joint-exploder-static-params)
(define-extern *sew-gunturret-enemy-info* enemy-info)
(define-extern *pal-gun-turret-enemy-info* enemy-info)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ctypower ;;
@@ -676,5 +676,29 @@
[21, "(function fort-robotank none)"],
[22, "(function fort-robotank none)"],
[23, "(function none)"]
],
"sewer-scenes": [
[0, "(function object :behavior task-manager)"],
[1, "(function symbol :behavior task-manager)"],
[5, "(function none :behavior scene-player)"],
[6, "(function none :behavior scene-player)"],
[7, "(function none :behavior scene-player)"],
[8, "(function none :behavior scene-player)"],
[9, "(function none :behavior scene-player)"],
[10, "(function none :behavior scene-player)"],
[11, "(function none :behavior scene-player)"],
[12, "(function none :behavior scene-player)"],
[13, "(function none :behavior scene-player)"],
[14, "(function none :behavior scene-player)"],
[15, "(function none :behavior scene-player)"],
[16, "(function none :behavior scene-player)"],
[17, "(function none :behavior scene-player)"],
[18, "(function none :behavior scene-player)"],
[19, "(function none :behavior scene-player)"],
[20, "(function none :behavior scene-player)"],
[21, "(function float :behavior scene-player)"],
[22, "(function float :behavior scene-player)"],
[23, "(function float :behavior scene-player)"],
[24, "(function float :behavior scene-player)"]
]
}
+6 -1
View File
@@ -211,10 +211,12 @@
"(method 11 mtn-step-plat-rocks-a)",
"(method 11 mtn-step-plat-rocks-b)",
"(method 11 mtn-step-plat-rocks-c)",
"(method 22 fort-floor-spike-b)",
"prototypes-game-visible-set!",
"(method 22 fort-floor-spike-a)",
"(method 22 fort-floor-spike-b)",
"(method 22 fort-floor-spike-c)"
"(method 22 fort-floor-spike-c)",
"(method 11 sew-catwalk)"
],
// If format is used with the wrong number of arguments,
@@ -481,6 +483,9 @@
"(method 15 rigid-body)": [0, 1, 2, 5],
"(method 63 collide-shape-moving)": [
0, 1, 2, 3, 4, 5, 6, 10, 12, 13, 14, 28, 38, 39, 40, 44
],
"(method 181 gator)": [
2, 3, 7, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 30
]
},
+3 -1
View File
@@ -137,7 +137,7 @@
"DGO/GGA.DGO",
"DGO/TOD.DGO",
"DGO/MCN.DGO",
// "DGO/SEW.DGO",
"DGO/SEW.DGO",
"DGO/VIN.DGO",
"DGO/CGA.DGO",
"DGO/CMB.DGO",
@@ -219,6 +219,8 @@
"PRI.DGO",
"RUI.DGO",
"SAG.DGO",
"SEB.DGO",
"SEW.DGO",
"SKA.DGO",
"STA.DGO",
"TOA.DGO",
+17 -1
View File
@@ -939,5 +939,21 @@
],
"dig-obs": [["L111", "(inline-array vector)", 2]],
"dig1-obs": [["L91", "(inline-array vector)", 8]],
"minimap": [["L250", "(inline-array minimap-class-node)", 71]]
"minimap": [["L250", "(inline-array minimap-class-node)", 71]],
"sew-gunturret": [
["L106", "attack-info"],
["L104", "gun-turret-params"],
["L94", "gun-turret-params"]
],
"sewer-obs": [
["L184", "attack-info"],
["L177", "attack-info"],
["L171", "attack-info"],
["L165", "attack-info"],
["L159", "attack-info"]
],
"sewer-obs2": [
["L211", "attack-info"],
["L196", "attack-info"]
]
}
@@ -1444,5 +1444,6 @@
"(method 14 trail-graph)": [[16, ["inline-array", "vector", 2]]],
"(method 13 trail-graph)": [[16, ["inline-array", "vector", 2]]],
"(method 19 trail-graph)": [[16, "trail-vis-work"]],
"(method 15 trail-graph)": [[16, "trail-conn-search"]]
"(method 15 trail-graph)": [[16, "trail-conn-search"]],
"(anon-function 20 sewer-scenes)": [[16, "vector"]]
}
+47
View File
@@ -6720,5 +6720,52 @@
[20, "a0", "(pointer uint16)"],
[33, "a3", "trail-conn"],
[37, "a3", "trail-conn"]
],
"(method 137 sew-gunturret)": [[[19, 23], "a0", "process-focusable"]],
"(method 138 sew-gunturret)": [[[15, 19], "a0", "process-focusable"]],
"(method 140 pal-gun-turret)": [
[9, "t9", "(function sew-gunturret symbol none)"]
],
"(anon-function 0 sewer-scenes)": [[79, "v1", "float"]],
"(event idle sew-single-blade)": [[15, "s4", "process-focusable"]],
"(event idle sew-multi-blade)": [[15, "s4", "process-focusable"]],
"(event idle sew-twist-blade)": [[15, "s4", "process-focusable"]],
"(code pressed sew-light-switch)": [[10, "v1", "art-joint-anim"]],
"(post idle sew-light-control)": [[20, "v1", "sew-light-switch"]],
"sew-tri-blade-joint-callback": [[[1, 82], "gp", "sew-tri-blade"]],
"(method 49 sew-elevator)": [[2, "v1", "collide-shape-prim-group"]],
"(post running sew-elevator)": [[4, "t9", "(function none)"]],
"(method 10 sew-elevator)": [[10, "t9", "(function elevator none)"]],
"(event idle sew-valve)": [[4, "v1", "attack-info"]],
"(method 7 sew-valve)": [
[14, "t9", "(function process-drawable int process-drawable)"]
],
"sew-mar-statue-debris-init-by-other": [
[[144, 157], "gp", "process-drawable"]
],
"sew-mar-statue-debris-b-init-by-other": [
[[12, 25], "gp", "process-drawable"]
],
"(event idle sew-mine)": [[15, "s4", "process-focusable"]],
"(post idle sew-mine-b)": [[4, "t9", "(function none)"]],
"(code hit sew-wall)": [
[[7, 10], "v1", "collide-shape-prim-group"],
[[100, 107], "a0", "collide-shape-prim-group"],
[[109, 116], "a0", "collide-shape-prim-group"],
[68, "v0", "object"]
],
"(code waiting sew-scare-grunt)": [[10, "v1", "art-joint-anim"]],
"(enter scare sew-scare-grunt)": [[[71, 81], "gp", "sew-grill"]],
"(exit scare sew-scare-grunt)": [[[6, 10], "v1", "sew-grill"]],
"(code fall sew-catwalk)": [[39, "v0", "object"]],
"(post scare sew-scare-grunt)": [[51, "v0", "sound-rpc-set-param"]],
"(method 11 sew-valve)": [
["_stack_", 16, "res-tag"],
["_stack_", 32, "res-tag"]
],
"(trans attack-forward gator)": [[[19, 23], "gp", "process-focusable"]],
"(code attack-forward gator)": [[14, "v1", "art-joint-anim"]],
"(method 11 sew-light-switch)": [
["_stack_", 16, "res-tag"]
]
}
+3
View File
@@ -2276,5 +2276,8 @@
},
"(method 0 joint-exploder-tuning)": {
"vars": { "v0-0": ["v0-0", "joint-exploder-tuning"] }
},
"(method 181 gator)": {
"vars": { "s4-0": ["s4-0", "art-joint-anim"] }
}
}
@@ -17,6 +17,16 @@
(prevent-jump)
(elevator-flags-6)
(elevator-flags-7)
(elevator-flags-8)
(elevator-flags-9)
(elevator-flags-10)
(elevator-flags-11)
(elevator-flags-12)
(elevator-flags-13)
(elevator-flags-14)
(elevator-flags-15)
(elevator-flags-16)
(elevator-flags-17)
)
;; ---elevator-flags
+35 -93
View File
@@ -3951,32 +3951,27 @@
;; ;; SEW
;; ;;;;;;;;;;;;;;;;;;;;;
;; (cgo "SEW.DGO" "sew.gd")
(cgo "SEW.DGO" "sew.gd")
;; (copy-textures 1059 1060 1066 2270 3479)
(copy-textures 1059 1060 1066 2270 3479)
;; (copy-gos
;; "daxter-highres-ag"
;; "grunt-ag"
;; "jak-highres-ag"
;; "amphibian-ag"
;; "sew-catwalk-ag"
;; "sew-multi-blade-ag"
;; "fodder-ag"
;; "sew-gunturret-ag"
;; "mar-statue-ag"
;; "sew-twist-blade-ag"
;; "sew-tri-blade-ag"
;; "sew-single-blade-ag"
;; "mine-a-ag"
;; "sew-valve-ag"
;; "mine-b-ag"
;; "sew-arm-blade-ag"
;; "gold-key-ag"
;; "light-switch-ag"
;; "grill-ag"
;; "sewer-vis"
;; )
(copy-gos
"sew-catwalk-ag"
"sew-multi-blade-ag"
"sew-gunturret-ag"
"mar-statue-ag"
"sew-twist-blade-ag"
"sew-tri-blade-ag"
"sew-single-blade-ag"
"mine-a-ag"
"sew-valve-ag"
"mine-b-ag"
"sew-arm-blade-ag"
"gold-key-ag"
"light-switch-ag"
"grill-ag"
"sewer-vis"
)
;; ;;;;;;;;;;;;;;;;;;;;;
;; ;; SKA
@@ -4217,84 +4212,31 @@
;; ;; SWB
;; ;;;;;;;;;;;;;;;;;;;;;
;; (cgo "SWB.DGO" "swb.gd")
(cgo "SWB.DGO" "swb.gd")
;; (goal-src-sequence
;; ""
;; :deps ("$OUT/obj/los-control.o")
;; "levels/common/ai/ai-task-h.gc"
;; "levels/common/ai/bot-h.gc"
;; "levels/common/ai/bot.gc"
;; "levels/common/ai/bot-states.gc"
;; "levels/undefined/hal-h.gc"
;; "levels/undefined/hal-task.gc"
;; "levels/undefined/hal.gc"
;; "levels/undefined/ruf-h.gc"
;; "levels/undefined/ruf-task.gc"
;; "levels/undefined/ruf.gc"
;; "levels/undefined/ruf-states.gc"
;; "levels/sewer/escort/jinx-h.gc"
;; "levels/sewer/escort/jinx-shot.gc"
;; "levels/sewer/escort/jinx-bomb.gc"
;; "levels/sewer/escort/jinx.gc"
;; "levels/sewer/escort/jinx-states.gc"
;; "levels/sewer/escort/mog-h.gc"
;; "levels/sewer/escort/mog.gc"
;; "levels/sewer/escort/grim-h.gc"
;; "levels/sewer/escort/grim.gc"
;; "levels/sewer/sewer-part.gc"
;; "levels/sewer/sewer-ocean.gc"
;; "levels/sewer/sewer-obs.gc"
;; "levels/sewer/sewer-obs2.gc"
;; "levels/sewer/hosehead.gc"
;; "levels/sewer/hosehead-fake.gc"
;; "levels/common/enemy/amphibian/amphibian.gc"
;; "levels/sewer/gator.gc"
;; "levels/common/enemy/fodder/fodder.gc"
;; "levels/sewer/hal2-course.gc"
;; "levels/sewer/mog2-course.gc"
;; "levels/sewer/jinx2-course.gc"
;; "levels/sewer/grim2-course.gc"
;; "levels/sewer/sewer-scenes.gc"
;; "levels/common/entities/sew-gunturret.gc"
;; )
(copy-textures 1372 1373 1458)
;; (copy-textures 1372 1373 1458)
;; (copy-gos
;; "com-airlock-inner-ag"
;; "sew-elevator-ag"
;; "sewescb-vis"
;; )
(copy-gos
"sewescb-vis"
)
;; ;;;;;;;;;;;;;;;;;;;;;
;; ;; SWE
;; ;;;;;;;;;;;;;;;;;;;;;
;; (cgo "SWE.DGO" "swe.gd")
(cgo "SWE.DGO" "swe.gd")
;; (copy-textures 1370 1387 1371 2293 3478 3415)
(copy-textures 1370 1387 1371 2293 3478 3415)
;; (copy-gos
;; "jinx-ag"
;; "daxter-highres-ag"
;; "jak-highres-ag"
;; "hosehead-ag"
;; "sew-wall-ag"
;; "sew-mar-statue-explode-ag"
;; "sew-multi-blade-ag"
;; "mar-statue-ag"
;; "sew-twist-blade-ag"
;; "heart-of-mar-ag"
;; "mine-a-ag"
;; "mine-b-ag"
;; "sew-arm-blade-ag"
;; "light-switch-ag"
;; "jinx-bomb-ag"
;; "grill-ag"
;; "particleman-ag"
;; "sewesc-vis"
;; )
(copy-gos
"jinx-ag"
"hosehead-ag"
"sew-wall-ag"
"sew-mar-statue-explode-ag"
"heart-of-mar-ag"
"jinx-bomb-ag"
"sewesc-vis"
)
;; ;;;;;;;;;;;;;;;;;;;;;
;; ;; TBO
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -5,5 +5,22 @@
;; name in dgo: jinx-bomb
;; dgos: SEB, SWB, UNB
(deftype jinx-bomb (process-focusable)
((fuse-delay uint32 :offset-assert 204)
(attack-id uint32 :offset-assert 208)
(shake-screen? symbol :offset-assert 212)
(explode-func basic :offset-assert 216)
)
:method-count-assert 29
:size-assert #xdc
:flag-assert #x1d006000dc
(:methods
(idle () _type_ :state 27)
(explode () _type_ :state 28)
)
)
(define-extern jinx-bomb-init-by-other (function vector quaternion none :behavior jinx-bomb))
;; DECOMP BEGINS
+594
View File
@@ -7,3 +7,597 @@
;; DECOMP BEGINS
(defskelgroup skel-gator amphibian 0 -1
((1 (meters 20)) (2 (meters 999999)))
:bounds (static-spherem 0 1 0 5.5)
)
(deftype gator (nav-enemy)
((ocean-y float :offset-assert 604)
(lock-nav-target basic :offset-assert 608)
(new-facing vector :inline :offset-assert 624)
(old-facing vector :inline :offset-assert 640)
(turn-time time-frame :offset-assert 656)
)
:heap-base #x220
:method-count-assert 182
:size-assert #x298
:flag-assert #xb602200298
(:methods
(attack-forward () _type_ :state 178)
(gator-method-179 (_type_) float 179)
(gator-method-180 (_type_ vector) vector 180)
(gator-method-181 (_type_ float float symbol) time-frame 181)
)
)
(define *gator-nav-enemy-info* (new 'static 'nav-enemy-info
:use-die-falling #t
:use-victory #f
:use-jump-blocked #f
:debug-draw-neck #f
:jump-debug-draw #f
:move-to-ground #f
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array uint32 4 #x1e0002 #x64640d01 #x0 #x0)
:idle-anim 13
:notice-anim 13
:hostile-anim 14
:hit-anim 6
:knocked-anim 6
:knocked-land-anim 7
:die-anim 12
:die-falling-anim 21
:victory-anim -1
:jump-wind-up-anim 13
:jump-in-air-anim 13
:jump-land-anim 13
:neck-joint -1
:look-at-joint 12
:bullseye-joint 4
:sound-hit (static-sound-name "gator-hit")
:sound-die (static-sound-name "gator-die")
:notice-distance (meters 80)
:notice-distance-delta (meters 10)
:proximity-notice-distance (meters 40)
:default-hit-points 1
:gnd-collide-with (collide-spec backgnd)
:overlaps-others-collide-with-filter (collide-spec jak bot player-list)
:movement-gravity (meters -100)
:friction 0.8
:attack-shove-back (meters 3.5)
:attack-shove-up (meters 2)
:attack-mode 'generic
:attack-damage 2
:recover-gnd-collide-with (collide-spec backgnd crate obstacle hit-by-others-list pusher)
:jump-height-min (meters 3)
:jump-height-factor 0.5
:knocked-seek-ry-clamp 6371.5557
:knocked-soft-vxz-lo 72089.6
:knocked-soft-vxz-hi 108134.4
:knocked-soft-vy-lo 81920.0
:knocked-soft-vy-hi 122880.0
:knocked-medium-vxz-lo 147456.0
:knocked-medium-vxz-hi 196608.0
:knocked-medium-vy-lo 135168.0
:knocked-medium-vy-hi 151552.0
:knocked-hard-vxz-lo 78643.2
:knocked-hard-vxz-hi 117964.8
:knocked-hard-vy-lo 183500.8
:knocked-hard-vy-hi 209715.2
:knocked-huge-vxz-lo 164659.2
:knocked-huge-vxz-hi 249036.8
:knocked-huge-vy-lo 183500.8
:knocked-huge-vy-hi 217907.2
:knocked-yellow-vxz-lo 40960.0
:knocked-yellow-vxz-hi 49152.0
:knocked-yellow-vy-lo 57344.0
:knocked-yellow-vy-hi 81920.0
:knocked-red-vxz-lo 24576.0
:knocked-red-vxz-hi 196608.0
:knocked-red-vy-lo 94208.0
:knocked-red-vy-hi 151552.0
:knocked-blue-vxz-lo 40960.0
:knocked-blue-vxz-hi 49152.0
:knocked-blue-vy-lo 24576.0
:knocked-blue-vy-hi 81920.0
:shadow-size (meters 1)
:shadow-max-y (meters 1)
:shadow-min-y (meters -1)
:shadow-locus-dist (meters 150)
:gem-joint -1
:gem-offset (new 'static 'sphere :r 163840.0)
:callback-info #f
:use-momentum #f
:use-frustration #t
:use-stop-chase #f
:use-circling #t
:use-pacing #t
:walk-anim 13
:turn-anim -1
:run-anim 14
:taunt-anim -1
:run-travel-speed (meters 16)
:run-acceleration (meters 8)
:run-turning-acceleration (meters 40)
:walk-travel-speed (meters 4)
:walk-acceleration (meters 8)
:walk-turning-acceleration (meters 10)
:maximum-rotation-rate (degrees 200.00002)
:notice-nav-radius (meters 2)
:frustration-distance (meters 8)
:frustration-time (seconds 4)
:blocked-time (seconds 0.3)
:circle-dist-lo 20480.0
:circle-dist-hi 61440.0
:nav-mesh #f
)
)
(set! (-> *gator-nav-enemy-info* fact-defaults) *fact-info-enemy-defaults*)
(defmethod enemy-method-74 gator ((obj gator) (arg0 process) (arg1 object) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('hit-knocked)
(when (= (-> obj incoming knocked-type) (knocked-type knocked-type-4))
(set! (-> obj incoming knocked-type) (knocked-type knocked-type-0))
0
)
((method-of-type nav-enemy enemy-method-74) obj arg0 arg1 arg2 arg3)
)
(('track)
#f
)
(else
((method-of-type nav-enemy enemy-method-74) obj arg0 arg1 arg2 arg3)
)
)
)
(defmethod gator-method-179 gator ((obj gator))
(set! (-> obj ocean-y) (get-height *ocean* (-> obj root-override2 trans) #t))
(set! (-> obj root-override2 trans y) (+ -10240.0 (-> obj ocean-y)))
)
(defmethod gator-method-180 gator ((obj gator) (arg0 vector))
(let ((a0-3 (quaternion->matrix (new 'stack-no-clear 'matrix) (-> obj root-override2 quat))))
(set! (-> arg0 quad) (-> a0-3 vector 2 quad))
)
arg0
)
(defmethod gator-method-181 gator ((obj gator) (arg0 float) (arg1 float) (arg2 symbol))
(local-vars (v1-17 object) (a0-5 object))
(with-pp
(let ((f30-0 (vector-dot (-> obj new-facing) (-> obj old-facing)))
(s5-0 75)
(s4-0 (the-as art-joint-anim (if (> (-> obj skel active-channels) 0)
(-> obj skel root-channel 0 frame-group)
)
)
)
)
(b! (not arg2) cfg-26 :delay (nop!))
(set! s5-0 18)
(b! (>= f30-0 (cos (* 182.04445 arg0))) cfg-8 :delay #f)
(if (< (-> (vector-cross! (new 'stack-no-clear 'vector) (-> obj new-facing) (-> obj old-facing)) y) 0.0)
(set! s4-0 (the-as art-joint-anim (-> obj draw art-group data 40)))
(set! s4-0 (the-as art-joint-anim (-> obj draw art-group data 39)))
)
(b! #t cfg-25 :delay (nop!))
(label cfg-8)
(let ((v1-16 (< (cos (* 182.04445 arg1)) f30-0)))
(b! v1-16 cfg-23 :likely-delay (set! v1-17 v1-16))
)
(let ((v1-20 (if (> (-> obj skel active-channels) 0)
(-> obj skel root-channel 0 frame-group)
)
)
)
(b! (not v1-20) cfg-21 :likely-delay (set! a0-5 v1-20))
(let ((a1-3 (= v1-20 (-> obj draw art-group data 14))))
(b! a1-3 cfg-21 :likely-delay (set! a0-5 a1-3))
)
(let ((a1-4 (= v1-20 (-> obj draw art-group data 40))))
(b! a1-4 cfg-21 :likely-delay (set! a0-5 a1-4))
)
(set! a0-5 (= v1-20 (-> obj draw art-group data 39)))
)
(label cfg-21)
(b! (not a0-5) cfg-23 :delay (set! v1-17 #t))
(set! v1-17 #f)
(label cfg-23)
(if v1-17
(set! s4-0 (the-as art-joint-anim (-> obj draw art-group data 14)))
)
(label cfg-25)
(b! #t cfg-48 :delay (nop!))
(label cfg-26)
(b! (>= f30-0 (cos (* 182.04445 arg0))) cfg-31 :delay #f)
(if (< (-> (vector-cross! (new 'stack-no-clear 'vector) (-> obj new-facing) (-> obj old-facing)) y) 0.0)
(set! s4-0 (the-as art-joint-anim (-> obj draw art-group data 38)))
(set! s4-0 (the-as art-joint-anim (-> obj draw art-group data 37)))
)
(b! #t cfg-48 :delay (nop!))
(label cfg-31)
(if (or (< (cos (* 182.04445 arg1)) f30-0) (let ((v1-41 (if (> (-> obj skel active-channels) 0)
(-> obj skel root-channel 0 frame-group)
)
)
)
(not (and v1-41 (or (= v1-41 (-> obj draw art-group data 13))
(= v1-41 (-> obj draw art-group data 38))
(= v1-41 (-> obj draw art-group data 37))
)
)
)
)
)
(set! s4-0 (the-as art-joint-anim (-> obj draw art-group data 13)))
)
(label cfg-48)
(let ((v1-50 (if (> (-> obj skel active-channels) 0)
(-> obj skel root-channel 0 frame-group)
)
)
)
(when (and (not (and v1-50 (= v1-50 (the-as art-element s4-0))))
(>= (- (-> pp clock frame-counter) (the-as time-frame s5-0)) (-> obj turn-time))
)
(let ((f30-2 (/ (ja-frame-num 0) (the float (ja-num-frames 0)))))
(ja-channel-push! 1 (the-as time-frame s5-0))
(set! (-> obj skel root-channel 0 frame-group) s4-0)
(let ((s5-1 (-> obj skel root-channel 0)))
(set! (-> s5-1 num-func) num-func-identity)
(set! (-> s5-1 frame-num) (* f30-2 (the float (ja-num-frames 0))))
)
)
(let ((v0-4 (-> pp clock frame-counter)))
(set! (-> obj turn-time) v0-4)
v0-4
)
)
)
)
)
)
;; WARN: Return type mismatch vector vs none.
(defmethod enemy-method-55 gator ((obj gator))
(let ((t9-0 (method-of-type nav-enemy enemy-method-55)))
(t9-0 obj)
)
(gator-method-179 obj)
(set! (-> obj old-facing quad) (-> obj new-facing quad))
(gator-method-180 obj (-> obj new-facing))
(none)
)
(defmethod enemy-method-56 gator ((obj gator) (arg0 process) (arg1 event-message-block))
0
)
;; WARN: Return type mismatch object vs none.
(defmethod go-hostile gator ((obj gator))
(go (method-of-object obj hostile))
(none)
)
(defmethod enemy-method-107 gator ((obj gator))
(let ((gp-0 ((method-of-type nav-enemy enemy-method-107) obj)))
(if (and gp-0 (< (+ 1024.0 (get-height *ocean* (get-trans gp-0 0) #t)) (-> (get-trans gp-0 1) y)))
(set! gp-0 (the-as process-focusable #f))
)
gp-0
)
)
(defmethod enemy-method-98 gator ((obj gator) (arg0 process-focusable) (arg1 vector))
(let ((s4-0 (new 'stack-no-clear 'vector)))
(when (and (= *target* arg0) (not arg1) (= (-> *target* control ground-pat material) (pat-material waterbottom)))
(set! (-> s4-0 quad) (-> (get-trans arg0 0) quad))
(set! (-> s4-0 y) (get-height *ocean* s4-0 #t))
(set! arg1 s4-0)
)
)
((method-of-type nav-enemy enemy-method-98) obj arg0 arg1)
)
(defstate hostile (gator)
:virtual #t
:trans (behavior ()
(let ((t9-0 (-> (method-of-type nav-enemy hostile) trans)))
(if t9-0
(t9-0)
)
)
(let ((a0-1 (enemy-method-107 self)))
(when a0-1
(let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (get-trans a0-1 0) (-> self root-override2 trans)))
(a0-4 (-> self nav state))
(s5-0 (new 'stack-no-clear 'vector))
)
(set! (-> s5-0 quad) (-> a0-4 heading quad))
0
(let ((v1-10 (vector-normalize-ret-len! gp-1 1.0)))
(if (and (>= #x47000000 (the-as int v1-10)) (< (cos 5461.3335) (vector-dot gp-1 s5-0)))
(go-virtual attack-forward)
)
)
)
)
)
(none)
)
:code (behavior ()
(let ((f30-0 (get-rand-float-range self 0.9 1.1)))
(until #f
(gator-method-181 self 2.0 0.5 #t)
(suspend)
(ja :num! (loop! f30-0))
)
)
#f
(none)
)
)
(defstate attack-forward (gator)
:virtual #t
:event (the-as (function process int symbol event-message-block object :behavior gator) enemy-event-handler)
:enter (behavior ()
(set! (-> self enemy-flags) (logior (enemy-flag actor-pause-backup) (-> self enemy-flags)))
(let ((v1-2 self))
(if (not (logtest? (enemy-flag enemy-flag36) (-> v1-2 enemy-flags)))
(set! (-> v1-2 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag38) (-> v1-2 enemy-flags))))
)
(set! (-> v1-2 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag36) (-> v1-2 enemy-flags))))
(set! (-> v1-2 nav callback-info) (-> v1-2 enemy-info-override callback-info))
)
0
(let ((v1-5 self))
(set! (-> v1-5 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag37) (-> v1-5 enemy-flags))))
)
0
(let ((v1-8 (-> self nav state)))
(set! (-> v1-8 speed) (* 1.25 (-> self enemy-info-override run-travel-speed)))
)
0
(set! (-> self lock-nav-target) #f)
(logior! (-> self focus-status) (focus-status dangerous))
(let* ((v1-12 *game-info*)
(v0-0 (+ (-> v1-12 attack-id) 1))
)
(set! (-> v1-12 attack-id) v0-0)
(set! (-> self attack-id) v0-0)
)
(none)
)
:exit (behavior ()
(logclear! (-> self enemy-flags) (enemy-flag actor-pause-backup))
(if (logtest? (-> self enemy-flags) (enemy-flag check-water))
(logior! (-> self focus-status) (focus-status dangerous))
(logclear! (-> self focus-status) (focus-status dangerous))
)
(none)
)
:trans (behavior ()
(let ((gp-0 (handle->process (-> self focus handle))))
(if (not gp-0)
(enemy-method-72 self)
)
(set! (-> self focus-pos quad) (-> (get-trans (the-as process-focusable gp-0) 0) quad))
)
(cond
((-> self lock-nav-target)
)
((or (logtest? (-> self enemy-flags) (enemy-flag look-at-focus))
(logtest? (-> self nav state flags) (nav-state-flag at-target))
)
(set! (-> self lock-nav-target) (the-as basic #t))
(let ((v1-16 (-> self nav)))
(set! (-> v1-16 target-speed) (-> self enemy-info-override walk-travel-speed))
)
0
(let ((v1-18 (-> self nav)))
(set! (-> v1-18 acceleration) 131072.0)
)
0
(let ((gp-1 (new 'stack-no-clear 'vector)))
(let ((a1-2 (-> self nav state)))
(set! (-> gp-1 quad) (-> a1-2 velocity quad))
)
(vector-normalize! gp-1 32768.0)
(vector+! gp-1 gp-1 (-> self root-override2 trans))
(let ((v1-24 (-> self nav state)))
(logclear! (-> v1-24 flags) (nav-state-flag directional-mode))
(logior! (-> v1-24 flags) (nav-state-flag target-poly-dirty))
(set! (-> v1-24 target-post quad) (-> gp-1 quad))
)
)
0
)
(else
(let ((a0-19 (-> self nav state))
(v1-27 (-> self focus-pos))
)
(logclear! (-> a0-19 flags) (nav-state-flag directional-mode))
(logior! (-> a0-19 flags) (nav-state-flag target-poly-dirty))
(set! (-> a0-19 target-post quad) (-> v1-27 quad))
)
0
)
)
(none)
)
:code (behavior ()
(ja-channel-push! 1 (seconds 0.07))
(ja-no-eval :group! (-> self draw art-group data 15)
:num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 15)) frames num-frames) -1)))
:frame-num (ja-aframe 0.0 0)
)
(ja-no-eval :group! (ja-group)
:num! (seek! (the float (+ (-> (ja-group) frames num-frames) -1)))
:frame-num 0.0
)
(until (ja-done? 0)
(let ((a1-4 (new 'stack-no-clear 'vector)))
(let ((a2-2 (-> self nav state)))
(set! (-> a1-4 quad) (-> a2-2 target-post quad))
)
(if (and (-> self lock-nav-target) (< (vector-vector-distance (-> self root-override2 trans) a1-4) 8192.0))
(enemy-method-72 self)
)
)
(suspend)
(ja :num! (seek!))
)
(enemy-method-72 self)
(none)
)
:post (the-as (function none :behavior gator) nav-enemy-travel-post)
)
(defstate pacing (gator)
:virtual #t
:code (behavior ()
(let ((f30-0 (get-rand-float-range self 0.9 1.1)))
(until #f
(gator-method-181 self 2.0 0.5 #f)
(suspend)
(ja :num! (loop! f30-0))
)
)
#f
(none)
)
)
(defstate stare (gator)
:virtual #t
:enter (behavior ()
(set! (-> self state-time) (-> self clock frame-counter))
(none)
)
:trans (behavior ()
(let ((t9-0 (-> (method-of-type nav-enemy stare) trans)))
(if t9-0
(t9-0)
)
)
(if (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.017))
(go-virtual pacing)
)
(none)
)
:code (behavior ()
(let ((f30-0 (get-rand-float-range self 0.9 1.1)))
(until #f
(gator-method-181 self 2.0 0.5 #f)
(suspend)
(ja :num! (loop! f30-0))
)
)
#f
(none)
)
)
(defmethod coin-flip? gator ((obj gator))
"@returns The result of a 50/50 RNG roll"
#f
)
(defmethod enemy-method-114 gator ((obj gator))
"@abstract"
(let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player))))
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s5-0 reaction) cshape-reaction-default)
(set! (-> s5-0 no-reaction)
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
)
(set! (-> s5-0 penetrated-by) (penetrate
generic-attack
lunge
flop
punch
spin
roll
uppercut
bonk
tube
vehicle
flut-attack
board
mech-punch
dark-punch
dark-giant
)
)
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 4) 0)))
(set! (-> s5-0 total-prims) (the-as uint 5))
(set! (-> s4-0 prim-core collide-as) (collide-spec enemy))
(set! (-> s4-0 prim-core collide-with)
(collide-spec backgnd jak bot crate obstacle hit-by-others-list player-list)
)
(set! (-> s4-0 prim-core action) (collide-action deadly no-standon))
(set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 19660.8)
(set! (-> s5-0 root-prim) s4-0)
)
(let ((v1-13 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-13 prim-core collide-as) (collide-spec enemy))
(set! (-> v1-13 prim-core collide-with) (collide-spec jak bot crate hit-by-others-list player-list))
(set! (-> v1-13 prim-core action) (collide-action no-standon))
(set-vector! (-> v1-13 local-sphere) 0.0 4915.2 0.0 4915.2)
)
(let ((v1-15 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-15 prim-core collide-as) (collide-spec enemy))
(set! (-> v1-15 prim-core collide-with) (collide-spec jak bot player-list))
(set! (-> v1-15 prim-core action) (collide-action deadly))
(set! (-> v1-15 transform-index) 12)
(set-vector! (-> v1-15 local-sphere) 0.0 0.0 0.0 4096.0)
)
(let ((v1-17 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-17 prim-core collide-as) (collide-spec enemy))
(set! (-> v1-17 prim-core collide-with) (collide-spec jak bot player-list))
(set! (-> v1-17 transform-index) 20)
(set-vector! (-> v1-17 local-sphere) 0.0 0.0 0.0 4096.0)
)
(let ((v1-19 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-19 prim-core collide-as) (collide-spec enemy))
(set! (-> v1-19 prim-core collide-with) (collide-spec jak bot player-list))
(set! (-> v1-19 transform-index) 22)
(set-vector! (-> v1-19 local-sphere) 0.0 0.0 0.0 4505.6)
)
(set! (-> s5-0 nav-radius) 8192.0)
(let ((v1-21 (-> s5-0 root-prim)))
(set! (-> s5-0 backup-collide-as) (-> v1-21 prim-core collide-as))
(set! (-> s5-0 backup-collide-with) (-> v1-21 prim-core collide-with))
)
(set! (-> s5-0 max-iteration-count) (the-as uint 3))
(set! (-> obj root-override2) s5-0)
)
0
(none)
)
(defmethod enemy-method-115 gator ((obj gator))
"@abstract"
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-gator" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(enemy-method-113 obj *gator-nav-enemy-info*)
(let ((v1-5 (-> obj nav)))
(set! (-> v1-5 speed-scale) 1.0)
)
0
(set-gravity-length (-> obj root-override2 dynam) 573440.0)
(logior! (-> obj nav flags) (nav-control-flag momentum-ignore-heading))
(gator-method-179 obj)
(set! (-> obj turn-time) 0)
0
(none)
)
@@ -5,5 +5,8 @@
;; name in dgo: hosehead-fake
;; dgos: SEB, SWB
(define-extern spawn-hosehead-fakes (function none))
(define-extern hosehead-fake-trigger (function int none))
;; DECOMP BEGINS
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+639
View File
@@ -0,0 +1,639 @@
;;-*-Lisp-*-
(in-package goal)
;; failed to figure out what this is:
(defskelgroup skel-gator amphibian amphibian-lod0-jg -1
((amphibian-lod0-mg (meters 20)) (amphibian-lod1-mg (meters 999999)))
:bounds (static-spherem 0 1 0 5.5)
)
;; definition of type gator
(deftype gator (nav-enemy)
((ocean-y float :offset-assert 604)
(lock-nav-target basic :offset-assert 608)
(new-facing vector :inline :offset-assert 624)
(old-facing vector :inline :offset-assert 640)
(turn-time time-frame :offset-assert 656)
)
:heap-base #x220
:method-count-assert 182
:size-assert #x298
:flag-assert #xb602200298
(:methods
(attack-forward () _type_ :state 178)
(gator-method-179 (_type_) float 179)
(gator-method-180 (_type_ vector) vector 180)
(gator-method-181 (_type_ float float symbol) time-frame 181)
)
)
;; definition for method 3 of type gator
(defmethod inspect gator ((obj gator))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type nav-enemy inspect)))
(t9-0 obj)
)
(format #t "~2Tocean-y: ~f~%" (-> obj ocean-y))
(format #t "~2Tlock-nav-target: ~A~%" (-> obj lock-nav-target))
(format #t "~2Tnew-facing: #<vector @ #x~X>~%" (-> obj new-facing))
(format #t "~2Told-facing: #<vector @ #x~X>~%" (-> obj old-facing))
(format #t "~2Tturn-time: ~D~%" (-> obj turn-time))
(label cfg-4)
obj
)
;; definition for symbol *gator-nav-enemy-info*, type nav-enemy-info
(define *gator-nav-enemy-info* (new 'static 'nav-enemy-info
:use-die-falling #t
:use-victory #f
:use-jump-blocked #f
:debug-draw-neck #f
:jump-debug-draw #f
:move-to-ground #f
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array uint32 4 #x1e0002 #x64640d01 #x0 #x0)
:idle-anim 13
:notice-anim 13
:hostile-anim 14
:hit-anim 6
:knocked-anim 6
:knocked-land-anim 7
:die-anim 12
:die-falling-anim 21
:victory-anim -1
:jump-wind-up-anim 13
:jump-in-air-anim 13
:jump-land-anim 13
:neck-joint -1
:look-at-joint 12
:bullseye-joint 4
:sound-hit (static-sound-name "gator-hit")
:sound-die (static-sound-name "gator-die")
:notice-distance (meters 80)
:notice-distance-delta (meters 10)
:proximity-notice-distance (meters 40)
:default-hit-points 1
:gnd-collide-with (collide-spec backgnd)
:overlaps-others-collide-with-filter (collide-spec jak bot player-list)
:movement-gravity (meters -100)
:friction 0.8
:attack-shove-back (meters 3.5)
:attack-shove-up (meters 2)
:attack-mode 'generic
:attack-damage 2
:recover-gnd-collide-with (collide-spec backgnd crate obstacle hit-by-others-list pusher)
:jump-height-min (meters 3)
:jump-height-factor 0.5
:knocked-seek-ry-clamp 6371.5557
:knocked-soft-vxz-lo 72089.6
:knocked-soft-vxz-hi 108134.4
:knocked-soft-vy-lo 81920.0
:knocked-soft-vy-hi 122880.0
:knocked-medium-vxz-lo 147456.0
:knocked-medium-vxz-hi 196608.0
:knocked-medium-vy-lo 135168.0
:knocked-medium-vy-hi 151552.0
:knocked-hard-vxz-lo 78643.2
:knocked-hard-vxz-hi 117964.8
:knocked-hard-vy-lo 183500.8
:knocked-hard-vy-hi 209715.2
:knocked-huge-vxz-lo 164659.2
:knocked-huge-vxz-hi 249036.8
:knocked-huge-vy-lo 183500.8
:knocked-huge-vy-hi 217907.2
:knocked-yellow-vxz-lo 40960.0
:knocked-yellow-vxz-hi 49152.0
:knocked-yellow-vy-lo 57344.0
:knocked-yellow-vy-hi 81920.0
:knocked-red-vxz-lo 24576.0
:knocked-red-vxz-hi 196608.0
:knocked-red-vy-lo 94208.0
:knocked-red-vy-hi 151552.0
:knocked-blue-vxz-lo 40960.0
:knocked-blue-vxz-hi 49152.0
:knocked-blue-vy-lo 24576.0
:knocked-blue-vy-hi 81920.0
:shadow-size (meters 1)
:shadow-max-y (meters 1)
:shadow-min-y (meters -1)
:shadow-locus-dist (meters 150)
:gem-joint -1
:gem-offset (new 'static 'sphere :r 163840.0)
:callback-info #f
:use-momentum #f
:use-frustration #t
:use-stop-chase #f
:use-circling #t
:use-pacing #t
:walk-anim 13
:turn-anim -1
:run-anim 14
:taunt-anim -1
:run-travel-speed (meters 16)
:run-acceleration (meters 8)
:run-turning-acceleration (meters 40)
:walk-travel-speed (meters 4)
:walk-acceleration (meters 8)
:walk-turning-acceleration (meters 10)
:maximum-rotation-rate (degrees 200.00002)
:notice-nav-radius (meters 2)
:frustration-distance (meters 8)
:frustration-time (seconds 4)
:blocked-time (seconds 0.3)
:circle-dist-lo 20480.0
:circle-dist-hi 61440.0
:nav-mesh #f
)
)
;; failed to figure out what this is:
(set! (-> *gator-nav-enemy-info* fact-defaults) *fact-info-enemy-defaults*)
;; definition for method 74 of type gator
(defmethod enemy-method-74 gator ((obj gator) (arg0 process) (arg1 object) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('hit-knocked)
(when (= (-> obj incoming knocked-type) (knocked-type knocked-type-4))
(set! (-> obj incoming knocked-type) (knocked-type knocked-type-0))
0
)
((method-of-type nav-enemy enemy-method-74) obj arg0 arg1 arg2 arg3)
)
(('track)
#f
)
(else
((method-of-type nav-enemy enemy-method-74) obj arg0 arg1 arg2 arg3)
)
)
)
;; definition for method 179 of type gator
(defmethod gator-method-179 gator ((obj gator))
(set! (-> obj ocean-y) (get-height *ocean* (-> obj root-override2 trans) #t))
(set! (-> obj root-override2 trans y) (+ -10240.0 (-> obj ocean-y)))
)
;; definition for method 180 of type gator
;; INFO: Used lq/sq
(defmethod gator-method-180 gator ((obj gator) (arg0 vector))
(let ((a0-3 (quaternion->matrix (new 'stack-no-clear 'matrix) (-> obj root-override2 quat))))
(set! (-> arg0 quad) (-> a0-3 vector 2 quad))
)
arg0
)
;; definition for method 181 of type gator
(defmethod gator-method-181 gator ((obj gator) (arg0 float) (arg1 float) (arg2 symbol))
(local-vars (v1-17 object) (a0-5 object))
(with-pp
(let ((f30-0 (vector-dot (-> obj new-facing) (-> obj old-facing)))
(s5-0 75)
(s4-0 (the-as art-joint-anim (if (> (-> obj skel active-channels) 0)
(-> obj skel root-channel 0 frame-group)
)
)
)
)
(b! (not arg2) cfg-26 :delay (nop!))
(set! s5-0 18)
(b! (>= f30-0 (cos (* 182.04445 arg0))) cfg-8 :delay #f)
(if (< (-> (vector-cross! (new 'stack-no-clear 'vector) (-> obj new-facing) (-> obj old-facing)) y) 0.0)
(set! s4-0 (the-as art-joint-anim (-> obj draw art-group data 40)))
(set! s4-0 (the-as art-joint-anim (-> obj draw art-group data 39)))
)
(b! #t cfg-25 :delay (nop!))
(label cfg-8)
(let ((v1-16 (< (cos (* 182.04445 arg1)) f30-0)))
(b! v1-16 cfg-23 :likely-delay (set! v1-17 v1-16))
)
(let ((v1-20 (if (> (-> obj skel active-channels) 0)
(-> obj skel root-channel 0 frame-group)
)
)
)
(b! (not v1-20) cfg-21 :likely-delay (set! a0-5 v1-20))
(let ((a1-3 (= v1-20 (-> obj draw art-group data 14))))
(b! a1-3 cfg-21 :likely-delay (set! a0-5 a1-3))
)
(let ((a1-4 (= v1-20 (-> obj draw art-group data 40))))
(b! a1-4 cfg-21 :likely-delay (set! a0-5 a1-4))
)
(set! a0-5 (= v1-20 (-> obj draw art-group data 39)))
)
(label cfg-21)
(b! (not a0-5) cfg-23 :delay (set! v1-17 #t))
(set! v1-17 #f)
(label cfg-23)
(if v1-17
(set! s4-0 (the-as art-joint-anim (-> obj draw art-group data 14)))
)
(label cfg-25)
(b! #t cfg-48 :delay (nop!))
(label cfg-26)
(b! (>= f30-0 (cos (* 182.04445 arg0))) cfg-31 :delay #f)
(if (< (-> (vector-cross! (new 'stack-no-clear 'vector) (-> obj new-facing) (-> obj old-facing)) y) 0.0)
(set! s4-0 (the-as art-joint-anim (-> obj draw art-group data 38)))
(set! s4-0 (the-as art-joint-anim (-> obj draw art-group data 37)))
)
(b! #t cfg-48 :delay (nop!))
(label cfg-31)
(if (or (< (cos (* 182.04445 arg1)) f30-0) (let ((v1-41 (if (> (-> obj skel active-channels) 0)
(-> obj skel root-channel 0 frame-group)
)
)
)
(not (and v1-41 (or (= v1-41 (-> obj draw art-group data 13))
(= v1-41 (-> obj draw art-group data 38))
(= v1-41 (-> obj draw art-group data 37))
)
)
)
)
)
(set! s4-0 (the-as art-joint-anim (-> obj draw art-group data 13)))
)
(label cfg-48)
(let ((v1-50 (if (> (-> obj skel active-channels) 0)
(-> obj skel root-channel 0 frame-group)
)
)
)
(when (and (not (and v1-50 (= v1-50 (the-as art-element s4-0))))
(>= (- (-> pp clock frame-counter) (the-as time-frame s5-0)) (-> obj turn-time))
)
(let ((f30-2 (/ (ja-frame-num 0) (the float (ja-num-frames 0)))))
(ja-channel-push! 1 (the-as time-frame s5-0))
(set! (-> obj skel root-channel 0 frame-group) s4-0)
(let ((s5-1 (-> obj skel root-channel 0)))
(set! (-> s5-1 num-func) num-func-identity)
(set! (-> s5-1 frame-num) (* f30-2 (the float (ja-num-frames 0))))
)
)
(let ((v0-4 (-> pp clock frame-counter)))
(set! (-> obj turn-time) v0-4)
v0-4
)
)
)
)
)
)
;; definition for method 55 of type gator
;; INFO: Used lq/sq
;; WARN: Return type mismatch vector vs none.
(defmethod enemy-method-55 gator ((obj gator))
(let ((t9-0 (method-of-type nav-enemy enemy-method-55)))
(t9-0 obj)
)
(gator-method-179 obj)
(set! (-> obj old-facing quad) (-> obj new-facing quad))
(gator-method-180 obj (-> obj new-facing))
(none)
)
;; definition for method 56 of type gator
(defmethod enemy-method-56 gator ((obj gator) (arg0 process) (arg1 event-message-block))
0
)
;; definition for method 70 of type gator
;; WARN: Return type mismatch object vs none.
(defmethod go-hostile gator ((obj gator))
(go (method-of-object obj hostile))
(none)
)
;; definition for method 107 of type gator
(defmethod enemy-method-107 gator ((obj gator))
(let ((gp-0 ((method-of-type nav-enemy enemy-method-107) obj)))
(if (and gp-0 (< (+ 1024.0 (get-height *ocean* (get-trans gp-0 0) #t)) (-> (get-trans gp-0 1) y)))
(set! gp-0 (the-as process-focusable #f))
)
gp-0
)
)
;; definition for method 98 of type gator
;; INFO: Used lq/sq
(defmethod enemy-method-98 gator ((obj gator) (arg0 process-focusable) (arg1 vector))
(let ((s4-0 (new 'stack-no-clear 'vector)))
(when (and (= *target* arg0) (not arg1) (= (-> *target* control ground-pat material) (pat-material waterbottom)))
(set! (-> s4-0 quad) (-> (get-trans arg0 0) quad))
(set! (-> s4-0 y) (get-height *ocean* s4-0 #t))
(set! arg1 s4-0)
)
)
((method-of-type nav-enemy enemy-method-98) obj arg0 arg1)
)
;; failed to figure out what this is:
(defstate hostile (gator)
:virtual #t
:trans (behavior ()
(let ((t9-0 (-> (method-of-type nav-enemy hostile) trans)))
(if t9-0
(t9-0)
)
)
(let ((a0-1 (enemy-method-107 self)))
(when a0-1
(let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (get-trans a0-1 0) (-> self root-override2 trans)))
(a0-4 (-> self nav state))
(s5-0 (new 'stack-no-clear 'vector))
)
(set! (-> s5-0 quad) (-> a0-4 heading quad))
0
(let ((v1-10 (vector-normalize-ret-len! gp-1 1.0)))
(if (and (>= #x47000000 (the-as int v1-10)) (< (cos 5461.3335) (vector-dot gp-1 s5-0)))
(go-virtual attack-forward)
)
)
)
)
)
(none)
)
:code (behavior ()
(let ((f30-0 (get-rand-float-range self 0.9 1.1)))
(until #f
(gator-method-181 self 2.0 0.5 #t)
(suspend)
(ja :num! (loop! f30-0))
)
)
#f
(none)
)
)
;; failed to figure out what this is:
(defstate attack-forward (gator)
:virtual #t
:event (the-as (function process int symbol event-message-block object :behavior gator) enemy-event-handler)
:enter (behavior ()
(set! (-> self enemy-flags) (logior (enemy-flag actor-pause-backup) (-> self enemy-flags)))
(let ((v1-2 self))
(if (not (logtest? (enemy-flag enemy-flag36) (-> v1-2 enemy-flags)))
(set! (-> v1-2 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag38) (-> v1-2 enemy-flags))))
)
(set! (-> v1-2 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag36) (-> v1-2 enemy-flags))))
(set! (-> v1-2 nav callback-info) (-> v1-2 enemy-info-override callback-info))
)
0
(let ((v1-5 self))
(set! (-> v1-5 enemy-flags) (the-as enemy-flag (logior (enemy-flag enemy-flag37) (-> v1-5 enemy-flags))))
)
0
(let ((v1-8 (-> self nav state)))
(set! (-> v1-8 speed) (* 1.25 (-> self enemy-info-override run-travel-speed)))
)
0
(set! (-> self lock-nav-target) #f)
(logior! (-> self focus-status) (focus-status dangerous))
(let* ((v1-12 *game-info*)
(v0-0 (+ (-> v1-12 attack-id) 1))
)
(set! (-> v1-12 attack-id) v0-0)
(set! (-> self attack-id) v0-0)
)
(none)
)
:exit (behavior ()
(logclear! (-> self enemy-flags) (enemy-flag actor-pause-backup))
(if (logtest? (-> self enemy-flags) (enemy-flag check-water))
(logior! (-> self focus-status) (focus-status dangerous))
(logclear! (-> self focus-status) (focus-status dangerous))
)
(none)
)
:trans (behavior ()
(let ((gp-0 (handle->process (-> self focus handle))))
(if (not gp-0)
(enemy-method-72 self)
)
(set! (-> self focus-pos quad) (-> (get-trans (the-as process-focusable gp-0) 0) quad))
)
(cond
((-> self lock-nav-target)
)
((or (logtest? (-> self enemy-flags) (enemy-flag look-at-focus))
(logtest? (-> self nav state flags) (nav-state-flag at-target))
)
(set! (-> self lock-nav-target) (the-as basic #t))
(let ((v1-16 (-> self nav)))
(set! (-> v1-16 target-speed) (-> self enemy-info-override walk-travel-speed))
)
0
(let ((v1-18 (-> self nav)))
(set! (-> v1-18 acceleration) 131072.0)
)
0
(let ((gp-1 (new 'stack-no-clear 'vector)))
(let ((a1-2 (-> self nav state)))
(set! (-> gp-1 quad) (-> a1-2 velocity quad))
)
(vector-normalize! gp-1 32768.0)
(vector+! gp-1 gp-1 (-> self root-override2 trans))
(let ((v1-24 (-> self nav state)))
(logclear! (-> v1-24 flags) (nav-state-flag directional-mode))
(logior! (-> v1-24 flags) (nav-state-flag target-poly-dirty))
(set! (-> v1-24 target-post quad) (-> gp-1 quad))
)
)
0
)
(else
(let ((a0-19 (-> self nav state))
(v1-27 (-> self focus-pos))
)
(logclear! (-> a0-19 flags) (nav-state-flag directional-mode))
(logior! (-> a0-19 flags) (nav-state-flag target-poly-dirty))
(set! (-> a0-19 target-post quad) (-> v1-27 quad))
)
0
)
)
(none)
)
:code (behavior ()
(ja-channel-push! 1 (seconds 0.07))
(ja-no-eval :group! (-> self draw art-group data 15)
:num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 15)) frames num-frames) -1)))
:frame-num (ja-aframe 0.0 0)
)
(ja-no-eval :group! (ja-group)
:num! (seek! (the float (+ (-> (ja-group) frames num-frames) -1)))
:frame-num 0.0
)
(until (ja-done? 0)
(let ((a1-4 (new 'stack-no-clear 'vector)))
(let ((a2-2 (-> self nav state)))
(set! (-> a1-4 quad) (-> a2-2 target-post quad))
)
(if (and (-> self lock-nav-target) (< (vector-vector-distance (-> self root-override2 trans) a1-4) 8192.0))
(enemy-method-72 self)
)
)
(suspend)
(ja :num! (seek!))
)
(enemy-method-72 self)
(none)
)
:post (the-as (function none :behavior gator) nav-enemy-travel-post)
)
;; failed to figure out what this is:
(defstate pacing (gator)
:virtual #t
:code (behavior ()
(let ((f30-0 (get-rand-float-range self 0.9 1.1)))
(until #f
(gator-method-181 self 2.0 0.5 #f)
(suspend)
(ja :num! (loop! f30-0))
)
)
#f
(none)
)
)
;; failed to figure out what this is:
(defstate stare (gator)
:virtual #t
:enter (behavior ()
(set! (-> self state-time) (-> self clock frame-counter))
(none)
)
:trans (behavior ()
(let ((t9-0 (-> (method-of-type nav-enemy stare) trans)))
(if t9-0
(t9-0)
)
)
(if (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.017))
(go-virtual pacing)
)
(none)
)
:code (behavior ()
(let ((f30-0 (get-rand-float-range self 0.9 1.1)))
(until #f
(gator-method-181 self 2.0 0.5 #f)
(suspend)
(ja :num! (loop! f30-0))
)
)
#f
(none)
)
)
;; definition for method 60 of type gator
(defmethod coin-flip? gator ((obj gator))
"@returns The result of a 50/50 RNG roll"
#f
)
;; definition for method 114 of type gator
;; WARN: Return type mismatch int vs none.
(defmethod enemy-method-114 gator ((obj gator))
"@abstract"
(let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player))))
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s5-0 reaction) cshape-reaction-default)
(set! (-> s5-0 no-reaction)
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
)
(set! (-> s5-0 penetrated-by) (penetrate
generic-attack
lunge
flop
punch
spin
roll
uppercut
bonk
tube
vehicle
flut-attack
board
mech-punch
dark-punch
dark-giant
)
)
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 4) 0)))
(set! (-> s5-0 total-prims) (the-as uint 5))
(set! (-> s4-0 prim-core collide-as) (collide-spec enemy))
(set! (-> s4-0 prim-core collide-with)
(collide-spec backgnd jak bot crate obstacle hit-by-others-list player-list)
)
(set! (-> s4-0 prim-core action) (collide-action deadly no-standon))
(set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 19660.8)
(set! (-> s5-0 root-prim) s4-0)
)
(let ((v1-13 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-13 prim-core collide-as) (collide-spec enemy))
(set! (-> v1-13 prim-core collide-with) (collide-spec jak bot crate hit-by-others-list player-list))
(set! (-> v1-13 prim-core action) (collide-action no-standon))
(set-vector! (-> v1-13 local-sphere) 0.0 4915.2 0.0 4915.2)
)
(let ((v1-15 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-15 prim-core collide-as) (collide-spec enemy))
(set! (-> v1-15 prim-core collide-with) (collide-spec jak bot player-list))
(set! (-> v1-15 prim-core action) (collide-action deadly))
(set! (-> v1-15 transform-index) 12)
(set-vector! (-> v1-15 local-sphere) 0.0 0.0 0.0 4096.0)
)
(let ((v1-17 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-17 prim-core collide-as) (collide-spec enemy))
(set! (-> v1-17 prim-core collide-with) (collide-spec jak bot player-list))
(set! (-> v1-17 transform-index) 20)
(set-vector! (-> v1-17 local-sphere) 0.0 0.0 0.0 4096.0)
)
(let ((v1-19 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-19 prim-core collide-as) (collide-spec enemy))
(set! (-> v1-19 prim-core collide-with) (collide-spec jak bot player-list))
(set! (-> v1-19 transform-index) 22)
(set-vector! (-> v1-19 local-sphere) 0.0 0.0 0.0 4505.6)
)
(set! (-> s5-0 nav-radius) 8192.0)
(let ((v1-21 (-> s5-0 root-prim)))
(set! (-> s5-0 backup-collide-as) (-> v1-21 prim-core collide-as))
(set! (-> s5-0 backup-collide-with) (-> v1-21 prim-core collide-with))
)
(set! (-> s5-0 max-iteration-count) (the-as uint 3))
(set! (-> obj root-override2) s5-0)
)
0
(none)
)
;; definition for method 115 of type gator
;; WARN: Return type mismatch int vs none.
(defmethod enemy-method-115 gator ((obj gator))
"@abstract"
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-gator" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(enemy-method-113 obj *gator-nav-enemy-info*)
(let ((v1-5 (-> obj nav)))
(set! (-> v1-5 speed-scale) 1.0)
)
0
(set-gravity-length (-> obj root-override2 dynam) 573440.0)
(logior! (-> obj nav flags) (nav-control-flag momentum-ignore-heading))
(gator-method-179 obj)
(set! (-> obj turn-time) 0)
0
(none)
)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+3 -1
View File
@@ -272,7 +272,9 @@
"(method 18 minimap)",
"(method 16 minimap)",
"(method 60 fort-turret)", // they defined the same method twice in the same file, identical impl, just returns #f
"(method 23 dig-tether)" // working around annoying decomp array output
"(method 23 dig-tether)", // working around annoying decomp array output
"(method 16 sew-light-control)", // skipped for now, looking for a caller
"(method 3 rhino)"
],
"skip_compile_states": {