decomp: citizen-* files, metalhead-* files, civilian, guard, hal3-course (#2194)

No more ghost town!

Manual patches:

- `hal3-course`: In `(anon-function 17 hal3-course)`, the decompiler is
doing something strange with `s3-0` that fails to compile, so I just
removed the `set!` and inlined the condition in the `when`.
- `guard`: Rewrote `(.mula.s)` stuff
This commit is contained in:
Hat Kid
2023-02-08 01:56:06 +01:00
committed by GitHub
parent fc5c75534d
commit 4ee402984f
51 changed files with 30127 additions and 615 deletions
+3 -1
View File
@@ -740,7 +740,9 @@ void SSA::make_vars(const Function& function, const DecompilerTypeSystem& dts) {
function.guessed_name.to_string() == "(method 74 crimson-guard-level)" ||
function.guessed_name.to_string() == "widow-handler" ||
function.guessed_name.to_string() == "(method 74 hal)" ||
function.guessed_name.to_string() == "water-anim-event-handler";
function.guessed_name.to_string() == "water-anim-event-handler" ||
function.guessed_name.to_string() == "(method 74 civilian)" ||
function.guessed_name.to_string() == "(method 74 crimson-guard)";
}
for (int block_id = 0; block_id < int(blocks.size()); block_id++) {
+138 -143
View File
@@ -8976,13 +8976,14 @@
(tdt4 4)
(tdt5 5)
(tdt6 6)
(tdt7 7)
)
;; ---traffic-h:traffic-danger-type
(deftype traffic-danger-info (structure)
((sphere sphere :inline :offset-assert 0)
(velocity vector :inline :offset-assert 16)
(handle uint64 :offset-assert 32)
(handle handle :offset-assert 32)
(notify-radius float :offset-assert 40)
(danger-level float :offset-assert 44)
(decay-rate float :offset-assert 48)
@@ -9045,7 +9046,7 @@
(position vector :inline :offset-assert 32)
(rotation quaternion :inline :offset-assert 48)
(velocity vector :inline :offset-assert 64)
(handle uint64 :offset-assert 80)
(handle handle :offset-assert 80)
(guard-type uint8 :offset-assert 88)
(user-data uint32 :offset-assert 92)
(flags uint32 :offset-assert 96)
@@ -13334,7 +13335,6 @@
(speech-type-3 3)
(speech-type-4 4)
(speech-type-5 5)
)
;; ---speech-h:speech-type
@@ -49161,7 +49161,7 @@
(new-suppression-box (_type_ traffic-suppression-params) none 46)
(remove-suppression-box (_type_ traffic-suppression-params) none 47)
(update-suppression-box (_type_ traffic-suppression-params) none 48)
(traffic-engine-method-49 (_type_ object int traffic-target-status) traffic-target-status 49)
(traffic-engine-method-49 (_type_ vector int traffic-target-status) traffic-target-status 49)
(find-closest-to-with-collide-lists "Iterate through collide lists, find the closest thing to the given process." (_type_ process-drawable collide-spec) process-focusable 50)
(for-all-active-processes (_type_ (function process-focusable traffic-object-type-info none)) none 51)
(send-alert-events (_type_) none 52)
@@ -49670,7 +49670,7 @@
(speed-scale float :offset-assert 612)
(controller vehicle-controller :inline :offset-assert 624)
(danger-pos sphere :inline :offset-assert 768)
(vehicle int64 :offset-assert 784)
(vehicle handle :offset-assert 784)
(anim-shuffle int32 :offset-assert 792)
(dist-walk-anim float :offset-assert 796)
(speed-walk float :offset-assert 800)
@@ -49683,7 +49683,7 @@
(last-danger-time time-frame :offset-assert 832)
(next-time-look-at time-frame :offset-assert 840)
(stop-time-look-at time-frame :offset-assert 848)
(wait-return-state symbol :offset-assert 856)
(wait-return-state (state citizen) :offset-assert 856)
(wait-time time-frame :offset-assert 864)
(cp-valid? symbol :offset-assert 872)
(cp-sphere sphere :inline :offset-assert 880)
@@ -49697,31 +49697,30 @@
:method-count-assert 201
:size-assert #x3c4
:flag-assert #xc9035003c4
;; Failed to read fields.
(:methods
(citizen-method-178 () none 178)
(citizen-method-179 () none 179)
(citizen-method-180 () none 180)
(citizen-method-181 () none 181)
(citizen-method-182 () none 182)
(citizen-method-183 () none 183)
(citizen-method-184 () none 184)
(citizen-method-185 () none 185)
(citizen-method-186 () none 186)
(citizen-method-187 () none 187)
(citizen-method-188 () none 188)
(citizen-method-189 () none 189)
(citizen-method-190 () none 190)
(citizen-method-191 () none 191)
(citizen-method-192 () none 192)
(citizen-method-193 () none 193)
(citizen-method-194 () none 194)
(citizen-method-195 () none 195)
(citizen-method-196 () none 196)
(citizen-method-197 () none 197)
(citizen-method-198 () none 198)
(citizen-method-199 () none 199)
(citizen-method-200 () none 200)
(wait () _type_ :state 178)
(inactive () _type_ :state 179)
(in-ditch () _type_ :state 180)
(citizen-init! "Initialize [[citizen]] defaults." (_type_) none 181)
(citizen-nav-init! "Initialize nav related fields." (_type_) none 182)
(go-inactive (_type_) none 183)
(find-segment (_type_ vector vector) nav-segment 184)
(nav-segment-callback (_type_ vector traffic-find-segment-struct (function traffic-find-segment-struct nav-segment none)) none 185)
(citizen-method-186 (_type_ nav-segment) none 186)
(citizen-method-187 (_type_) symbol 187)
(citizen-method-188 (_type_ vector) none 188)
(calc-danger-vec (_type_ vector vector) none 189)
(citizen-method-190 (_type_ vector) none 190)
(gen-clear-path (_type_) nav-segment 191)
(citizen-method-192 (_type_) none 192)
(throw-off-vehicle (_type_) none 193)
(gen-new-dir (_type_ vector float) nav-segment 194)
(citizen-method-195 (_type_ vector) symbol 195)
(get-run-anim (_type_) int 196)
(trigger-alert (_type_ int target) none 197)
(decrease-alert (_type_ object) none 198)
(set-behavior! (_type_ traffic-object-spawn-params) none 199)
(citizen-method-200 (_type_) none 200)
)
)
@@ -51126,9 +51125,8 @@
;; citizen ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#|
(deftype iter-seg (structure)
((self basic :offset-assert 0)
((self citizen :offset-assert 0)
(score float :offset-assert 4)
(seg nav-segment :offset-assert 8)
(cp-plane plane :inline :offset-assert 16)
@@ -51138,42 +51136,39 @@
:size-assert #x30
:flag-assert #x900000030
)
|#
;; (define-extern *citizen-debug* object)
(define-extern *citizen-debug* symbol)
(define-extern citizen-init-by-other (function traffic-object-spawn-params none :behavior citizen))
;; (define-extern citizen-travel-anim function)
;; (define-extern iter-seg-clear-path function)
;; (define-extern iter-seg-new-dir function)
(define-extern citizen-travel-anim (function int int symbol :behavior citizen))
(define-extern iter-seg-clear-path (function iter-seg nav-segment symbol))
(define-extern iter-seg-new-dir (function iter-seg nav-segment none))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; civilian ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#|
(deftype civilian-anim-info (structure)
((anim-index UNKNOWN 2 :offset-assert 0)
(anim-index-front int32 :offset-assert 0)
(anim-index-back int32 :offset-assert 4)
((anim-index int32 2 :offset-assert 0)
(anim-index-front int32 :offset 0)
(anim-index-back int32 :offset 4)
)
:pack-me
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
|#
#|
(deftype civilian-global-info (basic)
((prev-yellow-hit int8 :offset-assert 4)
(prev-blue-hit int8 :offset-assert 5)
(knocked UNKNOWN 2 :offset-assert 8)
(anim-knocked-front int32 :offset-assert 8)
(anim-knocked-back int32 :offset-assert 12)
(knocked-land UNKNOWN 2 :offset-assert 16)
(anim-knocked-front-land int32 :offset-assert 16)
(anim-knocked-back-land int32 :offset-assert 20)
(yellow-hit-anim UNKNOWN 1 :offset-assert 24)
(blue-hit-anim UNKNOWN 3 :offset-assert 32)
(knocked int32 2 :offset-assert 8)
(anim-knocked-front int32 :offset 8)
(anim-knocked-back int32 :offset 12)
(knocked-land int32 2 :offset-assert 16)
(anim-knocked-front-land int32 :offset 16)
(anim-knocked-back-land int32 :offset 20)
(yellow-hit-anim civilian-anim-info 1 :inline :offset-assert 24)
(blue-hit-anim civilian-anim-info 3 :inline :offset-assert 32)
(anim-cover-head-start int32 :offset-assert 56)
(anim-cover-head-loop int32 :offset-assert 60)
(anim-cover-head-end int32 :offset-assert 64)
@@ -51195,10 +51190,9 @@
:size-assert #x5d
:flag-assert #x90000005d
)
|#
(deftype civilian (citizen)
((info basic :offset-assert 964)
((info civilian-global-info :offset-assert 964)
(anim-panic-run int32 :offset-assert 968)
(anim-on-ground int32 :offset-assert 972)
(anim-dive int32 :offset-assert 976)
@@ -51206,11 +51200,11 @@
(anim-get-up-back int32 :offset-assert 984)
(last-second-pos vector :inline :offset-assert 992)
(last-distance float :offset-assert 1008)
(next-time time-frame :offset-assert 1016)
(next-time time-frame :offset-assert 1016)
(dive-target-point vector :inline :offset-assert 1024)
(dive-reaction float :offset-assert 1040)
(allow-dive basic :offset-assert 1044)
(dive-finished? basic :offset-assert 1048)
(allow-dive symbol :offset-assert 1044)
(dive-finished? symbol :offset-assert 1048)
(hit-face uint32 :offset-assert 1052)
(seat int32 :offset-assert 1056)
)
@@ -51229,22 +51223,22 @@
(move-to-vehicle () _type_ :state 209)
(board-vehicle () _type_ :state 210)
(ride () _type_ :state 211)
(exit-vehicle () _type_ :state 212)
(exit-vehicle (object object int symbol event-message-block) _type_ :state 212)
(wait-at-dest () _type_ :state 213)
(civilian-method-214 () none 214)
(civilian-method-215 () none 215)
(civilian-method-216 () none 216)
(civilian-method-217 () none 217)
(civilian-method-214 (_type_ nav-branch int vector float) float 214)
(civilian-method-215 (_type_ vector) none 215)
(go-dive (_type_) none 216)
(civilian-method-217 (_type_ vector) symbol 217)
)
)
;; (define-extern civilian-flee-post function)
;; (define-extern civilian-avoid-danger-post function)
;; (define-extern civilian-avoid-danger-post2 function)
;; (define-extern civilian-clear-path-post function)
;; (define-extern civilian-clear-path-post2 function)
;; (define-extern civilian-falling-post function)
;; (define-extern do-spline2 function)
(define-extern civilian-flee-post (function none :behavior civilian))
(define-extern civilian-avoid-danger-post (function none :behavior civilian))
(define-extern civilian-avoid-danger-post2 (function none :behavior civilian))
(define-extern civilian-clear-path-post (function none :behavior civilian))
(define-extern civilian-clear-path-post2 (function none :behavior civilian))
(define-extern civilian-falling-post (function none :behavior civilian))
(define-extern do-spline2 (function vector vector vector vector vector float vector))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; guard ;;
@@ -51255,30 +51249,29 @@
(anim-index-front int32 :offset 0)
(anim-index-back int32 :offset 4)
)
:pack-me
:method-count-assert 9
:size-assert #x8 ;; 8
:flag-assert #x900000008
)
#|
(deftype guard-global-info (UNKNOWN)
(deftype guard-global-info (basic)
((prev-yellow-hit int8 :offset-assert 4)
(prev-blue-hit int8 :offset-assert 5)
(knocked UNKNOWN 2 :offset-assert 8)
(knocked-land UNKNOWN 2 :offset-assert 16)
(anim-knocked-front int32 :offset-assert 8)
(anim-knocked-back int32 :offset-assert 12)
(anim-knocked-front-land int32 :offset-assert 16)
(anim-knocked-back-land int32 :offset-assert 20)
(yellow-hit-anim UNKNOWN 2 :offset-assert 24)
(yellow-land-anim UNKNOWN 2 :offset-assert 40)
(blue-hit-anim UNKNOWN 1 :offset-assert 56)
(knocked int32 2 :offset-assert 8)
(knocked-land int32 2 :offset-assert 16)
(anim-knocked-front int32 :offset 8)
(anim-knocked-back int32 :offset 12)
(anim-knocked-front-land int32 :offset 16)
(anim-knocked-back-land int32 :offset 20)
(yellow-hit-anim guard-anim-info 2 :inline :offset-assert 24)
(yellow-land-anim guard-anim-info 2 :inline :offset-assert 40)
(blue-hit-anim int32 :offset-assert 56)
)
:method-count-assert 0
:size-assert #x0
:flag-assert #x0
:method-count-assert 9
:size-assert #x3c
:flag-assert #x90000003c
)
|#
(deftype guard-shoot-info (structure)
((anim-index int32 :offset-assert 0)
@@ -51293,7 +51286,7 @@
(deftype crimson-guard (citizen)
(
(info symbol :offset-assert 964)
(info guard-global-info :offset-assert 964)
(hit-face uint32 :offset-assert 968)
(anim-get-up-front int32 :offset-assert 972)
(anim-get-up-back int32 :offset-assert 976)
@@ -51303,14 +51296,14 @@
(settings traffic-guard-type-settings :offset-assert 992)
(next-time time-frame :offset-assert 1000)
(last-time-see-target time-frame :offset-assert 1008)
(joint symbol :offset-assert 1016)
(joint joint-mod :offset-assert 1016)
(joint-enable symbol :offset-assert 1020)
(already-shot symbol :offset-assert 1024)
(miss-amount float :offset-assert 1028)
(l-control symbol :offset-assert 1032)
(l-control lightning-control :offset-assert 1032)
(next-shot int64 :offset-assert 1040)
(anim-shoot guard-shoot-info 3 :inline :offset-assert 1048) ;; elt size: 13.333333333333334
(transport int64 :offset-assert 1088)
(transport handle :offset-assert 1088)
(transport-side uint32 :offset-assert 1096)
(target-flags uint8 :offset-assert 1100)
(target-pos vector :inline :offset-assert 1104)
@@ -51335,39 +51328,40 @@
:size-assert #x568 ;; 1384
:flag-assert #xe304f00568
(:methods
(crimson-guard-method-201 () none 201)
(crimson-guard-method-202 () none 202)
(crimson-guard-method-203 () none 203)
(crimson-guard-method-204 () none 204)
(crimson-guard-method-205 () none 205)
(crimson-guard-method-206 () none 206)
(crimson-guard-method-207 () none 207)
(crimson-guard-method-208 () none 208)
(crimson-guard-method-209 () none 209)
(crimson-guard-method-210 () none 210)
(crimson-guard-method-211 () none 211)
(crimson-guard-method-212 () none 212)
(crimson-guard-method-213 () none 213)
(crimson-guard-method-214 () none 214)
(crimson-guard-method-215 () none 215)
(crimson-guard-method-216 () none 216)
(crimson-guard-method-217 () none 217)
(crimson-guard-method-218 () none 218)
(crimson-guard-method-219 () none 219)
(crimson-guard-method-220 () none 220)
(crimson-guard-method-221 () none 221)
(crimson-guard-method-222 () none 222)
(crimson-guard-method-223 () none 223)
(crimson-guard-method-224 () none 224)
(crimson-guard-method-225 () none 225)
(crimson-guard-method-226 () none 226))
(get-up-front () _type_ :state 201)
(get-up-back () _type_ :state 202)
(search () _type_ :state 203)
(attack () _type_ :state 204)
(arrest () _type_ :state 205)
(gun-shoot () _type_ :state 206)
(exit-transport () _type_ :state 207)
(waiting-ambush () _type_ :state 208)
(close-attack () _type_ :state 209)
(knocked-off-vehicle () _type_ :state 210)
(roll-right () _type_ :state 211)
(roll-left () _type_ :state 212)
(close-attack-active () _type_ :state 213)
(crimson-guard-method-214 (_type_) none 214)
(crimson-guard-method-215 (_type_) symbol 215)
(crimson-guard-method-216 (_type_) symbol 216)
(crimson-guard-method-217 (_type_ vector vector vector) int 217)
(crimson-guard-method-218 (_type_ vector) none 218)
(crimson-guard-method-219 (_type_) none 219)
(crimson-guard-method-220 (_type_) none 220)
(crimson-guard-method-221 (_type_) none 221)
(crimson-guard-method-222 (_type_) none 222)
(crimson-guard-method-223 (_type_ float) none 223)
(crimson-guard-method-224 (_type_ vector) float 224)
(crimson-guard-method-225 (_type_ uint symbol) none 225)
(crimson-guard-method-226 (_type_) none 226)
)
)
;; (define-extern *crimson-guard-global-info* guard-global-info)
(define-extern *crimson-guard-global-info* guard-global-info)
(define-extern *crimson-guard-nav-enemy-info* nav-enemy-info)
;; (define-extern *guard-min-id-hack* object)
;; (define-extern do-spline function)
;; (define-extern spread-lightning-lazer function)
(define-extern *guard-min-id-hack* int)
(define-extern do-spline (function vector vector vector vector vector float vector))
(define-extern spread-lightning-lazer (function lightning-control vector vector vector none))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; citizen-norm ;;
@@ -51383,8 +51377,8 @@
)
)
;; (define-extern *citizen-norm-global-info* civilian-global-info)
;; (define-extern *citizen-norm-nav-enemy-info* nav-enemy-info)
(define-extern *citizen-norm-global-info* civilian-global-info)
(define-extern *citizen-norm-nav-enemy-info* nav-enemy-info)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; citizen-fat ;;
@@ -51399,8 +51393,8 @@
)
)
;; (define-extern *citizen-fat-global-info* civilian-global-info)
;; (define-extern *citizen-fat-nav-enemy-info* nav-enemy-info)
(define-extern *citizen-fat-global-info* civilian-global-info)
(define-extern *citizen-fat-nav-enemy-info* nav-enemy-info)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; citizen-chick ;;
@@ -51415,23 +51409,23 @@
)
)
;; (define-extern *citizen-chick-global-info* civilian-global-info)
;; (define-extern *citizen-chick-nav-enemy-info* nav-enemy-info)
(define-extern *citizen-chick-global-info* civilian-global-info)
(define-extern *citizen-chick-nav-enemy-info* nav-enemy-info)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; citizen-enemy ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(deftype citizen-enemy (citizen)
((next-update-target uint64 :offset-assert 968)
((next-update-target time-frame :offset-assert 968)
(minimap connection-minimap :offset-assert 976)
)
:method-count-assert 203
:size-assert #x3d4
:flag-assert #xcb036003d4
(:methods
(citizen-enemy-method-201 () none 201)
(citizen-enemy-method-202 () none 202)
(traffic-danger-init! (_type_) none 201)
(citizen-enemy-method-202 (_type_) none 202)
)
)
@@ -51457,7 +51451,7 @@
(next-change int64 :offset-assert 1200)
(shoot-angle degrees :offset-assert 1208)
(miss-amount float :offset-assert 1212)
(ambient-sound-id uint32 :offset-assert 1216)
(ambient-sound-id sound-id :offset-assert 1216)
(shock-effect-time time-frame :offset-assert 1224)
(shock-effect-end int64 :offset-assert 1232)
(fade float :offset-assert 1240)
@@ -51469,10 +51463,11 @@
(:methods
(fire () _type_ :state 203)
(close-attack () _type_ :state 204)
(metalhead-predator-method-205 () none 205)
(metalhead-predator-method-206 () none 206)
(metalhead-predator-method-207 () none 207)
(metalhead-predator-method-208 () none 208))
(metalhead-predator-method-205 (_type_ symbol) none 205)
(metalhead-predator-method-206 (_type_ int float) none 206)
(metalhead-predator-method-207 (_type_ vector vector vector) symbol 207)
(metalhead-predator-method-208 (_type_) none 208)
)
)
(define-extern *metalhead-predator-nav-enemy-info* nav-enemy-info)
@@ -51488,7 +51483,7 @@
(knocked-anim grunt-anim-info :offset-assert 992)
(yellow-hit-anim grunt-anim-info :offset-assert 996)
(blue-hit-anim grunt-anim-info :offset-assert 1000)
(intro-path basic :offset-assert 1004)
(intro-path path-control :offset-assert 1004)
(pad-jh1b23jhb13 uint32 :offset-assert 1008)
(use-charge-anim-index int8 :offset-assert 1012)
(knocked-anim-index int8 :offset-assert 1013)
@@ -51509,9 +51504,9 @@
(jumping-ambush-cont () _type_ :state 206)
(wait-for-focus () _type_ :state 207)
(spin-attack () _type_ :state 208)
(metalhead-grunt-method-209 () none 209)
(metalhead-grunt-method-210 () none 210)
(metalhead-grunt-method-211 () none 211)
(metalhead-grunt-method-209 (_type_ float) process-focusable 209)
(get-nav-info (_type_) nav-enemy-info 210)
(metalhead-grunt-method-211 (_type_) none 211)
)
)
@@ -51523,7 +51518,7 @@
(deftype metalhead-flitter (citizen-enemy)
((move-angle float :offset-assert 980)
(heading basic :offset-assert 984)
(heading symbol :offset-assert 984)
(change-dir-time time-frame :offset-assert 992)
(last-change-dir uint64 :offset-assert 1000)
(off-screen-timer uint64 :offset-assert 1008)
@@ -51539,16 +51534,16 @@
(:methods
(attack () _type_ :state 203)
(ambush-jumping () _type_ :state 204)
(metalhead-flitter-method-205 () none 205)
(metalhead-flitter-method-206 () none 206)
(metalhead-flitter-method-207 () none 207)
(metalhead-flitter-method-208 () none 208)
(metalhead-flitter-method-209 () none 209)
(metalhead-flitter-method-205 (_type_) none 205)
(metalhead-flitter-method-206 (_type_) none 206)
(metalhead-flitter-method-207 (_type_ process-focusable) symbol 207)
(metalhead-flitter-method-208 (_type_ symbol) none 208)
(metalhead-flitter-method-209 (_type_) float 209)
)
)
;; (define-extern *metalhead-flitter-nav-enemy-info* nav-enemy-info)
;; (define-extern metalhead-flitter-fall-and-play-death-anim function)
(define-extern *metalhead-flitter-nav-enemy-info* nav-enemy-info)
(define-extern metalhead-flitter-fall-and-play-death-anim (function int float time-frame none :behavior metalhead-flitter))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; traffic-engine ;;
@@ -1171,7 +1171,9 @@
[14, "(function vector object)"],
[15, "(function int int (pointer object) int)"]
],
"pilot-states": [
[15, "(function object object object int none)"]
"pilot-states": [[15, "(function object object object int none)"]],
"guard": [
[19, "(function collide-shape-prim none)"],
[39, "(function crimson-guard collide-shape-moving vector symbol)"]
]
}
+4 -3
View File
@@ -105,7 +105,6 @@
"(method 154 vehicle-racer)",
"(method 228 hal-sewer)",
"(method 154 vehicle-city-racer)",
"(method 207 metalhead-predator)",
"test-to-from-spr",
"test-from-spr",
"test-to-spr",
@@ -503,7 +502,7 @@
2, 3, 7, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 30
],
"(method 10 simple-sprite-system)": [0, 1, 3, 4, 5, 6, 9, 11],
"target-pilot-post": [0, 2, 4, 13, 16, 22, 27, 41],
"target-pilot-post": [0, 2, 4, 13, 16, 22, 27, 41],
"(anon-function 0 ruins-obs)": [
0, 5, 7, 12, 13, 15, 17, 23, 24, 33, 42, 45, 46, 53, 58
],
@@ -527,7 +526,9 @@
"(method 11 rigid-body-queue)": [0, 5, 6, 7, 8, 9, 10, 11, 17, 18, 25],
"(method 10 rigid-body-queue)": [0, 9, 10, 16, 24, 25, 26, 35, 36, 48],
"(method 18 vehicle-controller)": [0, 1, 74, 75],
"(method 15 vehicle-controller)": [0, 3, 5, 6, 7, 10]
"(method 15 vehicle-controller)": [0, 3, 5, 6, 7, 10],
"(anon-function 41 guard)": [9],
"(anon-function 10 metalhead-predator)": [24, 25]
},
// Sometimes the game might use format strings that are fetched dynamically,
+27 -3
View File
@@ -1003,9 +1003,25 @@
],
"metalhead-predator": [
["L175", "uint64", true],
["L174", "uint64", true]
["L174", "uint64", true],
["L134", "vector"],
["L133", "vector"],
["L150", "uint64", true],
["L151", "uint64", true],
["L149", "uint64", true],
["L152", "uint64", true]
],
"guard": [
["L654", "uint64", true],
["L651", "uint64", true],
["L653", "uint64", true],
["L652", "uint64", true],
["L578", "uint64", true],
["L579", "uint64", true],
["L579", "uint64", true],
["L581", "uint64", true],
["L580", "uint64", true]
],
"guard": [["L654", "uint64", true]],
"vehicle-states": [["L90", "attack-info"]],
"vehicle": [
["L290", "attack-info"],
@@ -1535,6 +1551,14 @@
"bike": [
["L63", "(inline-array vector)", 2],
["L64", "(inline-array vector)", 2]
],
"citizen": [["L212", "attack-info"]],
"metalhead-grunt": [
["L188", "vector"],
["L187", "vector"]
],
"metalhead-flitter": [
["L161", "vector"],
["L160", "vector"]
]
}
+62 -13
View File
@@ -1946,23 +1946,72 @@
"(post draw-closest-minimap nav-graph-editor)": [
[16, ["inline-array", "vector", 5]]
],
"(method 69 traffic-engine)": [
[16, ["array", "collide-shape", 40]]
],
"(method 60 traffic-engine)": [
[16, ["array", "collide-shape", 64]]
],
"(method 85 bike-base)": [
[16, ["inline-array", "matrix", 3]]
],
"(method 69 traffic-engine)": [[16, ["array", "collide-shape", 40]]],
"(method 60 traffic-engine)": [[16, ["array", "collide-shape", 64]]],
"(method 85 bike-base)": [[16, ["inline-array", "matrix", 3]]],
"target-pilot-post": [
[48, "collide-query-with-5vec"],
[640, "matrix"]
],
"target-pilot-trans": [
[16, ["inline-array", "vector", 10]]
"target-pilot-trans": [[16, ["inline-array", "vector", 10]]],
"(code target-pilot-get-off)": [[96, ["inline-array", "vector", 10]]],
"(method 194 citizen)": [
[80, "vector"],
[32, "iter-seg"],
[16, "vector"]
],
"(code target-pilot-get-off)": [
[96, ["inline-array", "vector", 10]]
"(method 191 citizen)": [[32, "iter-seg"]],
"(method 189 citizen)": [
[64, "vector"],
[80, "vector"]
],
"(method 190 citizen)": [
[80, "vector"],
[96, "vector"]
],
"iter-seg-clear-path": [
[16, "vector"],
[32, "vector"],
[48, "vector"],
[64, "vector"]
],
"(method 202 citizen-enemy)": [
[32, ["array", "collide-shape", 64]],
[16, "vector"]
],
"(trans move-to-vehicle civilian)": [
[32, "vector"],
[128, "vector"]
],
"civilian-flee-post": [
[48, "vector"],
[16, "vector"],
[32, "vector"],
[80, "vector"]
],
"civilian-avoid-danger-post": [[112, "vector"]],
"civilian-clear-path-post": [[96, "vector"]],
"(method 224 crimson-guard)": [
[32, "vector"],
[656, "vector"],
[720, "vector"]
],
"(method 218 crimson-guard)": [
[32, "vector"],
[48, "vector"],
[96, "vector"],
[160, "vector"],
[176, "vector"],
[16, "vector"]
],
"(method 220 crimson-guard)": [[16, "vector"]],
"(post hostile crimson-guard)": [
[16, "vector"],
[96, "vector"]
],
"(method 206 metalhead-predator)": [
[128, "vector"],
[144, "vector"],
[176, "vector"]
]
}
+424 -56
View File
@@ -6896,7 +6896,8 @@
[[32, 109], "s3", "process-focusable"],
[354, "s5", "process-focusable"],
[135, "v0", "(array crimson-guard)"],
[143, "v0", "(array float)"]
[143, "v0", "(array float)"],
["_stack_", 216, "float"]
],
"(method 25 traffic-tracker)": [[24, "a0", "process-focusable"]],
"(method 68 traffic-engine)": [
@@ -6928,7 +6929,10 @@
"(method 60 traffic-engine)": [[29, "v1", "collide-shape"]],
"(method 26 traffic-tracker)": [[26, "a0", "process-focusable"]],
"(method 17 traffic-tracker)": [[23, "s1", "process-focusable"]],
"target-pilot-post": [[96, "s5", "process-focusable"]],
"target-pilot-post": [
[[96, 114], "s5", "vehicle"],
[[279, 294], "s5", "vehicle"]
],
"(anon-function 1 ruins-obs)": [
[85, "v1", "process-drawable"],
[17, "v1", "process-drawable"]
@@ -8986,9 +8990,7 @@
[[8, 12], "a1", "handle"],
[[11, 19], "a0", "handle"]
],
"(method 10 traffic-engine)": [
[102, "v1", "(pointer uint128)"]
],
"(method 10 traffic-engine)": [[102, "v1", "(pointer uint128)"]],
"(method 61 traffic-engine)": [
[95, "t0", "uint"],
[111, "a2", "uint"],
@@ -9000,12 +9002,8 @@
[36, "a2", "pointer"],
[[37, 49], "a1", "(pointer int8)"]
],
"(method 10 xz-height-map)": [
[121, "s0", "pointer"]
],
"(method 42 nav-graph)": [
[27, "v1", "uint"]
],
"(method 10 xz-height-map)": [[121, "s0", "pointer"]],
"(method 42 nav-graph)": [[27, "v1", "uint"]],
"make-nav-graph": [
[[28, 31], "v1", "mysql-nav-graph-level-info"],
[31, "v1", "mysql-nav-graph-level-info"]
@@ -9017,42 +9015,22 @@
[246, "v1", "mysql-nav-edge"],
[254, "v1", "mysql-nav-edge"]
],
"(method 11 city-level-info)": [
[27, "a3", "(pointer int8)"]
],
"(method 36 bike-base)": [
[7, "t9", "(function object none)"]
],
"(method 11 city-level-info)": [[27, "a3", "(pointer int8)"]],
"(method 36 bike-base)": [[7, "t9", "(function object none)"]],
"(method 85 bike-base)": [
[7, "t9", "(function object none)"],
[[22, 26], "v1", "(pointer uint128)"]
],
"(method 7 bikea)": [
[44, "t9", "(function object int bikea)"]
],
"(method 7 bikeb)": [
[49, "t9", "(function object int bikeb)"]
],
"(method 7 bikec)": [
[64, "t9", "(function object int bikec)"]
],
"(method 7 guard-bike)": [
[14, "t9", "(function object int guard-bike)"]
],
"target-pilot-exit": [
[64, "gp", "vehicle"]
],
"(method 7 bikea)": [[44, "t9", "(function object int bikea)"]],
"(method 7 bikeb)": [[49, "t9", "(function object int bikeb)"]],
"(method 7 bikec)": [[64, "t9", "(function object int bikec)"]],
"(method 7 guard-bike)": [[14, "t9", "(function object int guard-bike)"]],
"target-pilot-exit": [[64, "gp", "vehicle"]],
"target-pilot-init": [
[[61, 68], "s4", "vehicle"],
[[68, 138], "s4", "vehicle"]
],
"target-pilot-post": [
[[96, 114], "s5", "vehicle"],
[[279, 294], "s5", "vehicle"]
],
"target-pilot-trans": [
[[53, 130], "s5", "vehicle"]
],
"target-pilot-trans": [[[53, 130], "s5", "vehicle"]],
"(code target-pilot-impact)": [
[83, "v1", "art-joint-anim"],
[138, "v1", "art-joint-anim"],
@@ -9070,33 +9048,423 @@
[824, "v1", "art-joint-anim"],
[882, "v1", "art-joint-anim"]
],
"(trans target-pilot-get-on)": [
[[28, 48], "gp", "vehicle"]
],
"(trans target-pilot-get-on)": [[[28, 48], "gp", "vehicle"]],
"(code target-pilot-get-on)": [
[65, "gp", "art-joint-anim"],
[173, "a1", "vehicle"]
],
"(event target-pilot-grab)": [
[24, "a0", "process"]
],
"(enter target-pilot-edge-grab)": [
[[40, 46], "a0", "process-focusable"]
],
"(event target-pilot-grab)": [[24, "a0", "process"]],
"(enter target-pilot-edge-grab)": [[[40, 46], "a0", "process-focusable"]],
"target-pilot-handler": [
[[28, 33], "a0", "vehicle"],
[103, "a0", "process"]
],
"(method 7 cara)": [
[54, "t9", "(function object object cara)"]
"(method 7 cara)": [[54, "t9", "(function object object cara)"]],
"(method 7 carb)": [[39, "t9", "(function object object carb)"]],
"(method 7 carc)": [[44, "t9", "(function object object carb)"]],
"(method 7 hellcat)": [[14, "t9", "(function object object hellcat)"]],
"(code in-ditch citizen)": [
[23, "v1", "art-joint-anim"],
[122, "v1", "art-joint-anim"]
],
"(method 7 carb)": [
[39, "t9", "(function object object carb)"]
"(method 193 citizen)": [
[24, "s4", "vehicle"],
[29, "s4", "vehicle"],
[35, "s4", "vehicle"],
[61, "s4", "vehicle"]
],
"(method 7 carc)": [
[44, "t9", "(function object object carb)"]
"(code wait citizen)": [[22, "v1", "art-joint-anim"]],
"(method 55 citizen)": [
[21, "a0", "process-focusable"],
[24, "a0", "process-focusable"]
],
"(method 7 hellcat)": [
[14, "t9", "(function object object hellcat)"]
"(method 74 citizen)": [
[95, "s5", "traffic-object-spawn-params"],
[101, "s5", "traffic-object-spawn-params"],
[105, "s5", "traffic-object-spawn-params"],
[108, "s5", "traffic-object-spawn-params"],
[127, "s5", "traffic-object-spawn-params"]
],
"(code wait citizen-fat)": [
[101, "v1", "art-joint-anim"],
[150, "v1", "art-joint-anim"]
],
"(exit get-up-back citizen-fat)": [
[9, "v1", "collide-shape-prim-group"],
[12, "v1", "collide-shape-prim-group"],
[14, "v1", "collide-shape-prim-group"],
[17, "v1", "collide-shape-prim-group"],
[20, "v1", "collide-shape-prim-group"],
[23, "v1", "collide-shape-prim-group"]
],
"(exit get-up-front citizen-fat)": [
[9, "v1", "collide-shape-prim-group"],
[12, "v1", "collide-shape-prim-group"],
[14, "v1", "collide-shape-prim-group"],
[17, "v1", "collide-shape-prim-group"],
[20, "v1", "collide-shape-prim-group"],
[23, "v1", "collide-shape-prim-group"]
],
"(enter knocked citizen-fat)": [
[8, "v1", "collide-shape-prim-group"],
[11, "v1", "collide-shape-prim-group"],
[14, "v1", "collide-shape-prim-group"],
[17, "v1", "collide-shape-prim-group"],
[19, "v1", "collide-shape-prim-group"],
[21, "v1", "collide-shape-prim-group"]
],
"(method 78 citizen-fat)": [[30, "v1", "art-joint-anim"]],
"(method 79 citizen-fat)": [[58, "v1", "art-joint-anim"]],
"(method 77 citizen-fat)": [
[40, "a1", "art-joint-anim"],
[92, "a1", "art-joint-anim"],
[140, "s4", "art-joint-anim"],
[28, "a0", "civilian-global-info"],
[80, "a0", "civilian-global-info"]
],
"(method 51 citizen-fat)": [
[27, "a0", "process-focusable"],
[30, "a0", "process-focusable"]
],
"(code wait citizen-norm)": [
[101, "v1", "art-joint-anim"],
[150, "v1", "art-joint-anim"]
],
"(exit get-up-back citizen-norm)": [
[[9, 24], "v1", "collide-shape-prim-group"]
],
"(exit get-up-front citizen-norm)": [
[[9, 24], "v1", "collide-shape-prim-group"]
],
"(enter knocked citizen-norm)": [[[8, 22], "v1", "collide-shape-prim-group"]],
"(method 78 citizen-norm)": [[33, "v1", "art-joint-anim"]],
"(method 77 citizen-norm)": [
[19, "v1", "art-joint-anim"],
[58, "v1", "art-joint-anim"],
[118, "a1", "art-joint-anim"],
[170, "a1", "art-joint-anim"],
[233, "s4", "art-joint-anim"],
[106, "a0", "civilian-global-info"],
[158, "a0", "civilian-global-info"]
],
"(method 79 citizen-norm)": [[58, "v1", "art-joint-anim"]],
"(method 51 citizen-norm)": [
[35, "a0", "process-focusable"],
[38, "a0", "process-focusable"]
],
"(method 199 citizen-norm)": [[38, "v1", "vehicle"]],
"(code active citizen-enemy)": [[30, "v1", "art-joint-anim"]],
"(code wait citizen-chick)": [[22, "v1", "art-joint-anim"]],
"(exit get-up-back citizen-chick)": [
[[9, 24], "v1", "collide-shape-prim-group"]
],
"(exit get-up-front citizen-chick)": [
[[9, 24], "v1", "collide-shape-prim-group"]
],
"(enter knocked citizen-chick)": [
[[8, 22], "v1", "collide-shape-prim-group"]
],
"(method 78 citizen-chick)": [[30, "v1", "art-joint-anim"]],
"(method 77 citizen-chick)": [
[40, "a1", "art-joint-anim"],
[92, "a1", "art-joint-anim"],
[140, "s4", "art-joint-anim"],
[28, "a0", "civilian-global-info"],
[80, "a0", "civilian-global-info"]
],
"(method 79 citizen-chick)": [[58, "v1", "art-joint-anim"]],
"(method 51 citizen-chick)": [
[27, "a0", "process-focusable"],
[30, "a0", "process-focusable"]
],
"(method 202 citizen-enemy)": [
[46, "s1", "process-focusable"],
[50, "s1", "process-focusable"],
[72, "s1", "process-focusable"]
],
"(method 76 citizen-enemy)": [[46, "v1", "process-focusable"]],
"(code wait-at-dest civilian)": [[22, "v1", "art-joint-anim"]],
"(code exit-vehicle civilian)": [
[15, "a0", "vehicle"],
[74, "s5", "vehicle"],
[77, "s5", "vehicle"],
[203, "v1", "vehicle"],
[257, "a0", "vehicle"],
[162, "s4", "vehicle"],
[165, "s4", "vehicle"],
[18, "a0", "vehicle"],
[170, "s4", "vehicle"],
[261, "a0", "vehicle"],
[82, "s5", "vehicle"]
],
"(trans exit-vehicle civilian)": [[14, "v1", "vehicle"]],
"(trans ride civilian)": [[14, "v1", "vehicle"]],
"(event ride civilian)": [[5, "a0", "vector"]],
"(code board-vehicle civilian)": [
[129, "s2", "vehicle"],
[132, "s2", "vehicle"],
[275, "s5", "vehicle"],
[278, "s5", "vehicle"],
[283, "s5", "vehicle"],
[360, "a0", "vehicle"],
[364, "a0", "vehicle"],
[136, "s2", "vehicle"]
],
"(trans board-vehicle civilian)": [[14, "v1", "vehicle"]],
"(trans move-to-vehicle civilian)": [
[14, "s0", "vehicle"],
[28, "s0", "vehicle"],
[52, "s0", "vehicle"]
],
"(method 217 civilian)": [
[19, "s3", "vehicle"],
[28, "s3", "vehicle"],
[43, "s3", "vehicle"]
],
"(code wait-for-ride civilian)": [[22, "v1", "art-joint-anim"]],
"(trans wait-for-ride civilian)": [[31, "v1", "vehicle"]],
"(method 74 civilian)": [
[30, "a0", "sphere"],
[75, "a0", "vector"],
[[100, 112], "v1", "traffic-danger-info"]
],
"civilian-flee-post": [[78, "s5", "nav-branch"]],
"(code dive civilian)": [[20, "v1", "art-joint-anim"]],
"(code on-ground civilian)": [[20, "v1", "art-joint-anim"]],
"(code get-up-front civilian)": [[20, "v1", "art-joint-anim"]],
"(code get-up-back civilian)": [[20, "v1", "art-joint-anim"]],
"(event wait-for-ride civilian)": [[[3, 7], "a0", "vehicle"]],
"(method 74 crimson-guard)": [
[142, "v1", "traffic-danger-info"],
[151, "v1", "traffic-danger-info"],
[[178, 190], "v1", "traffic-danger-info"],
[327, "a1", "process-focusable"],
[331, "a1", "process-focusable"],
[447, "v1", "process-focusable"],
[450, "v1", "process-focusable"]
],
"(code get-up-front crimson-guard)": [[20, "v1", "art-joint-anim"]],
"(method 7 crimson-guard)": [
[19, "t9", "(function process-drawable int process-drawable)"]
],
"(code attack crimson-guard)": [
[351, "a0", "process-focusable"],
[380, "v1", "art-joint-anim"],
[433, "v1", "collide-shape-prim-group"],
[525, "v1", "collide-shape-prim-group"],
[562, "v1", "art-joint-anim"],
[101, "v1", "art-joint-anim"],
[169, "v1", "art-joint-anim"],
[291, "a0", "process-focusable"]
],
"(trans attack crimson-guard)": [
[41, "v1", "process-focusable"],
[46, "v1", "process-focusable"]
],
"(method 223 crimson-guard)": [[18, "s3", "process-focusable"]],
"(method 224 crimson-guard)": [["_stack_", 768, "vector"]],
"(code waiting-ambush crimson-guard)": [
[22, "v1", "art-joint-anim"],
[139, "v1", "art-joint-anim"],
[71, "v1", "art-joint-anim"]
],
"(code arrest crimson-guard)": [
[29, "v1", "art-joint-anim"],
[171, "v1", "art-joint-anim"],
[106, "v1", "art-joint-anim"]
],
"(code roll-left crimson-guard)": [
[95, "a0", "process-focusable"],
[98, "a0", "process-focusable"],
[182, "a0", "process-focusable"],
[185, "a0", "process-focusable"]
],
"(code roll-right crimson-guard)": [
[95, "a0", "process-focusable"],
[98, "a0", "process-focusable"],
[182, "a0", "process-focusable"],
[185, "a0", "process-focusable"]
],
"(code gun-shoot crimson-guard)": [
[35, "v1", "art-joint-anim"],
[167, "v1", "process-focusable"],
[269, "v1", "art-joint-anim"]
],
"(trans gun-shoot crimson-guard)": [
[21, "gp", "process-focusable"],
[57, "gp", "process-focusable"]
],
"(code close-attack crimson-guard)": [
[15, "v1", "art-joint-anim"],
[48, "v1", "collide-shape-prim-group"]
],
"(exit close-attack crimson-guard)": [[2, "v1", "collide-shape-prim-group"]],
"(code get-up-back crimson-guard)": [[20, "v1", "art-joint-anim"]],
"(method 77 crimson-guard)": [
[19, "v1", "art-joint-anim"],
[58, "v1", "art-joint-anim"],
[120, "a1", "art-joint-anim"],
[178, "a1", "art-joint-anim"],
[207, "a1", "art-joint-anim"],
[238, "v1", "art-joint-anim"],
[281, "a1", "art-joint-anim"],
[314, "a1", "art-joint-anim"],
[168, "v1", "guard-global-info"]
],
"(enter knocked crimson-guard)": [
[[8, 22], "v1", "collide-shape-prim-group"]
],
"(method 199 crimson-guard)": [[166, "v1", "vehicle"]],
"(method 78 crimson-guard)": [
[22, "a1", "art-joint-anim"],
[76, "a1", "art-joint-anim"],
[108, "a1", "art-joint-anim"],
[140, "v1", "art-joint-anim"],
[182, "a1", "art-joint-anim"],
[66, "v1", "guard-global-info"]
],
"(exit get-up-back crimson-guard)": [
[[21, 36], "v1", "collide-shape-prim-group"]
],
"(exit get-up-front crimson-guard)": [
[[21, 36], "v1", "collide-shape-prim-group"]
],
"(code close-attack-active crimson-guard)": [
[15, "v1", "art-joint-anim"],
[48, "v1", "collide-shape-prim-group"]
],
"(exit close-attack-active crimson-guard)": [
[2, "v1", "collide-shape-prim-group"]
],
"(method 220 crimson-guard)": [
[127, "s4", "process-focusable"],
[150, "s4", "process-focusable"],
[159, "s4", "process-focusable"]
],
"(trans hostile crimson-guard)": [[58, "s4", "process-focusable"]],
"(code cower-ground civilian)": [
[22, "v1", "art-joint-anim"],
[84, "v1", "art-joint-anim"],
[155, "v1", "art-joint-anim"]
],
"(code falling-ambush metalhead-grunt)": [[18, "v1", "art-joint-anim"]],
"(trans wait-for-focus metalhead-grunt)": [
[13, "s5", "process-focusable"],
[40, "s5", "process-focusable"]
],
"(method 78 metalhead-grunt)": [
[53, "s4", "art-joint-anim"],
[91, "a1", "art-joint-anim"]
],
"(method 77 metalhead-grunt)": [
[87, "s4", "art-joint-anim"],
[233, "a1", "art-joint-anim"],
[323, "s4", "art-joint-anim"]
],
"(code stop-chase metalhead-grunt)": [[77, "gp", "art-joint-anim"]],
"(code spin-attack metalhead-grunt)": [
[45, "gp", "art-joint-anim"],
[73, "a0", "process-focusable"],
[76, "a0", "process-focusable"]
],
"(enter spin-attack metalhead-grunt)": [
[43, "gp", "process-focusable"],
[46, "gp", "process-focusable"]
],
"(code attack metalhead-grunt)": [
[55, "gp", "art-joint-anim"],
[155, "a0", "grunt-anim-info"]
],
"(code hostile metalhead-grunt)": [[122, "gp", "art-joint-anim"]],
"(code active metalhead-grunt)": [
[227, "gp", "art-joint-anim"],
[271, "gp", "art-joint-anim"],
[354, "v1", "art-joint-anim"],
[414, "v1", "art-joint-anim"],
[143, "gp", "art-joint-anim"]
],
"(method 208 metalhead-flitter)": [[4, "v1", "collide-shape-prim-group"]],
"(code circling metalhead-flitter)": [[27, "v1", "art-joint-anim"]],
"(trans circling metalhead-flitter)": [[14, "gp", "process-focusable"]],
"(post stare metalhead-flitter)": [[9, "t9", "(function nav-enemy none)"]],
"(code stare metalhead-flitter)": [[126, "v1", "art-joint-anim"]],
"(code attack metalhead-flitter)": [
[20, "v1", "art-joint-anim"],
[153, "v1", "art-joint-anim"]
],
"(code ambush-jumping metalhead-flitter)": [
[14, "v1", "art-joint-anim"],
[191, "v1", "art-joint-anim"]
],
"(enter ambush metalhead-flitter)": [
[50, "a0", "process-focusable"],
[53, "a0", "process-focusable"]
],
"(method 78 metalhead-flitter)": [[15, "a1", "art-joint-anim"]],
"(method 77 metalhead-flitter)": [
[14, "v1", "art-joint-anim"],
[69, "v1", "art-joint-anim"]
],
"(post active metalhead-flitter)": [
[9, "t9", "(function citizen-enemy none)"]
],
"(method 205 metalhead-flitter)": [[19, "s3", "process-focusable"]],
"(trans attack metalhead-flitter)": [
[29, "gp", "process-focusable"],
[35, "gp", "process-focusable"],
[53, "gp", "process-focusable"],
[60, "v1", "vector"],
[66, "v0", "vector"],
[56, "gp", "process-focusable"]
],
"(method 7 metalhead-predator)": [
[9, "t9", "(function process-drawable int process-drawable)"]
],
"(method 205 metalhead-predator)": [[4, "v1", "collide-shape-prim-group"]],
"(code close-attack metalhead-predator)": [
[15, "v1", "art-joint-anim"],
[93, "v1", "art-joint-anim"]
],
"(trans hostile metalhead-predator)": [
[20, "gp", "process-focusable"],
[25, "gp", "process-focusable"],
[54, "gp", "process-focusable"],
[57, "gp", "process-focusable"]
],
"(code fire metalhead-predator)": [
[26, "v1", "art-joint-anim"],
[102, "s5", "process-focusable"],
[121, "s5", "process-focusable"],
[124, "s5", "process-focusable"]
],
"(method 206 metalhead-predator)": [
[67, "s3", "process-drawable"],
[78, "s3", "process-focusable"],
[108, "s3", "process-focusable"],
[200, "s3", "process-focusable"],
[203, "s3", "process-focusable"]
],
"(method 78 metalhead-predator)": [
[21, "v1", "art-joint-anim"],
[53, "v1", "art-joint-anim"],
[89, "v1", "art-joint-anim"],
[123, "v1", "art-joint-anim"],
[155, "v1", "art-joint-anim"]
],
"(method 77 metalhead-predator)": [
[21, "v1", "art-joint-anim"],
[53, "v1", "art-joint-anim"],
[96, "v1", "art-joint-anim"],
[126, "v1", "art-joint-anim"],
[160, "v1", "art-joint-anim"],
[192, "v1", "art-joint-anim"]
],
"(code hostile metalhead-predator)": [
[14, "v1", "art-joint-anim"],
[67, "v1", "art-joint-anim"]
],
"(trans fire metalhead-predator)": [
[14, "v1", "process-focusable"],
[19, "v1", "process-focusable"]
]
}
+13
View File
@@ -4093,5 +4093,18 @@
},
"(method 46 squid)": {
"args": ["obj", "src", "arg2", "dest"]
},
"(method 49 traffic-engine)": {
"vars": {
"sv-192": "guards",
"s3-0": "target-proc",
"s5-0": "target-pos",
"s2-3": "guard",
"sv-196": "guard-target-dists",
"s3-1": "guard-count",
"sv-200": "guard-idx",
"s3-2": "crimson-guard"
},
"args": ["obj", "los", "arg2", "target-status"]
}
}
+3 -3
View File
@@ -15,6 +15,7 @@
(tdt4 4)
(tdt5 5)
(tdt6 6)
(tdt7 7)
)
;; ---traffic-danger-type
@@ -72,11 +73,10 @@
(define *race-vehicle-entity* (the-as object #f))
(deftype traffic-danger-info (structure)
((sphere sphere :inline :offset-assert 0)
(velocity vector :inline :offset-assert 16)
(handle uint64 :offset-assert 32)
(handle handle :offset-assert 32)
(notify-radius float :offset-assert 40)
(danger-level float :offset-assert 44)
(decay-rate float :offset-assert 48)
@@ -121,7 +121,7 @@
(position vector :inline :offset-assert 32)
(rotation quaternion :inline :offset-assert 48)
(velocity vector :inline :offset-assert 64)
(handle uint64 :offset-assert 80)
(handle handle :offset-assert 80)
(guard-type uint8 :offset-assert 88)
(user-data uint32 :offset-assert 92)
(flags uint32 :offset-assert 96)
-1
View File
@@ -27,7 +27,6 @@
(speech-type-3 3)
(speech-type-4 4)
(speech-type-5 5)
)
;; ---speech-type
@@ -5,15 +5,747 @@
;; name in dgo: citizen-chick
;; dgos: CWI
(deftype citizen-chick (civilian)
()
:method-count-assert 218
:size-assert #x424
:flag-assert #xda03b00424
(:methods
;; DECOMP BEGINS
(defskelgroup skel-citizen-chick citizen-chick citizen-chick-lod0-jg -1
((citizen-chick-lod0-mg (meters 20)) (citizen-chick-lod2-mg (meters 999999)))
:bounds (static-spherem 0 2 0 3)
:shadow citizen-chick-shadow-mg
)
(define *citizen-chick-global-info*
(new 'static 'civilian-global-info
:knocked (new 'static 'array int32 2 20 22)
:knocked-land (new 'static 'array int32 2 21 23)
:yellow-hit-anim (new 'static 'inline-array civilian-anim-info 1
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 20 22))
)
:blue-hit-anim (new 'static 'inline-array civilian-anim-info 3
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 19 18))
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 19 18))
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 19 18))
)
:anim-cover-head-start 14
:anim-cover-head-loop 15
:anim-cover-head-end 16
:speech-ambient #x17
:speech-alert #x18
:speech-cower #x19
:speech-touched-by-player #x1a
:speech-shot-by-player #x1b
:speech-avoiding-player-vehicle #x1c
:speech-hit-by-player-vehicle #x1d
)
)
(deftype citizen-chick (civilian)
()
:heap-base #x3b0
:method-count-assert 218
:size-assert #x424
:flag-assert #xda03b00424
)
;; DECOMP BEGINS
(define *citizen-chick-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 #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #xa :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
)
:idle-anim 10
:notice-anim 10
:hostile-anim -1
:hit-anim 10
:knocked-anim 20
:knocked-land-anim 21
:die-anim 10
:die-falling-anim 10
:victory-anim 10
:jump-wind-up-anim 4
:jump-in-air-anim 4
:jump-land-anim 4
:neck-joint 5
:look-at-joint 5
:bullseye-joint 4
:notice-distance-delta (meters 0.1)
:default-hit-points 1
:gnd-collide-with (collide-spec backgnd)
:overlaps-others-collide-with-filter (collide-spec jak bot player-list)
:penetrate-knocked (penetrate
touch
generic-attack
lunge
flop
punch
spin
roll
uppercut
bonk
tube
vehicle
flut-attack
board
mech
mech-punch
mech-bonk
dark-skin
dark-punch
dark-bomb
dark-giant
shield
explode
jak-yellow-shot
jak-red-shot
jak-blue-shot
jak-dark-shot
enemy-yellow-shot
enemy-dark-shot
eco-yellow
eco-red
eco-blue
eco-green
knocked
penetrate-33
penetrate-34
penetrate-35
penetrate-36
penetrate-37
penetrate-38
penetrate-39
penetrate-40
penetrate-41
penetrate-42
penetrate-43
penetrate-44
penetrate-45
penetrate-46
penetrate-47
penetrate-48
penetrate-49
penetrate-50
penetrate-51
penetrate-52
penetrate-53
penetrate-54
penetrate-55
penetrate-56
penetrate-57
penetrate-58
penetrate-59
penetrate-60
penetrate-61
penetrate-62
penetrate-63
)
:movement-gravity (meters -100)
:friction 0.8
:attack-shove-back (meters 3)
: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 2730.6667
:knocked-soft-vxz-lo 32768.0
:knocked-soft-vxz-hi 53248.0
:knocked-soft-vy-lo 20480.0
:knocked-soft-vy-hi 40960.0
:knocked-medium-vxz-lo 40960.0
:knocked-medium-vxz-hi 73728.0
:knocked-medium-vy-lo 24576.0
:knocked-medium-vy-hi 53248.0
:knocked-hard-vxz-lo 53248.0
:knocked-hard-vxz-hi 102400.0
:knocked-hard-vy-lo 40960.0
:knocked-hard-vy-hi 81920.0
: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 8192.0
:knocked-yellow-vxz-hi 16384.0
:knocked-yellow-vy-lo 12288.0
:knocked-yellow-vy-hi 24576.0
:knocked-red-vxz-lo 12288.0
:knocked-red-vxz-hi 24576.0
:knocked-red-vy-lo 20480.0
:knocked-red-vy-hi 36864.0
:knocked-blue-vxz-lo 16384.0
:knocked-blue-vxz-hi 32768.0
:knocked-blue-vy-lo 16384.0
:knocked-blue-vy-hi 32768.0
:shadow-size (meters 2)
: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 #f
:use-pacing #f
:walk-anim 4
:turn-anim 4
:run-anim 7
:taunt-anim -1
:run-travel-speed (meters 12)
:run-acceleration (meters 2)
:run-turning-acceleration (meters 30)
:walk-travel-speed (meters 3)
:walk-acceleration (meters 1)
:walk-turning-acceleration (meters 8)
:maximum-rotation-rate (degrees 720.0)
: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! (-> *citizen-chick-nav-enemy-info* fact-defaults) *fact-info-enemy-defaults*)
(defmethod get-inv-mass citizen-chick ((obj citizen-chick))
0.5
)
(defmethod enemy-method-51 citizen-chick ((obj citizen-chick))
(let ((f30-0 (quaternion-y-angle (-> obj root-override2 quat))))
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-4) (knocked-type knocked-type-6))
(let ((a0-5 (handle->process (-> obj focus handle))))
(when a0-5
(get-trans (the-as process-focusable a0-5) 0)
(let ((s5-0 (new 'stack-no-clear 'vector)))
(set! (-> s5-0 quad) (-> obj root-override2 transv quad))
(if (< (vector-dot
(-> obj root-override2 transv)
(vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override2 quat))
)
0.0
)
(vector-negate-in-place! s5-0)
)
(set! f30-0 (atan (-> s5-0 x) (-> s5-0 z)))
)
)
)
)
(else
(let ((s5-1 (new 'stack-no-clear 'vector)))
(set! (-> s5-1 quad) (-> obj root-override2 transv quad))
(if (< (vector-dot s5-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override2 quat))) 0.0)
(vector-negate-in-place! s5-1)
)
(let* ((f28-0 (atan (-> s5-1 x) (-> s5-1 z)))
(f1-2 (deg- f30-0 f28-0))
(f2-0 (fabs f1-2))
(f0-8 (-> obj enemy-info-override knocked-seek-ry-clamp))
)
(when (and (< f0-8 f2-0) (< f2-0 (- 32768.0 f0-8)))
(set! f30-0 (+ (cond
((< f2-0 16384.0)
(if (>= f1-2 0.0)
f0-8
(- f0-8)
)
)
((>= f1-2 0.0)
(- 32768.0 f0-8)
)
(else
(+ -32768.0 f0-8)
)
)
f28-0
)
)
(if (< f30-0 0.0)
(set! f30-0 (+ 65536.0 f30-0))
)
)
)
)
)
)
f30-0
)
)
(defmethod enemy-method-79 citizen-chick ((obj citizen-chick) (arg0 int) (arg1 enemy-knocked-info))
(case arg0
((1)
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-6))
(let ((s5-0 (ja-done? 0)))
(let ((a0-4 (-> obj skel root-channel 0)))
(set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group frames num-frames) -1)))
(set! (-> a0-4 param 1) (-> arg1 anim-speed))
(joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!)
)
(when s5-0
(ja-channel-push! 1 (seconds 0.1))
(let ((a0-6 (-> obj skel root-channel 0)))
(set! (-> a0-6 frame-group)
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
)
(set! (-> a0-6 param 0)
(the float
(+ (-> (the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
frames
num-frames
)
-1
)
)
)
(set! (-> a0-6 param 1) (-> arg1 anim-speed))
(set! (-> a0-6 frame-num) 3.0)
(joint-control-channel-group!
a0-6
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
num-func-seek!
)
)
)
s5-0
)
)
(else
((method-of-type nav-enemy enemy-method-79) obj arg0 arg1)
)
)
)
(else
((method-of-type nav-enemy enemy-method-79) obj arg0 arg1)
)
)
)
(defmethod enemy-method-77 citizen-chick ((obj citizen-chick) (arg0 (pointer float)))
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-4))
(ja-channel-push! 1 (seconds 0.01))
(let* ((a2-0 (ash 1 (-> obj info prev-yellow-hit)))
(v1-3 (enemy-method-120 obj 1 a2-0))
(a1-7
(-> obj
draw
art-group
data
(-> (the-as civilian-global-info (+ (+ (* (-> obj hit-face) 4) (* v1-3 8)) (the-as uint (-> obj info))))
yellow-hit-anim
0
anim-index-front
)
)
)
)
(set! (-> obj info prev-yellow-hit) v1-3)
(let ((a0-15 (-> obj skel root-channel 0)))
(set! (-> a0-15 frame-group) (the-as art-joint-anim a1-7))
(set! (-> a0-15 param 0) (the float (+ (-> (the-as art-joint-anim a1-7) frames num-frames) -1)))
(set! (-> a0-15 param 1) (-> arg0 0))
(set! (-> a0-15 frame-num) 0.0)
(joint-control-channel-group! a0-15 (the-as art-joint-anim a1-7) num-func-seek!)
)
)
)
(((knocked-type knocked-type-6))
(ja-channel-push! 1 (seconds 0.01))
(let* ((a2-2 (ash 1 (-> obj info prev-blue-hit)))
(v1-12 (enemy-method-120 obj 3 a2-2))
(a1-14
(-> obj
draw
art-group
data
(-> (the-as civilian-global-info (+ (+ (* (-> obj hit-face) 4) (* v1-12 8)) (the-as uint (-> obj info))))
blue-hit-anim
0
anim-index-front
)
)
)
)
(set! (-> obj info prev-blue-hit) v1-12)
(let ((a0-30 (-> obj skel root-channel 0)))
(set! (-> a0-30 frame-group) (the-as art-joint-anim a1-14))
(set! (-> a0-30 param 0) (the float (+ (-> (the-as art-joint-anim a1-14) frames num-frames) -1)))
(set! (-> a0-30 param 1) 1.0)
(set! (-> a0-30 frame-num) 0.0)
(joint-control-channel-group! a0-30 (the-as art-joint-anim a1-14) num-func-seek!)
)
)
)
(else
(let ((s4-0 (if (= (-> obj incoming knocked-type) (knocked-type knocked-type-2))
(-> obj draw art-group data (-> obj info knocked (-> obj hit-face)))
(-> obj draw art-group data (-> obj info knocked (-> obj hit-face)))
)
)
)
(ja-channel-push! 1 (seconds 0.01))
(let ((a0-39 (-> obj skel root-channel 0)))
(set! (-> a0-39 frame-group) (the-as art-joint-anim s4-0))
(set! (-> a0-39 param 0) (the float (+ (-> (the-as art-joint-anim s4-0) frames num-frames) -1)))
(set! (-> a0-39 param 1) (-> arg0 0))
(set! (-> a0-39 frame-num) 0.0)
(joint-control-channel-group! a0-39 (the-as art-joint-anim s4-0) num-func-seek!)
)
)
)
)
#t
)
(defmethod enemy-method-78 citizen-chick ((obj citizen-chick) (arg0 (pointer float)))
(ja-channel-push! 1 (seconds 0.1))
(let ((a0-2 (-> obj skel root-channel 0)))
(set! (-> a0-2 frame-group)
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
)
(set! (-> a0-2 param 0)
(the float
(+ (-> (the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
frames
num-frames
)
-1
)
)
)
(set! (-> a0-2 param 1) (-> arg0 0))
(set! (-> a0-2 frame-num) 0.0)
(joint-control-channel-group!
a0-2
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
num-func-seek!
)
)
#t
)
(defstate knocked (citizen-chick)
:virtual #t
:enter (behavior ()
(let ((t9-0 (-> (method-of-type civilian knocked) enter)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (the-as collide-shape-prim-group (-> self root-override2 root-prim))))
(logior! (-> v1-5 child 0 prim-core action) (collide-action no-standon))
(logclear! (-> v1-5 child 1 prim-core action) (collide-action no-standon))
(set! (-> v1-5 child 1 prim-core collide-as) (collide-spec))
(set! (-> v1-5 child 1 prim-core collide-with) (collide-spec))
)
0
(none)
)
)
(defstate get-up-front (citizen-chick)
:virtual #t
:exit (behavior ()
(let ((t9-0 (-> (method-of-type civilian get-up-front) exit)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (-> self root-override2 root-prim)))
(logclear! (-> (the-as collide-shape-prim-group v1-5) child 0 prim-core action) (collide-action no-standon))
(logior! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core action) (collide-action no-standon))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-as) (collide-spec civilian))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
)
(none)
)
)
(defstate get-up-back (citizen-chick)
:virtual #t
:exit (behavior ()
(let ((t9-0 (-> (method-of-type civilian get-up-back) exit)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (-> self root-override2 root-prim)))
(logclear! (-> (the-as collide-shape-prim-group v1-5) child 0 prim-core action) (collide-action no-standon))
(logior! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core action) (collide-action no-standon))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-as) (collide-spec civilian))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
)
(none)
)
)
(defstate wait (citizen-chick)
:virtual #t
:code (behavior ()
(let ((f30-1 (/ 1.0 (rand-vu-float-range 10.0 13.0))))
(ja-channel-push! 1 (seconds 0.2))
(until #f
(ja-no-eval :group! citizen-chick-idle-ja
:num! (seek! (the float (+ (-> (the-as art-joint-anim citizen-chick-idle-ja) frames num-frames) -1)) f30-1)
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max f30-1))
)
)
)
#f
(none)
)
)
(defmethod init-enemy-collision! citizen-chick ((obj citizen-chick))
"Initializes the [[collide-shape-moving]] and any ancillary tasks to make the enemy collide properly"
(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 2) 0)))
(set! (-> s5-0 total-prims) (the-as uint 3))
(set! (-> s4-0 prim-core collide-as) (collide-spec civilian))
(set! (-> s4-0 prim-core collide-with) (collide-spec backgnd jak player-list))
(set! (-> s4-0 prim-core action) (collide-action solid no-standon))
(set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0)
(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 civilian))
(set! (-> v1-13 prim-core collide-with) (collide-spec backgnd jak player-list))
(set! (-> v1-13 prim-core action) (collide-action solid))
(set-vector! (-> v1-13 local-sphere) 0.0 4096.0 0.0 4096.0)
)
(let ((v1-15 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-15 prim-core collide-as) (collide-spec civilian))
(set! (-> v1-15 prim-core collide-with) (collide-spec backgnd jak player-list))
(set! (-> v1-15 prim-core action) (collide-action solid no-standon))
(set-vector! (-> v1-15 local-sphere) 0.0 9830.4 0.0 4096.0)
)
(set! (-> s5-0 nav-radius) 4096.0)
(let ((v1-17 (-> s5-0 root-prim)))
(set! (-> s5-0 backup-collide-as) (-> v1-17 prim-core collide-as))
(set! (-> s5-0 backup-collide-with) (-> v1-17 prim-core collide-with))
)
(set! (-> s5-0 max-iteration-count) (the-as uint 3))
(set! (-> obj root-override2) s5-0)
)
0
(none)
)
(defmethod init-enemy! citizen-chick ((obj citizen-chick))
"Common method called to initialize the enemy, typically sets up default field values and calls ancillary helper methods"
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-citizen-chick" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(init-enemy-behaviour-and-stats! obj *citizen-chick-nav-enemy-info*)
(let ((v1-5 (-> obj nav)))
(set! (-> v1-5 speed-scale) 1.0)
)
0
(set! (-> obj draw lod-set lod 0 dist) 204800.0)
(set! (-> obj draw lod-set lod 1 dist) 491520.0)
(set! (-> obj info) *citizen-chick-global-info*)
(try-update-focus (-> obj focus) *target* obj)
(set-vector! (-> obj neck twist-max) 10922.667 18204.445 0.0 1.0)
(set! (-> obj anim-shuffle) 26)
(let ((v1-18 (get-rand-int obj 3)))
(cond
((zero? v1-18)
(set! (-> obj anim-walk) 4)
(set! (-> obj dist-walk-anim) 15728.64)
(set! (-> obj speed-walk) 14745.6)
)
((= v1-18 1)
(set! (-> obj anim-walk) 5)
(set! (-> obj dist-walk-anim) 8736.768)
(set! (-> obj speed-walk) 8192.0)
)
((= v1-18 2)
(set! (-> obj anim-walk) 6)
(set! (-> obj dist-walk-anim) 15728.64)
(set! (-> obj speed-walk) 12288.0)
)
)
)
(let ((v1-33 (get-rand-int obj 3)))
(cond
((zero? v1-33)
(set! (-> obj anim-panic-run) 11)
)
((= v1-33 1)
(set! (-> obj anim-panic-run) 11)
)
((= v1-33 2)
(set! (-> obj anim-panic-run) 7)
)
)
)
(let ((v1-39 (get-rand-int obj 3)))
(cond
((zero? v1-39)
(set! (-> obj dist-run-anim) 26214.4)
(set! (-> obj anim-run) 7)
)
((= v1-39 1)
(set! (-> obj dist-run-anim) 28385.28)
(set! (-> obj anim-run) 8)
)
((= v1-39 2)
(set! (-> obj dist-run-anim) 26214.4)
(set! (-> obj anim-run) 9)
)
)
)
(set! (-> obj speed-run) 49152.0)
(set! (-> obj anim-on-ground) 13)
(set! (-> obj anim-dive) 17)
(set! (-> obj anim-get-up-back) 25)
(set! (-> obj anim-get-up-front) 24)
(let ((f30-0 (get-rand-float-range obj 1.0 1.25))
(f0-17 (get-rand-float-range obj 1.0 1.25))
)
(set-vector! (-> obj root-override2 scale) f0-17 f30-0 f0-17 1.0)
)
(let ((f0-19 (get-rand-float-range obj 0.9 1.0)))
(set-vector! (-> obj draw color-mult) f0-19 f0-19 f0-19 1.0)
)
(set! (-> obj water-anim) 12)
(logior! (-> obj flags) (citizen-flag female))
0
(none)
)
(defmethod citizen-init! citizen-chick ((obj citizen-chick))
"Initialize [[citizen]] defaults."
(let ((t9-0 (method-of-type civilian citizen-init!)))
(t9-0 obj)
)
(set! (-> obj dive-reaction) (* 0.2 (rand-vu)))
(logclear! (-> obj mask) (process-mask enemy))
(setup-masks (-> obj draw) 0 -1)
(setup-masks (-> obj draw) 16 0)
(setup-masks (-> obj draw) 8 0)
(let ((v1-11 (get-rand-int obj 3)))
(cond
((zero? v1-11)
(setup-masks (-> obj draw) 32 0)
)
((= v1-11 1)
(setup-masks (-> obj draw) #x4000 0)
)
((= v1-11 2)
(setup-masks (-> obj draw) #x8000 0)
)
)
)
(let ((v1-20 (get-rand-int obj 3)))
(cond
((zero? v1-20)
(setup-masks (-> obj draw) 64 0)
)
((= v1-20 1)
(setup-masks (-> obj draw) 1024 0)
)
((= v1-20 2)
(setup-masks (-> obj draw) #x10000 0)
)
)
)
(let ((v1-29 (get-rand-int obj 3)))
(cond
((zero? v1-29)
(setup-masks (-> obj draw) 4 0)
)
((= v1-29 1)
(setup-masks (-> obj draw) 512 0)
)
((= v1-29 2)
(setup-masks (-> obj draw) 4096 0)
)
)
)
(let ((v1-38 (get-rand-int obj 3)))
(cond
((zero? v1-38)
(setup-masks (-> obj draw) 2 0)
(let ((v1-42 (get-rand-int obj 2)))
(cond
((zero? v1-42)
(setup-masks (-> obj draw) 128 0)
)
((= v1-42 1)
(setup-masks (-> obj draw) 8192 0)
)
)
)
)
((= v1-38 1)
(setup-masks (-> obj draw) 256 0)
)
((= v1-38 2)
(setup-masks (-> obj draw) 2048 0)
(let ((v1-54 (get-rand-int obj 2)))
(cond
((zero? v1-54)
(setup-masks (-> obj draw) 128 0)
)
((= v1-54 1)
(setup-masks (-> obj draw) 8192 0)
)
)
)
)
)
)
(logior! (-> obj flags) (citizen-flag female))
0
(none)
)
@@ -5,19 +5,324 @@
;; name in dgo: citizen-enemy
;; dgos: CWI
;; DECOMP BEGINS
(deftype citizen-enemy (citizen)
((next-update-target uint64 :offset-assert 968)
((next-update-target time-frame :offset-assert 968)
(minimap connection-minimap :offset-assert 976)
)
:heap-base #x360
:method-count-assert 203
:size-assert #x3d4
:flag-assert #xcb036003d4
(:methods
(citizen-enemy-method-201 () none 201)
(citizen-enemy-method-202 () none 202)
(traffic-danger-init! (_type_) none 201)
(citizen-enemy-method-202 (_type_) none 202)
)
)
;; DECOMP BEGINS
(defmethod track-target! citizen-enemy ((obj citizen-enemy))
"Does a lot of various things relating to interacting with the target
- tracks when the enemy was last drawn
- looks at the target and handles attacking
@TODO Not extremely well understood yet"
(with-pp
(let ((a1-0 (new 'stack-no-clear 'overlaps-others-params)))
(set! (-> a1-0 options) (overlaps-others-options))
(set! (-> a1-0 collide-with-filter) (-> obj enemy-info-override overlaps-others-collide-with-filter))
(set! (-> a1-0 tlist) *touching-list*)
(find-overlapping-shapes (-> obj root-override2) a1-0)
)
(when (and (not (logtest? (-> obj focus-status) (focus-status disable dead ignore inactive)))
(< (-> obj next-update-target) (-> pp clock frame-counter))
(not (logtest? (enemy-flag actor-pause-backup) (-> obj enemy-flags)))
(-> obj next-state)
(= (-> obj next-state name) 'active)
)
(citizen-enemy-method-202 obj)
(set! (-> obj next-update-target) (+ (-> pp clock frame-counter) (seconds 0.2)))
(traffic-danger-init! obj)
)
((method-of-type citizen track-target!) obj)
(none)
)
)
;; WARN: Return type mismatch object vs symbol.
(defmethod enemy-method-76 citizen-enemy ((obj citizen-enemy) (arg0 process) (arg1 event-message-block))
(the-as
symbol
(cond
((and (-> obj next-state) (let ((v1-3 (-> obj next-state name)))
(or (= v1-3 'knocked) (= v1-3 'jump))
)
)
((method-of-type citizen enemy-method-76) obj arg0 arg1)
)
(else
(when (!= (-> arg0 type) target)
(let* ((s3-0 (-> arg1 param 0))
(s2-0 arg0)
(v1-6 (if (type? s2-0 process-focusable)
s2-0
)
)
)
(cond
((and (logtest? (-> obj focus-status) (focus-status dangerous))
(logtest? (process-mask guard civilian) (-> arg0 mask))
(and v1-6
(zero? (logand (-> (the-as process-focusable v1-6) focus-status) (focus-status disable dead ignore grabbed)))
)
((method-of-type touching-shapes-entry prims-touching-action?)
(the-as touching-shapes-entry s3-0)
(-> obj root-override2)
(collide-action deadly)
(collide-action)
)
)
(let ((a3-2 (if ((method-of-type touching-shapes-entry prims-touching-action?)
(the-as touching-shapes-entry s3-0)
(-> obj root-override2)
(collide-action persistent-attack)
(collide-action)
)
(-> obj persistent-attack-id)
(-> obj attack-id)
)
)
)
(enemy-method-104 obj arg0 s3-0 a3-2)
)
)
(else
(send-event arg0 'touch (-> arg1 param 0))
)
)
)
)
)
)
)
)
(defmethod general-event-handler citizen-enemy ((obj citizen-enemy) (arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
"Handles various events for the enemy
@TODO - unsure if there is a pattern for the events and this should have a more specific name"
(case arg2
(('event-death)
#f
)
(('effect-control)
(case (-> arg3 param 0)
(('death-default)
(cond
((> (-> obj hit-points) 0)
#t
)
(else
(let ((v1-4 (-> obj root-override2 root-prim)))
(set! (-> v1-4 prim-core collide-as) (collide-spec))
(set! (-> v1-4 prim-core collide-with) (collide-spec))
)
0
#f
)
)
)
(else
#f
)
)
)
(('end-task)
(let ((v0-0 (the-as object (logclear (-> obj flags) (citizen-flag persistent)))))
(set! (-> obj flags) (the-as citizen-flag v0-0))
v0-0
)
)
(else
((method-of-type citizen general-event-handler) obj arg0 arg1 arg2 arg3)
)
)
)
(defmethod traffic-danger-init! citizen-enemy ((obj citizen-enemy))
(let ((a1-0 (new 'stack-no-clear 'traffic-danger-info)))
(set! (-> a1-0 sphere quad) (-> obj root-override2 trans quad))
(set! (-> a1-0 sphere r) 40960.0)
(set! (-> a1-0 velocity quad) (-> obj root-override2 transv quad))
(set! (-> a1-0 notify-radius) 122880.0)
(set! (-> a1-0 danger-level) 1.0)
(set! (-> a1-0 decay-rate) 0.0)
(set! (-> a1-0 flags) (traffic-danger-flags tdf0))
(set! (-> a1-0 danger-type) (traffic-danger-type tdt7))
(set! (-> a1-0 handle) (process->handle obj))
(add-danger (-> obj controller traffic) a1-0)
)
0
(none)
)
(defmethod citizen-enemy-method-202 citizen-enemy ((obj citizen-enemy))
(let ((s5-0 (new 'stack-no-clear 'vector)))
(set! (-> s5-0 quad) (-> obj root-override2 trans quad))
(set! (-> s5-0 w) 122880.0)
(let ((s4-0 (the-as process-drawable #f)))
(let ((f30-0 122880.0))
(let ((s3-0 (new 'stack-no-clear 'array 'collide-shape 64)))
(countdown (s2-0 (fill-actor-list-for-sphere *actor-hash* (the-as sphere s5-0) s3-0 64))
(let* ((s1-0 (-> s3-0 s2-0))
(a0-6 (if (type? s1-0 collide-shape)
s1-0
)
)
)
(when a0-6
(let* ((s0-0 (-> a0-6 process))
(s1-1 (if (type? s0-0 process-focusable)
s0-0
)
)
)
(when (and s1-1
(!= obj s1-1)
(not (logtest? (-> (the-as process-focusable s1-1) focus-status) (focus-status inactive)))
(not (logtest? (-> (the-as process-focusable s1-1) focus-status) (focus-status disable)))
(not (logtest? (process-mask enemy) (-> s1-1 mask)))
(not (logtest? (process-mask crate) (-> s1-1 mask)))
(not (logtest? (process-mask vehicle) (-> s1-1 mask)))
s1-1
(zero? (logand (-> (the-as process-focusable s1-1) focus-status) (focus-status disable dead ignore grabbed)))
)
(let ((f0-1 (vector-vector-xz-distance (-> obj root-override2 trans) (-> s1-1 root trans))))
(when (or (not s4-0) (< f0-1 f30-0))
(set! s4-0 s1-1)
(set! f30-0 f0-1)
)
)
)
)
)
)
)
)
(if (and *target* (< (vector-vector-distance (target-pos 0) s5-0) f30-0))
(set! s4-0 *target*)
)
)
(when s4-0
(try-update-focus (-> obj focus) (the-as process-focusable s4-0) obj)
(go-hostile obj)
)
)
)
0
(none)
)
(defstate active (citizen-enemy)
:virtual #t
:code (behavior ()
(ja-channel-push! 1 (seconds 0.075))
(let ((f30-0 (get-rand-float-range self 0.8 1.2)))
(until #f
(ja-no-eval :group! (-> self draw art-group data (-> self enemy-info-override walk-anim))
:num! (seek!
(the float
(+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self enemy-info-override walk-anim)))
frames
num-frames
)
-1
)
)
f30-0
)
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max f30-0))
)
)
)
#f
(none)
)
)
(defstate inactive (citizen-enemy)
:virtual #t
:enter (behavior ()
(when (-> self minimap)
(logior! (-> self minimap flags) (minimap-flag fade-out))
(set! (-> self minimap) #f)
)
(let ((t9-0 (-> (method-of-type citizen inactive) enter)))
(if t9-0
(t9-0)
)
)
(none)
)
)
(defmethod citizen-init! citizen-enemy ((obj citizen-enemy))
"Initialize [[citizen]] defaults."
(let ((t9-0 (method-of-type citizen citizen-init!)))
(t9-0 obj)
)
(if (-> obj skel effect)
(logior! (-> obj skel effect flags) (effect-control-flag ecf0))
)
(set! (-> obj mask) (logior (process-mask enemy) (-> obj mask)))
(reset-to-collide-spec (-> obj focus) (collide-spec jak civilian player-list bot-targetable jak-vehicle))
(let ((v1-12 (-> obj nav)))
(set! (-> v1-12 sphere-mask) (the-as uint #x800e8))
)
0
(set! (-> obj anim-shuffle) (-> obj enemy-info-override walk-anim))
(set! (-> obj anim-walk) (-> obj enemy-info-override walk-anim))
(set! (-> obj speed-walk) (-> obj enemy-info-override walk-travel-speed))
(set! (-> obj dist-walk-anim) (-> obj enemy-info-override walk-travel-speed))
(set! (-> obj anim-run) (-> obj enemy-info-override run-anim))
(set! (-> obj dist-run-anim) (-> obj enemy-info-override run-travel-speed))
(set! (-> obj speed-run) (-> obj enemy-info-override walk-travel-speed))
(set! (-> obj fated-time) 0)
(logior! (-> obj enemy-flags) (enemy-flag enable-on-active checking-water))
(logior! (-> obj focus-status) (focus-status dangerous))
(logior! (-> obj enemy-flags) (enemy-flag check-water))
(set! (-> obj enemy-flags)
(logior (enemy-flag check-water-backup no-initial-move-to-ground) (-> obj enemy-flags))
)
(logclear! (-> obj focus-status) (focus-status dead))
(set! (-> obj mask) (logior (process-mask collectable) (-> obj mask)))
(logior! (-> obj enemy-flags) (enemy-flag look-at-move-dest))
(if (not (-> obj minimap))
(set! (-> obj minimap) (add-icon! *minimap* obj (the-as uint 70) (the-as int #f) (the-as vector #t) 0))
)
(ja-channel-set! 0)
0
(none)
)
(defmethod kill-prefer-falling citizen-enemy ((obj citizen-enemy))
"If available in `enemy-info`, [[go]] to the [[die-falling]] state, if not, [[die]]"
((method-of-type nav-enemy kill-prefer-falling) obj)
)
;; WARN: Return type mismatch object vs none.
(defmethod go-hostile citizen-enemy ((obj citizen-enemy))
(if (not (and (-> obj next-state) (= (-> obj next-state name) 'hostile)))
(go (method-of-object obj hostile))
)
(none)
)
;; WARN: Return type mismatch object vs none.
(defmethod go-stare citizen-enemy ((obj citizen-enemy))
(go (method-of-object obj active))
(none)
)
+825 -2
View File
@@ -7,11 +7,834 @@
;; DECOMP BEGINS
(defskelgroup skel-citizen-fat citizen-fat citizen-fat-lod0-jg -1
((citizen-fat-lod0-mg (meters 20)) (citizen-fat-lod2-mg (meters 999999)))
:bounds (static-spherem 0 2 0 3)
:shadow citizen-fat-shadow-mg
)
(define *citizen-fat-global-info*
(new 'static 'civilian-global-info
:knocked (new 'static 'array int32 2 20 22)
:knocked-land (new 'static 'array int32 2 21 23)
:yellow-hit-anim (new 'static 'inline-array civilian-anim-info 1
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 20 22))
)
:blue-hit-anim (new 'static 'inline-array civilian-anim-info 3
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 27 26))
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 27 26))
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 27 26))
)
:anim-cover-head-start 28
:anim-cover-head-loop 29
:anim-cover-head-end 30
:speech-ambient #xf
:speech-alert #x10
:speech-cower #x11
:speech-touched-by-player #x12
:speech-shot-by-player #x13
:speech-avoiding-player-vehicle #x14
:speech-hit-by-player-vehicle #x15
)
)
(deftype citizen-fat (civilian)
()
:heap-base #x3b0
:method-count-assert 218
:size-assert #x424
:flag-assert #xda03b00424
(:methods
)
(define *citizen-fat-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 #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
)
:idle-anim 4
:notice-anim 4
:hostile-anim -1
:hit-anim 4
:knocked-anim 20
:knocked-land-anim 21
:die-anim 4
:die-falling-anim 4
:victory-anim 4
:jump-wind-up-anim 11
:jump-in-air-anim 11
:jump-land-anim 11
:neck-joint 5
:look-at-joint 5
:bullseye-joint 4
:notice-distance-delta (meters 0.1)
:default-hit-points 1
:gnd-collide-with (collide-spec backgnd)
:overlaps-others-collide-with-filter (collide-spec jak bot player-list)
:penetrate-knocked (penetrate
touch
generic-attack
lunge
flop
punch
spin
roll
uppercut
bonk
tube
vehicle
flut-attack
board
mech
mech-punch
mech-bonk
dark-skin
dark-punch
dark-bomb
dark-giant
shield
explode
jak-yellow-shot
jak-red-shot
jak-blue-shot
jak-dark-shot
enemy-yellow-shot
enemy-dark-shot
eco-yellow
eco-red
eco-blue
eco-green
knocked
penetrate-33
penetrate-34
penetrate-35
penetrate-36
penetrate-37
penetrate-38
penetrate-39
penetrate-40
penetrate-41
penetrate-42
penetrate-43
penetrate-44
penetrate-45
penetrate-46
penetrate-47
penetrate-48
penetrate-49
penetrate-50
penetrate-51
penetrate-52
penetrate-53
penetrate-54
penetrate-55
penetrate-56
penetrate-57
penetrate-58
penetrate-59
penetrate-60
penetrate-61
penetrate-62
penetrate-63
)
:movement-gravity (meters -100)
:friction 0.8
:attack-shove-back (meters 3)
: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 2730.6667
:knocked-soft-vxz-lo 32768.0
:knocked-soft-vxz-hi 53248.0
:knocked-soft-vy-lo 20480.0
:knocked-soft-vy-hi 40960.0
:knocked-medium-vxz-lo 40960.0
:knocked-medium-vxz-hi 73728.0
:knocked-medium-vy-lo 24576.0
:knocked-medium-vy-hi 53248.0
:knocked-hard-vxz-lo 53248.0
:knocked-hard-vxz-hi 102400.0
:knocked-hard-vy-lo 40960.0
:knocked-hard-vy-hi 81920.0
: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 8192.0
:knocked-yellow-vxz-hi 16384.0
:knocked-yellow-vy-lo 12288.0
:knocked-yellow-vy-hi 24576.0
:knocked-red-vxz-lo 12288.0
:knocked-red-vxz-hi 24576.0
:knocked-red-vy-lo 20480.0
:knocked-red-vy-hi 36864.0
:knocked-blue-vxz-lo 16384.0
:knocked-blue-vxz-hi 32768.0
:knocked-blue-vy-lo 16384.0
:knocked-blue-vy-hi 32768.0
:shadow-size (meters 2)
: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 #f
:use-pacing #f
:walk-anim 11
:turn-anim 11
:run-anim 15
:taunt-anim -1
:run-travel-speed (meters 12)
:run-acceleration (meters 2)
:run-turning-acceleration (meters 30)
:walk-travel-speed (meters 3)
:walk-acceleration (meters 1)
:walk-turning-acceleration (meters 8)
:maximum-rotation-rate (degrees 720.0)
: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! (-> *citizen-fat-nav-enemy-info* fact-defaults) *fact-info-enemy-defaults*)
(defmethod get-inv-mass citizen-fat ((obj citizen-fat))
0.5
)
(defmethod enemy-method-51 citizen-fat ((obj citizen-fat))
(let ((f30-0 (quaternion-y-angle (-> obj root-override2 quat))))
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-4) (knocked-type knocked-type-6))
(let ((a0-5 (handle->process (-> obj focus handle))))
(when a0-5
(get-trans (the-as process-focusable a0-5) 0)
(let ((s5-0 (new 'stack-no-clear 'vector)))
(set! (-> s5-0 quad) (-> obj root-override2 transv quad))
(if (< (vector-dot
(-> obj root-override2 transv)
(vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override2 quat))
)
0.0
)
(vector-negate-in-place! s5-0)
)
(set! f30-0 (atan (-> s5-0 x) (-> s5-0 z)))
)
)
)
)
(else
(let ((s5-1 (new 'stack-no-clear 'vector)))
(set! (-> s5-1 quad) (-> obj root-override2 transv quad))
(if (< (vector-dot s5-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override2 quat))) 0.0)
(vector-negate-in-place! s5-1)
)
(let* ((f28-0 (atan (-> s5-1 x) (-> s5-1 z)))
(f1-2 (deg- f30-0 f28-0))
(f2-0 (fabs f1-2))
(f0-8 (-> obj enemy-info-override knocked-seek-ry-clamp))
)
(when (and (< f0-8 f2-0) (< f2-0 (- 32768.0 f0-8)))
(set! f30-0 (+ (cond
((< f2-0 16384.0)
(if (>= f1-2 0.0)
f0-8
(- f0-8)
)
)
((>= f1-2 0.0)
(- 32768.0 f0-8)
)
(else
(+ -32768.0 f0-8)
)
)
f28-0
)
)
(if (< f30-0 0.0)
(set! f30-0 (+ 65536.0 f30-0))
)
)
)
)
)
)
f30-0
)
)
(defmethod enemy-method-79 citizen-fat ((obj citizen-fat) (arg0 int) (arg1 enemy-knocked-info))
(case arg0
((1)
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-6))
(let ((s5-0 (ja-done? 0)))
(let ((a0-4 (-> obj skel root-channel 0)))
(set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group frames num-frames) -1)))
(set! (-> a0-4 param 1) (-> arg1 anim-speed))
(joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!)
)
(when s5-0
(ja-channel-push! 1 (seconds 0.1))
(let ((a0-6 (-> obj skel root-channel 0)))
(set! (-> a0-6 frame-group)
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
)
(set! (-> a0-6 param 0)
(the float
(+ (-> (the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
frames
num-frames
)
-1
)
)
)
(set! (-> a0-6 param 1) (-> arg1 anim-speed))
(set! (-> a0-6 frame-num) 3.0)
(joint-control-channel-group!
a0-6
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
num-func-seek!
)
)
)
s5-0
)
)
(else
((method-of-type nav-enemy enemy-method-79) obj arg0 arg1)
)
)
)
(else
((method-of-type nav-enemy enemy-method-79) obj arg0 arg1)
)
)
)
(defmethod enemy-method-77 citizen-fat ((obj citizen-fat) (arg0 (pointer float)))
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-4))
(ja-channel-push! 1 (seconds 0.01))
(let* ((a2-0 (ash 1 (-> obj info prev-yellow-hit)))
(v1-3 (enemy-method-120 obj 1 a2-0))
(a1-7
(-> obj
draw
art-group
data
(-> (the-as civilian-global-info (+ (+ (* (-> obj hit-face) 4) (* v1-3 8)) (the-as uint (-> obj info))))
yellow-hit-anim
0
anim-index-front
)
)
)
)
(set! (-> obj info prev-yellow-hit) v1-3)
(let ((a0-15 (-> obj skel root-channel 0)))
(set! (-> a0-15 frame-group) (the-as art-joint-anim a1-7))
(set! (-> a0-15 param 0) (the float (+ (-> (the-as art-joint-anim a1-7) frames num-frames) -1)))
(set! (-> a0-15 param 1) (-> arg0 0))
(set! (-> a0-15 frame-num) 0.0)
(joint-control-channel-group! a0-15 (the-as art-joint-anim a1-7) num-func-seek!)
)
)
)
(((knocked-type knocked-type-6))
(ja-channel-push! 1 (seconds 0.01))
(let* ((a2-2 (ash 1 (-> obj info prev-blue-hit)))
(v1-12 (enemy-method-120 obj 3 a2-2))
(a1-14
(-> obj
draw
art-group
data
(-> (the-as civilian-global-info (+ (+ (* (-> obj hit-face) 4) (* v1-12 8)) (the-as uint (-> obj info))))
blue-hit-anim
0
anim-index-front
)
)
)
)
(set! (-> obj info prev-blue-hit) v1-12)
(let ((a0-30 (-> obj skel root-channel 0)))
(set! (-> a0-30 frame-group) (the-as art-joint-anim a1-14))
(set! (-> a0-30 param 0) (the float (+ (-> (the-as art-joint-anim a1-14) frames num-frames) -1)))
(set! (-> a0-30 param 1) 1.0)
(set! (-> a0-30 frame-num) 0.0)
(joint-control-channel-group! a0-30 (the-as art-joint-anim a1-14) num-func-seek!)
)
)
)
(else
(let ((s4-0 (if (= (-> obj incoming knocked-type) (knocked-type knocked-type-2))
(-> obj draw art-group data (-> obj info knocked (-> obj hit-face)))
(-> obj draw art-group data (-> obj info knocked (-> obj hit-face)))
)
)
)
(ja-channel-push! 1 (seconds 0.01))
(let ((a0-39 (-> obj skel root-channel 0)))
(set! (-> a0-39 frame-group) (the-as art-joint-anim s4-0))
(set! (-> a0-39 param 0) (the float (+ (-> (the-as art-joint-anim s4-0) frames num-frames) -1)))
(set! (-> a0-39 param 1) (-> arg0 0))
(set! (-> a0-39 frame-num) 0.0)
(joint-control-channel-group! a0-39 (the-as art-joint-anim s4-0) num-func-seek!)
)
)
)
)
#t
)
(defmethod enemy-method-78 citizen-fat ((obj citizen-fat) (arg0 (pointer float)))
(ja-channel-push! 1 (seconds 0.1))
(let ((a0-2 (-> obj skel root-channel 0)))
(set! (-> a0-2 frame-group)
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
)
(set! (-> a0-2 param 0)
(the float
(+ (-> (the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
frames
num-frames
)
-1
)
)
)
(set! (-> a0-2 param 1) (-> arg0 0))
(set! (-> a0-2 frame-num) 0.0)
(joint-control-channel-group!
a0-2
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
num-func-seek!
)
)
#t
)
(defstate knocked (citizen-fat)
:virtual #t
:enter (behavior ()
(let ((t9-0 (-> (method-of-type civilian knocked) enter)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (the-as collide-shape-prim-group (-> self root-override2 root-prim))))
(logior! (-> v1-5 child 0 prim-core action) (collide-action no-standon))
(logclear! (-> v1-5 child 1 prim-core action) (collide-action no-standon))
(set! (-> v1-5 child 1 prim-core collide-as) (collide-spec))
(set! (-> v1-5 child 1 prim-core collide-with) (collide-spec))
)
0
(none)
)
)
(defstate get-up-front (citizen-fat)
:virtual #t
:exit (behavior ()
(let ((t9-0 (-> (method-of-type civilian get-up-front) exit)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (-> self root-override2 root-prim)))
(logclear! (-> (the-as collide-shape-prim-group v1-5) child 0 prim-core action) (collide-action no-standon))
(logior! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core action) (collide-action no-standon))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-as) (collide-spec civilian))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
)
(none)
)
)
(defstate get-up-back (citizen-fat)
:virtual #t
:exit (behavior ()
(let ((t9-0 (-> (method-of-type civilian get-up-back) exit)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (-> self root-override2 root-prim)))
(logclear! (-> (the-as collide-shape-prim-group v1-5) child 0 prim-core action) (collide-action no-standon))
(logior! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core action) (collide-action no-standon))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-as) (collide-spec civilian))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
)
(none)
)
)
(defstate wait (citizen-fat)
:virtual #t
:trans (behavior ()
'()
(none)
)
:code (behavior ()
(until #f
(let ((f30-1 (/ 1.0 (rand-vu-float-range 10.0 13.0)))
(gp-0 (rand-vu-int-range 1 5))
(s5-0 (rand-vu-int-count 2))
)
(ja-channel-push! 1 (seconds 0.2))
(if (zero? s5-0)
(ja-no-eval :group! citizen-fat-idle-to-arms-hips-ja :num! min)
(ja-no-eval :group! citizen-fat-idle-to-arms-crossed-ja :num! min)
)
(let ((f28-0 0.0))
(while (< f28-0 1.0)
(ja :num-func num-func-identity
:frame-num (lerp-scale 0.0 2.0 (+ (* -2.0 f28-0 f28-0 f28-0) (* 3.0 f28-0 f28-0)) 0.0 1.0)
)
(suspend)
(+! f28-0 (-> self clock seconds-per-frame))
)
)
(ja-channel-push! 1 (seconds 0.1))
(while (> gp-0 0)
(+! gp-0 -1)
(cond
((zero? s5-0)
(ja-no-eval :group! citizen-fat-arms-hips-ja
:num! (seek! (the float (+ (-> (the-as art-joint-anim citizen-fat-arms-hips-ja) frames num-frames) -1)) f30-1)
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max f30-1))
)
)
(else
(ja-no-eval :group! citizen-fat-arms-crossed-ja
:num! (seek! (the float (+ (-> (the-as art-joint-anim citizen-fat-arms-crossed-ja) frames num-frames) -1)) f30-1)
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max f30-1))
)
)
)
)
)
(if (-> self wait-return-state)
(go (-> self wait-return-state))
)
)
#f
(none)
)
)
(defmethod init-enemy-collision! citizen-fat ((obj citizen-fat))
"Initializes the [[collide-shape-moving]] and any ancillary tasks to make the enemy collide properly"
(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 2) 0)))
(set! (-> s5-0 total-prims) (the-as uint 3))
(set! (-> s4-0 prim-core collide-as) (collide-spec civilian))
(set! (-> s4-0 prim-core collide-with) (collide-spec backgnd jak player-list))
(set! (-> s4-0 prim-core action) (collide-action solid no-standon))
(set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0)
(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 civilian))
(set! (-> v1-13 prim-core collide-with) (collide-spec backgnd jak player-list))
(set! (-> v1-13 prim-core action) (collide-action solid))
(set-vector! (-> v1-13 local-sphere) 0.0 4096.0 0.0 4096.0)
)
(let ((v1-15 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-15 prim-core collide-as) (collide-spec civilian))
(set! (-> v1-15 prim-core collide-with) (collide-spec backgnd jak player-list))
(set! (-> v1-15 prim-core action) (collide-action solid no-standon))
(set-vector! (-> v1-15 local-sphere) 0.0 9830.4 0.0 4096.0)
)
(set! (-> s5-0 nav-radius) 4096.0)
(let ((v1-17 (-> s5-0 root-prim)))
(set! (-> s5-0 backup-collide-as) (-> v1-17 prim-core collide-as))
(set! (-> s5-0 backup-collide-with) (-> v1-17 prim-core collide-with))
)
(set! (-> s5-0 max-iteration-count) (the-as uint 3))
(set! (-> obj root-override2) s5-0)
)
0
(none)
)
(defmethod init-enemy! citizen-fat ((obj citizen-fat))
"Common method called to initialize the enemy, typically sets up default field values and calls ancillary helper methods"
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-citizen-fat" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(init-enemy-behaviour-and-stats! obj *citizen-fat-nav-enemy-info*)
(let ((v1-5 (-> obj nav)))
(set! (-> v1-5 speed-scale) 1.0)
)
0
(set! (-> obj draw lod-set lod 0 dist) 204800.0)
(set! (-> obj draw lod-set lod 1 dist) 491520.0)
(set! (-> obj info) *citizen-fat-global-info*)
(try-update-focus (-> obj focus) *target* obj)
(set-vector! (-> obj neck twist-max) 10922.667 18204.445 0.0 1.0)
(set! (-> obj anim-shuffle) 12)
(let ((v1-18 (get-rand-int obj 3)))
(cond
((zero? v1-18)
(set! (-> obj anim-walk) 11)
(set! (-> obj dist-walk-anim) 16384.0)
(set! (-> obj speed-walk) 12288.0)
)
((= v1-18 1)
(set! (-> obj anim-walk) 13)
(set! (-> obj dist-walk-anim) 16384.0)
(set! (-> obj speed-walk) 12288.0)
)
((= v1-18 2)
(set! (-> obj anim-walk) 14)
(set! (-> obj dist-walk-anim) 16384.0)
(set! (-> obj speed-walk) 12288.0)
)
)
)
(let ((v1-33 (get-rand-int obj 3)))
(cond
((zero? v1-33)
(set! (-> obj anim-panic-run) 17)
)
((= v1-33 1)
(set! (-> obj anim-panic-run) 17)
)
((= v1-33 2)
(set! (-> obj anim-panic-run) 15)
)
)
)
(set! (-> obj dist-run-anim) 20480.0)
(let ((v1-40 (get-rand-int obj 3)))
(cond
((zero? v1-40)
(set! (-> obj anim-run) 15)
)
((= v1-40 1)
(set! (-> obj anim-run) 16)
)
((= v1-40 2)
(set! (-> obj anim-run) 16)
)
)
)
(set! (-> obj speed-run) 32768.0)
(set! (-> obj anim-on-ground) 19)
(set! (-> obj anim-dive) 18)
(set! (-> obj anim-get-up-back) 25)
(set! (-> obj anim-get-up-front) 24)
(let ((f30-0 (get-rand-float-range obj 1.0 1.25))
(f0-15 (get-rand-float-range obj 1.0 1.25))
)
(set-vector! (-> obj root-override2 scale) f0-15 f30-0 f0-15 1.0)
)
(let ((f0-17 (get-rand-float-range obj 0.9 1.0)))
(set-vector! (-> obj draw color-mult) f0-17 f0-17 f0-17 1.0)
)
(set! (-> obj water-anim) 32)
0
(none)
)
(defmethod citizen-init! citizen-fat ((obj citizen-fat))
"Initialize [[citizen]] defaults."
(let ((t9-0 (method-of-type civilian citizen-init!)))
(t9-0 obj)
)
(set! (-> obj dive-reaction) (* 0.2 (rand-vu)))
(logclear! (-> obj mask) (process-mask enemy))
(setup-masks (-> obj draw) 0 -1)
(let ((v1-7 (get-rand-int obj 2)))
(cond
((zero? v1-7)
(setup-masks (-> obj draw) 8 0)
(let ((v1-11 (get-rand-int obj 3)))
(cond
((zero? v1-11)
(setup-masks (-> obj draw) 4 0)
)
((= v1-11 1)
(setup-masks (-> obj draw) 256 0)
)
((= v1-11 2)
(setup-masks (-> obj draw) #x8000 0)
)
)
)
(let ((v1-20 (get-rand-int obj 4)))
(cond
((zero? v1-20)
(setup-masks (-> obj draw) 2 0)
)
((= v1-20 1)
(setup-masks (-> obj draw) 128 0)
)
((= v1-20 2)
(setup-masks (-> obj draw) 130 0)
)
)
)
(setup-masks (-> obj draw) 512 0)
(let ((v1-31 (get-rand-int obj 3)))
(cond
((zero? v1-31)
(setup-masks (-> obj draw) 64 0)
)
((= v1-31 1)
(setup-masks (-> obj draw) 4096 0)
)
((= v1-31 2)
(setup-masks (-> obj draw) 8192 0)
)
)
)
(let ((v1-40 (get-rand-int obj 3)))
(cond
((zero? v1-40)
(setup-masks (-> obj draw) 32 0)
)
((= v1-40 1)
(setup-masks (-> obj draw) 2048 0)
)
((= v1-40 2)
(setup-masks (-> obj draw) #x20000 0)
)
)
)
(let ((v1-49 (get-rand-int obj 3)))
(cond
((zero? v1-49)
(setup-masks (-> obj draw) 16 0)
)
((= v1-49 1)
(setup-masks (-> obj draw) 1024 0)
)
((= v1-49 2)
(setup-masks (-> obj draw) #x10000 0)
)
)
)
)
((= v1-7 1)
(setup-masks (-> obj draw) #x400000 0)
(setup-masks (-> obj draw) #x200000 0)
(let ((v1-63 (get-rand-int obj 2)))
(cond
((zero? v1-63)
(setup-masks (-> obj draw) 4096 0)
)
((= v1-63 1)
(setup-masks (-> obj draw) #x80000 0)
)
)
)
(let ((v1-70 (get-rand-int obj 2)))
(cond
((zero? v1-70)
(setup-masks (-> obj draw) 256 0)
)
((= v1-70 1)
(setup-masks (-> obj draw) #x100000 0)
)
)
)
(let ((v1-77 (get-rand-int obj 4)))
(cond
((zero? v1-77)
(setup-masks (-> obj draw) 2 0)
)
((= v1-77 1)
(setup-masks (-> obj draw) 128 0)
)
((= v1-77 2)
(setup-masks (-> obj draw) 130 0)
)
)
)
(if (zero? (get-rand-int obj 1))
(setup-masks (-> obj draw) #x20000 0)
)
(let ((v1-91 (get-rand-int obj 3)))
(cond
((zero? v1-91)
(setup-masks (-> obj draw) 16 0)
)
((= v1-91 1)
(setup-masks (-> obj draw) 1024 0)
)
((= v1-91 2)
(setup-masks (-> obj draw) #x10000 0)
)
)
)
)
)
)
0
(none)
)
+25 -25
View File
@@ -38,7 +38,7 @@
(speed-scale float :offset-assert 612)
(controller vehicle-controller :inline :offset-assert 624)
(danger-pos sphere :inline :offset-assert 768)
(vehicle int64 :offset-assert 784)
(vehicle handle :offset-assert 784)
(anim-shuffle int32 :offset-assert 792)
(dist-walk-anim float :offset-assert 796)
(speed-walk float :offset-assert 800)
@@ -51,7 +51,7 @@
(last-danger-time time-frame :offset-assert 832)
(next-time-look-at time-frame :offset-assert 840)
(stop-time-look-at time-frame :offset-assert 848)
(wait-return-state symbol :offset-assert 856)
(wait-return-state (state citizen) :offset-assert 856)
(wait-time time-frame :offset-assert 864)
(cp-valid? symbol :offset-assert 872)
(cp-sphere sphere :inline :offset-assert 880)
@@ -67,28 +67,28 @@
:size-assert #x3c4
:flag-assert #xc9035003c4
(:methods
(citizen-method-178 () none 178)
(citizen-method-179 () none 179)
(citizen-method-180 () none 180)
(citizen-method-181 () none 181)
(citizen-method-182 () none 182)
(citizen-method-183 () none 183)
(citizen-method-184 () none 184)
(citizen-method-185 () none 185)
(citizen-method-186 () none 186)
(citizen-method-187 () none 187)
(citizen-method-188 () none 188)
(citizen-method-189 () none 189)
(citizen-method-190 () none 190)
(citizen-method-191 () none 191)
(citizen-method-192 () none 192)
(citizen-method-193 () none 193)
(citizen-method-194 () none 194)
(citizen-method-195 () none 195)
(citizen-method-196 () none 196)
(citizen-method-197 () none 197)
(citizen-method-198 () none 198)
(citizen-method-199 () none 199)
(citizen-method-200 () none 200)
(wait () _type_ :state 178)
(inactive () _type_ :state 179)
(in-ditch () _type_ :state 180)
(citizen-init! (_type_) none 181)
(citizen-nav-init! (_type_) none 182)
(go-inactive (_type_) none 183)
(find-segment (_type_ vector vector) nav-segment 184)
(nav-segment-callback (_type_ vector traffic-find-segment-struct (function traffic-find-segment-struct nav-segment none)) none 185)
(citizen-method-186 (_type_ nav-segment) none 186)
(citizen-method-187 (_type_) symbol 187)
(citizen-method-188 (_type_ vector) none 188)
(calc-danger-vec (_type_ vector vector) none 189)
(citizen-method-190 (_type_ vector) none 190)
(gen-clear-path (_type_) nav-segment 191)
(citizen-method-192 (_type_) none 192)
(throw-off-vehicle (_type_) none 193)
(gen-new-dir (_type_ vector float) nav-segment 194)
(citizen-method-195 (_type_ vector) symbol 195)
(get-run-anim (_type_) int 196)
(trigger-alert (_type_ int target) none 197)
(decrease-alert (_type_ object) none 198)
(set-behavior! (_type_ traffic-object-spawn-params) none 199)
(citizen-method-200 (_type_) none 200)
)
)
@@ -5,8 +5,46 @@
;; name in dgo: citizen-norm
;; dgos: CWI
;; DECOMP BEGINS
(defskelgroup skel-citizen-norm citizen-norm citizen-norm-lod0-jg -1
((citizen-norm-lod0-mg (meters 20)) (citizen-norm-lod2-mg (meters 999999)))
:bounds (static-spherem 0 2 0 3)
:shadow citizen-norm-shadow-mg
)
(define *citizen-norm-global-info*
(new 'static 'civilian-global-info
:knocked (new 'static 'array int32 2 18 20)
:knocked-land (new 'static 'array int32 2 19 21)
:yellow-hit-anim (new 'static 'inline-array civilian-anim-info 1
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 18 20))
)
:blue-hit-anim (new 'static 'inline-array civilian-anim-info 3
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 24 24))
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 24 24))
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 24 24))
)
:anim-cover-head-start 26
:anim-cover-head-loop 27
:anim-cover-head-end 28
:car-stance-anim 31
:bike-stance-anim 30
:get-in-car-anim 32
:seat-flag #x2
:speech-ambient #xf
:speech-alert #x10
:speech-cower #x11
:speech-touched-by-player #x12
:speech-shot-by-player #x13
:speech-avoiding-player-vehicle #x14
:speech-hit-by-player-vehicle #x15
)
)
(deftype citizen-norm (civilian)
()
:heap-base #x3b0
:method-count-assert 219
:size-assert #x424
:flag-assert #xdb03b00424
@@ -15,5 +53,898 @@
)
)
;; DECOMP BEGINS
(define *citizen-norm-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 #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
)
:idle-anim 4
:notice-anim 4
:hostile-anim -1
:hit-anim 4
:knocked-anim 18
:knocked-land-anim 19
:die-anim 4
:die-falling-anim 4
:victory-anim 4
:jump-wind-up-anim 12
:jump-in-air-anim 12
:jump-land-anim 12
:neck-joint 5
:look-at-joint 5
:bullseye-joint 4
:notice-distance (meters 10)
:notice-distance-delta (meters 0.1)
:default-hit-points 1
:gnd-collide-with (collide-spec backgnd)
:overlaps-others-collide-with-filter (collide-spec jak bot player-list)
:penetrate-knocked (penetrate
touch
generic-attack
lunge
flop
punch
spin
roll
uppercut
bonk
tube
vehicle
flut-attack
board
mech
mech-punch
mech-bonk
dark-skin
dark-punch
dark-bomb
dark-giant
shield
explode
jak-yellow-shot
jak-red-shot
jak-blue-shot
jak-dark-shot
enemy-yellow-shot
enemy-dark-shot
eco-yellow
eco-red
eco-blue
eco-green
knocked
penetrate-33
penetrate-34
penetrate-35
penetrate-36
penetrate-37
penetrate-38
penetrate-39
penetrate-40
penetrate-41
penetrate-42
penetrate-43
penetrate-44
penetrate-45
penetrate-46
penetrate-47
penetrate-48
penetrate-49
penetrate-50
penetrate-51
penetrate-52
penetrate-53
penetrate-54
penetrate-55
penetrate-56
penetrate-57
penetrate-58
penetrate-59
penetrate-60
penetrate-61
penetrate-62
penetrate-63
)
:movement-gravity (meters -100)
:friction 0.8
:attack-shove-back (meters 3)
: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 2730.6667
:knocked-soft-vxz-lo 32768.0
:knocked-soft-vxz-hi 49152.0
:knocked-soft-vy-lo 36864.0
:knocked-soft-vy-hi 73728.0
:knocked-medium-vxz-lo 81920.0
:knocked-medium-vxz-hi 143360.0
:knocked-medium-vy-lo 49152.0
:knocked-medium-vy-hi 102400.0
:knocked-hard-vxz-lo 102400.0
:knocked-hard-vxz-hi 122880.0
:knocked-hard-vy-lo 81920.0
:knocked-hard-vy-hi 102400.0
: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 16384.0
:knocked-yellow-vxz-hi 32768.0
:knocked-yellow-vy-lo 24576.0
:knocked-yellow-vy-hi 49152.0
:knocked-red-vxz-lo 40960.0
:knocked-red-vxz-hi 61440.0
:knocked-red-vy-lo 36864.0
:knocked-red-vy-hi 73728.0
:knocked-blue-vxz-lo 32768.0
:knocked-blue-vxz-hi 65536.0
:knocked-blue-vy-lo 32768.0
:knocked-blue-vy-hi 49152.0
:shadow-size (meters 2)
: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 #t
:use-frustration #t
:use-stop-chase #f
:use-circling #f
:use-pacing #f
:walk-anim 12
:turn-anim 12
:run-anim 14
:taunt-anim -1
:run-travel-speed (meters 12)
:run-acceleration (meters 2)
:run-turning-acceleration (meters 30)
:walk-travel-speed (meters 3)
:walk-acceleration (meters 2)
:walk-turning-acceleration (meters 8)
:maximum-rotation-rate (degrees 720.0)
:notice-nav-radius (meters 10)
: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! (-> *citizen-norm-nav-enemy-info* fact-defaults) *fact-info-enemy-defaults*)
(defmethod enemy-method-51 citizen-norm ((obj citizen-norm))
(cond
((logtest? (-> obj flags) (citizen-flag knocked-out-car knocked-out-bike))
((method-of-type nav-enemy enemy-method-51) obj)
)
(else
(let ((f30-0 (quaternion-y-angle (-> obj root-override2 quat))))
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-4) (knocked-type knocked-type-6))
(let ((a0-6 (handle->process (-> obj focus handle))))
(when a0-6
(get-trans (the-as process-focusable a0-6) 0)
(let ((s5-0 (new 'stack-no-clear 'vector)))
(set! (-> s5-0 quad) (-> obj root-override2 transv quad))
(if (< (vector-dot
(-> obj root-override2 transv)
(vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override2 quat))
)
0.0
)
(vector-negate-in-place! s5-0)
)
(set! f30-0 (atan (-> s5-0 x) (-> s5-0 z)))
)
)
)
)
(else
(let ((s5-1 (new 'stack-no-clear 'vector)))
(set! (-> s5-1 quad) (-> obj root-override2 transv quad))
(if (< (vector-dot s5-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override2 quat))) 0.0)
(vector-negate-in-place! s5-1)
)
(let* ((f28-0 (atan (-> s5-1 x) (-> s5-1 z)))
(f1-2 (deg- f30-0 f28-0))
(f2-0 (fabs f1-2))
(f0-8 (-> obj enemy-info-override knocked-seek-ry-clamp))
)
(when (and (< f0-8 f2-0) (< f2-0 (- 32768.0 f0-8)))
(set! f30-0 (+ (cond
((< f2-0 16384.0)
(if (>= f1-2 0.0)
f0-8
(- f0-8)
)
)
((>= f1-2 0.0)
(- 32768.0 f0-8)
)
(else
(+ -32768.0 f0-8)
)
)
f28-0
)
)
(if (< f30-0 0.0)
(set! f30-0 (+ 65536.0 f30-0))
)
)
)
)
)
)
f30-0
)
)
)
)
(defmethod enemy-method-79 citizen-norm ((obj citizen-norm) (arg0 int) (arg1 enemy-knocked-info))
(case arg0
((1)
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-6))
(let ((s5-0 (ja-done? 0)))
(let ((a0-4 (-> obj skel root-channel 0)))
(set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group frames num-frames) -1)))
(set! (-> a0-4 param 1) (-> arg1 anim-speed))
(joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!)
)
(when s5-0
(ja-channel-push! 1 (seconds 0.1))
(let ((a0-6 (-> obj skel root-channel 0)))
(set! (-> a0-6 frame-group)
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
)
(set! (-> a0-6 param 0)
(the float
(+ (-> (the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
frames
num-frames
)
-1
)
)
)
(set! (-> a0-6 param 1) (-> arg1 anim-speed))
(set! (-> a0-6 frame-num) 3.0)
(joint-control-channel-group!
a0-6
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
num-func-seek!
)
)
)
s5-0
)
)
(else
((method-of-type nav-enemy enemy-method-79) obj arg0 arg1)
)
)
)
(else
((method-of-type nav-enemy enemy-method-79) obj arg0 arg1)
)
)
)
(defmethod enemy-method-77 citizen-norm ((obj citizen-norm) (arg0 (pointer float)))
(local-vars (v1-36 knocked-type))
(cond
((logtest? (-> obj flags) (citizen-flag knocked-out-car))
(ja-channel-push! 1 (seconds 0.1))
(let ((a0-2 (-> obj skel root-channel 0)))
(set! (-> a0-2 frame-group) (the-as art-joint-anim (-> obj draw art-group data 33)))
(set! (-> a0-2 param 0)
(the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 33)) frames num-frames) -1))
)
(set! (-> a0-2 param 1) (-> arg0 0))
(set! (-> a0-2 frame-num) 0.0)
(joint-control-channel-group! a0-2 (the-as art-joint-anim (-> obj draw art-group data 33)) num-func-seek!)
)
(logclear! (-> obj flags) (citizen-flag knocked-out-car))
)
((logtest? (-> obj flags) (citizen-flag knocked-out-bike))
(ja-channel-push! 1 (seconds 0.1))
(let ((a0-5 (-> obj skel root-channel 0)))
(set! (-> a0-5 frame-group) (the-as art-joint-anim (-> obj draw art-group data 34)))
(set! (-> a0-5 param 0)
(the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 34)) frames num-frames) -1))
)
(set! (-> a0-5 param 1) (-> arg0 0))
(set! (-> a0-5 frame-num) 0.0)
(joint-control-channel-group! a0-5 (the-as art-joint-anim (-> obj draw art-group data 34)) num-func-seek!)
)
(logclear! (-> obj flags) (citizen-flag knocked-out-bike))
)
((begin (set! v1-36 (-> obj incoming knocked-type)) (= v1-36 (knocked-type knocked-type-4)))
(ja-channel-push! 1 (seconds 0.1))
(let* ((a2-2 (ash 1 (-> obj info prev-yellow-hit)))
(v1-39 (enemy-method-120 obj 1 a2-2))
(a1-11
(-> obj
draw
art-group
data
(-> (the-as civilian-global-info (+ (+ (* (-> obj hit-face) 4) (* v1-39 8)) (the-as uint (-> obj info))))
yellow-hit-anim
0
anim-index-front
)
)
)
)
(set! (-> obj info prev-yellow-hit) v1-39)
(let ((a0-21 (-> obj skel root-channel 0)))
(set! (-> a0-21 frame-group) (the-as art-joint-anim a1-11))
(set! (-> a0-21 param 0) (the float (+ (-> (the-as art-joint-anim a1-11) frames num-frames) -1)))
(set! (-> a0-21 param 1) (-> arg0 0))
(set! (-> a0-21 frame-num) 0.0)
(joint-control-channel-group! a0-21 (the-as art-joint-anim a1-11) num-func-seek!)
)
)
)
((= v1-36 (knocked-type knocked-type-6))
(ja-channel-push! 1 (seconds 0.01))
(let* ((a2-4 (ash 1 (-> obj info prev-blue-hit)))
(v1-48 (enemy-method-120 obj 3 a2-4))
(a1-18
(-> obj
draw
art-group
data
(-> (the-as civilian-global-info (+ (+ (* (-> obj hit-face) 4) (* v1-48 8)) (the-as uint (-> obj info))))
blue-hit-anim
0
anim-index-front
)
)
)
)
(set! (-> obj info prev-blue-hit) v1-48)
(let ((a0-36 (-> obj skel root-channel 0)))
(set! (-> a0-36 frame-group) (the-as art-joint-anim a1-18))
(set! (-> a0-36 param 0) (the float (+ (-> (the-as art-joint-anim a1-18) frames num-frames) -1)))
(set! (-> a0-36 param 1) 1.0)
(set! (-> a0-36 frame-num) 0.0)
(joint-control-channel-group! a0-36 (the-as art-joint-anim a1-18) num-func-seek!)
)
)
)
(else
(let ((s4-0 (if (= (-> obj incoming knocked-type) (knocked-type knocked-type-2))
(-> obj draw art-group data (-> obj info knocked (-> obj hit-face)))
(-> obj draw art-group data (-> obj info knocked (-> obj hit-face)))
)
)
)
(ja-channel-push! 1 (seconds 0.1))
(if (or (= (-> obj incoming knocked-type) (knocked-type knocked-type-2))
(= (-> obj incoming knocked-type) (knocked-type knocked-type-3))
)
(set! (-> arg0 0) (* 0.5 (-> arg0 0)))
)
(let ((a0-47 (-> obj skel root-channel 0)))
(set! (-> a0-47 frame-group) (the-as art-joint-anim s4-0))
(set! (-> a0-47 param 0) (the float (+ (-> (the-as art-joint-anim s4-0) frames num-frames) -1)))
(set! (-> a0-47 param 1) (-> arg0 0))
(set! (-> a0-47 frame-num) 0.0)
(joint-control-channel-group! a0-47 (the-as art-joint-anim s4-0) num-func-seek!)
)
)
)
)
#t
)
(defmethod enemy-method-78 citizen-norm ((obj citizen-norm) (arg0 (pointer float)))
(ja-channel-push! 1 (seconds 0.1))
(set! (-> arg0 0) 1.0)
(let ((a0-2 (-> obj skel root-channel 0)))
(set! (-> a0-2 frame-group)
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
)
(set! (-> a0-2 param 0)
(the float
(+ (-> (the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
frames
num-frames
)
-1
)
)
)
(set! (-> a0-2 param 1) (-> arg0 0))
(set! (-> a0-2 frame-num) 0.0)
(joint-control-channel-group!
a0-2
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
num-func-seek!
)
)
#t
)
(defstate knocked (citizen-norm)
:virtual #t
:enter (behavior ()
(let ((t9-0 (-> (method-of-type civilian knocked) enter)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (the-as collide-shape-prim-group (-> self root-override2 root-prim))))
(logior! (-> v1-5 child 0 prim-core action) (collide-action no-standon))
(logclear! (-> v1-5 child 1 prim-core action) (collide-action no-standon))
(set! (-> v1-5 child 1 prim-core collide-as) (collide-spec))
(set! (-> v1-5 child 1 prim-core collide-with) (collide-spec))
)
0
(none)
)
)
(defstate get-up-front (citizen-norm)
:virtual #t
:exit (behavior ()
(let ((t9-0 (-> (method-of-type civilian get-up-front) exit)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (-> self root-override2 root-prim)))
(logclear! (-> (the-as collide-shape-prim-group v1-5) child 0 prim-core action) (collide-action no-standon))
(logior! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core action) (collide-action no-standon))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-as) (collide-spec civilian))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
)
(none)
)
)
(defstate get-up-back (citizen-norm)
:virtual #t
:exit (behavior ()
(let ((t9-0 (-> (method-of-type civilian get-up-back) exit)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (-> self root-override2 root-prim)))
(logclear! (-> (the-as collide-shape-prim-group v1-5) child 0 prim-core action) (collide-action no-standon))
(logior! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core action) (collide-action no-standon))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-as) (collide-spec civilian))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
)
(none)
)
)
(defstate wait (citizen-norm)
:virtual #t
:trans (behavior ()
'()
(none)
)
:code (behavior ()
(until #f
(let ((f30-1 (/ 1.0 (rand-vu-float-range 10.0 13.0)))
(gp-0 (rand-vu-int-range 1 5))
(s5-0 (rand-vu-int-count 2))
)
(ja-channel-push! 1 (seconds 0.2))
(if (zero? s5-0)
(ja-no-eval :group! citizen-norm-idle-to-arms-hips-ja :num! min)
(ja-no-eval :group! citizen-norm-idle-to-arms-crossed-ja :num! min)
)
(let ((f28-0 0.0))
(while (< f28-0 1.0)
(ja :num-func num-func-identity
:frame-num (lerp-scale 0.0 2.0 (+ (* -2.0 f28-0 f28-0 f28-0) (* 3.0 f28-0 f28-0)) 0.0 1.0)
)
(suspend)
(+! f28-0 (-> self clock seconds-per-frame))
)
)
(ja-channel-push! 1 (seconds 0.1))
(while (> gp-0 0)
(+! gp-0 -1)
(cond
((zero? s5-0)
(ja-no-eval :group! citizen-norm-arms-hips-ja
:num! (seek! (the float (+ (-> (the-as art-joint-anim citizen-norm-arms-hips-ja) frames num-frames) -1)) f30-1)
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max f30-1))
)
)
(else
(ja-no-eval :group! citizen-norm-arms-crossed-ja
:num! (seek! (the float (+ (-> (the-as art-joint-anim citizen-norm-arms-crossed-ja) frames num-frames) -1)) f30-1)
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max f30-1))
)
)
)
)
)
(if (-> self wait-return-state)
(go (-> self wait-return-state))
)
)
#f
(none)
)
)
(defmethod set-behavior! citizen-norm ((obj citizen-norm) (arg0 traffic-object-spawn-params))
(case (-> arg0 behavior)
((11)
(speech-control-method-12 *speech-control* obj (speech-type speech-type-1 speech-type-2 speech-type-4))
(set! (-> obj root-override2 trans quad) (-> arg0 position quad))
(quaternion-copy! (-> obj root-override2 quat) (-> arg0 rotation))
(set! (-> obj vehicle) (-> arg0 handle))
(ja-channel-set! 1)
(case (-> (the-as vehicle (handle->process (-> obj vehicle))) info-override object-type)
((11 12 13)
(logior! (-> obj flags) (citizen-flag knocked-out-bike))
(let ((v1-16 (-> obj skel root-channel 0)))
(set! (-> v1-16 frame-group) (the-as art-joint-anim (-> obj draw art-group data 30)))
)
)
((14 15 16)
(logior! (-> obj flags) (citizen-flag knocked-out-car))
(let ((v1-22 (-> obj skel root-channel 0)))
(set! (-> v1-22 frame-group) (the-as art-joint-anim (-> obj draw art-group data 31)))
)
)
)
(ja-post)
(setup-masks (-> obj draw) 0 -1)
(let ((s5-1 (-> arg0 user-data)))
(if (not (logtest? s5-1 32))
(setup-masks (-> obj draw) 32 0)
)
(if (not (logtest? s5-1 16))
(setup-masks (-> obj draw) 16 0)
)
(if (not (logtest? s5-1 2))
(setup-masks (-> obj draw) 2 0)
)
(if (not (logtest? s5-1 4096))
(setup-masks (-> obj draw) 8192 0)
)
(if (not (logtest? s5-1 8))
(setup-masks (-> obj draw) 8 0)
)
(if (not (logtest? s5-1 512))
(setup-masks (-> obj draw) 1024 0)
)
(if (not (logtest? s5-1 #x4000))
(setup-masks (-> obj draw) #x8000 0)
)
(if (not (logtest? s5-1 4))
(setup-masks (-> obj draw) 4 0)
)
(if (not (logtest? s5-1 256))
(setup-masks (-> obj draw) 512 0)
)
(if (not (logtest? s5-1 8192))
(setup-masks (-> obj draw) #x4000 0)
)
(if (not (logtest? s5-1 64))
(setup-masks (-> obj draw) 128 0)
)
(if (not (logtest? s5-1 2048))
(setup-masks (-> obj draw) 4096 0)
)
(if (not (logtest? #x10000 s5-1))
(setup-masks (-> obj draw) #x20000 0)
)
(if (not (logtest? s5-1 128))
(setup-masks (-> obj draw) 256 0)
)
(if (logtest? #x40000 s5-1)
(setup-masks (-> obj draw) 2048 0)
(setup-masks (-> obj draw) 2048 0)
)
)
(go (method-of-object obj knocked-off-vehicle))
)
(else
((method-of-type civilian set-behavior!) obj arg0)
)
)
0
(none)
)
(defstate knocked-off-vehicle (citizen-norm)
:virtual #t
:event (the-as (function process int symbol event-message-block object :behavior citizen-norm) enemy-event-handler)
:enter (behavior ()
'()
(none)
)
:code (behavior ()
(suspend)
(throw-off-vehicle self)
(none)
)
)
(defmethod init-enemy-collision! citizen-norm ((obj citizen-norm))
"Initializes the [[collide-shape-moving]] and any ancillary tasks to make the enemy collide properly"
(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 2) 0)))
(set! (-> s5-0 total-prims) (the-as uint 3))
(set! (-> s4-0 prim-core collide-as) (collide-spec civilian))
(set! (-> s4-0 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
(set! (-> s4-0 prim-core action) (collide-action solid no-standon))
(set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0)
(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 civilian))
(set! (-> v1-13 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
(set! (-> v1-13 prim-core action) (collide-action solid))
(set-vector! (-> v1-13 local-sphere) 0.0 4096.0 0.0 4096.0)
)
(let ((v1-15 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-15 prim-core collide-as) (collide-spec civilian))
(set! (-> v1-15 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
(set! (-> v1-15 prim-core action) (collide-action solid no-standon))
(set-vector! (-> v1-15 local-sphere) 0.0 9830.4 0.0 4096.0)
)
(set! (-> s5-0 nav-radius) 4096.0)
(let ((v1-17 (-> s5-0 root-prim)))
(set! (-> s5-0 backup-collide-as) (-> v1-17 prim-core collide-as))
(set! (-> s5-0 backup-collide-with) (-> v1-17 prim-core collide-with))
)
(set! (-> s5-0 max-iteration-count) (the-as uint 3))
(set! (-> obj root-override2) s5-0)
)
0
(none)
)
(defmethod init-enemy! citizen-norm ((obj citizen-norm))
"Common method called to initialize the enemy, typically sets up default field values and calls ancillary helper methods"
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-citizen-norm" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(init-enemy-behaviour-and-stats! obj *citizen-norm-nav-enemy-info*)
(let ((v1-5 (-> obj nav)))
(set! (-> v1-5 speed-scale) 1.0)
)
0
(set! (-> obj draw lod-set lod 0 dist) 204800.0)
(set! (-> obj draw lod-set lod 1 dist) 491520.0)
(try-update-focus (-> obj focus) *target* obj)
(-> obj neck)
(set! (-> obj info) *citizen-norm-global-info*)
(set! (-> obj anim-shuffle) 11)
(let ((v1-18 (get-rand-int obj 3)))
(cond
((zero? v1-18)
(set! (-> obj anim-walk) 12)
(set! (-> obj dist-walk-anim) 8736.768)
(set! (-> obj speed-walk) 10240.0)
)
((= v1-18 1)
(set! (-> obj anim-walk) 13)
(set! (-> obj dist-walk-anim) 13107.2)
(set! (-> obj speed-walk) 12288.0)
)
((= v1-18 2)
(set! (-> obj anim-walk) 11)
(set! (-> obj dist-walk-anim) 4370.432)
(set! (-> obj speed-walk) 4096.0)
)
)
)
(let ((v1-33 (get-rand-int obj 3)))
(cond
((zero? v1-33)
(set! (-> obj anim-panic-run) 15)
)
((= v1-33 1)
(set! (-> obj anim-panic-run) 15)
)
((= v1-33 2)
(set! (-> obj anim-panic-run) 14)
)
)
)
(set! (-> obj dist-run-anim) 28672.0)
(let ((v1-40 (get-rand-int obj 3)))
(cond
((zero? v1-40)
(set! (-> obj anim-run) 14)
)
((= v1-40 1)
(set! (-> obj anim-run) 14)
)
((= v1-40 2)
(set! (-> obj anim-run) 14)
)
)
)
(set! (-> obj speed-run) 49152.0)
(set! (-> obj anim-on-ground) 17)
(set! (-> obj anim-dive) 16)
(set! (-> obj anim-get-up-front) 22)
(set! (-> obj anim-get-up-back) 23)
(let ((f30-0 (get-rand-float-range obj 1.0 1.25))
(f0-11 (get-rand-float-range obj 1.0 1.25))
)
(set-vector! (-> obj root-override2 scale) f0-11 f30-0 f0-11 1.0)
)
(let ((f0-13 (get-rand-float-range obj 0.9 1.0)))
(set-vector! (-> obj draw color-mult) f0-13 f0-13 f0-13 1.0)
)
(set! (-> obj water-anim) 29)
0
(none)
)
(defmethod citizen-init! citizen-norm ((obj citizen-norm))
"Initialize [[citizen]] defaults."
(let ((t9-0 (method-of-type civilian citizen-init!)))
(t9-0 obj)
)
(set! (-> obj dive-reaction) (+ 0.09 (* 0.15 (rand-vu))))
(logclear! (-> obj mask) (process-mask enemy))
(setup-masks (-> obj draw) 0 -1)
(setup-masks (-> obj draw) 32 0)
(let ((v1-10 (get-rand-int obj 4)))
(cond
((zero? v1-10)
(setup-masks (-> obj draw) 64 0)
)
((= v1-10 1)
(setup-masks (-> obj draw) 2048 0)
)
((= v1-10 2)
(setup-masks (-> obj draw) #x10000 0)
)
((= v1-10 3)
(setup-masks (-> obj draw) #x200000 0)
)
)
)
(let ((v1-21 (get-rand-int obj 3)))
(cond
((zero? v1-21)
(setup-masks (-> obj draw) 2 0)
)
((= v1-21 1)
(setup-masks (-> obj draw) 8192 0)
)
((= v1-21 2)
(setup-masks (-> obj draw) #x40000 0)
)
)
)
(let ((v1-30 (get-rand-int obj 4)))
(cond
((zero? v1-30)
(setup-masks (-> obj draw) 8 0)
)
((= v1-30 1)
(setup-masks (-> obj draw) 1024 0)
)
((= v1-30 2)
(setup-masks (-> obj draw) #x8000 0)
)
((= v1-30 3)
(setup-masks (-> obj draw) #x100000 0)
)
)
)
(let ((v1-41 (get-rand-int obj 5)))
(cond
((zero? v1-41)
(setup-masks (-> obj draw) 4 0)
)
((= v1-41 1)
(setup-masks (-> obj draw) 512 0)
)
((= v1-41 2)
(setup-masks (-> obj draw) #x4000 0)
)
((= v1-41 3)
(setup-masks (-> obj draw) #x80000 0)
)
)
)
(let ((v1-52 (get-rand-int obj 4)))
(cond
((zero? v1-52)
(setup-masks (-> obj draw) 128 0)
)
((= v1-52 1)
(setup-masks (-> obj draw) 4096 0)
)
((= v1-52 2)
(setup-masks (-> obj draw) #x20000 0)
)
((= v1-52 3)
(setup-masks (-> obj draw) #x400000 0)
)
)
)
(setup-masks (-> obj draw) 16 0)
(let ((v1-65 (get-rand-int obj 4)))
(cond
((zero? v1-65)
(setup-masks (-> obj draw) 256 0)
)
((= v1-65 1)
(setup-masks (-> obj draw) #x800000 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
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
@@ -458,7 +458,7 @@
(new-suppression-box (_type_ traffic-suppression-params) none 46)
(remove-suppression-box (_type_ traffic-suppression-params) none 47)
(update-suppression-box (_type_ traffic-suppression-params) none 48)
(traffic-engine-method-49 (_type_ object int traffic-target-status) traffic-target-status 49)
(traffic-engine-method-49 (_type_ vector int traffic-target-status) traffic-target-status 49)
(find-closest-to-with-collide-lists (_type_ process-drawable collide-spec) process-focusable 50)
(for-all-active-processes (_type_ (function process-focusable traffic-object-type-info none)) none 51)
(send-alert-events (_type_) none 52)
@@ -644,7 +644,7 @@ Process is recycled and moved to reserved, if it deactivates."
(let ((gp-0 (-> arg0 object-type)))
(set! (-> arg0 proc) #f)
(when (> (-> obj traffic object-type-info-array gp-0 inactive-count) 0)
(set! sv-16 (get-from-inactive-by-handle obj gp-0 (the-as handle (-> arg0 handle))))
(set! sv-16 (get-from-inactive-by-handle obj gp-0 (-> arg0 handle)))
(let ((s3-0 (handle->process sv-16)))
(when s3-0
(cond
@@ -1292,7 +1292,7 @@ Process is recycled and moved to reserved, if it deactivates."
(let ((s5-0 *target*))
(when s5-0
(let ((v1-1 (-> obj danger-sphere-array)))
(set! (-> v1-1 0 handle) (the-as uint (process->handle s5-0)))
(set! (-> v1-1 0 handle) (process->handle s5-0))
(let ((a0-4 (-> s5-0 focus-status))
(f0-0 0.0)
(f1-0 0.0)
@@ -2139,31 +2139,35 @@ Process is recycled and moved to reserved, if it deactivates."
)
)
(defmethod traffic-engine-method-49 traffic-engine ((obj traffic-engine) (arg0 object) (arg1 int) (arg2 traffic-target-status))
(local-vars (sv-192 (pointer crimson-guard)) (sv-196 (pointer float)) (sv-200 int) (sv-208 int) (sv-216 float))
(defmethod traffic-engine-method-49 traffic-engine ((obj traffic-engine) (los vector) (arg2 int) (target-status traffic-target-status))
(local-vars
(guards (pointer crimson-guard))
(guard-dists (pointer float))
(guard-idx int)
(sv-208 int)
(sv-216 float)
)
(with-pp
(logclear! (-> arg2 flags) (traffic-target-flag visible-now updated))
(logclear! (-> target-status flags) (traffic-target-flag visible-now updated))
(cond
((= (-> obj sync-mask-16) (ash 1 (logand arg1 15)))
(logior! (-> arg2 flags) (traffic-target-flag updated))
(let ((s3-0 (handle->process (-> arg2 handle)))
(s5-0 (new 'stack-no-clear 'vector))
((= (-> obj sync-mask-16) (ash 1 (logand arg2 15)))
(logior! (-> target-status flags) (traffic-target-flag updated))
(let ((target-proc (handle->process (-> target-status handle)))
(target-pos (new 'stack-no-clear 'vector))
)
(when s3-0
(set! (-> s5-0 quad) (-> (get-trans (the-as process-focusable s3-0) 3) quad))
(when target-proc
(set! (-> target-pos quad) (-> (get-trans (the-as process-focusable target-proc) 3) quad))
(cond
((= (-> (the-as process-focusable s3-0) type) target)
((= (-> (the-as process-focusable target-proc) type) target)
(let ((s1-1 (-> obj alert-state target-status-array)))
(logclear! (-> s1-1 0 flags) (traffic-target-flag visible-now updated))
(logior! (-> s1-1 0 flags) (traffic-target-flag updated))
(cond
((or (logtest? (-> s1-1 0 flags) (traffic-target-flag force-visible))
(traffic-los-clear? (the-as vector arg0) s5-0)
)
((or (logtest? (-> s1-1 0 flags) (traffic-target-flag force-visible)) (traffic-los-clear? los target-pos))
(logior! (-> s1-1 0 flags) (traffic-target-flag visible-now visible-recently visible-ever))
(set! (-> s1-1 0 last-seen-time) (-> pp clock frame-counter))
(set! (-> s1-1 0 position quad) (-> s5-0 quad))
(set! (-> s1-1 0 velocity quad) (-> (get-transv (the-as process-focusable s3-0)) quad))
(set! (-> s1-1 0 position quad) (-> target-pos quad))
(set! (-> s1-1 0 velocity quad) (-> (get-transv (the-as process-focusable target-proc)) quad))
)
(else
(if (>= (- (-> pp clock frame-counter) (-> s1-1 0 last-seen-time)) (seconds 2))
@@ -2171,36 +2175,38 @@ Process is recycled and moved to reserved, if it deactivates."
)
)
)
(mem-copy! (the-as pointer arg2) (the-as pointer s1-1) 80)
(mem-copy! (the-as pointer target-status) (the-as pointer s1-1) 80)
)
0
)
(else
(logior! (-> arg2 flags) (traffic-target-flag visible-now visible-recently visible-ever))
(set! (-> arg2 last-seen-time) (-> pp clock frame-counter))
(set! (-> arg2 position quad) (-> s5-0 quad))
(set! (-> arg2 velocity quad) (-> (get-transv (the-as process-focusable s3-0)) quad))
(logior! (-> target-status flags) (traffic-target-flag visible-now visible-recently visible-ever))
(set! (-> target-status last-seen-time) (-> pp clock frame-counter))
(set! (-> target-status position quad) (-> target-pos quad))
(set! (-> target-status velocity quad) (-> (get-transv (the-as process-focusable target-proc)) quad))
)
)
(set! (-> s5-0 quad) (-> arg2 position quad))
(when (not (update-guard-status-spots s5-0))
(set! (-> target-pos quad) (-> target-status position quad))
(when (not (update-guard-status-spots target-pos))
)
(when (update-guard-status-spots s5-0)
(set! sv-192 (new 'stack-no-clear 'array 'crimson-guard 16))
(set! sv-196 (new 'stack-no-clear 'array 'float 16))
(set! sv-200 0)
(dotimes (s3-1 (the-as int (-> obj vehicle-tracker-array active-object-count)))
(case (-> obj vehicle-tracker-array active-object-type-list s3-1)
(when (update-guard-status-spots target-pos)
(set! guards (new 'stack-no-clear 'array 'crimson-guard 16))
(set! guard-dists (new 'stack-no-clear 'array 'float 16))
(set! guard-idx 0)
(dotimes (guard-count (the-as int (-> obj vehicle-tracker-array active-object-count)))
(case (-> obj vehicle-tracker-array active-object-type-list guard-count)
(((traffic-type crimson-guard-1))
(let ((s2-3 (handle->process (-> obj vehicle-tracker-array active-object-list s3-1))))
(when (and s2-3
(not (logtest? (-> (the-as process-focusable s2-3) focus-status) (focus-status dead inactive)))
(= (-> (the-as crimson-guard s2-3) traffic-target-status handle) (-> arg2 handle))
(let ((guard (handle->process (-> obj vehicle-tracker-array active-object-list guard-count))))
(when (and guard
(not (logtest? (-> (the-as process-focusable guard) focus-status) (focus-status dead inactive)))
(= (-> (the-as crimson-guard guard) traffic-target-status handle) (-> target-status handle))
)
(set! (-> sv-192 sv-200) (the-as crimson-guard s2-3))
(set! (-> sv-196 sv-200) (vector-vector-distance (-> (the-as crimson-guard s2-3) root-override2 trans) s5-0))
(set! sv-200 (+ sv-200 1))
(set! (-> (the-as crimson-guard s2-3) move-index) -1)
(set! (-> guards guard-idx) (the-as crimson-guard guard))
(set! (-> guard-dists guard-idx)
(vector-vector-distance (-> (the-as crimson-guard guard) root-override2 trans) target-pos)
)
(set! guard-idx (+ guard-idx 1))
(set! (-> (the-as crimson-guard guard) move-index) -1)
)
)
)
@@ -2209,30 +2215,30 @@ Process is recycled and moved to reserved, if it deactivates."
(let ((a0-35 #t))
(while a0-35
(set! a0-35 #f)
(dotimes (v1-77 (+ sv-200 -1))
(when (< (-> sv-196 (+ v1-77 1)) (-> sv-196 v1-77))
(let ((a0-38 (-> sv-192 v1-77))
(f0-2 (-> sv-196 v1-77))
(dotimes (v1-77 (+ guard-idx -1))
(when (< (-> guard-dists (+ v1-77 1)) (-> guard-dists v1-77))
(let ((a0-38 (-> guards v1-77))
(f0-2 (-> guard-dists v1-77))
)
(set! (-> sv-192 v1-77) (-> sv-192 (+ v1-77 1)))
(set! (-> sv-192 (+ v1-77 1)) a0-38)
(set! (-> sv-196 v1-77) (-> sv-196 (+ v1-77 1)))
(set! (-> sv-196 (+ v1-77 1)) f0-2)
(set! (-> guards v1-77) (-> guards (+ v1-77 1)))
(set! (-> guards (+ v1-77 1)) a0-38)
(set! (-> guard-dists v1-77) (-> guard-dists (+ v1-77 1)))
(set! (-> guard-dists (+ v1-77 1)) f0-2)
)
(set! a0-35 #t)
)
)
)
)
(dotimes (s4-1 sv-200)
(let ((s3-2 (-> (the-as (array crimson-guard) sv-192) s4-1)))
(when (= (-> s3-2 move-index) -1)
(dotimes (s4-1 guard-idx)
(let ((crimson-guard (-> (the-as (pointer crimson-guard) guards) s4-1)))
(when (= (-> crimson-guard move-index) -1)
(set! sv-208 -1)
(set! sv-216 100000000000000000.0) ;; kinda hacky, was ps2 weird infinity.
(dotimes (s2-4 (-> *guard-target-spots* length))
(when (= (-> *guard-status-spots* s2-4) 1)
(let* ((a0-53 (vector+! (new 'stack-no-clear 'vector) s5-0 (-> *guard-target-spots* s2-4)))
(f0-4 (vector-vector-distance a0-53 (-> s3-2 root-override2 trans)))
(let* ((a0-53 (vector+! (new 'stack-no-clear 'vector) target-pos (-> *guard-target-spots* s2-4)))
(f0-4 (vector-vector-distance a0-53 (-> crimson-guard root-override2 trans)))
)
(when (or (= sv-208 -1) (< f0-4 sv-216))
(set! sv-208 s2-4)
@@ -2244,10 +2250,10 @@ Process is recycled and moved to reserved, if it deactivates."
(cond
((!= sv-208 -1)
(set! (-> *guard-status-spots* sv-208) 0)
(vector+! (-> s3-2 move-position) s5-0 (-> *guard-target-spots* sv-208))
(vector+! (-> crimson-guard move-position) target-pos (-> *guard-target-spots* sv-208))
)
(else
(set! (-> s3-2 move-position quad) (-> s5-0 quad))
(set! (-> crimson-guard move-position quad) (-> target-pos quad))
)
)
)
@@ -2258,24 +2264,24 @@ Process is recycled and moved to reserved, if it deactivates."
)
)
(else
(let ((s5-1 (handle->process (-> arg2 handle)))
(let ((s5-1 (handle->process (-> target-status handle)))
(s3-3 (new 'stack-no-clear 'vector))
)
(when s5-1
(set! (-> s3-3 quad) (-> (get-trans (the-as process-focusable s5-1) 3) quad))
(cond
((= (-> s5-1 type) target)
(mem-copy! (the-as pointer arg2) (the-as pointer (-> obj alert-state target-status-array)) 80)
(mem-copy! (the-as pointer target-status) (the-as pointer (-> obj alert-state target-status-array)) 80)
)
(else
)
)
)
)
(logclear! (-> arg2 flags) (traffic-target-flag updated))
(logclear! (-> target-status flags) (traffic-target-flag updated))
)
)
arg2
target-status
)
)
@@ -186,7 +186,7 @@
(+! s4-1 1)
(b! #t cfg-28 :delay (nop!))
(label cfg-27)
(format 0 "traffic-manager: unable to spawn~%")
(format #t "traffic-manager: unable to spawn~%")
(b! #t cfg-41 :delay (nop!))
(label cfg-28)
(b! #t cfg-33 :delay (nop!))
@@ -237,10 +237,6 @@
;; WARN: Return type mismatch process vs process-drawable.
(defun citizen-spawn ((arg0 process) (arg1 type) (arg2 traffic-object-spawn-params))
;; added check
(when (zero? citizen-init-by-other)
(return (the process-drawable #f))
)
(let ((gp-0 (the-as process #f)))
(let* ((s3-0 (get-process *default-dead-pool* arg1 #x4000))
(v1-1 (when s3-0
@@ -423,7 +419,7 @@
(set! (-> s5-1 nav-mesh) #f)
(set! (-> s5-1 nav-branch) #f)
(set! (-> s5-1 proc) #f)
(set! (-> s5-1 handle) (the-as uint #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))
@@ -440,7 +440,7 @@
(set! (-> s5-0 nav-mesh) (-> obj nav-mesh))
(set! (-> s5-0 nav-branch) #f)
(set! (-> s5-0 proc) #f)
(set! (-> s5-0 handle) (the-as uint (process->handle obj)))
(set! (-> s5-0 handle) (process->handle obj))
(set! (-> s5-0 user-data) (-> obj spawn-side))
(set! (-> s5-0 flags) (the-as uint 0))
(set! (-> s5-0 guard-type) (the-as uint 7))
@@ -814,7 +814,7 @@
(set! (-> a1-2 decay-rate) 0.0)
(set! (-> a1-2 flags) (traffic-danger-flags tdf0))
(set! (-> a1-2 danger-type) (traffic-danger-type tdt6))
(set! (-> a1-2 handle) (the-as uint #f))
(set! (-> a1-2 handle) (the-as handle #f))
(add-danger (-> obj controller traffic) a1-2)
)
)
@@ -1033,7 +1033,7 @@
((9)
(vehicle-method-128 obj)
(set! (-> obj flags) (logior (rigid-body-object-flag persistent alert) (-> obj flags)))
(set! (-> obj pursuit-target) (the-as handle (-> arg0 handle)))
(set! (-> obj pursuit-target) (-> arg0 handle))
(go (method-of-object obj waiting-ambush))
)
(else
@@ -154,7 +154,7 @@
)
(set! (-> gp-0 nav-branch) #f)
(set! (-> gp-0 proc) #f)
(set! (-> gp-0 handle) (the-as uint (process->handle (-> self parent-override 0))))
(set! (-> gp-0 handle) (process->handle (-> self parent-override 0)))
(set! (-> gp-0 user-data) (-> self draw seg-mask))
(set! (-> gp-0 flags) (the-as uint 0))
(set! (-> gp-0 guard-type) (the-as uint 7))
@@ -255,7 +255,7 @@ This commonly includes things such as:
(set! (-> s5-0 nav-mesh) #f)
(set! (-> s5-0 nav-branch) #f)
(set! (-> s5-0 proc) #f)
(set! (-> s5-0 handle) (the-as uint (process->handle *target*)))
(set! (-> s5-0 handle) (process->handle *target*))
(set! (-> s5-0 user-data) (the-as uint 0))
(set! (-> s5-0 flags) (the-as uint 2))
(set! (-> s5-0 guard-type) (the-as uint 1))
@@ -327,7 +327,7 @@ This commonly includes things such as:
(set! (-> s5-0 nav-mesh) #f)
(set! (-> s5-0 nav-branch) #f)
(set! (-> s5-0 proc) #f)
(set! (-> s5-0 handle) (the-as uint (process->handle *target*)))
(set! (-> s5-0 handle) (process->handle *target*))
(set! (-> s5-0 user-data) (the-as uint 0))
(set! (-> s5-0 flags) (the-as uint 2))
(set! (-> s5-0 guard-type) (the-as uint 1))
@@ -7,3 +7,750 @@
;; DECOMP BEGINS
(deftype hal3-course (bot-course)
((transport handle :offset-assert 48)
)
:method-count-assert 9
:size-assert #x38
:flag-assert #x900000038
)
(deftype hal-help-kid (hal)
((nav-mesh nav-mesh :offset-assert 1024)
(alley-bbox bounding-box :inline :offset-assert 1040)
(suppress traffic-suppression-params 2 :inline :offset-assert 1072)
)
:heap-base #x410
:method-count-assert 229
:size-assert #x490
:flag-assert #xe504100490
(:methods
(hal-help-kid-method-227 (_type_) none 227)
(hal-help-kid-method-228 (_type_ vector) none 228)
)
)
(defmethod init! hal-help-kid ((obj hal-help-kid))
"Set defaults for various fields."
(let ((t9-0 (method-of-type hal init!)))
(t9-0 obj)
)
(let ((v1-1 (-> obj suppress)))
(set! (-> v1-1 0 duration) (the-as uint 300))
(set! (-> v1-1 0 id) -1)
(let ((a0-4 (-> v1-1 0)))
(set! (-> a0-4 bbox min x) 2170880.0)
(set! (-> a0-4 bbox min y) 20480.0)
(set! (-> a0-4 bbox min z) -233472.0)
(set! (-> a0-4 bbox min w) 1.0)
)
(set-vector! (-> v1-1 0 bbox max) 2785280.0 40960.0 20480.0 1.0)
)
(let ((v1-3 (-> obj suppress 1))
(a1-4 (-> obj alley-bbox))
)
(set-vector! (-> a1-4 min) 2531328.0 20480.0 -675840.0 1.0)
(set-vector! (-> a1-4 max) 2785280.0 40960.0 -233472.0 1.0)
(set! (-> v1-3 duration) (the-as uint 300))
(set! (-> v1-3 id) -1)
(mem-copy! (the-as pointer (-> v1-3 bbox)) (the-as pointer a1-4) 32)
)
(set! (-> obj channel) (the-as uint 30))
(none)
)
(defmethod hal-help-kid-method-228 hal-help-kid ((obj hal-help-kid) (arg0 vector))
(let ((v1-0 (new 'stack-no-clear 'traffic-danger-info)))
(set! (-> v1-0 sphere quad) (-> arg0 quad))
(set! (-> v1-0 sphere r) 32768.0)
(set! (-> v1-0 velocity quad) (the-as uint128 0))
(set! (-> v1-0 notify-radius) 122880.0)
(set! (-> v1-0 danger-level) 0.4)
(set! (-> v1-0 decay-rate) 0.0)
(set! (-> v1-0 flags) (traffic-danger-flags tdf0))
(set! (-> v1-0 danger-type) (traffic-danger-type tdt4))
(add-danger (-> (the-as traffic-manager *traffic-manager*) traffic-engine) v1-0)
)
(none)
)
(defmethod general-event-handler hal-help-kid ((obj hal-help-kid) (arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
"Handles various events for the enemy
@TODO - unsure if there is a pattern for the events and this should have a more specific name"
(local-vars (v0-0 object))
(case arg2
(('fail)
(set! v0-0 (logior (-> obj bot-task-bits) 1))
(set! (-> obj bot-task-bits) (the-as uint v0-0))
v0-0
)
(('request)
(case (-> arg3 param 0)
(('scene-player)
(set! v0-0 (logior (-> obj bot-task-bits) 8))
(set! (-> obj bot-task-bits) (the-as uint v0-0))
v0-0
)
(else
((method-of-type hal general-event-handler) obj arg0 arg1 arg2 arg3)
)
)
)
(else
((method-of-type hal general-event-handler) obj arg0 arg1 arg2 arg3)
)
)
)
(defmethod hal-help-kid-method-227 hal-help-kid ((obj hal-help-kid))
(let ((s4-0 (-> obj suppress))
(gp-0 (-> obj suppress 1))
)
((method-of-type traffic-suppression-params create-or-update-suppression-box)
(the-as traffic-suppression-params s4-0)
)
(let ((s5-0 (new 'stack-no-clear 'vector))
(s3-1 (-> obj alley-bbox))
)
(set! (-> s5-0 quad) (-> (target-pos 0) quad))
(mem-copy! (the-as pointer (-> gp-0 bbox)) (the-as pointer s3-1) 32)
(if (or ((method-of-type bounding-box inside-xz?) (the-as bounding-box (-> s4-0 0)) s5-0) (inside-xz? s3-1 s5-0))
(set! (-> gp-0 bbox min z) (fmax (fmin (-> s5-0 z) (-> gp-0 bbox min z)) (-> gp-0 bbox min z)))
)
)
(create-or-update-suppression-box gp-0)
)
0
(none)
)
;; WARN: Return type mismatch nav-mesh vs none.
(defmethod init-enemy! hal-help-kid ((obj hal-help-kid))
"Common method called to initialize the enemy, typically sets up default field values and calls ancillary helper methods"
(let ((t9-0 (method-of-type hal init-enemy!)))
(t9-0 obj)
)
(set! (-> obj nav-mesh) (nav-mesh-from-res-tag (-> obj entity) 'nav-mesh-actor 0))
(none)
)
(define *hal3-course*
(new 'static 'hal3-course
:course-id #x6
:spot-count #x4
:default-check-too-far #f
:waypoints (new 'static 'boxed-array :type bot-waypoint
(new 'static 'bot-waypoint
:waypoint-id 1
:skip-to -1
:on-set (lambda ((arg0 hal-help-kid))
(process-entity-status! arg0 (entity-perm-status no-kill) #t)
(clear-speech-flags! arg0)
(let ((v1-4 (-> arg0 actor-group 0 data 3 actor)))
(if v1-4
(logior! (-> v1-4 extra perm status) (entity-perm-status bit-9))
)
)
(let ((v1-7 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-7 bytes 5) (the-as uint 1))
(set! (-> v1-7 bytes 6) (the-as uint 0))
(set! (-> v1-7 bytes 4) (the-as uint 0))
(set! (-> (the-as halt-wait-spot v1-7) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-help-kid))
(let* ((v1-3 (-> arg1 actor-group 0 data 1 actor))
(s4-0 (if v1-3
(-> v1-3 extra process)
)
)
(v1-8 (-> arg1 actor-group 0 data 2 actor))
(s5-0 (if v1-8
(-> v1-8 extra process)
)
)
(s3-0 *traffic-manager*)
)
(cond
((not (logtest? (-> arg1 waypoint-bits) 1))
;; (set! s3-0 (and s4-0 (and s5-0 s3-0)))
(when (and s4-0 (and s5-0 s3-0))
(let* ((v1-15 (-> *game-info* sub-task-list 4))
(v1-18 (handle->process (if (-> v1-15 info)
(-> v1-15 info manager)
(the-as handle #f)
)
)
)
)
(when v1-18
(set! (-> (the-as task-manager v1-18) slave 0) (process->handle arg1))
(logior! (-> arg1 waypoint-bits) 1)
(set! (-> arg1 slave-handle 0) (process->handle s4-0))
(set! (-> arg1 slave-handle 1) (process->handle s5-0))
)
)
)
#f
)
((not (logtest? (-> arg1 waypoint-bits) 2))
(logior! (-> arg1 waypoint-bits) 2)
(hal-method-226 arg1)
(send-event s4-0 'request 'waypoint 2)
(send-event s5-0 'request 'waypoint 2)
#f
)
((not (logtest? (-> arg1 waypoint-bits) 4))
(logior! (-> arg1 waypoint-bits) 4)
(send-event s3-0 'deactivate-by-type 6)
(send-event s3-0 'deactivate-by-type 18)
(send-event s3-0 'deactivate-by-type 19)
(send-event s3-0 'deactivate-by-type 20)
(send-event s3-0 'set-guard-target-level 0)
(send-event s3-0 'set-object-reserve-count 6 14)
#f
)
(else
(let ((a0-34 s4-0))
(when (and (and a0-34 (let ((s4-1 1))
(< s4-1 (the-as int (send-event a0-34 'query 'waypoint)))
)
)
(let ((a0-36 s5-0))
(and a0-36 (let ((s5-1 1))
(< s5-1 (the-as int (send-event a0-36 'query 'waypoint)))
)
)
)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 2 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 2
:skip-to -1
:on-set (lambda ((arg0 hal-help-kid))
(let ((v1-1 (get-current-task-event (-> arg0 task))))
(if (= (-> v1-1 action) (game-task-action say))
(add-process
*gui-control*
arg0
(gui-channel art-load)
(gui-action queue)
(the-as string (-> v1-1 scene))
-99.0
0
)
)
)
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-3 bytes 5) (the-as uint 1))
(set! (-> v1-3 bytes 6) (the-as uint 0))
(set! (-> v1-3 bytes 4) (the-as uint 0))
(set! (-> (the-as halt-wait-spot v1-3) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-help-kid))
(when *target*
(let* ((s5-0 (target-pos 0))
(s4-0 (-> arg1 root-override2 trans))
(f30-0 (vector-vector-xz-distance s5-0 s4-0))
(f28-0 (- (-> s5-0 z) (-> s4-0 z)))
(v1-4 (get-current-task-event (-> arg1 task)))
)
(when (and (= (-> v1-4 action) (game-task-action say))
(and (or (>= 40960.0 f30-0) (>= 30515.2 f28-0)) (scene-play arg1 (the-as string (-> v1-4 scene)) #f))
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 3 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
)
#f
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 3
:skip-to -1
:on-set (lambda ((arg0 hal-help-kid))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) (the-as uint 1))
(set! (-> v1-1 bytes 6) (the-as uint 0))
(set! (-> v1-1 bytes 4) (the-as uint 0))
(set! (-> (the-as halt-wait-spot v1-1) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-help-kid)) (when (scene-release? arg1)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 4 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 4
:skip-to -1
:on-set (lambda ((arg0 hal-help-kid))
(with-pp
(set-setting! 'sound-mode #f 0 1)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 2)
(set! (-> a1-1 message) 'request)
(set! (-> a1-1 param 0) (the-as uint 'waypoint))
(set! (-> a1-1 param 1) (the-as uint 6))
(let ((t9-1 send-event-function)
(v1-10 (-> arg0 actor-group 0 data 1 actor))
)
(t9-1
(if v1-10
(-> v1-10 extra process)
)
a1-1
)
)
)
(let ((s5-0 *traffic-manager*))
(send-event s5-0 'set-guard-multi-focus #t)
(send-event s5-0 'set-disable-pursuit-control #t)
(send-event s5-0 'set-guard-force-visible #t)
(send-event s5-0 'set-max-alert-level 1)
(send-event s5-0 'set-alert-level 1)
(send-event s5-0 'set-alert-duration #xa4cb80)
(send-event s5-0 'set-guard-target-level 0)
)
(dotimes (s5-1 3)
(let ((s4-0 (new 'stack 'traffic-object-spawn-params)))
(set! (-> s4-0 object-type) (traffic-type crimson-guard-1))
(set! (-> s4-0 behavior) (the-as uint 3))
(set! (-> s4-0 id) (the-as uint 0))
(set! (-> s4-0 nav-mesh) (-> arg0 nav-mesh))
(set! (-> s4-0 nav-branch) #f)
(set! (-> s4-0 proc) #f)
(set! (-> s4-0 handle) (the-as handle #f))
(set! (-> s4-0 user-data) (the-as uint 0))
(set! (-> s4-0 flags) (the-as uint 0))
(set! (-> s4-0 guard-type) (the-as uint 7))
(vector-reset! (-> s4-0 velocity))
(set! (-> s4-0 position quad) (-> arg0 course spots (+ s5-1 1) center quad))
(set! (-> s4-0 position w) 1.0)
(quaternion-vector-angle!
(-> s4-0 rotation)
*up-vector*
(* 182.04445 (* 0.00024414062 (-> arg0 course spots (+ s5-1 1) center w)))
)
(send-event *traffic-manager* 'activate-object s4-0)
)
)
(add-process *gui-control* arg0 (gui-channel art-load) (gui-action queue) "city-help-kid-resolution" -99.0 0)
(let ((v1-70 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-70 bytes 5) (the-as uint 1))
(set! (-> v1-70 bytes 6) (the-as uint 0))
(set! (-> v1-70 bytes 4) (the-as uint 0))
(set! (-> (the-as halt-wait-spot v1-70) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-help-kid))
(cond
((and (logtest? (-> arg1 bot-task-bits) 1) (zero? (logand (-> arg1 bot-flags) (bot-flags bf09))))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 7 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
((zero? (send-event *traffic-manager* 'get-object-remaining-count 6))
(let ((v1-16 *target*))
(when v1-16
(cond
((logtest? (focus-status dark) (-> v1-16 focus-status))
(if (and (not (logtest? (-> arg1 bot-task-bits) 4)) (send-event *target* 'end-mode))
(logior! (-> arg1 bot-task-bits) 4)
)
#f
)
(else
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 8 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
)
)
)
(none)
)
)
:on-update (lambda ((arg0 hal-help-kid))
(with-pp
(gui-control-method-12
*gui-control*
arg0
(gui-channel art-load)
(gui-action queue)
"city-help-kid-resolution"
0
-1.0
(new 'static 'sound-id)
)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 1)
(set! (-> a1-1 message) 'get-object-remaining-count)
(set! (-> a1-1 param 0) (the-as uint 6))
(let ((v1-6 (send-event-function *traffic-manager* a1-1)))
(if (and (not (logtest? (-> arg0 bot-task-bits) 2))
(and (>= 12 (the-as int v1-6)) (send-event *target* 'change-mode 'darkjak #f 2))
)
(logior! (-> arg0 bot-task-bits) 2)
)
)
)
(when (and (not (logtest? (-> arg0 waypoint-bits) 2))
(>= (- (-> pp clock frame-counter) (-> arg0 waypoint-time0)) (seconds 3))
)
(logior! (-> arg0 waypoint-bits) 2)
(let ((s5-0 (new 'stack-no-clear 'transport-params)))
(set-vector! (-> s5-0 spawn-pos) 2689966.0 65208.32 -481075.2 1.0)
(quaternion-copy! (-> s5-0 quat) *unity-quaternion*)
(set! (-> s5-0 nav-mesh) (-> arg0 nav-mesh))
(set! (-> s5-0 max-guard) (the-as uint 0))
(set! (-> s5-0 turret?) #f)
(set! (-> s5-0 speeches?) #f)
(set! (-> (the-as hal3-course (-> arg0 course)) transport)
(ppointer->handle (process-spawn transport s5-0 :to arg0))
)
)
)
(hal-help-kid-method-227 arg0)
(when (and (not (logtest? (-> arg0 waypoint-bits) 1))
(>= (- (-> pp clock frame-counter) (-> arg0 waypoint-time0)) (seconds 0.2))
)
(logior! (-> arg0 waypoint-bits) 1)
(let ((a1-7 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-7 from) (process->ppointer pp))
(set! (-> a1-7 num-params) 2)
(set! (-> a1-7 message) 'request)
(set! (-> a1-7 param 0) (the-as uint 'waypoint))
(set! (-> a1-7 param 1) (the-as uint 6))
(let ((t9-8 send-event-function)
(v1-52 (-> arg0 actor-group 0 data 2 actor))
)
(t9-8
(if v1-52
(-> v1-52 extra process)
)
a1-7
)
)
)
)
)
)
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 7
:skip-to -1
:on-set (lambda ((arg0 hal-help-kid))
(remove-setting! 'sound-mode)
(remove-setting! 'music)
(let* ((a0-3 (-> arg0 actor-group 0 data 2 actor))
(v1-7 (if a0-3
(the-as process-focusable (-> a0-3 extra process))
)
)
)
(logior! (-> v1-7 focus-status) (focus-status disable))
(logclear! (-> v1-7 focus-status) (focus-status arrestable))
)
(let ((a0-8 *traffic-manager*))
(send-event a0-8 'deactivate-by-type 6)
)
(set-action!
*gui-control*
(gui-action stop)
(the-as sound-id 1)
(gui-channel art-load)
(gui-action none)
(the-as string #f)
(the-as (function gui-connection symbol) #f)
(the-as process #f)
)
(let ((v1-17 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-17 bytes 5) (the-as uint 1))
(set! (-> v1-17 bytes 6) (the-as uint 0))
(set! (-> v1-17 bytes 4) (the-as uint 0))
(set! (-> (the-as halt-wait-spot v1-17) check-done)
(the-as (function halt-wait-spot hal symbol) (lambda ((arg0 hal-help-kid)) #f))
)
)
(none)
)
:on-update (lambda ((arg0 hal-help-kid))
(with-pp
(when (not (logtest? (-> arg0 waypoint-bits) 1))
(let* ((s4-0 (new 'stack 'traffic-object-spawn-params))
(v1-6 (-> arg0 actor-group 0 data 1 actor))
(s5-0 (if v1-6
(-> v1-6 extra process)
)
)
)
(set! (-> s4-0 object-type) (traffic-type crimson-guard-1))
(set! (-> s4-0 behavior) (the-as uint 5))
(set! (-> s4-0 id) (the-as uint 0))
(set! (-> s4-0 nav-mesh) (-> arg0 nav-mesh))
(set! (-> s4-0 nav-branch) #f)
(set! (-> s4-0 proc) #f)
(set! (-> s4-0 handle) (process->handle s5-0))
(set! (-> s4-0 user-data) (the-as uint 0))
(set! (-> s4-0 flags) (the-as uint 0))
(set! (-> s4-0 guard-type) (the-as uint 7))
(vector-reset! (-> s4-0 velocity))
(set! (-> s4-0 position quad) (-> (the-as process-drawable s5-0) root trans quad))
(set! (-> s4-0 position x) (+ 13312.0 (-> s4-0 position x)))
(set! (-> s4-0 position z) (+ 17408.0 (-> s4-0 position z)))
(let ((a1-1 (new 'stack-no-clear 'vector)))
(vector-! a1-1 (-> (the-as process-drawable s5-0) root trans) (-> s4-0 position))
(forward-up->quaternion (-> s4-0 rotation) a1-1 *up-vector*)
)
(send-event *traffic-manager* 'activate-object s4-0)
(let ((s4-1 (-> s4-0 proc)))
(when s4-1
(logior! (-> arg0 waypoint-bits) 1)
(send-event s5-0 'instant-arrest s4-1)
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-4 from) (process->ppointer pp))
(set! (-> a1-4 num-params) 1)
(set! (-> a1-4 message) 'instant-arrest)
(set! (-> a1-4 param 0) (the-as uint s4-1))
(let ((t9-4 send-event-function)
(v1-38 (-> arg0 actor-group 0 data 2 actor))
)
(t9-4
(if v1-38
(-> v1-38 extra process)
)
a1-4
)
)
)
)
)
)
)
(none)
)
)
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 8
:skip-to -1
:on-set (lambda ((arg0 hal-help-kid))
(remove-setting! 'sound-mode)
(remove-setting! 'music)
(send-event (handle->process (-> (the-as hal3-course (-> arg0 course)) transport)) 'leave)
(task-node-close! (game-task-node city-help-kid-battle))
(send-event *target* 'end-mode)
(let ((s5-0 *traffic-manager*))
(send-event s5-0 'set-alert-level 0)
(send-event s5-0 'restore-default-settings)
)
(let* ((v1-24 (-> arg0 actor-group 0 data 1 actor))
(a0-15 (if v1-24
(-> v1-24 extra process)
)
)
)
(send-event a0-15 'request 'waypoint 8)
)
(let* ((v1-35 (-> arg0 actor-group 0 data 2 actor))
(a0-16 (if v1-35
(-> v1-35 extra process)
)
)
)
(send-event a0-16 'request 'waypoint 8)
)
(let ((v1-44 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-44 bytes 5) (the-as uint 1))
(set! (-> v1-44 bytes 6) (the-as uint 0))
(set! (-> v1-44 bytes 4) (the-as uint 0))
(set! (-> (the-as halt-wait-spot v1-44) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-help-kid))
(with-pp
(if (and *target* (zero? (logand (-> arg1 bot-task-bits) 8)))
(set! (-> arg1 waypoint-time0) (-> pp clock frame-counter))
)
(let ((v1-7 (get-current-task-event (-> arg1 task))))
(when (and (= (-> v1-7 action) (game-task-action say)) (scene-play arg1 (the-as string (-> v1-7 scene)) #f))
(bot-method-196 arg1)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 9 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 9
:skip-to -1
:on-set (lambda ((arg0 hal-help-kid))
(with-pp
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer pp))
(set! (-> a1-0 num-params) 2)
(set! (-> a1-0 message) 'request)
(set! (-> a1-0 param 0) (the-as uint 'waypoint))
(set! (-> a1-0 param 1) (the-as uint 10))
(let ((t9-0 send-event-function)
(v1-8 (-> arg0 actor-group 0 data 1 actor))
)
(t9-0
(if v1-8
(-> v1-8 extra process)
)
a1-0
)
)
)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 2)
(set! (-> a1-1 message) 'request)
(set! (-> a1-1 param 0) (the-as uint 'waypoint))
(set! (-> a1-1 param 1) (the-as uint 10))
(let ((t9-1 send-event-function)
(v1-19 (-> arg0 actor-group 0 data 2 actor))
)
(t9-1
(if v1-19
(-> v1-19 extra process)
)
a1-1
)
)
)
(let ((v1-23 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-23 bytes 5) (the-as uint 1))
(set! (-> v1-23 bytes 6) (the-as uint 0))
(set! (-> v1-23 bytes 4) (the-as uint 0))
(set! (-> (the-as halt-wait-spot v1-23) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-help-kid)) (when (scene-release? arg1)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 10 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 10
:skip-to -1
:on-set (lambda ((arg0 hal-help-kid))
(let ((v1-2 (-> arg0 actor-group 0 data 3 actor)))
(if v1-2
(logclear! (-> v1-2 extra perm status) (entity-perm-status bit-9))
)
)
(let ((v1-5 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-5 bytes 5) (the-as uint 1))
(set! (-> v1-5 bytes 6) (the-as uint 0))
(set! (-> v1-5 bytes 4) (the-as uint 0))
(set! (-> (the-as halt-wait-spot v1-5) check-done)
(the-as (function halt-wait-spot hal symbol) (lambda ((arg0 object) (arg1 hal-help-kid))
(when (hal-method-225 arg1)
(process-entity-status! arg1 (entity-perm-status bit-4) #f)
(send-event arg1 'die-fast)
)
#f
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
)
:spots (new 'static 'inline-array bot-spot 4
(new 'static 'bot-spot :center (new 'static 'vector :x 2618286.0 :y 32768.0 :z -372572.16 :w 4096.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 2630023.5 :y 41015.707 :z -478801.5 :w 300843.8))
(new 'static 'bot-spot :center (new 'static 'vector :x 2623395.8 :y 41011.61 :z -515509.44 :w 321568.78))
(new 'static 'bot-spot :center (new 'static 'vector :x 2675472.0 :y 47819.98 :z -516537.56 :w 395983.66))
)
)
)
(set! (-> *bot-course-table* course 6) *hal3-course*)
@@ -332,8 +332,7 @@
)
(defmethod draw-laser-sight guard-shot ((obj guard-shot))
"TODO - confirm If applicable, draw the laser sight particles
:virtual"
"TODO - confirm If applicable, draw the laser sight particles"
(draw-beam (-> *part-id-table* 610) (-> obj tail-pos) (-> obj starting-dir) #f #t)
(let* ((a0-3 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> obj starting-dir) 2048.0))
(v1-2 (vector+! (new 'stack-no-clear 'vector) (-> obj tail-pos) a0-3))
@@ -549,7 +548,7 @@
(set! (-> v1-5 decay-rate) 0.0)
(set! (-> v1-5 flags) (traffic-danger-flags tdf0))
(set! (-> v1-5 danger-type) (traffic-danger-type tdt0))
(set! (-> v1-5 handle) (the-as uint #f))
(set! (-> v1-5 handle) (the-as handle #f))
(send-event *traffic-manager* 'add-danger-sphere v1-5)
)
)
@@ -656,8 +655,7 @@
)
(defmethod init-proj-settings! guard-shot ((obj guard-shot))
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc
:virtual"
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc"
(set! (-> obj hit-actor?) #f)
(set! (-> obj tail-pos quad) (-> obj root-override trans quad))
(set! (-> obj attack-mode) 'guard-shot)
@@ -737,8 +735,7 @@
)
(defmethod init-proj-settings! vehicle-grenade ((obj vehicle-grenade))
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc
:virtual"
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc"
(set! (-> obj attack-mode) 'eco-dark)
(initialize-skeleton
obj
@@ -772,8 +769,7 @@
)
(defmethod play-impact-sound! vehicle-grenade ((obj vehicle-grenade))
"Plays impact sound
:virtual"
"Plays impact sound"
(let* ((a2-0 (-> obj root-override))
(v1-0 (-> a2-0 status))
)
@@ -1020,8 +1016,7 @@
)
(defmethod init-proj-settings! guard-lazer-shot ((obj guard-lazer-shot))
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc
:virtual"
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc"
(set! (-> obj attack-mode) 'shock)
(set! (-> obj max-speed) 131072.0)
(set! (-> obj timeout) (seconds 0.125))
+2 -2
View File
@@ -17,7 +17,7 @@
(deftype traffic-danger-info (structure)
((sphere sphere :inline :offset-assert 0)
(velocity vector :inline :offset-assert 16)
(handle uint64 :offset-assert 32)
(handle handle :offset-assert 32)
(notify-radius float :offset-assert 40)
(danger-level float :offset-assert 44)
(decay-rate float :offset-assert 48)
@@ -96,7 +96,7 @@
(position vector :inline :offset-assert 32)
(rotation quaternion :inline :offset-assert 48)
(velocity vector :inline :offset-assert 64)
(handle uint64 :offset-assert 80)
(handle handle :offset-assert 80)
(guard-type uint8 :offset-assert 88)
(user-data uint32 :offset-assert 92)
(flags uint32 :offset-assert 96)
+778
View File
@@ -0,0 +1,778 @@
;;-*-Lisp-*-
(in-package goal)
;; failed to figure out what this is:
(defskelgroup skel-citizen-chick citizen-chick citizen-chick-lod0-jg -1
((citizen-chick-lod0-mg (meters 20)) (citizen-chick-lod2-mg (meters 999999)))
:bounds (static-spherem 0 2 0 3)
:shadow citizen-chick-shadow-mg
)
;; definition for symbol *citizen-chick-global-info*, type civilian-global-info
(define *citizen-chick-global-info*
(new 'static 'civilian-global-info
:knocked (new 'static 'array int32 2 20 22)
:knocked-land (new 'static 'array int32 2 21 23)
:yellow-hit-anim (new 'static 'inline-array civilian-anim-info 1
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 20 22))
)
:blue-hit-anim (new 'static 'inline-array civilian-anim-info 3
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 19 18))
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 19 18))
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 19 18))
)
:anim-cover-head-start 14
:anim-cover-head-loop 15
:anim-cover-head-end 16
:speech-ambient #x17
:speech-alert #x18
:speech-cower #x19
:speech-touched-by-player #x1a
:speech-shot-by-player #x1b
:speech-avoiding-player-vehicle #x1c
:speech-hit-by-player-vehicle #x1d
)
)
;; definition of type citizen-chick
(deftype citizen-chick (civilian)
()
:heap-base #x3b0
:method-count-assert 218
:size-assert #x424
:flag-assert #xda03b00424
)
;; definition for method 3 of type citizen-chick
(defmethod inspect citizen-chick ((obj citizen-chick))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type civilian inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; definition for symbol *citizen-chick-nav-enemy-info*, type nav-enemy-info
(define *citizen-chick-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 #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #xa :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
)
:idle-anim 10
:notice-anim 10
:hostile-anim -1
:hit-anim 10
:knocked-anim 20
:knocked-land-anim 21
:die-anim 10
:die-falling-anim 10
:victory-anim 10
:jump-wind-up-anim 4
:jump-in-air-anim 4
:jump-land-anim 4
:neck-joint 5
:look-at-joint 5
:bullseye-joint 4
:notice-distance-delta (meters 0.1)
:default-hit-points 1
:gnd-collide-with (collide-spec backgnd)
:overlaps-others-collide-with-filter (collide-spec jak bot player-list)
:penetrate-knocked (penetrate
touch
generic-attack
lunge
flop
punch
spin
roll
uppercut
bonk
tube
vehicle
flut-attack
board
mech
mech-punch
mech-bonk
dark-skin
dark-punch
dark-bomb
dark-giant
shield
explode
jak-yellow-shot
jak-red-shot
jak-blue-shot
jak-dark-shot
enemy-yellow-shot
enemy-dark-shot
eco-yellow
eco-red
eco-blue
eco-green
knocked
penetrate-33
penetrate-34
penetrate-35
penetrate-36
penetrate-37
penetrate-38
penetrate-39
penetrate-40
penetrate-41
penetrate-42
penetrate-43
penetrate-44
penetrate-45
penetrate-46
penetrate-47
penetrate-48
penetrate-49
penetrate-50
penetrate-51
penetrate-52
penetrate-53
penetrate-54
penetrate-55
penetrate-56
penetrate-57
penetrate-58
penetrate-59
penetrate-60
penetrate-61
penetrate-62
penetrate-63
)
:movement-gravity (meters -100)
:friction 0.8
:attack-shove-back (meters 3)
: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 2730.6667
:knocked-soft-vxz-lo 32768.0
:knocked-soft-vxz-hi 53248.0
:knocked-soft-vy-lo 20480.0
:knocked-soft-vy-hi 40960.0
:knocked-medium-vxz-lo 40960.0
:knocked-medium-vxz-hi 73728.0
:knocked-medium-vy-lo 24576.0
:knocked-medium-vy-hi 53248.0
:knocked-hard-vxz-lo 53248.0
:knocked-hard-vxz-hi 102400.0
:knocked-hard-vy-lo 40960.0
:knocked-hard-vy-hi 81920.0
: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 8192.0
:knocked-yellow-vxz-hi 16384.0
:knocked-yellow-vy-lo 12288.0
:knocked-yellow-vy-hi 24576.0
:knocked-red-vxz-lo 12288.0
:knocked-red-vxz-hi 24576.0
:knocked-red-vy-lo 20480.0
:knocked-red-vy-hi 36864.0
:knocked-blue-vxz-lo 16384.0
:knocked-blue-vxz-hi 32768.0
:knocked-blue-vy-lo 16384.0
:knocked-blue-vy-hi 32768.0
:shadow-size (meters 2)
: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 #f
:use-pacing #f
:walk-anim 4
:turn-anim 4
:run-anim 7
:taunt-anim -1
:run-travel-speed (meters 12)
:run-acceleration (meters 2)
:run-turning-acceleration (meters 30)
:walk-travel-speed (meters 3)
:walk-acceleration (meters 1)
:walk-turning-acceleration (meters 8)
:maximum-rotation-rate (degrees 720.0)
: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! (-> *citizen-chick-nav-enemy-info* fact-defaults) *fact-info-enemy-defaults*)
;; definition for method 26 of type citizen-chick
(defmethod get-inv-mass citizen-chick ((obj citizen-chick))
0.5
)
;; definition for method 51 of type citizen-chick
;; INFO: Used lq/sq
(defmethod enemy-method-51 citizen-chick ((obj citizen-chick))
(let ((f30-0 (quaternion-y-angle (-> obj root-override2 quat))))
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-4) (knocked-type knocked-type-6))
(let ((a0-5 (handle->process (-> obj focus handle))))
(when a0-5
(get-trans (the-as process-focusable a0-5) 0)
(let ((s5-0 (new 'stack-no-clear 'vector)))
(set! (-> s5-0 quad) (-> obj root-override2 transv quad))
(if (< (vector-dot
(-> obj root-override2 transv)
(vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override2 quat))
)
0.0
)
(vector-negate-in-place! s5-0)
)
(set! f30-0 (atan (-> s5-0 x) (-> s5-0 z)))
)
)
)
)
(else
(let ((s5-1 (new 'stack-no-clear 'vector)))
(set! (-> s5-1 quad) (-> obj root-override2 transv quad))
(if (< (vector-dot s5-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override2 quat))) 0.0)
(vector-negate-in-place! s5-1)
)
(let* ((f28-0 (atan (-> s5-1 x) (-> s5-1 z)))
(f1-2 (deg- f30-0 f28-0))
(f2-0 (fabs f1-2))
(f0-8 (-> obj enemy-info-override knocked-seek-ry-clamp))
)
(when (and (< f0-8 f2-0) (< f2-0 (- 32768.0 f0-8)))
(set! f30-0 (+ (cond
((< f2-0 16384.0)
(if (>= f1-2 0.0)
f0-8
(- f0-8)
)
)
((>= f1-2 0.0)
(- 32768.0 f0-8)
)
(else
(+ -32768.0 f0-8)
)
)
f28-0
)
)
(if (< f30-0 0.0)
(set! f30-0 (+ 65536.0 f30-0))
)
)
)
)
)
)
f30-0
)
)
;; definition for method 79 of type citizen-chick
(defmethod enemy-method-79 citizen-chick ((obj citizen-chick) (arg0 int) (arg1 enemy-knocked-info))
(case arg0
((1)
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-6))
(let ((s5-0 (ja-done? 0)))
(let ((a0-4 (-> obj skel root-channel 0)))
(set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group frames num-frames) -1)))
(set! (-> a0-4 param 1) (-> arg1 anim-speed))
(joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!)
)
(when s5-0
(ja-channel-push! 1 (seconds 0.1))
(let ((a0-6 (-> obj skel root-channel 0)))
(set! (-> a0-6 frame-group)
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
)
(set! (-> a0-6 param 0)
(the float
(+ (-> (the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
frames
num-frames
)
-1
)
)
)
(set! (-> a0-6 param 1) (-> arg1 anim-speed))
(set! (-> a0-6 frame-num) 3.0)
(joint-control-channel-group!
a0-6
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
num-func-seek!
)
)
)
s5-0
)
)
(else
((method-of-type nav-enemy enemy-method-79) obj arg0 arg1)
)
)
)
(else
((method-of-type nav-enemy enemy-method-79) obj arg0 arg1)
)
)
)
;; definition for method 77 of type citizen-chick
(defmethod enemy-method-77 citizen-chick ((obj citizen-chick) (arg0 (pointer float)))
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-4))
(ja-channel-push! 1 (seconds 0.01))
(let* ((a2-0 (ash 1 (-> obj info prev-yellow-hit)))
(v1-3 (enemy-method-120 obj 1 a2-0))
(a1-7
(-> obj
draw
art-group
data
(-> (the-as civilian-global-info (+ (+ (* (-> obj hit-face) 4) (* v1-3 8)) (the-as uint (-> obj info))))
yellow-hit-anim
0
anim-index-front
)
)
)
)
(set! (-> obj info prev-yellow-hit) v1-3)
(let ((a0-15 (-> obj skel root-channel 0)))
(set! (-> a0-15 frame-group) (the-as art-joint-anim a1-7))
(set! (-> a0-15 param 0) (the float (+ (-> (the-as art-joint-anim a1-7) frames num-frames) -1)))
(set! (-> a0-15 param 1) (-> arg0 0))
(set! (-> a0-15 frame-num) 0.0)
(joint-control-channel-group! a0-15 (the-as art-joint-anim a1-7) num-func-seek!)
)
)
)
(((knocked-type knocked-type-6))
(ja-channel-push! 1 (seconds 0.01))
(let* ((a2-2 (ash 1 (-> obj info prev-blue-hit)))
(v1-12 (enemy-method-120 obj 3 a2-2))
(a1-14
(-> obj
draw
art-group
data
(-> (the-as civilian-global-info (+ (+ (* (-> obj hit-face) 4) (* v1-12 8)) (the-as uint (-> obj info))))
blue-hit-anim
0
anim-index-front
)
)
)
)
(set! (-> obj info prev-blue-hit) v1-12)
(let ((a0-30 (-> obj skel root-channel 0)))
(set! (-> a0-30 frame-group) (the-as art-joint-anim a1-14))
(set! (-> a0-30 param 0) (the float (+ (-> (the-as art-joint-anim a1-14) frames num-frames) -1)))
(set! (-> a0-30 param 1) 1.0)
(set! (-> a0-30 frame-num) 0.0)
(joint-control-channel-group! a0-30 (the-as art-joint-anim a1-14) num-func-seek!)
)
)
)
(else
(let ((s4-0 (if (= (-> obj incoming knocked-type) (knocked-type knocked-type-2))
(-> obj draw art-group data (-> obj info knocked (-> obj hit-face)))
(-> obj draw art-group data (-> obj info knocked (-> obj hit-face)))
)
)
)
(ja-channel-push! 1 (seconds 0.01))
(let ((a0-39 (-> obj skel root-channel 0)))
(set! (-> a0-39 frame-group) (the-as art-joint-anim s4-0))
(set! (-> a0-39 param 0) (the float (+ (-> (the-as art-joint-anim s4-0) frames num-frames) -1)))
(set! (-> a0-39 param 1) (-> arg0 0))
(set! (-> a0-39 frame-num) 0.0)
(joint-control-channel-group! a0-39 (the-as art-joint-anim s4-0) num-func-seek!)
)
)
)
)
#t
)
;; definition for method 78 of type citizen-chick
(defmethod enemy-method-78 citizen-chick ((obj citizen-chick) (arg0 (pointer float)))
(ja-channel-push! 1 (seconds 0.1))
(let ((a0-2 (-> obj skel root-channel 0)))
(set! (-> a0-2 frame-group)
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
)
(set! (-> a0-2 param 0)
(the float
(+ (-> (the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
frames
num-frames
)
-1
)
)
)
(set! (-> a0-2 param 1) (-> arg0 0))
(set! (-> a0-2 frame-num) 0.0)
(joint-control-channel-group!
a0-2
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
num-func-seek!
)
)
#t
)
;; failed to figure out what this is:
(defstate knocked (citizen-chick)
:virtual #t
:enter (behavior ()
(let ((t9-0 (-> (method-of-type civilian knocked) enter)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (the-as collide-shape-prim-group (-> self root-override2 root-prim))))
(logior! (-> v1-5 child 0 prim-core action) (collide-action no-standon))
(logclear! (-> v1-5 child 1 prim-core action) (collide-action no-standon))
(set! (-> v1-5 child 1 prim-core collide-as) (collide-spec))
(set! (-> v1-5 child 1 prim-core collide-with) (collide-spec))
)
0
(none)
)
)
;; failed to figure out what this is:
(defstate get-up-front (citizen-chick)
:virtual #t
:exit (behavior ()
(let ((t9-0 (-> (method-of-type civilian get-up-front) exit)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (-> self root-override2 root-prim)))
(logclear! (-> (the-as collide-shape-prim-group v1-5) child 0 prim-core action) (collide-action no-standon))
(logior! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core action) (collide-action no-standon))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-as) (collide-spec civilian))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate get-up-back (citizen-chick)
:virtual #t
:exit (behavior ()
(let ((t9-0 (-> (method-of-type civilian get-up-back) exit)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (-> self root-override2 root-prim)))
(logclear! (-> (the-as collide-shape-prim-group v1-5) child 0 prim-core action) (collide-action no-standon))
(logior! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core action) (collide-action no-standon))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-as) (collide-spec civilian))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate wait (citizen-chick)
:virtual #t
:code (behavior ()
(let ((f30-1 (/ 1.0 (rand-vu-float-range 10.0 13.0))))
(ja-channel-push! 1 (seconds 0.2))
(until #f
(ja-no-eval :group! citizen-chick-idle-ja
:num! (seek! (the float (+ (-> (the-as art-joint-anim citizen-chick-idle-ja) frames num-frames) -1)) f30-1)
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max f30-1))
)
)
)
#f
(none)
)
)
;; definition for method 114 of type citizen-chick
;; WARN: Return type mismatch int vs none.
(defmethod init-enemy-collision! citizen-chick ((obj citizen-chick))
"Initializes the [[collide-shape-moving]] and any ancillary tasks to make the enemy collide properly"
(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 2) 0)))
(set! (-> s5-0 total-prims) (the-as uint 3))
(set! (-> s4-0 prim-core collide-as) (collide-spec civilian))
(set! (-> s4-0 prim-core collide-with) (collide-spec backgnd jak player-list))
(set! (-> s4-0 prim-core action) (collide-action solid no-standon))
(set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0)
(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 civilian))
(set! (-> v1-13 prim-core collide-with) (collide-spec backgnd jak player-list))
(set! (-> v1-13 prim-core action) (collide-action solid))
(set-vector! (-> v1-13 local-sphere) 0.0 4096.0 0.0 4096.0)
)
(let ((v1-15 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-15 prim-core collide-as) (collide-spec civilian))
(set! (-> v1-15 prim-core collide-with) (collide-spec backgnd jak player-list))
(set! (-> v1-15 prim-core action) (collide-action solid no-standon))
(set-vector! (-> v1-15 local-sphere) 0.0 9830.4 0.0 4096.0)
)
(set! (-> s5-0 nav-radius) 4096.0)
(let ((v1-17 (-> s5-0 root-prim)))
(set! (-> s5-0 backup-collide-as) (-> v1-17 prim-core collide-as))
(set! (-> s5-0 backup-collide-with) (-> v1-17 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 citizen-chick
;; WARN: Return type mismatch int vs none.
(defmethod init-enemy! citizen-chick ((obj citizen-chick))
"Common method called to initialize the enemy, typically sets up default field values and calls ancillary helper methods"
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-citizen-chick" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(init-enemy-behaviour-and-stats! obj *citizen-chick-nav-enemy-info*)
(let ((v1-5 (-> obj nav)))
(set! (-> v1-5 speed-scale) 1.0)
)
0
(set! (-> obj draw lod-set lod 0 dist) 204800.0)
(set! (-> obj draw lod-set lod 1 dist) 491520.0)
(set! (-> obj info) *citizen-chick-global-info*)
(try-update-focus (-> obj focus) *target* obj)
(set-vector! (-> obj neck twist-max) 10922.667 18204.445 0.0 1.0)
(set! (-> obj anim-shuffle) 26)
(let ((v1-18 (get-rand-int obj 3)))
(cond
((zero? v1-18)
(set! (-> obj anim-walk) 4)
(set! (-> obj dist-walk-anim) 15728.64)
(set! (-> obj speed-walk) 14745.6)
)
((= v1-18 1)
(set! (-> obj anim-walk) 5)
(set! (-> obj dist-walk-anim) 8736.768)
(set! (-> obj speed-walk) 8192.0)
)
((= v1-18 2)
(set! (-> obj anim-walk) 6)
(set! (-> obj dist-walk-anim) 15728.64)
(set! (-> obj speed-walk) 12288.0)
)
)
)
(let ((v1-33 (get-rand-int obj 3)))
(cond
((zero? v1-33)
(set! (-> obj anim-panic-run) 11)
)
((= v1-33 1)
(set! (-> obj anim-panic-run) 11)
)
((= v1-33 2)
(set! (-> obj anim-panic-run) 7)
)
)
)
(let ((v1-39 (get-rand-int obj 3)))
(cond
((zero? v1-39)
(set! (-> obj dist-run-anim) 26214.4)
(set! (-> obj anim-run) 7)
)
((= v1-39 1)
(set! (-> obj dist-run-anim) 28385.28)
(set! (-> obj anim-run) 8)
)
((= v1-39 2)
(set! (-> obj dist-run-anim) 26214.4)
(set! (-> obj anim-run) 9)
)
)
)
(set! (-> obj speed-run) 49152.0)
(set! (-> obj anim-on-ground) 13)
(set! (-> obj anim-dive) 17)
(set! (-> obj anim-get-up-back) 25)
(set! (-> obj anim-get-up-front) 24)
(let ((f30-0 (get-rand-float-range obj 1.0 1.25))
(f0-17 (get-rand-float-range obj 1.0 1.25))
)
(set-vector! (-> obj root-override2 scale) f0-17 f30-0 f0-17 1.0)
)
(let ((f0-19 (get-rand-float-range obj 0.9 1.0)))
(set-vector! (-> obj draw color-mult) f0-19 f0-19 f0-19 1.0)
)
(set! (-> obj water-anim) 12)
(logior! (-> obj flags) (citizen-flag female))
0
(none)
)
;; definition for method 181 of type citizen-chick
;; WARN: Return type mismatch int vs none.
(defmethod citizen-init! citizen-chick ((obj citizen-chick))
"Initialize [[citizen]] defaults."
(let ((t9-0 (method-of-type civilian citizen-init!)))
(t9-0 obj)
)
(set! (-> obj dive-reaction) (* 0.2 (rand-vu)))
(logclear! (-> obj mask) (process-mask enemy))
(setup-masks (-> obj draw) 0 -1)
(setup-masks (-> obj draw) 16 0)
(setup-masks (-> obj draw) 8 0)
(let ((v1-11 (get-rand-int obj 3)))
(cond
((zero? v1-11)
(setup-masks (-> obj draw) 32 0)
)
((= v1-11 1)
(setup-masks (-> obj draw) #x4000 0)
)
((= v1-11 2)
(setup-masks (-> obj draw) #x8000 0)
)
)
)
(let ((v1-20 (get-rand-int obj 3)))
(cond
((zero? v1-20)
(setup-masks (-> obj draw) 64 0)
)
((= v1-20 1)
(setup-masks (-> obj draw) 1024 0)
)
((= v1-20 2)
(setup-masks (-> obj draw) #x10000 0)
)
)
)
(let ((v1-29 (get-rand-int obj 3)))
(cond
((zero? v1-29)
(setup-masks (-> obj draw) 4 0)
)
((= v1-29 1)
(setup-masks (-> obj draw) 512 0)
)
((= v1-29 2)
(setup-masks (-> obj draw) 4096 0)
)
)
)
(let ((v1-38 (get-rand-int obj 3)))
(cond
((zero? v1-38)
(setup-masks (-> obj draw) 2 0)
(let ((v1-42 (get-rand-int obj 2)))
(cond
((zero? v1-42)
(setup-masks (-> obj draw) 128 0)
)
((= v1-42 1)
(setup-masks (-> obj draw) 8192 0)
)
)
)
)
((= v1-38 1)
(setup-masks (-> obj draw) 256 0)
)
((= v1-38 2)
(setup-masks (-> obj draw) 2048 0)
(let ((v1-54 (get-rand-int obj 2)))
(cond
((zero? v1-54)
(setup-masks (-> obj draw) 128 0)
)
((= v1-54 1)
(setup-masks (-> obj draw) 8192 0)
)
)
)
)
)
)
(logior! (-> obj flags) (citizen-flag female))
0
(none)
)
+357
View File
@@ -0,0 +1,357 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type citizen-enemy
(deftype citizen-enemy (citizen)
((next-update-target time-frame :offset-assert 968)
(minimap connection-minimap :offset-assert 976)
)
:heap-base #x360
:method-count-assert 203
:size-assert #x3d4
:flag-assert #xcb036003d4
(:methods
(traffic-danger-init! (_type_) none 201)
(citizen-enemy-method-202 (_type_) none 202)
)
)
;; definition for method 3 of type citizen-enemy
(defmethod inspect citizen-enemy ((obj citizen-enemy))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type citizen inspect)))
(t9-0 obj)
)
(format #t "~2Tnext-update-target: ~D~%" (-> obj next-update-target))
(format #t "~2Tminimap: #<connection-minimap @ #x~X>~%" (-> obj minimap))
(label cfg-4)
obj
)
;; definition for method 55 of type citizen-enemy
(defmethod track-target! citizen-enemy ((obj citizen-enemy))
"Does a lot of various things relating to interacting with the target
- tracks when the enemy was last drawn
- looks at the target and handles attacking
@TODO Not extremely well understood yet"
(with-pp
(let ((a1-0 (new 'stack-no-clear 'overlaps-others-params)))
(set! (-> a1-0 options) (overlaps-others-options))
(set! (-> a1-0 collide-with-filter) (-> obj enemy-info-override overlaps-others-collide-with-filter))
(set! (-> a1-0 tlist) *touching-list*)
(find-overlapping-shapes (-> obj root-override2) a1-0)
)
(when (and (not (logtest? (-> obj focus-status) (focus-status disable dead ignore inactive)))
(< (-> obj next-update-target) (-> pp clock frame-counter))
(not (logtest? (enemy-flag actor-pause-backup) (-> obj enemy-flags)))
(-> obj next-state)
(= (-> obj next-state name) 'active)
)
(citizen-enemy-method-202 obj)
(set! (-> obj next-update-target) (+ (-> pp clock frame-counter) (seconds 0.2)))
(traffic-danger-init! obj)
)
((method-of-type citizen track-target!) obj)
(none)
)
)
;; definition for method 76 of type citizen-enemy
;; WARN: Return type mismatch object vs symbol.
(defmethod enemy-method-76 citizen-enemy ((obj citizen-enemy) (arg0 process) (arg1 event-message-block))
(the-as
symbol
(cond
((and (-> obj next-state) (let ((v1-3 (-> obj next-state name)))
(or (= v1-3 'knocked) (= v1-3 'jump))
)
)
((method-of-type citizen enemy-method-76) obj arg0 arg1)
)
(else
(when (!= (-> arg0 type) target)
(let* ((s3-0 (-> arg1 param 0))
(s2-0 arg0)
(v1-6 (if (type? s2-0 process-focusable)
s2-0
)
)
)
(cond
((and (logtest? (-> obj focus-status) (focus-status dangerous))
(logtest? (process-mask guard civilian) (-> arg0 mask))
(and v1-6
(zero? (logand (-> (the-as process-focusable v1-6) focus-status) (focus-status disable dead ignore grabbed)))
)
((method-of-type touching-shapes-entry prims-touching-action?)
(the-as touching-shapes-entry s3-0)
(-> obj root-override2)
(collide-action deadly)
(collide-action)
)
)
(let ((a3-2 (if ((method-of-type touching-shapes-entry prims-touching-action?)
(the-as touching-shapes-entry s3-0)
(-> obj root-override2)
(collide-action persistent-attack)
(collide-action)
)
(-> obj persistent-attack-id)
(-> obj attack-id)
)
)
)
(enemy-method-104 obj arg0 s3-0 a3-2)
)
)
(else
(send-event arg0 'touch (-> arg1 param 0))
)
)
)
)
)
)
)
)
;; definition for method 74 of type citizen-enemy
(defmethod general-event-handler citizen-enemy ((obj citizen-enemy) (arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
"Handles various events for the enemy
@TODO - unsure if there is a pattern for the events and this should have a more specific name"
(case arg2
(('event-death)
#f
)
(('effect-control)
(case (-> arg3 param 0)
(('death-default)
(cond
((> (-> obj hit-points) 0)
#t
)
(else
(let ((v1-4 (-> obj root-override2 root-prim)))
(set! (-> v1-4 prim-core collide-as) (collide-spec))
(set! (-> v1-4 prim-core collide-with) (collide-spec))
)
0
#f
)
)
)
(else
#f
)
)
)
(('end-task)
(let ((v0-0 (the-as object (logclear (-> obj flags) (citizen-flag persistent)))))
(set! (-> obj flags) (the-as citizen-flag v0-0))
v0-0
)
)
(else
((method-of-type citizen general-event-handler) obj arg0 arg1 arg2 arg3)
)
)
)
;; definition for method 201 of type citizen-enemy
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod traffic-danger-init! citizen-enemy ((obj citizen-enemy))
(let ((a1-0 (new 'stack-no-clear 'traffic-danger-info)))
(set! (-> a1-0 sphere quad) (-> obj root-override2 trans quad))
(set! (-> a1-0 sphere r) 40960.0)
(set! (-> a1-0 velocity quad) (-> obj root-override2 transv quad))
(set! (-> a1-0 notify-radius) 122880.0)
(set! (-> a1-0 danger-level) 1.0)
(set! (-> a1-0 decay-rate) 0.0)
(set! (-> a1-0 flags) (traffic-danger-flags tdf0))
(set! (-> a1-0 danger-type) (traffic-danger-type tdt7))
(set! (-> a1-0 handle) (process->handle obj))
(add-danger (-> obj controller traffic) a1-0)
)
0
(none)
)
;; definition for method 202 of type citizen-enemy
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod citizen-enemy-method-202 citizen-enemy ((obj citizen-enemy))
(let ((s5-0 (new 'stack-no-clear 'vector)))
(set! (-> s5-0 quad) (-> obj root-override2 trans quad))
(set! (-> s5-0 w) 122880.0)
(let ((s4-0 (the-as process-drawable #f)))
(let ((f30-0 122880.0))
(let ((s3-0 (new 'stack-no-clear 'array 'collide-shape 64)))
(countdown (s2-0 (fill-actor-list-for-sphere *actor-hash* (the-as sphere s5-0) s3-0 64))
(let* ((s1-0 (-> s3-0 s2-0))
(a0-6 (if (type? s1-0 collide-shape)
s1-0
)
)
)
(when a0-6
(let* ((s0-0 (-> a0-6 process))
(s1-1 (if (type? s0-0 process-focusable)
s0-0
)
)
)
(when (and s1-1
(!= obj s1-1)
(not (logtest? (-> (the-as process-focusable s1-1) focus-status) (focus-status inactive)))
(not (logtest? (-> (the-as process-focusable s1-1) focus-status) (focus-status disable)))
(not (logtest? (process-mask enemy) (-> s1-1 mask)))
(not (logtest? (process-mask crate) (-> s1-1 mask)))
(not (logtest? (process-mask vehicle) (-> s1-1 mask)))
s1-1
(zero? (logand (-> (the-as process-focusable s1-1) focus-status) (focus-status disable dead ignore grabbed)))
)
(let ((f0-1 (vector-vector-xz-distance (-> obj root-override2 trans) (-> s1-1 root trans))))
(when (or (not s4-0) (< f0-1 f30-0))
(set! s4-0 s1-1)
(set! f30-0 f0-1)
)
)
)
)
)
)
)
)
(if (and *target* (< (vector-vector-distance (target-pos 0) s5-0) f30-0))
(set! s4-0 *target*)
)
)
(when s4-0
(try-update-focus (-> obj focus) (the-as process-focusable s4-0) obj)
(go-hostile obj)
)
)
)
0
(none)
)
;; failed to figure out what this is:
(defstate active (citizen-enemy)
:virtual #t
:code (behavior ()
(ja-channel-push! 1 (seconds 0.075))
(let ((f30-0 (get-rand-float-range self 0.8 1.2)))
(until #f
(ja-no-eval :group! (-> self draw art-group data (-> self enemy-info-override walk-anim))
:num! (seek!
(the float
(+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self enemy-info-override walk-anim)))
frames
num-frames
)
-1
)
)
f30-0
)
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max f30-0))
)
)
)
#f
(none)
)
)
;; failed to figure out what this is:
(defstate inactive (citizen-enemy)
:virtual #t
:enter (behavior ()
(when (-> self minimap)
(logior! (-> self minimap flags) (minimap-flag fade-out))
(set! (-> self minimap) #f)
)
(let ((t9-0 (-> (method-of-type citizen inactive) enter)))
(if t9-0
(t9-0)
)
)
(none)
)
)
;; definition for method 181 of type citizen-enemy
;; WARN: Return type mismatch int vs none.
(defmethod citizen-init! citizen-enemy ((obj citizen-enemy))
"Initialize [[citizen]] defaults."
(let ((t9-0 (method-of-type citizen citizen-init!)))
(t9-0 obj)
)
(if (-> obj skel effect)
(logior! (-> obj skel effect flags) (effect-control-flag ecf0))
)
(set! (-> obj mask) (logior (process-mask enemy) (-> obj mask)))
(reset-to-collide-spec (-> obj focus) (collide-spec jak civilian player-list bot-targetable jak-vehicle))
(let ((v1-12 (-> obj nav)))
(set! (-> v1-12 sphere-mask) (the-as uint #x800e8))
)
0
(set! (-> obj anim-shuffle) (-> obj enemy-info-override walk-anim))
(set! (-> obj anim-walk) (-> obj enemy-info-override walk-anim))
(set! (-> obj speed-walk) (-> obj enemy-info-override walk-travel-speed))
(set! (-> obj dist-walk-anim) (-> obj enemy-info-override walk-travel-speed))
(set! (-> obj anim-run) (-> obj enemy-info-override run-anim))
(set! (-> obj dist-run-anim) (-> obj enemy-info-override run-travel-speed))
(set! (-> obj speed-run) (-> obj enemy-info-override walk-travel-speed))
(set! (-> obj fated-time) 0)
(logior! (-> obj enemy-flags) (enemy-flag enable-on-active checking-water))
(logior! (-> obj focus-status) (focus-status dangerous))
(logior! (-> obj enemy-flags) (enemy-flag check-water))
(set! (-> obj enemy-flags)
(logior (enemy-flag check-water-backup no-initial-move-to-ground) (-> obj enemy-flags))
)
(logclear! (-> obj focus-status) (focus-status dead))
(set! (-> obj mask) (logior (process-mask collectable) (-> obj mask)))
(logior! (-> obj enemy-flags) (enemy-flag look-at-move-dest))
(if (not (-> obj minimap))
(set! (-> obj minimap) (add-icon! *minimap* obj (the-as uint 70) (the-as int #f) (the-as vector #t) 0))
)
(ja-channel-set! 0)
0
(none)
)
;; definition for method 73 of type citizen-enemy
(defmethod kill-prefer-falling citizen-enemy ((obj citizen-enemy))
"If available in `enemy-info`, [[go]] to the [[die-falling]] state, if not, [[die]]"
((method-of-type nav-enemy kill-prefer-falling) obj)
)
;; definition for method 70 of type citizen-enemy
;; WARN: Return type mismatch object vs none.
(defmethod go-hostile citizen-enemy ((obj citizen-enemy))
(if (not (and (-> obj next-state) (= (-> obj next-state name) 'hostile)))
(go (method-of-object obj hostile))
)
(none)
)
;; definition for method 67 of type citizen-enemy
;; WARN: Return type mismatch object vs none.
(defmethod go-stare citizen-enemy ((obj citizen-enemy))
(go (method-of-object obj active))
(none)
)
+867
View File
@@ -0,0 +1,867 @@
;;-*-Lisp-*-
(in-package goal)
;; failed to figure out what this is:
(defskelgroup skel-citizen-fat citizen-fat citizen-fat-lod0-jg -1
((citizen-fat-lod0-mg (meters 20)) (citizen-fat-lod2-mg (meters 999999)))
:bounds (static-spherem 0 2 0 3)
:shadow citizen-fat-shadow-mg
)
;; definition for symbol *citizen-fat-global-info*, type civilian-global-info
(define *citizen-fat-global-info*
(new 'static 'civilian-global-info
:knocked (new 'static 'array int32 2 20 22)
:knocked-land (new 'static 'array int32 2 21 23)
:yellow-hit-anim (new 'static 'inline-array civilian-anim-info 1
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 20 22))
)
:blue-hit-anim (new 'static 'inline-array civilian-anim-info 3
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 27 26))
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 27 26))
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 27 26))
)
:anim-cover-head-start 28
:anim-cover-head-loop 29
:anim-cover-head-end 30
:speech-ambient #xf
:speech-alert #x10
:speech-cower #x11
:speech-touched-by-player #x12
:speech-shot-by-player #x13
:speech-avoiding-player-vehicle #x14
:speech-hit-by-player-vehicle #x15
)
)
;; definition of type citizen-fat
(deftype citizen-fat (civilian)
()
:heap-base #x3b0
:method-count-assert 218
:size-assert #x424
:flag-assert #xda03b00424
)
;; definition for method 3 of type citizen-fat
(defmethod inspect citizen-fat ((obj citizen-fat))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type civilian inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; definition for symbol *citizen-fat-nav-enemy-info*, type nav-enemy-info
(define *citizen-fat-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 #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
)
:idle-anim 4
:notice-anim 4
:hostile-anim -1
:hit-anim 4
:knocked-anim 20
:knocked-land-anim 21
:die-anim 4
:die-falling-anim 4
:victory-anim 4
:jump-wind-up-anim 11
:jump-in-air-anim 11
:jump-land-anim 11
:neck-joint 5
:look-at-joint 5
:bullseye-joint 4
:notice-distance-delta (meters 0.1)
:default-hit-points 1
:gnd-collide-with (collide-spec backgnd)
:overlaps-others-collide-with-filter (collide-spec jak bot player-list)
:penetrate-knocked (penetrate
touch
generic-attack
lunge
flop
punch
spin
roll
uppercut
bonk
tube
vehicle
flut-attack
board
mech
mech-punch
mech-bonk
dark-skin
dark-punch
dark-bomb
dark-giant
shield
explode
jak-yellow-shot
jak-red-shot
jak-blue-shot
jak-dark-shot
enemy-yellow-shot
enemy-dark-shot
eco-yellow
eco-red
eco-blue
eco-green
knocked
penetrate-33
penetrate-34
penetrate-35
penetrate-36
penetrate-37
penetrate-38
penetrate-39
penetrate-40
penetrate-41
penetrate-42
penetrate-43
penetrate-44
penetrate-45
penetrate-46
penetrate-47
penetrate-48
penetrate-49
penetrate-50
penetrate-51
penetrate-52
penetrate-53
penetrate-54
penetrate-55
penetrate-56
penetrate-57
penetrate-58
penetrate-59
penetrate-60
penetrate-61
penetrate-62
penetrate-63
)
:movement-gravity (meters -100)
:friction 0.8
:attack-shove-back (meters 3)
: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 2730.6667
:knocked-soft-vxz-lo 32768.0
:knocked-soft-vxz-hi 53248.0
:knocked-soft-vy-lo 20480.0
:knocked-soft-vy-hi 40960.0
:knocked-medium-vxz-lo 40960.0
:knocked-medium-vxz-hi 73728.0
:knocked-medium-vy-lo 24576.0
:knocked-medium-vy-hi 53248.0
:knocked-hard-vxz-lo 53248.0
:knocked-hard-vxz-hi 102400.0
:knocked-hard-vy-lo 40960.0
:knocked-hard-vy-hi 81920.0
: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 8192.0
:knocked-yellow-vxz-hi 16384.0
:knocked-yellow-vy-lo 12288.0
:knocked-yellow-vy-hi 24576.0
:knocked-red-vxz-lo 12288.0
:knocked-red-vxz-hi 24576.0
:knocked-red-vy-lo 20480.0
:knocked-red-vy-hi 36864.0
:knocked-blue-vxz-lo 16384.0
:knocked-blue-vxz-hi 32768.0
:knocked-blue-vy-lo 16384.0
:knocked-blue-vy-hi 32768.0
:shadow-size (meters 2)
: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 #f
:use-pacing #f
:walk-anim 11
:turn-anim 11
:run-anim 15
:taunt-anim -1
:run-travel-speed (meters 12)
:run-acceleration (meters 2)
:run-turning-acceleration (meters 30)
:walk-travel-speed (meters 3)
:walk-acceleration (meters 1)
:walk-turning-acceleration (meters 8)
:maximum-rotation-rate (degrees 720.0)
: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! (-> *citizen-fat-nav-enemy-info* fact-defaults) *fact-info-enemy-defaults*)
;; definition for method 26 of type citizen-fat
(defmethod get-inv-mass citizen-fat ((obj citizen-fat))
0.5
)
;; definition for method 51 of type citizen-fat
;; INFO: Used lq/sq
(defmethod enemy-method-51 citizen-fat ((obj citizen-fat))
(let ((f30-0 (quaternion-y-angle (-> obj root-override2 quat))))
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-4) (knocked-type knocked-type-6))
(let ((a0-5 (handle->process (-> obj focus handle))))
(when a0-5
(get-trans (the-as process-focusable a0-5) 0)
(let ((s5-0 (new 'stack-no-clear 'vector)))
(set! (-> s5-0 quad) (-> obj root-override2 transv quad))
(if (< (vector-dot
(-> obj root-override2 transv)
(vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override2 quat))
)
0.0
)
(vector-negate-in-place! s5-0)
)
(set! f30-0 (atan (-> s5-0 x) (-> s5-0 z)))
)
)
)
)
(else
(let ((s5-1 (new 'stack-no-clear 'vector)))
(set! (-> s5-1 quad) (-> obj root-override2 transv quad))
(if (< (vector-dot s5-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override2 quat))) 0.0)
(vector-negate-in-place! s5-1)
)
(let* ((f28-0 (atan (-> s5-1 x) (-> s5-1 z)))
(f1-2 (deg- f30-0 f28-0))
(f2-0 (fabs f1-2))
(f0-8 (-> obj enemy-info-override knocked-seek-ry-clamp))
)
(when (and (< f0-8 f2-0) (< f2-0 (- 32768.0 f0-8)))
(set! f30-0 (+ (cond
((< f2-0 16384.0)
(if (>= f1-2 0.0)
f0-8
(- f0-8)
)
)
((>= f1-2 0.0)
(- 32768.0 f0-8)
)
(else
(+ -32768.0 f0-8)
)
)
f28-0
)
)
(if (< f30-0 0.0)
(set! f30-0 (+ 65536.0 f30-0))
)
)
)
)
)
)
f30-0
)
)
;; definition for method 79 of type citizen-fat
(defmethod enemy-method-79 citizen-fat ((obj citizen-fat) (arg0 int) (arg1 enemy-knocked-info))
(case arg0
((1)
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-6))
(let ((s5-0 (ja-done? 0)))
(let ((a0-4 (-> obj skel root-channel 0)))
(set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group frames num-frames) -1)))
(set! (-> a0-4 param 1) (-> arg1 anim-speed))
(joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!)
)
(when s5-0
(ja-channel-push! 1 (seconds 0.1))
(let ((a0-6 (-> obj skel root-channel 0)))
(set! (-> a0-6 frame-group)
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
)
(set! (-> a0-6 param 0)
(the float
(+ (-> (the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
frames
num-frames
)
-1
)
)
)
(set! (-> a0-6 param 1) (-> arg1 anim-speed))
(set! (-> a0-6 frame-num) 3.0)
(joint-control-channel-group!
a0-6
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
num-func-seek!
)
)
)
s5-0
)
)
(else
((method-of-type nav-enemy enemy-method-79) obj arg0 arg1)
)
)
)
(else
((method-of-type nav-enemy enemy-method-79) obj arg0 arg1)
)
)
)
;; definition for method 77 of type citizen-fat
(defmethod enemy-method-77 citizen-fat ((obj citizen-fat) (arg0 (pointer float)))
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-4))
(ja-channel-push! 1 (seconds 0.01))
(let* ((a2-0 (ash 1 (-> obj info prev-yellow-hit)))
(v1-3 (enemy-method-120 obj 1 a2-0))
(a1-7
(-> obj
draw
art-group
data
(-> (the-as civilian-global-info (+ (+ (* (-> obj hit-face) 4) (* v1-3 8)) (the-as uint (-> obj info))))
yellow-hit-anim
0
anim-index-front
)
)
)
)
(set! (-> obj info prev-yellow-hit) v1-3)
(let ((a0-15 (-> obj skel root-channel 0)))
(set! (-> a0-15 frame-group) (the-as art-joint-anim a1-7))
(set! (-> a0-15 param 0) (the float (+ (-> (the-as art-joint-anim a1-7) frames num-frames) -1)))
(set! (-> a0-15 param 1) (-> arg0 0))
(set! (-> a0-15 frame-num) 0.0)
(joint-control-channel-group! a0-15 (the-as art-joint-anim a1-7) num-func-seek!)
)
)
)
(((knocked-type knocked-type-6))
(ja-channel-push! 1 (seconds 0.01))
(let* ((a2-2 (ash 1 (-> obj info prev-blue-hit)))
(v1-12 (enemy-method-120 obj 3 a2-2))
(a1-14
(-> obj
draw
art-group
data
(-> (the-as civilian-global-info (+ (+ (* (-> obj hit-face) 4) (* v1-12 8)) (the-as uint (-> obj info))))
blue-hit-anim
0
anim-index-front
)
)
)
)
(set! (-> obj info prev-blue-hit) v1-12)
(let ((a0-30 (-> obj skel root-channel 0)))
(set! (-> a0-30 frame-group) (the-as art-joint-anim a1-14))
(set! (-> a0-30 param 0) (the float (+ (-> (the-as art-joint-anim a1-14) frames num-frames) -1)))
(set! (-> a0-30 param 1) 1.0)
(set! (-> a0-30 frame-num) 0.0)
(joint-control-channel-group! a0-30 (the-as art-joint-anim a1-14) num-func-seek!)
)
)
)
(else
(let ((s4-0 (if (= (-> obj incoming knocked-type) (knocked-type knocked-type-2))
(-> obj draw art-group data (-> obj info knocked (-> obj hit-face)))
(-> obj draw art-group data (-> obj info knocked (-> obj hit-face)))
)
)
)
(ja-channel-push! 1 (seconds 0.01))
(let ((a0-39 (-> obj skel root-channel 0)))
(set! (-> a0-39 frame-group) (the-as art-joint-anim s4-0))
(set! (-> a0-39 param 0) (the float (+ (-> (the-as art-joint-anim s4-0) frames num-frames) -1)))
(set! (-> a0-39 param 1) (-> arg0 0))
(set! (-> a0-39 frame-num) 0.0)
(joint-control-channel-group! a0-39 (the-as art-joint-anim s4-0) num-func-seek!)
)
)
)
)
#t
)
;; definition for method 78 of type citizen-fat
(defmethod enemy-method-78 citizen-fat ((obj citizen-fat) (arg0 (pointer float)))
(ja-channel-push! 1 (seconds 0.1))
(let ((a0-2 (-> obj skel root-channel 0)))
(set! (-> a0-2 frame-group)
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
)
(set! (-> a0-2 param 0)
(the float
(+ (-> (the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
frames
num-frames
)
-1
)
)
)
(set! (-> a0-2 param 1) (-> arg0 0))
(set! (-> a0-2 frame-num) 0.0)
(joint-control-channel-group!
a0-2
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
num-func-seek!
)
)
#t
)
;; failed to figure out what this is:
(defstate knocked (citizen-fat)
:virtual #t
:enter (behavior ()
(let ((t9-0 (-> (method-of-type civilian knocked) enter)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (the-as collide-shape-prim-group (-> self root-override2 root-prim))))
(logior! (-> v1-5 child 0 prim-core action) (collide-action no-standon))
(logclear! (-> v1-5 child 1 prim-core action) (collide-action no-standon))
(set! (-> v1-5 child 1 prim-core collide-as) (collide-spec))
(set! (-> v1-5 child 1 prim-core collide-with) (collide-spec))
)
0
(none)
)
)
;; failed to figure out what this is:
(defstate get-up-front (citizen-fat)
:virtual #t
:exit (behavior ()
(let ((t9-0 (-> (method-of-type civilian get-up-front) exit)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (-> self root-override2 root-prim)))
(logclear! (-> (the-as collide-shape-prim-group v1-5) child 0 prim-core action) (collide-action no-standon))
(logior! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core action) (collide-action no-standon))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-as) (collide-spec civilian))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate get-up-back (citizen-fat)
:virtual #t
:exit (behavior ()
(let ((t9-0 (-> (method-of-type civilian get-up-back) exit)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (-> self root-override2 root-prim)))
(logclear! (-> (the-as collide-shape-prim-group v1-5) child 0 prim-core action) (collide-action no-standon))
(logior! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core action) (collide-action no-standon))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-as) (collide-spec civilian))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate wait (citizen-fat)
:virtual #t
:trans (behavior ()
'()
(none)
)
:code (behavior ()
(until #f
(let ((f30-1 (/ 1.0 (rand-vu-float-range 10.0 13.0)))
(gp-0 (rand-vu-int-range 1 5))
(s5-0 (rand-vu-int-count 2))
)
(ja-channel-push! 1 (seconds 0.2))
(if (zero? s5-0)
(ja-no-eval :group! citizen-fat-idle-to-arms-hips-ja :num! min)
(ja-no-eval :group! citizen-fat-idle-to-arms-crossed-ja :num! min)
)
(let ((f28-0 0.0))
(while (< f28-0 1.0)
(ja :num-func num-func-identity
:frame-num (lerp-scale 0.0 2.0 (+ (* -2.0 f28-0 f28-0 f28-0) (* 3.0 f28-0 f28-0)) 0.0 1.0)
)
(suspend)
(+! f28-0 (-> self clock seconds-per-frame))
)
)
(ja-channel-push! 1 (seconds 0.1))
(while (> gp-0 0)
(+! gp-0 -1)
(cond
((zero? s5-0)
(ja-no-eval :group! citizen-fat-arms-hips-ja
:num! (seek! (the float (+ (-> (the-as art-joint-anim citizen-fat-arms-hips-ja) frames num-frames) -1)) f30-1)
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max f30-1))
)
)
(else
(ja-no-eval :group! citizen-fat-arms-crossed-ja
:num! (seek! (the float (+ (-> (the-as art-joint-anim citizen-fat-arms-crossed-ja) frames num-frames) -1)) f30-1)
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max f30-1))
)
)
)
)
)
(if (-> self wait-return-state)
(go (-> self wait-return-state))
)
)
#f
(none)
)
)
;; definition for method 114 of type citizen-fat
;; WARN: Return type mismatch int vs none.
(defmethod init-enemy-collision! citizen-fat ((obj citizen-fat))
"Initializes the [[collide-shape-moving]] and any ancillary tasks to make the enemy collide properly"
(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 2) 0)))
(set! (-> s5-0 total-prims) (the-as uint 3))
(set! (-> s4-0 prim-core collide-as) (collide-spec civilian))
(set! (-> s4-0 prim-core collide-with) (collide-spec backgnd jak player-list))
(set! (-> s4-0 prim-core action) (collide-action solid no-standon))
(set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0)
(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 civilian))
(set! (-> v1-13 prim-core collide-with) (collide-spec backgnd jak player-list))
(set! (-> v1-13 prim-core action) (collide-action solid))
(set-vector! (-> v1-13 local-sphere) 0.0 4096.0 0.0 4096.0)
)
(let ((v1-15 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-15 prim-core collide-as) (collide-spec civilian))
(set! (-> v1-15 prim-core collide-with) (collide-spec backgnd jak player-list))
(set! (-> v1-15 prim-core action) (collide-action solid no-standon))
(set-vector! (-> v1-15 local-sphere) 0.0 9830.4 0.0 4096.0)
)
(set! (-> s5-0 nav-radius) 4096.0)
(let ((v1-17 (-> s5-0 root-prim)))
(set! (-> s5-0 backup-collide-as) (-> v1-17 prim-core collide-as))
(set! (-> s5-0 backup-collide-with) (-> v1-17 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 citizen-fat
;; WARN: Return type mismatch int vs none.
(defmethod init-enemy! citizen-fat ((obj citizen-fat))
"Common method called to initialize the enemy, typically sets up default field values and calls ancillary helper methods"
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-citizen-fat" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(init-enemy-behaviour-and-stats! obj *citizen-fat-nav-enemy-info*)
(let ((v1-5 (-> obj nav)))
(set! (-> v1-5 speed-scale) 1.0)
)
0
(set! (-> obj draw lod-set lod 0 dist) 204800.0)
(set! (-> obj draw lod-set lod 1 dist) 491520.0)
(set! (-> obj info) *citizen-fat-global-info*)
(try-update-focus (-> obj focus) *target* obj)
(set-vector! (-> obj neck twist-max) 10922.667 18204.445 0.0 1.0)
(set! (-> obj anim-shuffle) 12)
(let ((v1-18 (get-rand-int obj 3)))
(cond
((zero? v1-18)
(set! (-> obj anim-walk) 11)
(set! (-> obj dist-walk-anim) 16384.0)
(set! (-> obj speed-walk) 12288.0)
)
((= v1-18 1)
(set! (-> obj anim-walk) 13)
(set! (-> obj dist-walk-anim) 16384.0)
(set! (-> obj speed-walk) 12288.0)
)
((= v1-18 2)
(set! (-> obj anim-walk) 14)
(set! (-> obj dist-walk-anim) 16384.0)
(set! (-> obj speed-walk) 12288.0)
)
)
)
(let ((v1-33 (get-rand-int obj 3)))
(cond
((zero? v1-33)
(set! (-> obj anim-panic-run) 17)
)
((= v1-33 1)
(set! (-> obj anim-panic-run) 17)
)
((= v1-33 2)
(set! (-> obj anim-panic-run) 15)
)
)
)
(set! (-> obj dist-run-anim) 20480.0)
(let ((v1-40 (get-rand-int obj 3)))
(cond
((zero? v1-40)
(set! (-> obj anim-run) 15)
)
((= v1-40 1)
(set! (-> obj anim-run) 16)
)
((= v1-40 2)
(set! (-> obj anim-run) 16)
)
)
)
(set! (-> obj speed-run) 32768.0)
(set! (-> obj anim-on-ground) 19)
(set! (-> obj anim-dive) 18)
(set! (-> obj anim-get-up-back) 25)
(set! (-> obj anim-get-up-front) 24)
(let ((f30-0 (get-rand-float-range obj 1.0 1.25))
(f0-15 (get-rand-float-range obj 1.0 1.25))
)
(set-vector! (-> obj root-override2 scale) f0-15 f30-0 f0-15 1.0)
)
(let ((f0-17 (get-rand-float-range obj 0.9 1.0)))
(set-vector! (-> obj draw color-mult) f0-17 f0-17 f0-17 1.0)
)
(set! (-> obj water-anim) 32)
0
(none)
)
;; definition for method 181 of type citizen-fat
;; WARN: Return type mismatch int vs none.
(defmethod citizen-init! citizen-fat ((obj citizen-fat))
"Initialize [[citizen]] defaults."
(let ((t9-0 (method-of-type civilian citizen-init!)))
(t9-0 obj)
)
(set! (-> obj dive-reaction) (* 0.2 (rand-vu)))
(logclear! (-> obj mask) (process-mask enemy))
(setup-masks (-> obj draw) 0 -1)
(let ((v1-7 (get-rand-int obj 2)))
(cond
((zero? v1-7)
(setup-masks (-> obj draw) 8 0)
(let ((v1-11 (get-rand-int obj 3)))
(cond
((zero? v1-11)
(setup-masks (-> obj draw) 4 0)
)
((= v1-11 1)
(setup-masks (-> obj draw) 256 0)
)
((= v1-11 2)
(setup-masks (-> obj draw) #x8000 0)
)
)
)
(let ((v1-20 (get-rand-int obj 4)))
(cond
((zero? v1-20)
(setup-masks (-> obj draw) 2 0)
)
((= v1-20 1)
(setup-masks (-> obj draw) 128 0)
)
((= v1-20 2)
(setup-masks (-> obj draw) 130 0)
)
)
)
(setup-masks (-> obj draw) 512 0)
(let ((v1-31 (get-rand-int obj 3)))
(cond
((zero? v1-31)
(setup-masks (-> obj draw) 64 0)
)
((= v1-31 1)
(setup-masks (-> obj draw) 4096 0)
)
((= v1-31 2)
(setup-masks (-> obj draw) 8192 0)
)
)
)
(let ((v1-40 (get-rand-int obj 3)))
(cond
((zero? v1-40)
(setup-masks (-> obj draw) 32 0)
)
((= v1-40 1)
(setup-masks (-> obj draw) 2048 0)
)
((= v1-40 2)
(setup-masks (-> obj draw) #x20000 0)
)
)
)
(let ((v1-49 (get-rand-int obj 3)))
(cond
((zero? v1-49)
(setup-masks (-> obj draw) 16 0)
)
((= v1-49 1)
(setup-masks (-> obj draw) 1024 0)
)
((= v1-49 2)
(setup-masks (-> obj draw) #x10000 0)
)
)
)
)
((= v1-7 1)
(setup-masks (-> obj draw) #x400000 0)
(setup-masks (-> obj draw) #x200000 0)
(let ((v1-63 (get-rand-int obj 2)))
(cond
((zero? v1-63)
(setup-masks (-> obj draw) 4096 0)
)
((= v1-63 1)
(setup-masks (-> obj draw) #x80000 0)
)
)
)
(let ((v1-70 (get-rand-int obj 2)))
(cond
((zero? v1-70)
(setup-masks (-> obj draw) 256 0)
)
((= v1-70 1)
(setup-masks (-> obj draw) #x100000 0)
)
)
)
(let ((v1-77 (get-rand-int obj 4)))
(cond
((zero? v1-77)
(setup-masks (-> obj draw) 2 0)
)
((= v1-77 1)
(setup-masks (-> obj draw) 128 0)
)
((= v1-77 2)
(setup-masks (-> obj draw) 130 0)
)
)
)
(if (zero? (get-rand-int obj 1))
(setup-masks (-> obj draw) #x20000 0)
)
(let ((v1-91 (get-rand-int obj 3)))
(cond
((zero? v1-91)
(setup-masks (-> obj draw) 16 0)
)
((= v1-91 1)
(setup-masks (-> obj draw) 1024 0)
)
((= v1-91 2)
(setup-masks (-> obj draw) #x10000 0)
)
)
)
)
)
)
0
(none)
)
+25 -25
View File
@@ -10,7 +10,7 @@
(speed-scale float :offset-assert 612)
(controller vehicle-controller :inline :offset-assert 624)
(danger-pos sphere :inline :offset-assert 768)
(vehicle int64 :offset-assert 784)
(vehicle handle :offset-assert 784)
(anim-shuffle int32 :offset-assert 792)
(dist-walk-anim float :offset-assert 796)
(speed-walk float :offset-assert 800)
@@ -23,7 +23,7 @@
(last-danger-time time-frame :offset-assert 832)
(next-time-look-at time-frame :offset-assert 840)
(stop-time-look-at time-frame :offset-assert 848)
(wait-return-state symbol :offset-assert 856)
(wait-return-state (state citizen) :offset-assert 856)
(wait-time time-frame :offset-assert 864)
(cp-valid? symbol :offset-assert 872)
(cp-sphere sphere :inline :offset-assert 880)
@@ -39,29 +39,29 @@
:size-assert #x3c4
:flag-assert #xc9035003c4
(:methods
(citizen-method-178 () none 178)
(citizen-method-179 () none 179)
(citizen-method-180 () none 180)
(citizen-method-181 () none 181)
(citizen-method-182 () none 182)
(citizen-method-183 () none 183)
(citizen-method-184 () none 184)
(citizen-method-185 () none 185)
(citizen-method-186 () none 186)
(citizen-method-187 () none 187)
(citizen-method-188 () none 188)
(citizen-method-189 () none 189)
(citizen-method-190 () none 190)
(citizen-method-191 () none 191)
(citizen-method-192 () none 192)
(citizen-method-193 () none 193)
(citizen-method-194 () none 194)
(citizen-method-195 () none 195)
(citizen-method-196 () none 196)
(citizen-method-197 () none 197)
(citizen-method-198 () none 198)
(citizen-method-199 () none 199)
(citizen-method-200 () none 200)
(wait () _type_ :state 178)
(inactive () _type_ :state 179)
(in-ditch () _type_ :state 180)
(citizen-init! (_type_) none 181)
(citizen-nav-init! (_type_) none 182)
(go-inactive (_type_) none 183)
(find-segment (_type_ vector vector) nav-segment 184)
(nav-segment-callback (_type_ vector traffic-find-segment-struct (function traffic-find-segment-struct nav-segment none)) none 185)
(citizen-method-186 (_type_ nav-segment) none 186)
(citizen-method-187 (_type_) symbol 187)
(citizen-method-188 (_type_ vector) none 188)
(calc-danger-vec (_type_ vector vector) none 189)
(citizen-method-190 (_type_ vector) none 190)
(gen-clear-path (_type_) nav-segment 191)
(citizen-method-192 (_type_) none 192)
(throw-off-vehicle (_type_) none 193)
(gen-new-dir (_type_ vector float) nav-segment 194)
(citizen-method-195 (_type_ vector) symbol 195)
(get-run-anim (_type_) int 196)
(trigger-alert (_type_ int target) none 197)
(decrease-alert (_type_ object) none 198)
(set-behavior! (_type_ traffic-object-spawn-params) none 199)
(citizen-method-200 (_type_) none 200)
)
)
+980
View File
@@ -0,0 +1,980 @@
;;-*-Lisp-*-
(in-package goal)
;; failed to figure out what this is:
(defskelgroup skel-citizen-norm citizen-norm citizen-norm-lod0-jg -1
((citizen-norm-lod0-mg (meters 20)) (citizen-norm-lod2-mg (meters 999999)))
:bounds (static-spherem 0 2 0 3)
:shadow citizen-norm-shadow-mg
)
;; definition for symbol *citizen-norm-global-info*, type civilian-global-info
(define *citizen-norm-global-info*
(new 'static 'civilian-global-info
:knocked (new 'static 'array int32 2 18 20)
:knocked-land (new 'static 'array int32 2 19 21)
:yellow-hit-anim (new 'static 'inline-array civilian-anim-info 1
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 18 20))
)
:blue-hit-anim (new 'static 'inline-array civilian-anim-info 3
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 24 24))
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 24 24))
(new 'static 'civilian-anim-info :anim-index (new 'static 'array int32 2 24 24))
)
:anim-cover-head-start 26
:anim-cover-head-loop 27
:anim-cover-head-end 28
:car-stance-anim 31
:bike-stance-anim 30
:get-in-car-anim 32
:seat-flag #x2
:speech-ambient #xf
:speech-alert #x10
:speech-cower #x11
:speech-touched-by-player #x12
:speech-shot-by-player #x13
:speech-avoiding-player-vehicle #x14
:speech-hit-by-player-vehicle #x15
)
)
;; definition of type citizen-norm
(deftype citizen-norm (civilian)
()
:heap-base #x3b0
:method-count-assert 219
:size-assert #x424
:flag-assert #xdb03b00424
(:methods
(knocked-off-vehicle () _type_ :state 218)
)
)
;; definition for method 3 of type citizen-norm
(defmethod inspect citizen-norm ((obj citizen-norm))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type civilian inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; definition for symbol *citizen-norm-nav-enemy-info*, type nav-enemy-info
(define *citizen-norm-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 #t
:hover-if-no-ground #f
:idle-anim-script (new 'static 'array idle-control-frame 4
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x4 :param0 #x1 :param1 #x1)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
(new 'static 'idle-control-frame)
)
:idle-anim 4
:notice-anim 4
:hostile-anim -1
:hit-anim 4
:knocked-anim 18
:knocked-land-anim 19
:die-anim 4
:die-falling-anim 4
:victory-anim 4
:jump-wind-up-anim 12
:jump-in-air-anim 12
:jump-land-anim 12
:neck-joint 5
:look-at-joint 5
:bullseye-joint 4
:notice-distance (meters 10)
:notice-distance-delta (meters 0.1)
:default-hit-points 1
:gnd-collide-with (collide-spec backgnd)
:overlaps-others-collide-with-filter (collide-spec jak bot player-list)
:penetrate-knocked (penetrate
touch
generic-attack
lunge
flop
punch
spin
roll
uppercut
bonk
tube
vehicle
flut-attack
board
mech
mech-punch
mech-bonk
dark-skin
dark-punch
dark-bomb
dark-giant
shield
explode
jak-yellow-shot
jak-red-shot
jak-blue-shot
jak-dark-shot
enemy-yellow-shot
enemy-dark-shot
eco-yellow
eco-red
eco-blue
eco-green
knocked
penetrate-33
penetrate-34
penetrate-35
penetrate-36
penetrate-37
penetrate-38
penetrate-39
penetrate-40
penetrate-41
penetrate-42
penetrate-43
penetrate-44
penetrate-45
penetrate-46
penetrate-47
penetrate-48
penetrate-49
penetrate-50
penetrate-51
penetrate-52
penetrate-53
penetrate-54
penetrate-55
penetrate-56
penetrate-57
penetrate-58
penetrate-59
penetrate-60
penetrate-61
penetrate-62
penetrate-63
)
:movement-gravity (meters -100)
:friction 0.8
:attack-shove-back (meters 3)
: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 2730.6667
:knocked-soft-vxz-lo 32768.0
:knocked-soft-vxz-hi 49152.0
:knocked-soft-vy-lo 36864.0
:knocked-soft-vy-hi 73728.0
:knocked-medium-vxz-lo 81920.0
:knocked-medium-vxz-hi 143360.0
:knocked-medium-vy-lo 49152.0
:knocked-medium-vy-hi 102400.0
:knocked-hard-vxz-lo 102400.0
:knocked-hard-vxz-hi 122880.0
:knocked-hard-vy-lo 81920.0
:knocked-hard-vy-hi 102400.0
: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 16384.0
:knocked-yellow-vxz-hi 32768.0
:knocked-yellow-vy-lo 24576.0
:knocked-yellow-vy-hi 49152.0
:knocked-red-vxz-lo 40960.0
:knocked-red-vxz-hi 61440.0
:knocked-red-vy-lo 36864.0
:knocked-red-vy-hi 73728.0
:knocked-blue-vxz-lo 32768.0
:knocked-blue-vxz-hi 65536.0
:knocked-blue-vy-lo 32768.0
:knocked-blue-vy-hi 49152.0
:shadow-size (meters 2)
: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 #t
:use-frustration #t
:use-stop-chase #f
:use-circling #f
:use-pacing #f
:walk-anim 12
:turn-anim 12
:run-anim 14
:taunt-anim -1
:run-travel-speed (meters 12)
:run-acceleration (meters 2)
:run-turning-acceleration (meters 30)
:walk-travel-speed (meters 3)
:walk-acceleration (meters 2)
:walk-turning-acceleration (meters 8)
:maximum-rotation-rate (degrees 720.0)
:notice-nav-radius (meters 10)
: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! (-> *citizen-norm-nav-enemy-info* fact-defaults) *fact-info-enemy-defaults*)
;; definition for method 51 of type citizen-norm
;; INFO: Used lq/sq
(defmethod enemy-method-51 citizen-norm ((obj citizen-norm))
(cond
((logtest? (-> obj flags) (citizen-flag knocked-out-car knocked-out-bike))
((method-of-type nav-enemy enemy-method-51) obj)
)
(else
(let ((f30-0 (quaternion-y-angle (-> obj root-override2 quat))))
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-4) (knocked-type knocked-type-6))
(let ((a0-6 (handle->process (-> obj focus handle))))
(when a0-6
(get-trans (the-as process-focusable a0-6) 0)
(let ((s5-0 (new 'stack-no-clear 'vector)))
(set! (-> s5-0 quad) (-> obj root-override2 transv quad))
(if (< (vector-dot
(-> obj root-override2 transv)
(vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override2 quat))
)
0.0
)
(vector-negate-in-place! s5-0)
)
(set! f30-0 (atan (-> s5-0 x) (-> s5-0 z)))
)
)
)
)
(else
(let ((s5-1 (new 'stack-no-clear 'vector)))
(set! (-> s5-1 quad) (-> obj root-override2 transv quad))
(if (< (vector-dot s5-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> obj root-override2 quat))) 0.0)
(vector-negate-in-place! s5-1)
)
(let* ((f28-0 (atan (-> s5-1 x) (-> s5-1 z)))
(f1-2 (deg- f30-0 f28-0))
(f2-0 (fabs f1-2))
(f0-8 (-> obj enemy-info-override knocked-seek-ry-clamp))
)
(when (and (< f0-8 f2-0) (< f2-0 (- 32768.0 f0-8)))
(set! f30-0 (+ (cond
((< f2-0 16384.0)
(if (>= f1-2 0.0)
f0-8
(- f0-8)
)
)
((>= f1-2 0.0)
(- 32768.0 f0-8)
)
(else
(+ -32768.0 f0-8)
)
)
f28-0
)
)
(if (< f30-0 0.0)
(set! f30-0 (+ 65536.0 f30-0))
)
)
)
)
)
)
f30-0
)
)
)
)
;; definition for method 79 of type citizen-norm
(defmethod enemy-method-79 citizen-norm ((obj citizen-norm) (arg0 int) (arg1 enemy-knocked-info))
(case arg0
((1)
(case (-> obj incoming knocked-type)
(((knocked-type knocked-type-6))
(let ((s5-0 (ja-done? 0)))
(let ((a0-4 (-> obj skel root-channel 0)))
(set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group frames num-frames) -1)))
(set! (-> a0-4 param 1) (-> arg1 anim-speed))
(joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!)
)
(when s5-0
(ja-channel-push! 1 (seconds 0.1))
(let ((a0-6 (-> obj skel root-channel 0)))
(set! (-> a0-6 frame-group)
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
)
(set! (-> a0-6 param 0)
(the float
(+ (-> (the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
frames
num-frames
)
-1
)
)
)
(set! (-> a0-6 param 1) (-> arg1 anim-speed))
(set! (-> a0-6 frame-num) 3.0)
(joint-control-channel-group!
a0-6
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked (-> obj hit-face))))
num-func-seek!
)
)
)
s5-0
)
)
(else
((method-of-type nav-enemy enemy-method-79) obj arg0 arg1)
)
)
)
(else
((method-of-type nav-enemy enemy-method-79) obj arg0 arg1)
)
)
)
;; definition for method 77 of type citizen-norm
(defmethod enemy-method-77 citizen-norm ((obj citizen-norm) (arg0 (pointer float)))
(local-vars (v1-36 knocked-type))
(cond
((logtest? (-> obj flags) (citizen-flag knocked-out-car))
(ja-channel-push! 1 (seconds 0.1))
(let ((a0-2 (-> obj skel root-channel 0)))
(set! (-> a0-2 frame-group) (the-as art-joint-anim (-> obj draw art-group data 33)))
(set! (-> a0-2 param 0)
(the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 33)) frames num-frames) -1))
)
(set! (-> a0-2 param 1) (-> arg0 0))
(set! (-> a0-2 frame-num) 0.0)
(joint-control-channel-group! a0-2 (the-as art-joint-anim (-> obj draw art-group data 33)) num-func-seek!)
)
(logclear! (-> obj flags) (citizen-flag knocked-out-car))
)
((logtest? (-> obj flags) (citizen-flag knocked-out-bike))
(ja-channel-push! 1 (seconds 0.1))
(let ((a0-5 (-> obj skel root-channel 0)))
(set! (-> a0-5 frame-group) (the-as art-joint-anim (-> obj draw art-group data 34)))
(set! (-> a0-5 param 0)
(the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 34)) frames num-frames) -1))
)
(set! (-> a0-5 param 1) (-> arg0 0))
(set! (-> a0-5 frame-num) 0.0)
(joint-control-channel-group! a0-5 (the-as art-joint-anim (-> obj draw art-group data 34)) num-func-seek!)
)
(logclear! (-> obj flags) (citizen-flag knocked-out-bike))
)
((begin (set! v1-36 (-> obj incoming knocked-type)) (= v1-36 (knocked-type knocked-type-4)))
(ja-channel-push! 1 (seconds 0.1))
(let* ((a2-2 (ash 1 (-> obj info prev-yellow-hit)))
(v1-39 (enemy-method-120 obj 1 a2-2))
(a1-11
(-> obj
draw
art-group
data
(-> (the-as civilian-global-info (+ (+ (* (-> obj hit-face) 4) (* v1-39 8)) (the-as uint (-> obj info))))
yellow-hit-anim
0
anim-index-front
)
)
)
)
(set! (-> obj info prev-yellow-hit) v1-39)
(let ((a0-21 (-> obj skel root-channel 0)))
(set! (-> a0-21 frame-group) (the-as art-joint-anim a1-11))
(set! (-> a0-21 param 0) (the float (+ (-> (the-as art-joint-anim a1-11) frames num-frames) -1)))
(set! (-> a0-21 param 1) (-> arg0 0))
(set! (-> a0-21 frame-num) 0.0)
(joint-control-channel-group! a0-21 (the-as art-joint-anim a1-11) num-func-seek!)
)
)
)
((= v1-36 (knocked-type knocked-type-6))
(ja-channel-push! 1 (seconds 0.01))
(let* ((a2-4 (ash 1 (-> obj info prev-blue-hit)))
(v1-48 (enemy-method-120 obj 3 a2-4))
(a1-18
(-> obj
draw
art-group
data
(-> (the-as civilian-global-info (+ (+ (* (-> obj hit-face) 4) (* v1-48 8)) (the-as uint (-> obj info))))
blue-hit-anim
0
anim-index-front
)
)
)
)
(set! (-> obj info prev-blue-hit) v1-48)
(let ((a0-36 (-> obj skel root-channel 0)))
(set! (-> a0-36 frame-group) (the-as art-joint-anim a1-18))
(set! (-> a0-36 param 0) (the float (+ (-> (the-as art-joint-anim a1-18) frames num-frames) -1)))
(set! (-> a0-36 param 1) 1.0)
(set! (-> a0-36 frame-num) 0.0)
(joint-control-channel-group! a0-36 (the-as art-joint-anim a1-18) num-func-seek!)
)
)
)
(else
(let ((s4-0 (if (= (-> obj incoming knocked-type) (knocked-type knocked-type-2))
(-> obj draw art-group data (-> obj info knocked (-> obj hit-face)))
(-> obj draw art-group data (-> obj info knocked (-> obj hit-face)))
)
)
)
(ja-channel-push! 1 (seconds 0.1))
(if (or (= (-> obj incoming knocked-type) (knocked-type knocked-type-2))
(= (-> obj incoming knocked-type) (knocked-type knocked-type-3))
)
(set! (-> arg0 0) (* 0.5 (-> arg0 0)))
)
(let ((a0-47 (-> obj skel root-channel 0)))
(set! (-> a0-47 frame-group) (the-as art-joint-anim s4-0))
(set! (-> a0-47 param 0) (the float (+ (-> (the-as art-joint-anim s4-0) frames num-frames) -1)))
(set! (-> a0-47 param 1) (-> arg0 0))
(set! (-> a0-47 frame-num) 0.0)
(joint-control-channel-group! a0-47 (the-as art-joint-anim s4-0) num-func-seek!)
)
)
)
)
#t
)
;; definition for method 78 of type citizen-norm
(defmethod enemy-method-78 citizen-norm ((obj citizen-norm) (arg0 (pointer float)))
(ja-channel-push! 1 (seconds 0.1))
(set! (-> arg0 0) 1.0)
(let ((a0-2 (-> obj skel root-channel 0)))
(set! (-> a0-2 frame-group)
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
)
(set! (-> a0-2 param 0)
(the float
(+ (-> (the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
frames
num-frames
)
-1
)
)
)
(set! (-> a0-2 param 1) (-> arg0 0))
(set! (-> a0-2 frame-num) 0.0)
(joint-control-channel-group!
a0-2
(the-as art-joint-anim (-> obj draw art-group data (-> obj info knocked-land (-> obj hit-face))))
num-func-seek!
)
)
#t
)
;; failed to figure out what this is:
(defstate knocked (citizen-norm)
:virtual #t
:enter (behavior ()
(let ((t9-0 (-> (method-of-type civilian knocked) enter)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (the-as collide-shape-prim-group (-> self root-override2 root-prim))))
(logior! (-> v1-5 child 0 prim-core action) (collide-action no-standon))
(logclear! (-> v1-5 child 1 prim-core action) (collide-action no-standon))
(set! (-> v1-5 child 1 prim-core collide-as) (collide-spec))
(set! (-> v1-5 child 1 prim-core collide-with) (collide-spec))
)
0
(none)
)
)
;; failed to figure out what this is:
(defstate get-up-front (citizen-norm)
:virtual #t
:exit (behavior ()
(let ((t9-0 (-> (method-of-type civilian get-up-front) exit)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (-> self root-override2 root-prim)))
(logclear! (-> (the-as collide-shape-prim-group v1-5) child 0 prim-core action) (collide-action no-standon))
(logior! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core action) (collide-action no-standon))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-as) (collide-spec civilian))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate get-up-back (citizen-norm)
:virtual #t
:exit (behavior ()
(let ((t9-0 (-> (method-of-type civilian get-up-back) exit)))
(if t9-0
(t9-0)
)
)
(let ((v1-5 (-> self root-override2 root-prim)))
(logclear! (-> (the-as collide-shape-prim-group v1-5) child 0 prim-core action) (collide-action no-standon))
(logior! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core action) (collide-action no-standon))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-as) (collide-spec civilian))
(set! (-> (the-as collide-shape-prim-group v1-5) child 1 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate wait (citizen-norm)
:virtual #t
:trans (behavior ()
'()
(none)
)
:code (behavior ()
(until #f
(let ((f30-1 (/ 1.0 (rand-vu-float-range 10.0 13.0)))
(gp-0 (rand-vu-int-range 1 5))
(s5-0 (rand-vu-int-count 2))
)
(ja-channel-push! 1 (seconds 0.2))
(if (zero? s5-0)
(ja-no-eval :group! citizen-norm-idle-to-arms-hips-ja :num! min)
(ja-no-eval :group! citizen-norm-idle-to-arms-crossed-ja :num! min)
)
(let ((f28-0 0.0))
(while (< f28-0 1.0)
(ja :num-func num-func-identity
:frame-num (lerp-scale 0.0 2.0 (+ (* -2.0 f28-0 f28-0 f28-0) (* 3.0 f28-0 f28-0)) 0.0 1.0)
)
(suspend)
(+! f28-0 (-> self clock seconds-per-frame))
)
)
(ja-channel-push! 1 (seconds 0.1))
(while (> gp-0 0)
(+! gp-0 -1)
(cond
((zero? s5-0)
(ja-no-eval :group! citizen-norm-arms-hips-ja
:num! (seek! (the float (+ (-> (the-as art-joint-anim citizen-norm-arms-hips-ja) frames num-frames) -1)) f30-1)
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max f30-1))
)
)
(else
(ja-no-eval :group! citizen-norm-arms-crossed-ja
:num! (seek! (the float (+ (-> (the-as art-joint-anim citizen-norm-arms-crossed-ja) frames num-frames) -1)) f30-1)
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max f30-1))
)
)
)
)
)
(if (-> self wait-return-state)
(go (-> self wait-return-state))
)
)
#f
(none)
)
)
;; definition for method 199 of type citizen-norm
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod set-behavior! citizen-norm ((obj citizen-norm) (arg0 traffic-object-spawn-params))
(case (-> arg0 behavior)
((11)
(speech-control-method-12 *speech-control* obj (speech-type speech-type-1 speech-type-2 speech-type-4))
(set! (-> obj root-override2 trans quad) (-> arg0 position quad))
(quaternion-copy! (-> obj root-override2 quat) (-> arg0 rotation))
(set! (-> obj vehicle) (-> arg0 handle))
(ja-channel-set! 1)
(case (-> (the-as vehicle (handle->process (-> obj vehicle))) info-override object-type)
((11 12 13)
(logior! (-> obj flags) (citizen-flag knocked-out-bike))
(let ((v1-16 (-> obj skel root-channel 0)))
(set! (-> v1-16 frame-group) (the-as art-joint-anim (-> obj draw art-group data 30)))
)
)
((14 15 16)
(logior! (-> obj flags) (citizen-flag knocked-out-car))
(let ((v1-22 (-> obj skel root-channel 0)))
(set! (-> v1-22 frame-group) (the-as art-joint-anim (-> obj draw art-group data 31)))
)
)
)
(ja-post)
(setup-masks (-> obj draw) 0 -1)
(let ((s5-1 (-> arg0 user-data)))
(if (not (logtest? s5-1 32))
(setup-masks (-> obj draw) 32 0)
)
(if (not (logtest? s5-1 16))
(setup-masks (-> obj draw) 16 0)
)
(if (not (logtest? s5-1 2))
(setup-masks (-> obj draw) 2 0)
)
(if (not (logtest? s5-1 4096))
(setup-masks (-> obj draw) 8192 0)
)
(if (not (logtest? s5-1 8))
(setup-masks (-> obj draw) 8 0)
)
(if (not (logtest? s5-1 512))
(setup-masks (-> obj draw) 1024 0)
)
(if (not (logtest? s5-1 #x4000))
(setup-masks (-> obj draw) #x8000 0)
)
(if (not (logtest? s5-1 4))
(setup-masks (-> obj draw) 4 0)
)
(if (not (logtest? s5-1 256))
(setup-masks (-> obj draw) 512 0)
)
(if (not (logtest? s5-1 8192))
(setup-masks (-> obj draw) #x4000 0)
)
(if (not (logtest? s5-1 64))
(setup-masks (-> obj draw) 128 0)
)
(if (not (logtest? s5-1 2048))
(setup-masks (-> obj draw) 4096 0)
)
(if (not (logtest? #x10000 s5-1))
(setup-masks (-> obj draw) #x20000 0)
)
(if (not (logtest? s5-1 128))
(setup-masks (-> obj draw) 256 0)
)
(if (logtest? #x40000 s5-1)
(setup-masks (-> obj draw) 2048 0)
(setup-masks (-> obj draw) 2048 0)
)
)
(go (method-of-object obj knocked-off-vehicle))
)
(else
((method-of-type civilian set-behavior!) obj arg0)
)
)
0
(none)
)
;; failed to figure out what this is:
(defstate knocked-off-vehicle (citizen-norm)
:virtual #t
:event (the-as (function process int symbol event-message-block object :behavior citizen-norm) enemy-event-handler)
:enter (behavior ()
'()
(none)
)
:code (behavior ()
(suspend)
(throw-off-vehicle self)
(none)
)
)
;; definition for method 114 of type citizen-norm
;; WARN: Return type mismatch int vs none.
(defmethod init-enemy-collision! citizen-norm ((obj citizen-norm))
"Initializes the [[collide-shape-moving]] and any ancillary tasks to make the enemy collide properly"
(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 2) 0)))
(set! (-> s5-0 total-prims) (the-as uint 3))
(set! (-> s4-0 prim-core collide-as) (collide-spec civilian))
(set! (-> s4-0 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
(set! (-> s4-0 prim-core action) (collide-action solid no-standon))
(set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0)
(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 civilian))
(set! (-> v1-13 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
(set! (-> v1-13 prim-core action) (collide-action solid))
(set-vector! (-> v1-13 local-sphere) 0.0 4096.0 0.0 4096.0)
)
(let ((v1-15 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-15 prim-core collide-as) (collide-spec civilian))
(set! (-> v1-15 prim-core collide-with)
(collide-spec backgnd jak civilian enemy hit-by-others-list player-list)
)
(set! (-> v1-15 prim-core action) (collide-action solid no-standon))
(set-vector! (-> v1-15 local-sphere) 0.0 9830.4 0.0 4096.0)
)
(set! (-> s5-0 nav-radius) 4096.0)
(let ((v1-17 (-> s5-0 root-prim)))
(set! (-> s5-0 backup-collide-as) (-> v1-17 prim-core collide-as))
(set! (-> s5-0 backup-collide-with) (-> v1-17 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 citizen-norm
;; WARN: Return type mismatch int vs none.
(defmethod init-enemy! citizen-norm ((obj citizen-norm))
"Common method called to initialize the enemy, typically sets up default field values and calls ancillary helper methods"
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-citizen-norm" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(init-enemy-behaviour-and-stats! obj *citizen-norm-nav-enemy-info*)
(let ((v1-5 (-> obj nav)))
(set! (-> v1-5 speed-scale) 1.0)
)
0
(set! (-> obj draw lod-set lod 0 dist) 204800.0)
(set! (-> obj draw lod-set lod 1 dist) 491520.0)
(try-update-focus (-> obj focus) *target* obj)
(-> obj neck)
(set! (-> obj info) *citizen-norm-global-info*)
(set! (-> obj anim-shuffle) 11)
(let ((v1-18 (get-rand-int obj 3)))
(cond
((zero? v1-18)
(set! (-> obj anim-walk) 12)
(set! (-> obj dist-walk-anim) 8736.768)
(set! (-> obj speed-walk) 10240.0)
)
((= v1-18 1)
(set! (-> obj anim-walk) 13)
(set! (-> obj dist-walk-anim) 13107.2)
(set! (-> obj speed-walk) 12288.0)
)
((= v1-18 2)
(set! (-> obj anim-walk) 11)
(set! (-> obj dist-walk-anim) 4370.432)
(set! (-> obj speed-walk) 4096.0)
)
)
)
(let ((v1-33 (get-rand-int obj 3)))
(cond
((zero? v1-33)
(set! (-> obj anim-panic-run) 15)
)
((= v1-33 1)
(set! (-> obj anim-panic-run) 15)
)
((= v1-33 2)
(set! (-> obj anim-panic-run) 14)
)
)
)
(set! (-> obj dist-run-anim) 28672.0)
(let ((v1-40 (get-rand-int obj 3)))
(cond
((zero? v1-40)
(set! (-> obj anim-run) 14)
)
((= v1-40 1)
(set! (-> obj anim-run) 14)
)
((= v1-40 2)
(set! (-> obj anim-run) 14)
)
)
)
(set! (-> obj speed-run) 49152.0)
(set! (-> obj anim-on-ground) 17)
(set! (-> obj anim-dive) 16)
(set! (-> obj anim-get-up-front) 22)
(set! (-> obj anim-get-up-back) 23)
(let ((f30-0 (get-rand-float-range obj 1.0 1.25))
(f0-11 (get-rand-float-range obj 1.0 1.25))
)
(set-vector! (-> obj root-override2 scale) f0-11 f30-0 f0-11 1.0)
)
(let ((f0-13 (get-rand-float-range obj 0.9 1.0)))
(set-vector! (-> obj draw color-mult) f0-13 f0-13 f0-13 1.0)
)
(set! (-> obj water-anim) 29)
0
(none)
)
;; definition for method 181 of type citizen-norm
;; WARN: Return type mismatch int vs none.
(defmethod citizen-init! citizen-norm ((obj citizen-norm))
"Initialize [[citizen]] defaults."
(let ((t9-0 (method-of-type civilian citizen-init!)))
(t9-0 obj)
)
(set! (-> obj dive-reaction) (+ 0.09 (* 0.15 (rand-vu))))
(logclear! (-> obj mask) (process-mask enemy))
(setup-masks (-> obj draw) 0 -1)
(setup-masks (-> obj draw) 32 0)
(let ((v1-10 (get-rand-int obj 4)))
(cond
((zero? v1-10)
(setup-masks (-> obj draw) 64 0)
)
((= v1-10 1)
(setup-masks (-> obj draw) 2048 0)
)
((= v1-10 2)
(setup-masks (-> obj draw) #x10000 0)
)
((= v1-10 3)
(setup-masks (-> obj draw) #x200000 0)
)
)
)
(let ((v1-21 (get-rand-int obj 3)))
(cond
((zero? v1-21)
(setup-masks (-> obj draw) 2 0)
)
((= v1-21 1)
(setup-masks (-> obj draw) 8192 0)
)
((= v1-21 2)
(setup-masks (-> obj draw) #x40000 0)
)
)
)
(let ((v1-30 (get-rand-int obj 4)))
(cond
((zero? v1-30)
(setup-masks (-> obj draw) 8 0)
)
((= v1-30 1)
(setup-masks (-> obj draw) 1024 0)
)
((= v1-30 2)
(setup-masks (-> obj draw) #x8000 0)
)
((= v1-30 3)
(setup-masks (-> obj draw) #x100000 0)
)
)
)
(let ((v1-41 (get-rand-int obj 5)))
(cond
((zero? v1-41)
(setup-masks (-> obj draw) 4 0)
)
((= v1-41 1)
(setup-masks (-> obj draw) 512 0)
)
((= v1-41 2)
(setup-masks (-> obj draw) #x4000 0)
)
((= v1-41 3)
(setup-masks (-> obj draw) #x80000 0)
)
)
)
(let ((v1-52 (get-rand-int obj 4)))
(cond
((zero? v1-52)
(setup-masks (-> obj draw) 128 0)
)
((= v1-52 1)
(setup-masks (-> obj draw) 4096 0)
)
((= v1-52 2)
(setup-masks (-> obj draw) #x20000 0)
)
((= v1-52 3)
(setup-masks (-> obj draw) #x400000 0)
)
)
)
(setup-masks (-> obj draw) 16 0)
(let ((v1-65 (get-rand-int obj 4)))
(cond
((zero? v1-65)
(setup-masks (-> obj draw) 256 0)
)
((= v1-65 1)
(setup-masks (-> obj draw) #x800000 0)
)
)
)
0
(none)
)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -715,7 +715,7 @@
(set! (-> s5-0 nav-mesh) #f)
(set! (-> s5-0 nav-branch) #f)
(set! (-> s5-0 proc) #f)
(set! (-> s5-0 handle) (the-as uint (process->handle *target*)))
(set! (-> s5-0 handle) (process->handle *target*))
(set! (-> s5-0 user-data) (the-as uint 0))
(set! (-> s5-0 flags) (the-as uint 0))
(set! (-> s5-0 guard-type) (the-as uint 1))
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
+1 -1
View File
@@ -757,7 +757,7 @@
(new-suppression-box (_type_ traffic-suppression-params) none 46)
(remove-suppression-box (_type_ traffic-suppression-params) none 47)
(update-suppression-box (_type_ traffic-suppression-params) none 48)
(traffic-engine-method-49 (_type_ object int traffic-target-status) traffic-target-status 49)
(traffic-engine-method-49 (_type_ vector int traffic-target-status) traffic-target-status 49)
(find-closest-to-with-collide-lists (_type_ process-drawable collide-spec) process-focusable 50)
(for-all-active-processes (_type_ (function process-focusable traffic-object-type-info none)) none 51)
(send-alert-events (_type_) none 52)
+65 -65
View File
@@ -698,7 +698,7 @@ Process is recycled and moved to reserved, if it deactivates."
(let ((gp-0 (-> arg0 object-type)))
(set! (-> arg0 proc) #f)
(when (> (-> obj traffic object-type-info-array gp-0 inactive-count) 0)
(set! sv-16 (get-from-inactive-by-handle obj gp-0 (the-as handle (-> arg0 handle))))
(set! sv-16 (get-from-inactive-by-handle obj gp-0 (-> arg0 handle)))
(let ((s3-0 (handle->process sv-16)))
(when s3-0
(cond
@@ -1385,7 +1385,7 @@ Process is recycled and moved to reserved, if it deactivates."
(let ((s5-0 *target*))
(when s5-0
(let ((v1-1 (-> obj danger-sphere-array)))
(set! (-> v1-1 0 handle) (the-as uint (process->handle s5-0)))
(set! (-> v1-1 0 handle) (process->handle s5-0))
(let ((a0-4 (-> s5-0 focus-status))
(f0-0 0.0)
(f1-0 0.0)
@@ -2290,33 +2290,35 @@ Process is recycled and moved to reserved, if it deactivates."
;; WARN: Stack slot offset 216 signed mismatch
;; WARN: Stack slot offset 216 signed mismatch
;; WARN: Stack slot offset 216 signed mismatch
;; WARN: Stack slot offset 216 signed mismatch
;; WARN: Stack slot offset 216 signed mismatch
(defmethod traffic-engine-method-49 traffic-engine ((obj traffic-engine) (arg0 object) (arg1 int) (arg2 traffic-target-status))
(local-vars (sv-192 (array crimson-guard)) (sv-196 (array float)) (sv-200 int) (sv-208 int) (sv-216 number))
(defmethod traffic-engine-method-49 traffic-engine ((obj traffic-engine) (los vector) (arg2 int) (target-status traffic-target-status))
(local-vars
(guards (array crimson-guard))
(guard-target-dists (array float))
(guard-idx int)
(sv-208 int)
(sv-216 float)
)
(with-pp
(logclear! (-> arg2 flags) (traffic-target-flag visible-now updated))
(logclear! (-> target-status flags) (traffic-target-flag visible-now updated))
(cond
((= (-> obj sync-mask-16) (ash 1 (logand arg1 15)))
(logior! (-> arg2 flags) (traffic-target-flag updated))
(let ((s3-0 (handle->process (-> arg2 handle)))
(s5-0 (new 'stack-no-clear 'vector))
((= (-> obj sync-mask-16) (ash 1 (logand arg2 15)))
(logior! (-> target-status flags) (traffic-target-flag updated))
(let ((target-proc (handle->process (-> target-status handle)))
(target-pos (new 'stack-no-clear 'vector))
)
(when s3-0
(set! (-> s5-0 quad) (-> (get-trans (the-as process-focusable s3-0) 3) quad))
(when target-proc
(set! (-> target-pos quad) (-> (get-trans (the-as process-focusable target-proc) 3) quad))
(cond
((= (-> (the-as process-focusable s3-0) type) target)
((= (-> (the-as process-focusable target-proc) type) target)
(let ((s1-1 (-> obj alert-state target-status-array)))
(logclear! (-> s1-1 0 flags) (traffic-target-flag visible-now updated))
(logior! (-> s1-1 0 flags) (traffic-target-flag updated))
(cond
((or (logtest? (-> s1-1 0 flags) (traffic-target-flag force-visible))
(traffic-los-clear? (the-as vector arg0) s5-0)
)
((or (logtest? (-> s1-1 0 flags) (traffic-target-flag force-visible)) (traffic-los-clear? los target-pos))
(logior! (-> s1-1 0 flags) (traffic-target-flag visible-now visible-recently visible-ever))
(set! (-> s1-1 0 last-seen-time) (-> pp clock frame-counter))
(set! (-> s1-1 0 position quad) (-> s5-0 quad))
(set! (-> s1-1 0 velocity quad) (-> (get-transv (the-as process-focusable s3-0)) quad))
(set! (-> s1-1 0 position quad) (-> target-pos quad))
(set! (-> s1-1 0 velocity quad) (-> (get-transv (the-as process-focusable target-proc)) quad))
)
(else
(if (>= (- (-> pp clock frame-counter) (-> s1-1 0 last-seen-time)) (seconds 2))
@@ -2324,36 +2326,38 @@ Process is recycled and moved to reserved, if it deactivates."
)
)
)
(mem-copy! (the-as pointer arg2) (the-as pointer s1-1) 80)
(mem-copy! (the-as pointer target-status) (the-as pointer s1-1) 80)
)
0
)
(else
(logior! (-> arg2 flags) (traffic-target-flag visible-now visible-recently visible-ever))
(set! (-> arg2 last-seen-time) (-> pp clock frame-counter))
(set! (-> arg2 position quad) (-> s5-0 quad))
(set! (-> arg2 velocity quad) (-> (get-transv (the-as process-focusable s3-0)) quad))
(logior! (-> target-status flags) (traffic-target-flag visible-now visible-recently visible-ever))
(set! (-> target-status last-seen-time) (-> pp clock frame-counter))
(set! (-> target-status position quad) (-> target-pos quad))
(set! (-> target-status velocity quad) (-> (get-transv (the-as process-focusable target-proc)) quad))
)
)
(set! (-> s5-0 quad) (-> arg2 position quad))
(when (not (update-guard-status-spots s5-0))
(set! (-> target-pos quad) (-> target-status position quad))
(when (not (update-guard-status-spots target-pos))
)
(when (update-guard-status-spots s5-0)
(set! sv-192 (the-as (array crimson-guard) (new 'stack 'array crimson-guard 16)))
(set! sv-196 (the-as (array float) (new 'stack 'array float 16)))
(set! sv-200 0)
(dotimes (s3-1 (the-as int (-> obj vehicle-tracker-array active-object-count)))
(case (-> obj vehicle-tracker-array active-object-type-list s3-1)
(when (update-guard-status-spots target-pos)
(set! guards (the-as (array crimson-guard) (new 'stack 'array crimson-guard 16)))
(set! guard-target-dists (the-as (array float) (new 'stack 'array float 16)))
(set! guard-idx 0)
(dotimes (guard-count (the-as int (-> obj vehicle-tracker-array active-object-count)))
(case (-> obj vehicle-tracker-array active-object-type-list guard-count)
(((traffic-type crimson-guard-1))
(let ((s2-3 (handle->process (-> obj vehicle-tracker-array active-object-list s3-1))))
(when (and s2-3
(not (logtest? (-> (the-as process-focusable s2-3) focus-status) (focus-status dead inactive)))
(= (-> (the-as crimson-guard s2-3) traffic-target-status handle) (-> arg2 handle))
(let ((guard (handle->process (-> obj vehicle-tracker-array active-object-list guard-count))))
(when (and guard
(not (logtest? (-> (the-as process-focusable guard) focus-status) (focus-status dead inactive)))
(= (-> (the-as crimson-guard guard) traffic-target-status handle) (-> target-status handle))
)
(set! (-> sv-192 sv-200) (the-as crimson-guard s2-3))
(set! (-> sv-196 sv-200) (vector-vector-distance (-> (the-as crimson-guard s2-3) root-override2 trans) s5-0))
(set! sv-200 (+ sv-200 1))
(set! (-> (the-as crimson-guard s2-3) move-index) -1)
(set! (-> guards guard-idx) (the-as crimson-guard guard))
(set! (-> guard-target-dists guard-idx)
(vector-vector-distance (-> (the-as crimson-guard guard) root-override2 trans) target-pos)
)
(set! guard-idx (+ guard-idx 1))
(set! (-> (the-as crimson-guard guard) move-index) -1)
)
)
)
@@ -2362,32 +2366,32 @@ Process is recycled and moved to reserved, if it deactivates."
(let ((a0-35 #t))
(while a0-35
(set! a0-35 #f)
(dotimes (v1-77 (+ sv-200 -1))
(when (< (-> sv-196 (+ v1-77 1)) (-> sv-196 v1-77))
(let ((a0-38 (-> sv-192 v1-77))
(f0-2 (-> sv-196 v1-77))
(dotimes (v1-77 (+ guard-idx -1))
(when (< (-> guard-target-dists (+ v1-77 1)) (-> guard-target-dists v1-77))
(let ((a0-38 (-> guards v1-77))
(f0-2 (-> guard-target-dists v1-77))
)
(set! (-> sv-192 v1-77) (-> sv-192 (+ v1-77 1)))
(set! (-> sv-192 (+ v1-77 1)) a0-38)
(set! (-> sv-196 v1-77) (-> sv-196 (+ v1-77 1)))
(set! (-> sv-196 (+ v1-77 1)) f0-2)
(set! (-> guards v1-77) (-> guards (+ v1-77 1)))
(set! (-> guards (+ v1-77 1)) a0-38)
(set! (-> guard-target-dists v1-77) (-> guard-target-dists (+ v1-77 1)))
(set! (-> guard-target-dists (+ v1-77 1)) f0-2)
)
(set! a0-35 #t)
)
)
)
)
(dotimes (s4-1 sv-200)
(let ((s3-2 (-> (the-as (array crimson-guard) sv-192) s4-1)))
(when (= (-> s3-2 move-index) -1)
(dotimes (s4-1 guard-idx)
(let ((crimson-guard (-> (the-as (array crimson-guard) guards) s4-1)))
(when (= (-> crimson-guard move-index) -1)
(set! sv-208 -1)
(set! sv-216 (gpr->fpr #x7f800000))
(set! sv-216 (the-as float (gpr->fpr #x7f800000)))
(dotimes (s2-4 (-> *guard-target-spots* length))
(when (= (-> *guard-status-spots* s2-4) 1)
(let* ((a0-53 (vector+! (new 'stack-no-clear 'vector) s5-0 (-> *guard-target-spots* s2-4)))
(f0-4 (vector-vector-distance a0-53 (-> s3-2 root-override2 trans)))
(let* ((a0-53 (vector+! (new 'stack-no-clear 'vector) target-pos (-> *guard-target-spots* s2-4)))
(f0-4 (vector-vector-distance a0-53 (-> crimson-guard root-override2 trans)))
)
(when (or (= sv-208 -1) (< f0-4 (the-as float (gpr->fpr sv-216))))
(when (or (= sv-208 -1) (< f0-4 sv-216))
(set! sv-208 s2-4)
(set! sv-216 f0-4)
)
@@ -2397,10 +2401,10 @@ Process is recycled and moved to reserved, if it deactivates."
(cond
((!= sv-208 -1)
(set! (-> *guard-status-spots* sv-208) 0)
(vector+! (-> s3-2 move-position) s5-0 (-> *guard-target-spots* sv-208))
(vector+! (-> crimson-guard move-position) target-pos (-> *guard-target-spots* sv-208))
)
(else
(set! (-> s3-2 move-position quad) (-> s5-0 quad))
(set! (-> crimson-guard move-position quad) (-> target-pos quad))
)
)
)
@@ -2411,24 +2415,24 @@ Process is recycled and moved to reserved, if it deactivates."
)
)
(else
(let ((s5-1 (handle->process (-> arg2 handle)))
(let ((s5-1 (handle->process (-> target-status handle)))
(s3-3 (new 'stack-no-clear 'vector))
)
(when s5-1
(set! (-> s3-3 quad) (-> (get-trans (the-as process-focusable s5-1) 3) quad))
(cond
((= (-> s5-1 type) target)
(mem-copy! (the-as pointer arg2) (the-as pointer (-> obj alert-state target-status-array)) 80)
(mem-copy! (the-as pointer target-status) (the-as pointer (-> obj alert-state target-status-array)) 80)
)
(else
)
)
)
)
(logclear! (-> arg2 flags) (traffic-target-flag updated))
(logclear! (-> target-status flags) (traffic-target-flag updated))
)
)
arg2
target-status
)
)
@@ -4047,7 +4051,3 @@ Process is recycled and moved to reserved, if it deactivates."
0
(none)
)
+1 -1
View File
@@ -452,7 +452,7 @@
(set! (-> s5-1 nav-mesh) #f)
(set! (-> s5-1 nav-branch) #f)
(set! (-> s5-1 proc) #f)
(set! (-> s5-1 handle) (the-as uint #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))
+1 -1
View File
@@ -515,7 +515,7 @@
(set! (-> s5-0 nav-mesh) (-> obj nav-mesh))
(set! (-> s5-0 nav-branch) #f)
(set! (-> s5-0 proc) #f)
(set! (-> s5-0 handle) (the-as uint (process->handle obj)))
(set! (-> s5-0 handle) (process->handle obj))
(set! (-> s5-0 user-data) (-> obj spawn-side))
(set! (-> s5-0 flags) (the-as uint 0))
(set! (-> s5-0 guard-type) (the-as uint 7))
+2 -2
View File
@@ -966,7 +966,7 @@
(set! (-> a1-2 decay-rate) 0.0)
(set! (-> a1-2 flags) (traffic-danger-flags tdf0))
(set! (-> a1-2 danger-type) (traffic-danger-type tdt6))
(set! (-> a1-2 handle) (the-as uint #f))
(set! (-> a1-2 handle) (the-as handle #f))
(add-danger (-> obj controller traffic) a1-2)
)
)
@@ -1199,7 +1199,7 @@
((9)
(vehicle-method-128 obj)
(set! (-> obj flags) (logior (rigid-body-object-flag persistent alert) (-> obj flags)))
(set! (-> obj pursuit-target) (the-as handle (-> arg0 handle)))
(set! (-> obj pursuit-target) (-> arg0 handle))
(go (method-of-object obj waiting-ambush))
)
(else
+1 -1
View File
@@ -179,7 +179,7 @@
)
(set! (-> gp-0 nav-branch) #f)
(set! (-> gp-0 proc) #f)
(set! (-> gp-0 handle) (the-as uint (process->handle (-> self parent-override 0))))
(set! (-> gp-0 handle) (process->handle (-> self parent-override 0)))
(set! (-> gp-0 user-data) (-> self draw seg-mask))
(set! (-> gp-0 flags) (the-as uint 0))
(set! (-> gp-0 guard-type) (the-as uint 7))
@@ -278,7 +278,7 @@ This commonly includes things such as:
(set! (-> s5-0 nav-mesh) #f)
(set! (-> s5-0 nav-branch) #f)
(set! (-> s5-0 proc) #f)
(set! (-> s5-0 handle) (the-as uint (process->handle *target*)))
(set! (-> s5-0 handle) (process->handle *target*))
(set! (-> s5-0 user-data) (the-as uint 0))
(set! (-> s5-0 flags) (the-as uint 2))
(set! (-> s5-0 guard-type) (the-as uint 1))
@@ -351,7 +351,7 @@ This commonly includes things such as:
(set! (-> s5-0 nav-mesh) #f)
(set! (-> s5-0 nav-branch) #f)
(set! (-> s5-0 proc) #f)
(set! (-> s5-0 handle) (the-as uint (process->handle *target*)))
(set! (-> s5-0 handle) (process->handle *target*))
(set! (-> s5-0 user-data) (the-as uint 0))
(set! (-> s5-0 flags) (the-as uint 2))
(set! (-> s5-0 guard-type) (the-as uint 1))
+1 -1
View File
@@ -588,7 +588,7 @@
(set! (-> v1-5 decay-rate) 0.0)
(set! (-> v1-5 flags) (traffic-danger-flags tdf0))
(set! (-> v1-5 danger-type) (traffic-danger-type tdt0))
(set! (-> v1-5 handle) (the-as uint #f))
(set! (-> v1-5 handle) (the-as handle #f))
(send-event *traffic-manager* 'add-danger-sphere v1-5)
)
)
+2 -1
View File
@@ -299,7 +299,8 @@
"(method 11 pal-grind-ring-center)", // same thing defined twice
"(method 49 traffic-engine)", // float stuff
"(method 14 nav-graph)",
"target-pilot-init"
"target-pilot-init",
"(method 224 crimson-guard)" // .mula.s
],
"skip_compile_states": {