mirror of
https://github.com/open-goal/jak-project
synced 2026-08-09 02:49:19 -04:00
decomp: kidesc-*|crocesc-* files, ash4-course (#2219)
Co-authored-by: water <awaterford111445@gmail.com>
This commit is contained in:
@@ -42196,29 +42196,29 @@
|
||||
:size-assert #x400
|
||||
:flag-assert #xf003800400
|
||||
(:methods
|
||||
(kid-escort-method-225 () none 225)
|
||||
(kid-escort-method-226 () none 226)
|
||||
(kid-escort-method-227 () none 227)
|
||||
(kid-escort-method-228 () none 228)
|
||||
(kid-escort-method-229 () none 229)
|
||||
(kid-escort-method-230 () none 230)
|
||||
(kid-escort-method-231 () none 231)
|
||||
(kid-escort-method-232 () none 232)
|
||||
(kid-escort-method-233 () none 233)
|
||||
(kid-escort-method-234 () none 234)
|
||||
(kid-escort-method-235 () none 235)
|
||||
(kid-escort-method-236 () none 236)
|
||||
(kid-escort-method-237 () none 237)
|
||||
(kid-escort-method-238 () none 238)
|
||||
(kid-escort-method-239 () none 239)
|
||||
(traveling () _type_ :state 225)
|
||||
(traveling-blocked () _type_ :state 226)
|
||||
(waiting-idle () _type_ :state 227)
|
||||
(waiting-turn () _type_ :state 228)
|
||||
(move-to-vehicle () _type_ :state 229)
|
||||
(board-vehicle () _type_ :state 230)
|
||||
(ride-vehicle () _type_ :state 231)
|
||||
(exit-vehicle () _type_ :state 232)
|
||||
(knocked-off-vehicle () _type_ :state 233)
|
||||
(arrested () _type_ :state 234)
|
||||
(want-exit-vehicle? (_type_ vector) symbol 235)
|
||||
(check-arrest (_type_) none 236)
|
||||
(go-waiting-turn (_type_) none 237)
|
||||
(check-vehicle-exit (_type_) none 238)
|
||||
(play-walk-anim (_type_) none 239)
|
||||
)
|
||||
)
|
||||
|
||||
(deftype kidesct-wait-spot (ai-task)
|
||||
((check-done basic :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes int8 6 :offset 38)
|
||||
((check-done (function kidesct-wait-spot kid-escort symbol) :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes uint8 6 :offset 38)
|
||||
)
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
@@ -42242,28 +42242,28 @@
|
||||
:size-assert #x410
|
||||
:flag-assert #xef03900410
|
||||
(:methods
|
||||
(crocadog-escort-method-225 () none 225)
|
||||
(crocadog-escort-method-226 () none 226)
|
||||
(crocadog-escort-method-227 () none 227)
|
||||
(crocadog-escort-method-228 () none 228)
|
||||
(crocadog-escort-method-229 () none 229)
|
||||
(crocadog-escort-method-230 () none 230)
|
||||
(crocadog-escort-method-231 () none 231)
|
||||
(crocadog-escort-method-232 () none 232)
|
||||
(crocadog-escort-method-233 () none 233)
|
||||
(crocadog-escort-method-234 () none 234)
|
||||
(crocadog-escort-method-235 () none 235)
|
||||
(crocadog-escort-method-236 () none 236)
|
||||
(crocadog-escort-method-237 () none 237)
|
||||
(crocadog-escort-method-238 () none 238)
|
||||
(traveling () _type_ :state 225)
|
||||
(traveling-blocked () _type_ :state 226)
|
||||
(waiting-idle () _type_ :state 227)
|
||||
(waiting-turn () _type_ :state 228)
|
||||
(move-to-vehicle () _type_ :state 229)
|
||||
(board-vehicle () _type_ :state 230)
|
||||
(ride-vehicle () _type_ :state 231)
|
||||
(exit-vehicle () _type_ :state 232)
|
||||
(knocked-off-vehicle () _type_ :state 233)
|
||||
(want-exit-vehicle? (_type_ vector) symbol 234)
|
||||
(go-idle-or-move (_type_) none 235)
|
||||
(go-waiting-turn (_type_) none 236)
|
||||
(check-vehicle-exit (_type_) none 237)
|
||||
(play-walk-anim (_type_) none 238)
|
||||
)
|
||||
)
|
||||
|
||||
(deftype crocesct-wait-spot (ai-task)
|
||||
((check-done basic :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes int8 6 :offset 38)
|
||||
((check-done (function crocesct-wait-spot crocadog-escort symbol) :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes uint8 6 :offset 38)
|
||||
)
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
@@ -42275,49 +42275,45 @@
|
||||
;; hal4-course ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
#|
|
||||
(deftype hal4-course (bot-course)
|
||||
((defend-speeches basic :offset-assert 48)
|
||||
((defend-speeches bot-speech-list-shuffle :offset-assert 48)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x34
|
||||
:flag-assert #x900000034
|
||||
;; field default-check-too-far uses ~A with a signed load
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype hal-escort (hal)
|
||||
((vehicle-handle uint64 :offset-assert 772)
|
||||
(arrow-handle uint64 :offset-assert 1028)
|
||||
(arrestor-handle uint64 :offset-assert 1036)
|
||||
(arrestor-time time-frame :offset-assert 1044)
|
||||
(locked-player-time time-frame :offset-assert 1052)
|
||||
(dont-fail-until uint64 :offset-assert 1060)
|
||||
(played-defend-time time-frame :offset-assert 1068)
|
||||
(played-get-in-time time-frame :offset-assert 1076)
|
||||
(notice-plane plane :inline :offset-assert 1084)
|
||||
((hal4-course hal4-course :offset 652 :score 1)
|
||||
(arrow-handle handle :offset 1032)
|
||||
(arrestor-handle handle :offset-assert 1040)
|
||||
(arrestor-time time-frame :offset-assert 1048)
|
||||
(locked-player-time time-frame :offset-assert 1056)
|
||||
(dont-fail-until time-frame :offset-assert 1064)
|
||||
(played-defend-time time-frame :offset-assert 1072)
|
||||
(played-get-in-time time-frame :offset-assert 1080)
|
||||
(notice-plane plane :inline :offset-assert 1088)
|
||||
)
|
||||
:method-count-assert 237
|
||||
:size-assert #x450
|
||||
:flag-assert #xed03d00450
|
||||
(:methods
|
||||
(hal-escort-method-227 () none 227)
|
||||
(hal-escort-method-228 () none 228)
|
||||
(hal-escort-method-229 () none 229)
|
||||
(hal-escort-method-230 () none 230)
|
||||
(hal-escort-method-231 () none 231)
|
||||
(hal-escort-method-232 () none 232)
|
||||
(hal-escort-method-233 () none 233)
|
||||
(hal-escort-method-234 () none 234)
|
||||
(hal-escort-method-235 () none 235)
|
||||
(hal-escort-method-236 () none 236)
|
||||
(hal-escort-method-227 (_type_) symbol 227)
|
||||
(hal-escort-method-228 (_type_) symbol 228)
|
||||
(try-enter-vehicle "Returns seat index" (_type_) int 229)
|
||||
(hal-escort-method-230 (_type_) symbol 230)
|
||||
(init-traffic-params! (_type_ symbol) none 231)
|
||||
(hal-escort-method-232 (_type_) none 232)
|
||||
(set-traffic-danger! (_type_) none 233)
|
||||
(hal-escort-method-234 (_type_ nav-mesh) process 234)
|
||||
(hal-escort-method-235 (_type_) none 235)
|
||||
(vehicle-destroyed? (_type_) symbol 236)
|
||||
)
|
||||
)
|
||||
|#
|
||||
|
||||
;; (define-extern hal4-walking-too-far function)
|
||||
;; (define-extern *hal4-course* hal4-course)
|
||||
(define-extern hal4-walking-too-far (function hal-escort int))
|
||||
(define-extern *hal4-course* hal4-course)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; kidesc-task ;;
|
||||
@@ -42328,7 +42324,7 @@
|
||||
;; kidesc ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; (define-extern *kid-escort-nav-enemy-info* nav-enemy-info)
|
||||
(define-extern *kid-escort-nav-enemy-info* nav-enemy-info)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; kidesc-states ;;
|
||||
@@ -42344,7 +42340,7 @@
|
||||
;; crocesc ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; (define-extern *crocadog-escort-nav-enemy-info* nav-enemy-info)
|
||||
(define-extern *crocadog-escort-nav-enemy-info* nav-enemy-info)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; crocesc-states ;;
|
||||
@@ -42355,14 +42351,14 @@
|
||||
;; kidesc4-course ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; (define-extern kid4-update-spot-to-track-crocadog function)
|
||||
;; (define-extern *kid4-course* bot-course)
|
||||
(define-extern kid4-update-spot-to-track-crocadog (function kid-escort none))
|
||||
(define-extern *kid4-course* bot-course)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; crocesc4-course ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; (define-extern *crocadog4-course* bot-course)
|
||||
(define-extern *crocadog4-course* bot-course)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; nest-obs ;;
|
||||
@@ -52677,20 +52673,18 @@
|
||||
;; ash4-course ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
#|
|
||||
(deftype ashelin-tanker (ashelin)
|
||||
((suppress traffic-suppression-params :inline :offset-assert 1036)
|
||||
((suppress traffic-suppression-params :inline :offset-assert 1040)
|
||||
)
|
||||
:method-count-assert 252
|
||||
:size-assert #x439
|
||||
:flag-assert #xfc03c00439
|
||||
(:methods
|
||||
(ashelin-tanker-method-251 () none 251)
|
||||
(suppress-traffic (_type_) none 251)
|
||||
)
|
||||
)
|
||||
|#
|
||||
|
||||
;; (define-extern *ash4-course* ashelin-course)
|
||||
(define-extern *ash4-course* ashelin-course)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; hiphog-obs ;;
|
||||
|
||||
@@ -1243,5 +1243,152 @@
|
||||
[11, "(function city-lurker object symbol none :behavior task-manager)"],
|
||||
[12, "(function none :behavior task-manager)"],
|
||||
[13, "(function none :behavior task-manager)"]
|
||||
],
|
||||
"hal4-course": [
|
||||
[0, "(function hal-escort none)"],
|
||||
[1, "(function hal-escort none)"],
|
||||
[2, "(function symbol)"],
|
||||
[3, "(function hal-escort none)"],
|
||||
[4, "(function symbol)"],
|
||||
[5, "(function hal-escort none)"],
|
||||
[6, "(function object hal-escort symbol)"],
|
||||
[7, "(function hal-escort none)"],
|
||||
[8, "(function hal-escort none)"],
|
||||
[9, "(function symbol)"],
|
||||
[10, "(function hal-escort none)"],
|
||||
[11, "(function hal-escort none)"],
|
||||
[12, "(function hal-escort none)"],
|
||||
[13, "(function object hal-escort symbol)"],
|
||||
[14, "(function hal-escort none)"],
|
||||
[15, "(function hal-escort none)"],
|
||||
[16, "(function object hal-escort symbol)"],
|
||||
[17, "(function hal-escort none)"],
|
||||
[18, "(function hal-escort none)"],
|
||||
[19, "(function hal-escort none)"],
|
||||
[20, "(function object hal-escort symbol)"],
|
||||
[21, "(function hal-escort none)"],
|
||||
[22, "(function hal-escort none)"],
|
||||
[23, "(function object hal-escort symbol)"],
|
||||
[24, "(function hal-escort none)"],
|
||||
[25, "(function hal-escort none)"],
|
||||
[26, "(function object hal-escort symbol)"],
|
||||
[27, "(function hal-escort none)"],
|
||||
[28, "(function hal-escort none)"],
|
||||
[29, "(function hal-escort none)"],
|
||||
[30, "(function object hal-escort symbol)"],
|
||||
[31, "(function hal-escort none)"],
|
||||
[32, "(function hal-escort none)"],
|
||||
[33, "(function object hal-escort symbol)"],
|
||||
[34, "(function hal-escort none)"],
|
||||
[35, "(function hal-escort none)"],
|
||||
[36, "(function object hal-escort symbol)"],
|
||||
[37, "(function hal-escort none)"],
|
||||
[38, "(function object hal-escort symbol)"],
|
||||
[39, "(function hal-escort none)"],
|
||||
[40, "(function object hal-escort symbol)"]
|
||||
],
|
||||
"crocesc4-course": [
|
||||
[0, "(function crocadog-escort none)"],
|
||||
[1, "(function crocadog-escort symbol)"],
|
||||
[2, "(function crocadog-escort none)"],
|
||||
[3, "(function object crocadog-escort symbol)"],
|
||||
[4, "(function crocadog-escort none)"],
|
||||
[5, "(function object crocadog-escort symbol)"],
|
||||
[6, "(function crocadog-escort none)"],
|
||||
[7, "(function object crocadog-escort symbol)"],
|
||||
[8, "(function crocadog-escort none)"],
|
||||
[9, "(function object crocadog-escort symbol)"],
|
||||
[10, "(function crocadog-escort none)"],
|
||||
[11, "(function object crocadog-escort symbol)"],
|
||||
[12, "(function crocadog-escort none)"],
|
||||
[13, "(function crocadog-escort none)"],
|
||||
[14, "(function object crocadog-escort symbol)"],
|
||||
[15, "(function crocadog-escort none)"],
|
||||
[16, "(function object crocadog-escort symbol)"],
|
||||
[17, "(function crocadog-escort none)"],
|
||||
[18, "(function object crocadog-escort symbol)"],
|
||||
[19, "(function crocadog-escort none)"],
|
||||
[20, "(function object crocadog-escort symbol)"],
|
||||
[21, "(function crocadog-escort none)"],
|
||||
[22, "(function crocadog-escort none)"],
|
||||
[23, "(function object crocadog-escort symbol)"],
|
||||
[24, "(function crocadog-escort none)"],
|
||||
[25, "(function object crocadog-escort symbol)"],
|
||||
[26, "(function crocadog-escort none)"],
|
||||
[27, "(function object crocadog-escort symbol)"],
|
||||
[28, "(function crocadog-escort none)"],
|
||||
[29, "(function object crocadog-escort symbol)"],
|
||||
[30, "(function crocadog-escort none)"],
|
||||
[31, "(function object crocadog-escort symbol)"],
|
||||
[32, "(function crocadog-escort none)"],
|
||||
[33, "(function object crocadog-escort symbol)"],
|
||||
[34, "(function crocadog-escort none)"],
|
||||
[35, "(function object crocadog-escort symbol)"],
|
||||
[36, "(function crocadog-escort none)"],
|
||||
[37, "(function object crocadog-escort symbol)"],
|
||||
[38, "(function crocadog-escort none)"],
|
||||
[39, "(function object crocadog-escort symbol)"],
|
||||
[40, "(function crocadog-escort none)"],
|
||||
[41, "(function object crocadog-escort symbol)"],
|
||||
[42, "(function crocadog-escort none)"],
|
||||
[43, "(function object crocadog-escort symbol)"],
|
||||
[44, "(function crocadog-escort none)"],
|
||||
[45, "(function object crocadog-escort symbol)"],
|
||||
[46, "(function crocadog-escort none)"],
|
||||
[47, "(function object crocadog-escort symbol)"],
|
||||
[48, "(function crocadog-escort none)"],
|
||||
[49, "(function object crocadog-escort symbol)"]
|
||||
],
|
||||
"kidesc4-course": [
|
||||
[0, "(function kid-escort none)"],
|
||||
[1, "(function object kid-escort symbol)"],
|
||||
[2, "(function kid-escort none)"],
|
||||
[3, "(function kid-escort none)"],
|
||||
[4, "(function object kid-escort symbol)"],
|
||||
[5, "(function kid-escort none)"],
|
||||
[6, "(function kid-escort none)"],
|
||||
[7, "(function object kid-escort symbol)"],
|
||||
[8, "(function kid-escort none)"],
|
||||
[9, "(function object kid-escort symbol)"],
|
||||
[10, "(function kid-escort none)"],
|
||||
[11, "(function object kid-escort symbol)"],
|
||||
[12, "(function kid-escort none)"],
|
||||
[13, "(function object kid-escort symbol)"],
|
||||
[14, "(function kid-escort none)"],
|
||||
[15, "(function object kid-escort symbol)"],
|
||||
[16, "(function kid-escort none)"],
|
||||
[17, "(function kid-escort none)"],
|
||||
[18, "(function kid-escort none)"],
|
||||
[19, "(function object kid-escort symbol)"],
|
||||
[20, "(function kid-escort none)"],
|
||||
[21, "(function kid-escort none)"],
|
||||
[22, "(function object kid-escort symbol)"],
|
||||
[23, "(function kid-escort none)"],
|
||||
[24, "(function object kid-escort symbol)"]
|
||||
],
|
||||
"ash4-course": [
|
||||
[0, "(function ashelin-tanker none)"],
|
||||
[1, "(function ashelin-tanker none)"],
|
||||
[2, "(function object ashelin-tanker none)"],
|
||||
[3, "(function ashelin-tanker none)"],
|
||||
[4, "(function ashelin-tanker none)"],
|
||||
[5, "(function ashelin-tanker symbol)"],
|
||||
[6, "(function ashelin-tanker none)"],
|
||||
[7, "(function ashelin-tanker none)"],
|
||||
[8, "(function object ashelin-tanker symbol)"],
|
||||
[9, "(function ashelin-tanker none)"],
|
||||
[10, "(function ashelin-tanker none)"],
|
||||
[11, "(function object ashelin-tanker symbol)"],
|
||||
[12, "(function ashelin-tanker none)"],
|
||||
[13, "(function ashelin-tanker none)"],
|
||||
[14, "(function object ashelin-tanker symbol)"],
|
||||
[15, "(function ashelin-tanker none)"],
|
||||
[16, "(function object ashelin-tanker symbol)"],
|
||||
[17, "(function ashelin-tanker none)"],
|
||||
[18, "(function object ashelin-tanker symbol)"],
|
||||
[19, "(function ashelin-tanker none)"],
|
||||
[20, "(function object ashelin-tanker symbol)"],
|
||||
[21, "(function ashelin-tanker none)"],
|
||||
[22, "(function object ashelin-tanker symbol)"]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -525,7 +525,8 @@
|
||||
"(anon-function 41 guard)": [9],
|
||||
"(anon-function 10 metalhead-predator)": [24, 25],
|
||||
"(anon-function 10 errol-chal)": [6],
|
||||
"choose-next-branch-no-exit-level": [0, 6, 8, 12, 13, 16, 18, 26]
|
||||
"choose-next-branch-no-exit-level": [0, 6, 8, 12, 13, 16, 18, 26],
|
||||
"(anon-function 39 kidesc-states)": [4, 5]
|
||||
},
|
||||
|
||||
// Sometimes the game might use format strings that are fetched dynamically,
|
||||
|
||||
@@ -252,6 +252,7 @@
|
||||
"LJAKDAX.DGO",
|
||||
"LJKDXASH.DGO",
|
||||
"LKEIRIFT.DGO",
|
||||
"LKIDDOGE.DGO",
|
||||
"LMEETBRT.DGO",
|
||||
"LOUTCSTB.DGO",
|
||||
"LPACKAGE.DGO",
|
||||
|
||||
@@ -1671,5 +1671,8 @@
|
||||
["L600", "uint64", true],
|
||||
["L551", "vector"],
|
||||
["L531", "vector"]
|
||||
]
|
||||
],
|
||||
"kidesc": [["L124", "attack-info"]],
|
||||
"crocesc": [["L81", "attack-info"]],
|
||||
"ash4-course": [["L128", "vector"]]
|
||||
}
|
||||
|
||||
@@ -2137,5 +2137,20 @@
|
||||
"(anon-function 13 meet-brutter)": [
|
||||
[208, "mystery-traffic-object-spawn-params-1"]
|
||||
],
|
||||
"choose-next-branch-no-exit-level": [[32, "pw-iter-seg"]]
|
||||
"choose-next-branch-no-exit-level": [[32, "pw-iter-seg"]],
|
||||
"(method 235 kid-escort)": [[16, "vector"]],
|
||||
"(trans move-to-vehicle kid-escort)": [[16, ["inline-array", "matrix", 2]]],
|
||||
"(code board-vehicle kid-escort)": [[16, "matrix"]],
|
||||
"(trans move-to-vehicle crocadog-escort)": [
|
||||
[16, ["inline-array", "matrix", 2]]
|
||||
],
|
||||
"(code exit-vehicle crocadog-escort)": [[16, ["inline-array", "matrix", 2]]],
|
||||
"(code board-vehicle crocadog-escort)": [
|
||||
[16, "matrix"],
|
||||
[112, "quaternion"]
|
||||
],
|
||||
"(method 230 hal-escort)": [[16, "matrix"]],
|
||||
"(method 234 hal-escort)": [[16, "vector"]],
|
||||
"(anon-function 38 hal4-course)": [[16, "vector"]],
|
||||
"(code exit-vehicle kid-escort)": [[48, "vector"]]
|
||||
}
|
||||
|
||||
@@ -10116,5 +10116,348 @@
|
||||
"(anon-function 13 meet-brutter)": [
|
||||
[215, "v0", "city-lurker"],
|
||||
[174, "v0", "paddywagon"]
|
||||
],
|
||||
"(method 238 kid-escort)": [[[19, 79], "s5", "vehicle"]],
|
||||
"(method 78 kid-escort)": [[17, "a1", "art-joint-anim"]],
|
||||
"(method 97 kid-escort)": [[78, "s4", "process-focusable"]],
|
||||
"(method 74 kid-escort)": [
|
||||
[87, "s5", "crimson-guard"],
|
||||
[104, "s5", "crimson-guard"],
|
||||
[148, "s5", "crimson-guard"]
|
||||
],
|
||||
"(method 235 kid-escort)": [
|
||||
[23, "s3", "vehicle"],
|
||||
[32, "s3", "vehicle"],
|
||||
[49, "s3", "vehicle"]
|
||||
],
|
||||
"(code waiting-turn kid-escort)": [[14, "v1", "art-joint-anim"]],
|
||||
"(code waiting-idle kid-escort)": [[56, "v1", "art-joint-anim"]],
|
||||
"(trans move-to-vehicle kid-escort)": [
|
||||
[16, "gp", "vehicle"],
|
||||
[105, "gp", "vehicle"],
|
||||
[123, "gp", "vehicle"],
|
||||
[44, "gp", "vehicle"]
|
||||
],
|
||||
"(enter board-vehicle kid-escort)": [
|
||||
[45, "gp", "vehicle"],
|
||||
[49, "gp", "vehicle"]
|
||||
],
|
||||
"(code board-vehicle kid-escort)": [
|
||||
[74, "s5", "vehicle"],
|
||||
[78, "s5", "vehicle"],
|
||||
[169, "s4", "vehicle"],
|
||||
[206, "s4", "vehicle"],
|
||||
[313, "s5", "vehicle"],
|
||||
[316, "s5", "vehicle"],
|
||||
[321, "s5", "vehicle"]
|
||||
],
|
||||
"(exit exit-vehicle kid-escort)": [
|
||||
[12, "a0", "vehicle"],
|
||||
[15, "a0", "vehicle"]
|
||||
],
|
||||
"(code die-falling kid-escort)": [
|
||||
[14, "v1", "art-joint-anim"],
|
||||
[66, "v1", "art-joint-anim"],
|
||||
[140, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(code arrested kid-escort)": [
|
||||
[28, "v1", "crimson-guard"],
|
||||
[116, "v1", "art-joint-anim"],
|
||||
[223, "v1", "crimson-guard"],
|
||||
[180, "v1", "art-joint-anim"],
|
||||
[285, "v1", "art-joint-anim"],
|
||||
[46, "v1", "art-joint-anim"],
|
||||
[30, "v1", "crimson-guard"],
|
||||
[225, "v1", "crimson-guard"]
|
||||
],
|
||||
"(code knocked-off-vehicle kid-escort)": [
|
||||
[76, "v1", "art-joint-anim"],
|
||||
[128, "v1", "art-joint-anim"],
|
||||
[16, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(code die-falling crocadog-escort)": [
|
||||
[94, "v1", "art-joint-anim"],
|
||||
[164, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(code waiting-turn crocadog-escort)": [[14, "v1", "art-joint-anim"]],
|
||||
"(code waiting-idle crocadog-escort)": [
|
||||
[89, "v1", "art-joint-anim"],
|
||||
[202, "v1", "art-joint-anim"],
|
||||
[317, "v1", "art-joint-anim"],
|
||||
[434, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(trans move-to-vehicle crocadog-escort)": [
|
||||
[19, "gp", "vehicle"],
|
||||
[80, "gp", "vehicle"],
|
||||
[98, "gp", "vehicle"]
|
||||
],
|
||||
"(enter board-vehicle crocadog-escort)": [
|
||||
[63, "gp", "vehicle"],
|
||||
[66, "gp", "vehicle"]
|
||||
],
|
||||
"(code ride-vehicle crocadog-escort)": [[10, "v1", "art-joint-anim"]],
|
||||
"(method 78 crocadog-escort)": [[17, "a1", "art-joint-anim"]],
|
||||
"(method 237 crocadog-escort)": [[19, "v1", "vehicle"]],
|
||||
"(method 97 crocadog-escort)": [[102, "s5", "process-focusable"]],
|
||||
"(method 234 crocadog-escort)": [
|
||||
[23, "s3", "vehicle"],
|
||||
[32, "s3", "vehicle"],
|
||||
[49, "s3", "vehicle"]
|
||||
],
|
||||
"(trans exit-vehicle crocadog-escort)": [
|
||||
[22, "gp", "vehicle"],
|
||||
[29, "gp", "vehicle"]
|
||||
],
|
||||
"(code exit-vehicle crocadog-escort)": [
|
||||
[49, "s5", "vehicle"],
|
||||
[56, "s5", "vehicle"],
|
||||
[172, "s5", "vehicle"],
|
||||
[186, "s5", "vehicle"],
|
||||
[190, "s5", "vehicle"],
|
||||
[300, "s5", "vehicle"],
|
||||
[309, "s5", "vehicle"]
|
||||
],
|
||||
"(trans ride-vehicle crocadog-escort)": [
|
||||
[24, "s5", "vehicle"],
|
||||
[36, "s5", "vehicle"]
|
||||
],
|
||||
"(code board-vehicle crocadog-escort)": [
|
||||
[110, "s3", "vehicle"],
|
||||
[113, "s3", "vehicle"],
|
||||
[117, "s3", "vehicle"],
|
||||
[243, "s4", "vehicle"],
|
||||
[260, "s4", "vehicle"],
|
||||
[374, "s5", "vehicle"],
|
||||
[367, "s5", "vehicle"]
|
||||
],
|
||||
"hal4-walking-too-far": [
|
||||
[18, "a0", "process-focusable"],
|
||||
[21, "a0", "process-focusable"]
|
||||
],
|
||||
"(method 74 hal-escort)": [[8, "a1", "process"]],
|
||||
"(method 235 hal-escort)": [[27, "v1", "process-focusable"]],
|
||||
"(method 236 hal-escort)": [[14, "v1", "vehicle"]],
|
||||
"(method 227 hal-escort)": [
|
||||
[20, "v1", "process-focusable"],
|
||||
[37, "a0", "process-focusable"],
|
||||
[46, "a0", "process-focusable"],
|
||||
[49, "a0", "process-focusable"]
|
||||
],
|
||||
"(method 204 hal-escort)": [
|
||||
[35, "s4", "process-focusable"],
|
||||
[41, "v1", "process-focusable"],
|
||||
[56, "s4", "process-focusable"],
|
||||
[91, "s4", "process-focusable"]
|
||||
],
|
||||
"(method 230 hal-escort)": [
|
||||
[36, "a0", "connection"],
|
||||
[37, "a0", "collide-shape-moving"],
|
||||
[85, "a0", "connection"],
|
||||
[86, "a0", "collide-shape-moving"],
|
||||
[149, "a0", "process-focusable"],
|
||||
[140, "a0", "process-focusable"],
|
||||
[152, "a0", "process-focusable"]
|
||||
],
|
||||
"(method 233 hal-escort)": [[29, "v1", "traffic-manager"]],
|
||||
"(method 232 hal-escort)": [
|
||||
[36, "s5", "process-focusable"],
|
||||
[40, "v1", "process-focusable"],
|
||||
[109, "s5", "process-focusable"],
|
||||
[118, "v1", "process-focusable"]
|
||||
],
|
||||
"(method 229 hal-escort)": [
|
||||
[26, "gp", "vehicle"],
|
||||
[27, "gp", "vehicle"],
|
||||
[33, "gp", "vehicle"],
|
||||
[40, "gp", "vehicle"],
|
||||
[53, "gp", "vehicle"],
|
||||
[55, "s5", "process-focusable"],
|
||||
[59, "gp", "vehicle"]
|
||||
],
|
||||
"(method 234 hal-escort)": [
|
||||
[130, "gp", "process-focusable"],
|
||||
[49, "gp", "process-focusable"],
|
||||
[62, "gp", "process-focusable"]
|
||||
],
|
||||
"(method 228 hal-escort)": [
|
||||
[25, "a0", "process-focusable"],
|
||||
[28, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 21 hal4-course)": [
|
||||
[42, "s5", "process-focusable"],
|
||||
[45, "s4", "process-focusable"]
|
||||
],
|
||||
"(anon-function 24 hal4-course)": [
|
||||
[31, "v1", "vehicle"],
|
||||
[35, "v1", "vehicle"],
|
||||
[121, "a0", "vehicle"],
|
||||
[124, "a0", "vehicle"]
|
||||
],
|
||||
"(anon-function 26 hal4-course)": [
|
||||
[143, "s2", "process-focusable"],
|
||||
[175, "s2", "process-focusable"],
|
||||
[185, "s2", "process-focusable"],
|
||||
[195, "s5", "process-focusable"],
|
||||
[217, "s5", "process-focusable"],
|
||||
[246, "s4", "process-focusable"],
|
||||
[251, "s4", "bot"],
|
||||
[273, "s4", "process-focusable"],
|
||||
[278, "s4", "bot"],
|
||||
[283, "s5", "process-focusable"],
|
||||
[289, "s5", "bot"]
|
||||
],
|
||||
"(anon-function 38 hal4-course)": [
|
||||
[17, "a0", "process-focusable"],
|
||||
[20, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 1 hal4-course)": [[55, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 5 hal4-course)": [[49, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 3 hal4-course)": [[54, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 8 hal4-course)": [[35, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 10 hal4-course)": [[14, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 12 hal4-course)": [[126, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 15 hal4-course)": [[14, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 19 hal4-course)": [[141, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 22 hal4-course)": [[14, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 25 hal4-course)": [[82, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 29 hal4-course)": [[27, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 32 hal4-course)": [[18, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 35 hal4-course)": [[29, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 37 hal4-course)": [[47, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 39 hal4-course)": [[115, "v1", "halt-wait-spot"]],
|
||||
"(anon-function 2 crocesc4-course)": [[15, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 0 crocesc4-course)": [[19, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 4 crocesc4-course)": [[15, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 5 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 6 crocesc4-course)": [[52, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 7 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 8 crocesc4-course)": [[15, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 9 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 10 crocesc4-course)": [[15, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 11 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 13 crocesc4-course)": [[52, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 14 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 15 crocesc4-course)": [[20, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 17 crocesc4-course)": [[15, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 22 crocesc4-course)": [[15, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 24 crocesc4-course)": [[53, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 26 crocesc4-course)": [[15, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 28 crocesc4-course)": [[15, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 30 crocesc4-course)": [[15, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 32 crocesc4-course)": [[15, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 36 crocesc4-course)": [[15, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 38 crocesc4-course)": [[15, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 40 crocesc4-course)": [[53, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 42 crocesc4-course)": [[53, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 44 crocesc4-course)": [[15, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 46 crocesc4-course)": [[61, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 48 crocesc4-course)": [[50, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 19 crocesc4-course)": [
|
||||
[7, "a1", "bot"],
|
||||
[24, "v1", "crocesct-wait-spot"]
|
||||
],
|
||||
"(anon-function 20 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 23 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 25 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 27 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 29 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 31 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 33 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 34 crocesc4-course)": [[53, "v1", "crocesct-wait-spot"]],
|
||||
"(anon-function 35 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 37 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 39 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 41 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 43 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 45 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 47 crocesc4-course)": [
|
||||
[32, "a0", "process-focusable"],
|
||||
[35, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 49 crocesc4-course)": [[24, "v1", "hal-escort"]],
|
||||
"kid4-update-spot-to-track-crocadog": [
|
||||
[19, "a0", "process-focusable"],
|
||||
[22, "a0", "process-focusable"]
|
||||
],
|
||||
"(anon-function 0 kidesc4-course)": [[51, "v1", "kidesct-wait-spot"]],
|
||||
"(anon-function 6 kidesc4-course)": [[23, "v1", "kidesct-wait-spot"]],
|
||||
"(anon-function 3 kidesc4-course)": [[15, "v1", "kidesct-wait-spot"]],
|
||||
"(anon-function 10 kidesc4-course)": [[22, "v1", "kidesct-wait-spot"]],
|
||||
"(anon-function 12 kidesc4-course)": [[20, "v1", "kidesct-wait-spot"]],
|
||||
"(anon-function 14 kidesc4-course)": [[15, "v1", "kidesct-wait-spot"]],
|
||||
"(anon-function 18 kidesc4-course)": [[15, "v1", "kidesct-wait-spot"]],
|
||||
"(anon-function 21 kidesc4-course)": [[41, "v1", "kidesct-wait-spot"]],
|
||||
"(anon-function 24 kidesc4-course)": [[24, "v1", "hal-escort"]],
|
||||
"(anon-function 23 kidesc4-course)": [[50, "v1", "kidesct-wait-spot"]],
|
||||
"(method 251 ashelin-tanker)": [[22, "v1", "traffic-manager"]],
|
||||
"(anon-function 1 ash4-course)": [[14, "v1", "asht-wait-spot"]],
|
||||
"(anon-function 4 ash4-course)": [[31, "v1", "asht-wait-spot"]],
|
||||
"(anon-function 7 ash4-course)": [[47, "v1", "asht-wait-spot"]],
|
||||
"(anon-function 10 ash4-course)": [[76, "v1", "asht-wait-spot"]],
|
||||
"(anon-function 13 ash4-course)": [[90, "v1", "asht-wait-spot"]],
|
||||
"(anon-function 15 ash4-course)": [[14, "v1", "asht-wait-spot"]],
|
||||
"(anon-function 17 ash4-course)": [[34, "v1", "asht-wait-spot"]],
|
||||
"(anon-function 19 ash4-course)": [[33, "v1", "asht-wait-spot"]],
|
||||
"(anon-function 21 ash4-course)": [[27, "v1", "asht-wait-spot"]],
|
||||
"(code exit-vehicle kid-escort)": [
|
||||
[47, "gp", "vehicle"],
|
||||
[50, "gp", "vehicle"],
|
||||
[55, "gp", "vehicle"],
|
||||
[170, "s4", "vehicle"],
|
||||
[178, "s4", "vehicle"]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -4117,5 +4117,10 @@
|
||||
"s5-0": ["s5-0", "gs-zbuf"],
|
||||
"gp-0": ["gp-0", "gs-zbuf"]
|
||||
}
|
||||
},
|
||||
"(method 232 hal-escort)": {
|
||||
"vars": {
|
||||
"s4-0": "target"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+167
-155
@@ -746,164 +746,176 @@ const std::unordered_map<
|
||||
1,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}}}},
|
||||
{GameVersion::Jak2,
|
||||
{{"ocean-near-indices",
|
||||
{{"data", ArrayFieldDecompMeta(TypeSpec("ocean-near-index"), 32)}}},
|
||||
{"ocean-mid-masks", {{"data", ArrayFieldDecompMeta(TypeSpec("ocean-mid-mask"), 8)}}},
|
||||
{"sparticle-launcher",
|
||||
{{"init-specs", ArrayFieldDecompMeta(TypeSpec("sp-field-init-spec"), 16)}}},
|
||||
{"sparticle-launch-group",
|
||||
{{"launcher", ArrayFieldDecompMeta(TypeSpec("sparticle-group-item"), 32)}}},
|
||||
{"nav-network-info",
|
||||
{{"adjacency", ArrayFieldDecompMeta(TypeSpec("nav-network-adjacency"), 16)}}},
|
||||
{"sig-path", {{"samples", ArrayFieldDecompMeta(TypeSpec("sig-path-sample"), 64)}}},
|
||||
{"rigid-body-vehicle-constants",
|
||||
{{"color-option-array", ArrayFieldDecompMeta(TypeSpec("vector"), 16)},
|
||||
{"grab-rail-array", ArrayFieldDecompMeta(TypeSpec("vehicle-grab-rail-info"), 48)}}},
|
||||
{"city-ambush-info", {{"array", ArrayFieldDecompMeta(TypeSpec("city-ambush-spot"), 32)}}},
|
||||
{"bombbot-path", {{"node", ArrayFieldDecompMeta(TypeSpec("bombbot-node"), 32)}}},
|
||||
{"fort-robotank-segment",
|
||||
{{"event-tbl", ArrayFieldDecompMeta(TypeSpec("fort-robotank-segment-event"), 32)}}},
|
||||
{"race-info",
|
||||
{{"turbo-pad-array", ArrayFieldDecompMeta(TypeSpec("race-turbo-pad"), 32)},
|
||||
{"racer-array", ArrayFieldDecompMeta(TypeSpec("race-racer-info"), 16)},
|
||||
{"decision-point-array", ArrayFieldDecompMeta(TypeSpec("race-decision-point"), 16)}}},
|
||||
{"actor-hash-bucket",
|
||||
{{"data", ArrayFieldDecompMeta(TypeSpec("actor-cshape-ptr"),
|
||||
16,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INLINE_ARR)}}},
|
||||
{"xz-height-map",
|
||||
{{"data", ArrayFieldDecompMeta(TypeSpec("int8"),
|
||||
1,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"enemy-info",
|
||||
{{"idle-anim-script",
|
||||
ArrayFieldDecompMeta(TypeSpec("idle-control-frame"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"nav-enemy-info",
|
||||
{{"idle-anim-script",
|
||||
ArrayFieldDecompMeta(TypeSpec("idle-control-frame"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"tpath-info",
|
||||
// TODO - should be able to just decompile the `anims` field
|
||||
{{"anim1", ArrayFieldDecompMeta(TypeSpec("tpath-control-frame"), 16)},
|
||||
{"anim2", ArrayFieldDecompMeta(TypeSpec("tpath-control-frame"), 16)},
|
||||
{"anim3", ArrayFieldDecompMeta(TypeSpec("tpath-control-frame"), 16)}}},
|
||||
// kinda want to add regex support now...
|
||||
{"bigmap-compressed-layers",
|
||||
{{"layer0", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer1", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer2", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer3", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer4", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer5", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer6", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer7", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer8", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer9", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer10", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer11", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer12", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer13", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer14", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer15", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer16", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer17", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer18", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer19", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
{
|
||||
{"ocean-near-indices",
|
||||
{{"data", ArrayFieldDecompMeta(TypeSpec("ocean-near-index"), 32)}}},
|
||||
{"ocean-mid-masks", {{"data", ArrayFieldDecompMeta(TypeSpec("ocean-mid-mask"), 8)}}},
|
||||
{"sparticle-launcher",
|
||||
{{"init-specs", ArrayFieldDecompMeta(TypeSpec("sp-field-init-spec"), 16)}}},
|
||||
{"sparticle-launch-group",
|
||||
{{"launcher", ArrayFieldDecompMeta(TypeSpec("sparticle-group-item"), 32)}}},
|
||||
{"nav-network-info",
|
||||
{{"adjacency", ArrayFieldDecompMeta(TypeSpec("nav-network-adjacency"), 16)}}},
|
||||
{"sig-path", {{"samples", ArrayFieldDecompMeta(TypeSpec("sig-path-sample"), 64)}}},
|
||||
{"rigid-body-vehicle-constants",
|
||||
{{"color-option-array", ArrayFieldDecompMeta(TypeSpec("vector"), 16)},
|
||||
{"grab-rail-array", ArrayFieldDecompMeta(TypeSpec("vehicle-grab-rail-info"), 48)}}},
|
||||
{"city-ambush-info",
|
||||
{{"array", ArrayFieldDecompMeta(TypeSpec("city-ambush-spot"), 32)}}},
|
||||
{"bombbot-path", {{"node", ArrayFieldDecompMeta(TypeSpec("bombbot-node"), 32)}}},
|
||||
{"fort-robotank-segment",
|
||||
{{"event-tbl", ArrayFieldDecompMeta(TypeSpec("fort-robotank-segment-event"), 32)}}},
|
||||
{"race-info",
|
||||
{{"turbo-pad-array", ArrayFieldDecompMeta(TypeSpec("race-turbo-pad"), 32)},
|
||||
{"racer-array", ArrayFieldDecompMeta(TypeSpec("race-racer-info"), 16)},
|
||||
{"decision-point-array",
|
||||
ArrayFieldDecompMeta(TypeSpec("race-decision-point"), 16)}}},
|
||||
{"actor-hash-bucket",
|
||||
{{"data", ArrayFieldDecompMeta(TypeSpec("actor-cshape-ptr"),
|
||||
16,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INLINE_ARR)}}},
|
||||
{"xz-height-map",
|
||||
{{"data", ArrayFieldDecompMeta(TypeSpec("int8"),
|
||||
1,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"lightning-probe-vars", {{"probe-dirs", ArrayFieldDecompMeta(TypeSpec("vector"), 16)}}},
|
||||
{"nav-mesh",
|
||||
{{"poly-array", ArrayFieldDecompMeta(TypeSpec("nav-poly"), 64)},
|
||||
{"nav-control-array", ArrayFieldDecompMeta(TypeSpec("nav-control"), 288)}}},
|
||||
{"trail-conn-hash",
|
||||
{{"cell", ArrayFieldDecompMeta(TypeSpec("trail-conn-hash-cell"), 4)},
|
||||
{"conn-ids", ArrayFieldDecompMeta(TypeSpec("uint16"),
|
||||
2,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"trail-graph",
|
||||
{{"node", ArrayFieldDecompMeta(TypeSpec("trail-node"), 18)},
|
||||
{"conn", ArrayFieldDecompMeta(TypeSpec("trail-conn"), 8)},
|
||||
{"conn-ids", ArrayFieldDecompMeta(TypeSpec("uint16"),
|
||||
2,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"visgroup", ArrayFieldDecompMeta(TypeSpec("trail-conn-hash-cell"), 4)},
|
||||
{"visnode-ids", ArrayFieldDecompMeta(TypeSpec("uint16"),
|
||||
{"enemy-info",
|
||||
{{"idle-anim-script",
|
||||
ArrayFieldDecompMeta(TypeSpec("idle-control-frame"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"nav-enemy-info",
|
||||
{{"idle-anim-script",
|
||||
ArrayFieldDecompMeta(TypeSpec("idle-control-frame"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"tpath-info",
|
||||
// TODO - should be able to just decompile the `anims` field
|
||||
{{"anim1", ArrayFieldDecompMeta(TypeSpec("tpath-control-frame"), 16)},
|
||||
{"anim2", ArrayFieldDecompMeta(TypeSpec("tpath-control-frame"), 16)},
|
||||
{"anim3", ArrayFieldDecompMeta(TypeSpec("tpath-control-frame"), 16)}}},
|
||||
// kinda want to add regex support now...
|
||||
{"bigmap-compressed-layers",
|
||||
{{"layer0", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer1", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer2", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer3", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer4", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer5", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer6", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer7", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer8", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer9", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer10", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer11", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer12", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer13", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer14", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer15", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer16", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer17", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer18", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer19", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"lightning-probe-vars",
|
||||
{{"probe-dirs", ArrayFieldDecompMeta(TypeSpec("vector"), 16)}}},
|
||||
{"nav-mesh",
|
||||
{{"poly-array", ArrayFieldDecompMeta(TypeSpec("nav-poly"), 64)},
|
||||
{"nav-control-array", ArrayFieldDecompMeta(TypeSpec("nav-control"), 288)}}},
|
||||
{"trail-conn-hash",
|
||||
{{"cell", ArrayFieldDecompMeta(TypeSpec("trail-conn-hash-cell"), 4)},
|
||||
{"conn-ids", ArrayFieldDecompMeta(TypeSpec("uint16"),
|
||||
2,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"predator-graph",
|
||||
{{"node", ArrayFieldDecompMeta(TypeSpec("predator-node"), 48)},
|
||||
{"edge", ArrayFieldDecompMeta(TypeSpec("predator-edge"), 4)}}},
|
||||
{"sig0-course",
|
||||
{{"spots", ArrayFieldDecompMeta(TypeSpec("bot-spot"), 32)},
|
||||
{"speeches", ArrayFieldDecompMeta(TypeSpec("bot-speech-info"), 16)},
|
||||
{"dirs", ArrayFieldDecompMeta(TypeSpec("vector"), 16)},
|
||||
{"speech-tunings", ArrayFieldDecompMeta(TypeSpec("bot-speech-tuning"), 16)}}},
|
||||
{"ashelin-course",
|
||||
{{"spots", ArrayFieldDecompMeta(TypeSpec("bot-spot"), 32)},
|
||||
{"speeches", ArrayFieldDecompMeta(TypeSpec("bot-speech-info"), 16)},
|
||||
{"dirs", ArrayFieldDecompMeta(TypeSpec("vector"), 16)},
|
||||
{"speech-tunings", ArrayFieldDecompMeta(TypeSpec("bot-speech-tuning"), 16)}}},
|
||||
{"ai-task-pool",
|
||||
{{"tasks", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"bot-course", {{"spots", ArrayFieldDecompMeta(TypeSpec("bot-spot"), 32)}}},
|
||||
{"hal3-course", {{"spots", ArrayFieldDecompMeta(TypeSpec("bot-spot"), 32)}}},
|
||||
{"sig5-course",
|
||||
{{"spots", ArrayFieldDecompMeta(TypeSpec("bot-spot"), 32)},
|
||||
{"speeches", ArrayFieldDecompMeta(TypeSpec("bot-speech-info"), 16)},
|
||||
{"dirs", ArrayFieldDecompMeta(TypeSpec("vector"), 16)},
|
||||
{"speech-tunings", ArrayFieldDecompMeta(TypeSpec("bot-speech-tuning"), 16)}}},
|
||||
{"under-block-puzzle",
|
||||
{{"cells", ArrayFieldDecompMeta(TypeSpec("int32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"pulse-ops", ArrayFieldDecompMeta(TypeSpec("int8"),
|
||||
1,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"turret-path",
|
||||
{{"event-tbl", ArrayFieldDecompMeta(TypeSpec("turret-path-event"), 16)}}}}}};
|
||||
{"trail-graph",
|
||||
{{"node", ArrayFieldDecompMeta(TypeSpec("trail-node"), 18)},
|
||||
{"conn", ArrayFieldDecompMeta(TypeSpec("trail-conn"), 8)},
|
||||
{"conn-ids", ArrayFieldDecompMeta(TypeSpec("uint16"),
|
||||
2,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"visgroup", ArrayFieldDecompMeta(TypeSpec("trail-conn-hash-cell"), 4)},
|
||||
{"visnode-ids",
|
||||
ArrayFieldDecompMeta(TypeSpec("uint16"),
|
||||
2,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"predator-graph",
|
||||
{{"node", ArrayFieldDecompMeta(TypeSpec("predator-node"), 48)},
|
||||
{"edge", ArrayFieldDecompMeta(TypeSpec("predator-edge"), 4)}}},
|
||||
{"sig0-course",
|
||||
{{"spots", ArrayFieldDecompMeta(TypeSpec("bot-spot"), 32)},
|
||||
{"speeches", ArrayFieldDecompMeta(TypeSpec("bot-speech-info"), 16)},
|
||||
{"dirs", ArrayFieldDecompMeta(TypeSpec("vector"), 16)},
|
||||
{"speech-tunings", ArrayFieldDecompMeta(TypeSpec("bot-speech-tuning"), 16)}}},
|
||||
{"ashelin-course",
|
||||
{{"spots", ArrayFieldDecompMeta(TypeSpec("bot-spot"), 32)},
|
||||
{"speeches", ArrayFieldDecompMeta(TypeSpec("bot-speech-info"), 16)},
|
||||
{"dirs", ArrayFieldDecompMeta(TypeSpec("vector"), 16)},
|
||||
{"speech-tunings", ArrayFieldDecompMeta(TypeSpec("bot-speech-tuning"), 16)}}},
|
||||
{"ai-task-pool",
|
||||
{{"tasks", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"bot-course", {{"spots", ArrayFieldDecompMeta(TypeSpec("bot-spot"), 32)}}},
|
||||
{"hal3-course", {{"spots", ArrayFieldDecompMeta(TypeSpec("bot-spot"), 32)}}},
|
||||
{"sig5-course",
|
||||
{{"spots", ArrayFieldDecompMeta(TypeSpec("bot-spot"), 32)},
|
||||
{"speeches", ArrayFieldDecompMeta(TypeSpec("bot-speech-info"), 16)},
|
||||
{"dirs", ArrayFieldDecompMeta(TypeSpec("vector"), 16)},
|
||||
{"speech-tunings", ArrayFieldDecompMeta(TypeSpec("bot-speech-tuning"), 16)}}},
|
||||
{"under-block-puzzle",
|
||||
{{"cells", ArrayFieldDecompMeta(TypeSpec("int32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"pulse-ops",
|
||||
ArrayFieldDecompMeta(TypeSpec("int8"),
|
||||
1,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"turret-path",
|
||||
{{"event-tbl", ArrayFieldDecompMeta(TypeSpec("turret-path-event"), 16)}}},
|
||||
{"hal4-course",
|
||||
{{"spots", ArrayFieldDecompMeta(TypeSpec("bot-spot"), 32)},
|
||||
{"speeches", ArrayFieldDecompMeta(TypeSpec("bot-speech-info"), 16)},
|
||||
{"dirs", ArrayFieldDecompMeta(TypeSpec("vector"), 16)},
|
||||
{"speech-tunings", ArrayFieldDecompMeta(TypeSpec("bot-speech-tuning"), 16)}}},
|
||||
}}};
|
||||
|
||||
goos::Object decompile_structure(const TypeSpec& type,
|
||||
const DecompilerLabel& label,
|
||||
|
||||
@@ -20,20 +20,20 @@
|
||||
:size-assert #x410
|
||||
:flag-assert #xef03900410
|
||||
(:methods
|
||||
(crocadog-escort-method-225 () none 225)
|
||||
(crocadog-escort-method-226 () none 226)
|
||||
(crocadog-escort-method-227 () none 227)
|
||||
(crocadog-escort-method-228 () none 228)
|
||||
(crocadog-escort-method-229 () none 229)
|
||||
(crocadog-escort-method-230 () none 230)
|
||||
(crocadog-escort-method-231 () none 231)
|
||||
(crocadog-escort-method-232 () none 232)
|
||||
(crocadog-escort-method-233 () none 233)
|
||||
(crocadog-escort-method-234 () none 234)
|
||||
(crocadog-escort-method-235 () none 235)
|
||||
(crocadog-escort-method-236 () none 236)
|
||||
(crocadog-escort-method-237 () none 237)
|
||||
(crocadog-escort-method-238 () none 238)
|
||||
(traveling () _type_ :state 225)
|
||||
(traveling-blocked () _type_ :state 226)
|
||||
(waiting-idle () _type_ :state 227)
|
||||
(waiting-turn () _type_ :state 228)
|
||||
(move-to-vehicle () _type_ :state 229)
|
||||
(board-vehicle () _type_ :state 230)
|
||||
(ride-vehicle () _type_ :state 231)
|
||||
(exit-vehicle () _type_ :state 232)
|
||||
(knocked-off-vehicle () _type_ :state 233)
|
||||
(want-exit-vehicle? (_type_ vector) symbol 234)
|
||||
(go-idle-or-move (_type_) none 235)
|
||||
(go-waiting-turn (_type_) none 236)
|
||||
(check-vehicle-exit (_type_) none 237)
|
||||
(play-walk-anim (_type_) none 238)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -46,10 +46,10 @@
|
||||
)
|
||||
|
||||
(deftype crocesct-wait-spot (ai-task)
|
||||
((check-done basic :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes int8 6 :offset 38)
|
||||
((check-done (function crocesct-wait-spot crocadog-escort symbol) :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes uint8 6 :offset 38)
|
||||
)
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,3 +7,42 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defmethod reset-task! crocesct-wait-spot ((obj crocesct-wait-spot))
|
||||
(set! (-> obj check-done) #f)
|
||||
(set! (-> obj which-spot) -1)
|
||||
(set! (-> obj num-spots) (the-as uint 0))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch symbol vs none.
|
||||
(defmethod ai-task-method-11 crocesct-wait-spot ((obj crocesct-wait-spot) (arg0 bot))
|
||||
(let ((s4-0 (-> obj which-spot)))
|
||||
(when (>= s4-0 0)
|
||||
(let ((s3-0 (-> arg0 course spots (-> obj spot-indexes s4-0))))
|
||||
(if (and (not (outside-spot-radius? arg0 s3-0 (the-as vector #f) #f)) (player-blocking-spot? arg0 s3-0))
|
||||
(set! s4-0 -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (< s4-0 0)
|
||||
(set! s4-0 (choose-spot arg0 (the-as int (-> obj num-spots)) (the-as (pointer uint) (-> obj spot-indexes))))
|
||||
(set! (-> obj which-spot) s4-0)
|
||||
(mem-copy!
|
||||
(the-as pointer (-> arg0 spot))
|
||||
(the-as pointer (-> arg0 course spots (-> obj spot-indexes s4-0)))
|
||||
20
|
||||
)
|
||||
)
|
||||
(if (logtest? *display-bot-marks* (bot-marks-controls bmc16))
|
||||
(bot-debug-draw-spot-sphere
|
||||
arg0
|
||||
(the-as int (-> obj num-spots))
|
||||
(the-as (pointer uint) (-> obj spot-indexes))
|
||||
(the-as int (-> obj spot-indexes s4-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
((-> obj check-done) obj (the-as crocadog-escort arg0))
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -7,3 +7,675 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(define *crocadog-escort-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 2
|
||||
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x3 :param0 #x1 :param1 #x1)
|
||||
(new 'static 'idle-control-frame)
|
||||
)
|
||||
:idle-anim 3
|
||||
:notice-anim 3
|
||||
:hostile-anim -1
|
||||
:hit-anim 3
|
||||
:knocked-anim 12
|
||||
:knocked-land-anim 13
|
||||
:die-anim 3
|
||||
:die-falling-anim 3
|
||||
:victory-anim -1
|
||||
:jump-wind-up-anim 3
|
||||
:jump-in-air-anim 3
|
||||
:jump-land-anim 3
|
||||
:neck-joint 6
|
||||
:look-at-joint 6
|
||||
:bullseye-joint 4
|
||||
:notice-distance (meters 6)
|
||||
:notice-distance-delta (meters 10)
|
||||
:proximity-notice-distance (meters 6)
|
||||
:default-hit-points 100
|
||||
: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.7
|
||||
: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 49152.0
|
||||
:knocked-soft-vxz-hi 49152.0
|
||||
:knocked-soft-vy-lo 40960.0
|
||||
:knocked-soft-vy-hi 40960.0
|
||||
:knocked-medium-vxz-lo 49152.0
|
||||
:knocked-medium-vxz-hi 49152.0
|
||||
:knocked-medium-vy-lo 40960.0
|
||||
:knocked-medium-vy-hi 40960.0
|
||||
:knocked-hard-vxz-lo 49152.0
|
||||
:knocked-hard-vxz-hi 49152.0
|
||||
:knocked-hard-vy-lo 40960.0
|
||||
:knocked-hard-vy-hi 40960.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 49152.0
|
||||
:knocked-yellow-vxz-hi 49152.0
|
||||
:knocked-yellow-vy-lo 40960.0
|
||||
:knocked-yellow-vy-hi 40960.0
|
||||
:knocked-red-vxz-lo 49152.0
|
||||
:knocked-red-vxz-hi 49152.0
|
||||
:knocked-red-vy-lo 40960.0
|
||||
:knocked-red-vy-hi 40960.0
|
||||
:knocked-blue-vxz-lo 49152.0
|
||||
:knocked-blue-vxz-hi 49152.0
|
||||
:knocked-blue-vy-lo 40960.0
|
||||
:knocked-blue-vy-hi 40960.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 3
|
||||
:turn-anim -1
|
||||
:run-anim 3
|
||||
:taunt-anim -1
|
||||
:run-travel-speed (meters 7)
|
||||
:run-acceleration (meters 14)
|
||||
:run-turning-acceleration (meters 6)
|
||||
:walk-travel-speed (meters 2.2)
|
||||
:walk-acceleration (meters 8)
|
||||
:walk-turning-acceleration (meters 6)
|
||||
:maximum-rotation-rate (degrees 360.0)
|
||||
:notice-nav-radius (meters 0.65)
|
||||
: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! (-> *crocadog-escort-nav-enemy-info* fact-defaults) *fact-info-enemy-defaults*)
|
||||
|
||||
(defmethod general-event-handler crocadog-escort ((obj crocadog-escort) (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
|
||||
(('attack)
|
||||
((method-of-type bot general-event-handler) obj arg0 arg1 arg2 arg3)
|
||||
#f
|
||||
)
|
||||
(('nav-mesh-kill)
|
||||
(change-to *default-nav-mesh* obj)
|
||||
#t
|
||||
)
|
||||
(else
|
||||
((method-of-type bot general-event-handler) obj arg0 arg1 arg2 arg3)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod get-penetrate-info crocadog-escort ((obj crocadog-escort))
|
||||
"@returns the allowed way(s) this enemy can take damage
|
||||
@see [[penetrate]] and [[penetrated-by-all&hit-points->penetrated-by]]"
|
||||
(let ((v1-1 ((method-of-type bot get-penetrate-info) obj)))
|
||||
(logior (penetrate jak-yellow-shot jak-red-shot jak-blue-shot) v1-1)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod bot-method-193 crocadog-escort ((obj crocadog-escort))
|
||||
(let* ((t9-0 (method-of-type bot bot-method-193))
|
||||
(v0-0 (t9-0 obj))
|
||||
)
|
||||
(if (and (not v0-0) (logtest? #x1c00000 (-> obj incoming penetrate-using)))
|
||||
(set! v0-0 #t)
|
||||
)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod enemy-method-79 crocadog-escort ((obj crocadog-escort) (arg0 int) (arg1 enemy-knocked-info))
|
||||
(local-vars (gp-0 symbol))
|
||||
(case arg0
|
||||
((3)
|
||||
(set! gp-0 (ja-done? 0))
|
||||
(let ((f30-0 1.0))
|
||||
(if (>= (ja-aframe-num 0) 4.0)
|
||||
(set! f30-0 0.25)
|
||||
)
|
||||
(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) f30-0)
|
||||
(joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! gp-0 ((method-of-type bot enemy-method-79) obj arg0 arg1))
|
||||
)
|
||||
)
|
||||
gp-0
|
||||
)
|
||||
|
||||
(defmethod want-exit-vehicle? crocadog-escort ((obj crocadog-escort) (arg0 vector))
|
||||
(let ((s3-0 (handle->process (-> obj vehicle-handle))))
|
||||
(if (or (not s3-0) (not (-> obj nav)))
|
||||
(return #f)
|
||||
)
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector)))
|
||||
(compute-seat-position (the-as vehicle s3-0) s4-0 (-> obj vehicle-seat-index))
|
||||
(vector-! s4-0 s4-0 (-> (the-as vehicle s3-0) root-override-2 trans))
|
||||
(set! (-> s4-0 y) 0.0)
|
||||
(vector-normalize! s4-0 (+ 12288.0 (vector-length s4-0)))
|
||||
(vector+! s4-0 s4-0 (-> (the-as vehicle s3-0) root-override-2 trans))
|
||||
(let ((s3-1 (new 'stack-no-clear 'collide-query)))
|
||||
(when (enemy-above-ground? obj s3-1 s4-0 (collide-spec backgnd) 8192.0 81920.0 1024.0)
|
||||
(set! (-> s4-0 y) (-> s3-1 best-other-tri intersect y))
|
||||
(let ((s3-2 (new 'stack-no-clear 'vector)))
|
||||
(do-navigation-to-destination (-> obj nav state) (-> obj root-override2 trans))
|
||||
(when (cloest-point-on-mesh (-> obj nav) s3-2 s4-0 (the-as nav-poly #f))
|
||||
(let ((f0-4 2048.0))
|
||||
(when (>= (* f0-4 f0-4) (vector-vector-xz-distance-squared s3-2 s4-0))
|
||||
(set! (-> arg0 quad) (-> s3-2 quad))
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod run-logic? crocadog-escort ((obj crocadog-escort))
|
||||
(or (not (logtest? (process-mask enemy) (-> *setting-control* user-current process-mask)))
|
||||
(logtest? (-> obj bot-flags) (bot-flags bf09))
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod enemy-method-97 crocadog-escort ((obj crocadog-escort))
|
||||
(with-pp
|
||||
(let* ((s4-0 (handle->process (-> obj attacker-handle)))
|
||||
(s5-0 (if (type? s4-0 process-focusable)
|
||||
s4-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when s5-0
|
||||
(when (>= (- (-> pp clock frame-counter) (-> obj attacker-time)) (seconds 3))
|
||||
(set! s5-0 (the-as process #f))
|
||||
(set! (-> obj attacker-handle) (the-as handle #f))
|
||||
)
|
||||
)
|
||||
(handle->process (-> obj kid-handle))
|
||||
(cond
|
||||
(s5-0
|
||||
(empty)
|
||||
)
|
||||
((begin
|
||||
(let ((s4-1 (handle->process (-> obj poi-handle))))
|
||||
(set! s5-0 (if (type? s4-1 process-focusable)
|
||||
s4-1
|
||||
)
|
||||
)
|
||||
)
|
||||
s5-0
|
||||
)
|
||||
(empty)
|
||||
)
|
||||
(else
|
||||
(set! s5-0 (select-focus! obj))
|
||||
(cond
|
||||
(s5-0
|
||||
(empty)
|
||||
)
|
||||
(else
|
||||
(let ((s4-2 (handle->process (-> obj kid-handle))))
|
||||
(set! s5-0 (if (type? s4-2 process-focusable)
|
||||
s4-2
|
||||
)
|
||||
)
|
||||
)
|
||||
*target*
|
||||
(let ((f30-0 -1.0)
|
||||
(f28-0 (vector-vector-distance (target-pos 0) (-> obj root-override2 trans)))
|
||||
)
|
||||
(if s5-0
|
||||
(set! f30-0
|
||||
(vector-vector-distance (get-trans (the-as process-focusable s5-0) 0) (-> obj root-override2 trans))
|
||||
)
|
||||
)
|
||||
(if (and s5-0 (>= (* 2.0 f28-0) f30-0))
|
||||
(empty)
|
||||
(set! s5-0 *target*)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
(s5-0
|
||||
(try-update-focus (-> obj focus) (the-as process-focusable s5-0) obj)
|
||||
(if (and (logtest? (-> obj bot-flags) (bot-flags attacked)) (!= (-> s5-0 type) target))
|
||||
(logclear! (-> obj bot-flags) (bot-flags attacked))
|
||||
)
|
||||
)
|
||||
(else
|
||||
(clear-focused (-> obj focus))
|
||||
(logclear! (-> obj bot-flags) (bot-flags attacked))
|
||||
)
|
||||
)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch object vs symbol.
|
||||
(defmethod alive? crocadog-escort ((obj crocadog-escort))
|
||||
(let ((t9-0 (method-of-type bot alive?)))
|
||||
(the-as symbol (and (t9-0 obj) (-> obj next-state) (let ((v1-3 (-> obj next-state name)))
|
||||
(or (= v1-3 'waiting-idle) (= v1-3 'waiting-turn))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod init-from-entity! crocadog-escort ((obj crocadog-escort) (arg0 entity-actor))
|
||||
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
|
||||
This commonly includes things such as:
|
||||
- stack size
|
||||
- collision information
|
||||
- loading the skeleton group / bones
|
||||
- sounds"
|
||||
(stack-size-set! (-> obj main-thread) 512)
|
||||
((method-of-type bot init-from-entity!) obj arg0)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod init-enemy-collision! crocadog-escort ((obj crocadog-escort))
|
||||
"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 hit-by-others))))
|
||||
(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 1) 0)))
|
||||
(set! (-> s5-0 total-prims) (the-as uint 2))
|
||||
(set! (-> s4-0 prim-core collide-as) (collide-spec bot))
|
||||
(set! (-> s4-0 prim-core collide-with)
|
||||
(collide-spec backgnd jak crate civilian enemy obstacle vehicle-sphere hit-by-others-list player-list pusher)
|
||||
)
|
||||
(set! (-> s4-0 prim-core action) (collide-action solid can-ride no-standon))
|
||||
(set-vector! (-> s4-0 local-sphere) 0.0 3276.8 0.0 4505.6)
|
||||
(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 bot))
|
||||
(set! (-> v1-13 prim-core collide-with)
|
||||
(collide-spec backgnd jak crate civilian enemy obstacle vehicle-sphere hit-by-others-list player-list pusher)
|
||||
)
|
||||
(set! (-> v1-13 prim-core action) (collide-action solid can-ride no-standon))
|
||||
(set-vector! (-> v1-13 local-sphere) 0.0 2867.2 0.0 2867.2)
|
||||
)
|
||||
(set! (-> s5-0 nav-radius) 2662.4)
|
||||
(let ((v1-15 (-> s5-0 root-prim)))
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-15 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-15 prim-core collide-with))
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 3))
|
||||
(set! (-> s5-0 event-priority) (the-as uint 1))
|
||||
(set! (-> obj root-override2) s5-0)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod init! crocadog-escort ((obj crocadog-escort))
|
||||
"Set defaults for various fields."
|
||||
(let ((t9-0 (method-of-type bot init!)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(set! (-> obj min-speed) 9011.2)
|
||||
(set! (-> obj max-speed) 28672.0)
|
||||
(set! (-> obj channel) (the-as uint 31))
|
||||
(set! (-> obj notice-enemy-dist) 24576.0)
|
||||
(set! (-> obj travel-anim-interp) 0.0)
|
||||
(set! (-> obj focus-info max-los-dist) 0.0)
|
||||
(set-vector! (-> obj root-override2 scale) 1.2 1.2 1.2 1.0)
|
||||
(set! (-> obj spot-color) (the-as uint #x5000ff00))
|
||||
(set! (-> obj kid-handle) (the-as handle #f))
|
||||
(set! (-> obj vehicle-handle) (the-as handle #f))
|
||||
(set-vector! (-> obj local-seat-pos) 0.0 819.2 -1638.4 1.0)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod init-enemy! crocadog-escort ((obj crocadog-escort))
|
||||
"Common method called to initialize the enemy, typically sets up default field values and calls ancillary helper methods"
|
||||
(init! obj)
|
||||
(initialize-skeleton
|
||||
obj
|
||||
(the-as skeleton-group (art-group-get-by-name *level* "skel-crocadog-escort" (the-as (pointer uint32) #f)))
|
||||
(the-as pair 0)
|
||||
)
|
||||
(init-enemy-behaviour-and-stats! obj *crocadog-escort-nav-enemy-info*)
|
||||
(let ((v1-7 (-> obj neck)))
|
||||
(set! (-> v1-7 up) (the-as uint 1))
|
||||
(set! (-> v1-7 nose) (the-as uint 2))
|
||||
(set! (-> v1-7 ear) (the-as uint 0))
|
||||
(set-vector! (-> v1-7 twist-max) 11832.889 11832.889 0.0 1.0)
|
||||
(set! (-> v1-7 ignore-angle) 30947.555)
|
||||
)
|
||||
(let ((t9-4 (method-of-type bot init-enemy!)))
|
||||
(t9-4 obj)
|
||||
)
|
||||
(let ((v1-10 (-> obj nav)))
|
||||
(set! (-> v1-10 sphere-mask) (the-as uint 126))
|
||||
)
|
||||
0
|
||||
(set! (-> obj my-simple-focus) (process-spawn simple-focus :to obj))
|
||||
(set! (-> obj draw light-index) (the-as uint 10))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod bot-method-214 crocadog-escort ((obj crocadog-escort))
|
||||
#f
|
||||
)
|
||||
|
||||
(defmethod check-vehicle-exit crocadog-escort ((obj crocadog-escort))
|
||||
(local-vars (v1-22 enemy-flag))
|
||||
(with-pp
|
||||
(when (logtest? (focus-status pilot) (-> obj focus-status))
|
||||
(let ((v1-4 (handle->process (-> obj vehicle-handle))))
|
||||
(when (or (not v1-4) (logtest? (-> (the-as vehicle v1-4) flags) (rigid-body-object-flag dead)))
|
||||
(set! (-> obj bot-flags) (logior (bot-flags bf17) (-> obj bot-flags)))
|
||||
(logclear! (-> obj bot-flags) (bot-flags bf15))
|
||||
(logclear! (-> obj focus-status) (focus-status pilot-riding pilot))
|
||||
(set! (-> obj vehicle-seat-index) -1)
|
||||
(set! (-> obj vehicle-handle) (the-as handle #f))
|
||||
(logior! (-> obj root-override2 nav-flags) (nav-flags has-root-sphere))
|
||||
(let* ((s5-0 (-> obj root-override2 quat))
|
||||
(f30-0 (quaternion-y-angle s5-0))
|
||||
)
|
||||
(quaternion-identity! s5-0)
|
||||
(quaternion-rotate-y! s5-0 s5-0 f30-0)
|
||||
)
|
||||
(let ((v1-21 (-> obj enemy-flags)))
|
||||
(if (logtest? v1-21 (enemy-flag checking-water))
|
||||
(set! v1-22 (logior v1-21 (enemy-flag enable-on-active)))
|
||||
(set! v1-22 (logclear v1-21 (enemy-flag enable-on-active)))
|
||||
)
|
||||
)
|
||||
(set! (-> obj enemy-flags) v1-22)
|
||||
(let ((f30-2 (+ 16384.0 (quaternion-y-angle (-> obj root-override2 quat))))
|
||||
(s5-1 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set-vector! s5-1 (sin f30-2) 0.0 (cos f30-2) 1.0)
|
||||
(vector-normalize! s5-1 65536.0)
|
||||
(let ((a1-3 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-3 from) (process->ppointer pp))
|
||||
(set! (-> a1-3 num-params) 2)
|
||||
(set! (-> a1-3 message) 'attack)
|
||||
(set! (-> a1-3 param 0) (the-as uint #f))
|
||||
(let ((v1-29 (new 'static 'attack-info :mask (attack-info-mask vector id attacker-velocity knock))))
|
||||
(let* ((a0-24 *game-info*)
|
||||
(a2-2 (+ (-> a0-24 attack-id) 1))
|
||||
)
|
||||
(set! (-> a0-24 attack-id) a2-2)
|
||||
(set! (-> v1-29 id) a2-2)
|
||||
)
|
||||
(set! (-> v1-29 vector quad) (-> s5-1 quad))
|
||||
(set! (-> v1-29 attacker-velocity quad) (-> s5-1 quad))
|
||||
(set! (-> v1-29 knock) (the-as uint 8))
|
||||
(set! (-> a1-3 param 1) (the-as uint v1-29))
|
||||
)
|
||||
(send-event-function obj a1-3)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod go-hostile crocadog-escort ((obj crocadog-escort))
|
||||
(cond
|
||||
((logtest? (bot-flags bf17) (-> obj bot-flags))
|
||||
(logclear! (-> obj enemy-flags) (enemy-flag enable-on-active checking-water))
|
||||
(logclear! (-> obj focus-status) (focus-status dangerous))
|
||||
(logclear! (-> obj enemy-flags) (enemy-flag check-water))
|
||||
(logclear! (-> obj mask) (process-mask collectable))
|
||||
(logclear! (-> obj enemy-flags) (enemy-flag look-at-move-dest))
|
||||
(logclear! (-> obj mask) (process-mask actor-pause))
|
||||
(logclear! (-> obj enemy-flags) (enemy-flag notice))
|
||||
(logior! (-> obj focus-status) (focus-status disable))
|
||||
(go (method-of-object obj knocked-off-vehicle))
|
||||
)
|
||||
(else
|
||||
(react-to-focus obj)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod react-to-focus crocadog-escort ((obj crocadog-escort))
|
||||
"@TODO - flesh out docs"
|
||||
(go-idle-or-move obj)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defmethod go-waiting-turn crocadog-escort ((obj crocadog-escort))
|
||||
(go (method-of-object obj waiting-turn))
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defmethod go-idle-or-move crocadog-escort ((obj crocadog-escort))
|
||||
(if (logtest? (-> obj bot-flags) (bot-flags bf15))
|
||||
(go (method-of-object obj move-to-vehicle))
|
||||
(go (method-of-object obj waiting-idle))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod play-walk-anim crocadog-escort ((obj crocadog-escort))
|
||||
(with-pp
|
||||
(let ((f30-0 (-> obj nav state speed)))
|
||||
(let ((f0-1 (lerp-scale 0.0 1.0 f30-0 9011.2 28672.0)))
|
||||
(seek! (-> obj travel-anim-interp) f0-1 (* 4.0 (-> pp clock seconds-per-frame)))
|
||||
)
|
||||
(let ((f28-0 (-> obj travel-anim-interp))
|
||||
(v1-7 (if (> (-> obj skel active-channels) 0)
|
||||
(-> obj skel root-channel 0 frame-group)
|
||||
)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((and v1-7 (= v1-7 (-> obj draw art-group data 7)))
|
||||
(let ((v1-12 (-> obj skel root-channel 1)))
|
||||
(set! (-> v1-12 frame-interp 1) f28-0)
|
||||
(set! (-> v1-12 frame-interp 0) f28-0)
|
||||
)
|
||||
(let* ((f28-1 (current-cycle-distance (-> obj skel)))
|
||||
(f0-5 (quaternion-y-angle (-> obj root-override2 quat)))
|
||||
(f1-2 (deg- f0-5 (-> obj travel-prev-ry)))
|
||||
(f0-8 (fmin 28672.0 (* 0.15707962 (-> pp clock frames-per-second) (fabs f1-2))))
|
||||
(f0-11 (/ (* 7.0 (fmax f30-0 f0-8)) (* 15.0 f28-1)))
|
||||
(a0-10 (-> obj skel root-channel 0))
|
||||
)
|
||||
(set! (-> a0-10 param 0) f0-11)
|
||||
(joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-loop!)
|
||||
)
|
||||
(let ((a0-11 (-> obj skel root-channel 1)))
|
||||
(set! (-> a0-11 param 0) 0.0)
|
||||
(joint-control-channel-group-eval! a0-11 (the-as art-joint-anim #f) num-func-chan)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(ja-channel-push! 2 (seconds 0.15))
|
||||
(let ((a0-13 (-> obj skel root-channel 0)))
|
||||
(set! (-> a0-13 dist) 4206.592)
|
||||
(set! (-> a0-13 frame-group) (the-as art-joint-anim (-> obj draw art-group data 7)))
|
||||
(set! (-> a0-13 param 0) 1.0)
|
||||
(joint-control-channel-group! a0-13 (the-as art-joint-anim (-> obj draw art-group data 7)) num-func-loop!)
|
||||
)
|
||||
(let ((a0-14 (-> obj skel root-channel 1)))
|
||||
(set! (-> a0-14 frame-interp 1) f28-0)
|
||||
(set! (-> a0-14 frame-interp 0) f28-0)
|
||||
(set! (-> a0-14 dist) 13393.92)
|
||||
(set! (-> a0-14 frame-group) (the-as art-joint-anim (-> obj draw art-group data 8)))
|
||||
(set! (-> a0-14 param 0) 0.0)
|
||||
(joint-control-channel-group! a0-14 (the-as art-joint-anim (-> obj draw art-group data 8)) num-func-chan)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod damage-amount-from-attack crocadog-escort ((obj crocadog-escort) (arg0 process) (arg1 event-message-block))
|
||||
"@returns the amount of damage taken from an attack. This can come straight off the [[attack-info]] or via [[penetrate-using->damage]]"
|
||||
0
|
||||
)
|
||||
|
||||
(defmethod bot-method-190 crocadog-escort ((obj crocadog-escort))
|
||||
#t
|
||||
)
|
||||
|
||||
(defmethod enemy-method-78 crocadog-escort ((obj crocadog-escort) (arg0 (pointer float)))
|
||||
(ja-channel-push! 1 (seconds 0.1))
|
||||
(let ((a1-2 (-> obj draw art-group data (-> obj enemy-info-override knocked-land-anim)))
|
||||
(a0-4 (-> obj skel root-channel 0))
|
||||
)
|
||||
(set! (-> a0-4 frame-group) (the-as art-joint-anim a1-2))
|
||||
(set! (-> a0-4 param 0) (the float (+ (-> (the-as art-joint-anim a1-2) frames num-frames) -1)))
|
||||
(set! (-> a0-4 param 1) (-> arg0 0))
|
||||
(set! (-> a0-4 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-4 (the-as art-joint-anim a1-2) num-func-seek!)
|
||||
)
|
||||
#t
|
||||
)
|
||||
|
||||
(defmethod go-idle crocadog-escort ((obj crocadog-escort))
|
||||
(cond
|
||||
((task-node-closed? (game-task-node city-escort-kid-resolution))
|
||||
(cleanup-for-death obj)
|
||||
(go (method-of-object obj die-fast))
|
||||
)
|
||||
(else
|
||||
(go-idle-or-move obj)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -19,21 +19,21 @@
|
||||
:size-assert #x400
|
||||
:flag-assert #xf003800400
|
||||
(:methods
|
||||
(kid-escort-method-225 () none 225)
|
||||
(kid-escort-method-226 () none 226)
|
||||
(kid-escort-method-227 () none 227)
|
||||
(kid-escort-method-228 () none 228)
|
||||
(kid-escort-method-229 () none 229)
|
||||
(kid-escort-method-230 () none 230)
|
||||
(kid-escort-method-231 () none 231)
|
||||
(kid-escort-method-232 () none 232)
|
||||
(kid-escort-method-233 () none 233)
|
||||
(kid-escort-method-234 () none 234)
|
||||
(kid-escort-method-235 () none 235)
|
||||
(kid-escort-method-236 () none 236)
|
||||
(kid-escort-method-237 () none 237)
|
||||
(kid-escort-method-238 () none 238)
|
||||
(kid-escort-method-239 () none 239)
|
||||
(traveling () _type_ :state 225)
|
||||
(traveling-blocked () _type_ :state 226)
|
||||
(waiting-idle () _type_ :state 227)
|
||||
(waiting-turn () _type_ :state 228)
|
||||
(move-to-vehicle () _type_ :state 229)
|
||||
(board-vehicle () _type_ :state 230)
|
||||
(ride-vehicle () _type_ :state 231)
|
||||
(exit-vehicle () _type_ :state 232)
|
||||
(knocked-off-vehicle () _type_ :state 233)
|
||||
(arrested () _type_ :state 234)
|
||||
(want-exit-vehicle? (_type_ vector) symbol 235)
|
||||
(check-arrest (_type_) none 236)
|
||||
(go-waiting-turn (_type_) none 237)
|
||||
(check-vehicle-exit (_type_) none 238)
|
||||
(play-walk-anim (_type_) none 239)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -46,10 +46,10 @@
|
||||
)
|
||||
|
||||
(deftype kidesct-wait-spot (ai-task)
|
||||
((check-done basic :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes int8 6 :offset 38)
|
||||
((check-done (function kidesct-wait-spot kid-escort symbol) :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes uint8 6 :offset 38)
|
||||
)
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,3 +7,42 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defmethod reset-task! kidesct-wait-spot ((obj kidesct-wait-spot))
|
||||
(set! (-> obj check-done) #f)
|
||||
(set! (-> obj which-spot) -1)
|
||||
(set! (-> obj num-spots) (the-as uint 0))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch symbol vs none.
|
||||
(defmethod ai-task-method-11 kidesct-wait-spot ((obj kidesct-wait-spot) (arg0 bot))
|
||||
(let ((s4-0 (-> obj which-spot)))
|
||||
(when (>= s4-0 0)
|
||||
(let ((s3-0 (-> arg0 course spots (-> obj spot-indexes s4-0))))
|
||||
(if (and (not (outside-spot-radius? arg0 s3-0 (the-as vector #f) #f)) (player-blocking-spot? arg0 s3-0))
|
||||
(set! s4-0 -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (< s4-0 0)
|
||||
(set! s4-0 (choose-spot arg0 (the-as int (-> obj num-spots)) (the-as (pointer uint) (-> obj spot-indexes))))
|
||||
(set! (-> obj which-spot) s4-0)
|
||||
(mem-copy!
|
||||
(the-as pointer (-> arg0 spot))
|
||||
(the-as pointer (-> arg0 course spots (-> obj spot-indexes s4-0)))
|
||||
20
|
||||
)
|
||||
)
|
||||
(if (logtest? *display-bot-marks* (bot-marks-controls bmc16))
|
||||
(bot-debug-draw-spot-sphere
|
||||
arg0
|
||||
(the-as int (-> obj num-spots))
|
||||
(the-as (pointer uint) (-> obj spot-indexes))
|
||||
(the-as int (-> obj spot-indexes s4-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
((-> obj check-done) obj (the-as kid-escort arg0))
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -7,3 +7,795 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(define *kid-escort-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 2
|
||||
(new 'static 'idle-control-frame :command (ic-cmd play) :anim #x3 :param0 #x1 :param1 #x1)
|
||||
(new 'static 'idle-control-frame)
|
||||
)
|
||||
:idle-anim 3
|
||||
:notice-anim 3
|
||||
:hostile-anim -1
|
||||
:hit-anim 3
|
||||
:knocked-anim 6
|
||||
:knocked-land-anim 7
|
||||
:die-anim 3
|
||||
:die-falling-anim 3
|
||||
:victory-anim -1
|
||||
:jump-wind-up-anim 3
|
||||
:jump-in-air-anim 3
|
||||
:jump-land-anim 3
|
||||
:neck-joint 6
|
||||
:look-at-joint 6
|
||||
:bullseye-joint 4
|
||||
:notice-distance (meters 30)
|
||||
:notice-distance-delta (meters 10)
|
||||
:proximity-notice-distance (meters 30)
|
||||
:default-hit-points 100
|
||||
: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.7
|
||||
: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 40960.0
|
||||
:knocked-soft-vxz-hi 40960.0
|
||||
:knocked-soft-vy-lo 40960.0
|
||||
:knocked-soft-vy-hi 40960.0
|
||||
:knocked-medium-vxz-lo 40960.0
|
||||
:knocked-medium-vxz-hi 40960.0
|
||||
:knocked-medium-vy-lo 40960.0
|
||||
:knocked-medium-vy-hi 40960.0
|
||||
:knocked-hard-vxz-lo 40960.0
|
||||
:knocked-hard-vxz-hi 40960.0
|
||||
:knocked-hard-vy-lo 40960.0
|
||||
:knocked-hard-vy-hi 40960.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 40960.0
|
||||
:knocked-yellow-vxz-hi 40960.0
|
||||
:knocked-yellow-vy-lo 40960.0
|
||||
:knocked-yellow-vy-hi 40960.0
|
||||
:knocked-red-vxz-lo 40960.0
|
||||
:knocked-red-vxz-hi 40960.0
|
||||
:knocked-red-vy-lo 40960.0
|
||||
:knocked-red-vy-hi 40960.0
|
||||
:knocked-blue-vxz-lo 40960.0
|
||||
:knocked-blue-vxz-hi 40960.0
|
||||
:knocked-blue-vy-lo 40960.0
|
||||
:knocked-blue-vy-hi 40960.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 3
|
||||
:turn-anim -1
|
||||
:run-anim 3
|
||||
:taunt-anim -1
|
||||
:run-travel-speed (meters 4.5)
|
||||
:run-acceleration (meters 5)
|
||||
:run-turning-acceleration (meters 6)
|
||||
:walk-travel-speed (meters 4.5)
|
||||
:walk-acceleration (meters 5)
|
||||
:walk-turning-acceleration (meters 6)
|
||||
:maximum-rotation-rate (degrees 360.0)
|
||||
:notice-nav-radius (meters 0.85)
|
||||
: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! (-> *kid-escort-nav-enemy-info* fact-defaults) *fact-info-enemy-defaults*)
|
||||
|
||||
(defmethod general-event-handler kid-escort ((obj kid-escort) (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"
|
||||
(with-pp
|
||||
(case arg2
|
||||
(('arrest)
|
||||
(let* ((s4-0 (handle->process (-> obj arrestor-handle)))
|
||||
(v1-4 (if (type? s4-0 process-focusable)
|
||||
s4-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (or (not v1-4)
|
||||
(= v1-4 arg0)
|
||||
(and (!= v1-4 arg0) (>= (- (-> pp clock frame-counter) (-> obj arrest-attempt-time)) (seconds 0.1)))
|
||||
)
|
||||
(set! (-> obj arrestor-handle) (process->handle arg0))
|
||||
(set! (-> obj arrest-attempt-time) (-> pp clock frame-counter))
|
||||
(if (!= v1-4 arg0)
|
||||
(send-event (handle->process (-> obj master-handle)) 'notify 'arrest arg0)
|
||||
)
|
||||
)
|
||||
)
|
||||
#t
|
||||
)
|
||||
(('instant-arrest)
|
||||
(set! (-> obj bot-flags) (logior (bot-flags bf19) (-> obj bot-flags)))
|
||||
(let ((s5-1 (the-as crimson-guard (-> arg3 param 0))))
|
||||
(set! (-> obj arrestor-handle) (process->handle s5-1))
|
||||
(set! (-> obj arrest-attempt-time) (-> pp clock frame-counter))
|
||||
(let ((a1-11 (new 'stack-no-clear 'vector)))
|
||||
(vector-! a1-11 (-> s5-1 root-override2 trans) (-> obj root-override2 trans))
|
||||
(set! (-> a1-11 y) 0.0)
|
||||
(forward-up->quaternion (-> obj root-override2 quat) a1-11 *up-vector*)
|
||||
)
|
||||
(logclear! (-> obj enemy-flags) (enemy-flag enable-on-active checking-water))
|
||||
(logclear! (-> obj mask) (process-mask collectable))
|
||||
(logclear! (-> obj enemy-flags) (enemy-flag look-at-move-dest))
|
||||
(logclear! (-> obj mask) (process-mask actor-pause))
|
||||
(logclear! (-> obj enemy-flags) (enemy-flag notice))
|
||||
(send-event (handle->process (-> obj master-handle)) 'notify 'arrest s5-1)
|
||||
)
|
||||
(go (method-of-object obj arrested))
|
||||
)
|
||||
(('attack)
|
||||
((method-of-type bot general-event-handler) obj arg0 arg1 arg2 arg3)
|
||||
#f
|
||||
)
|
||||
(('nav-mesh-kill)
|
||||
(change-to *default-nav-mesh* obj)
|
||||
#t
|
||||
)
|
||||
(else
|
||||
((method-of-type bot general-event-handler) obj arg0 arg1 arg2 arg3)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod run-logic? kid-escort ((obj kid-escort))
|
||||
(or (not (logtest? (process-mask enemy) (-> *setting-control* user-current process-mask)))
|
||||
(logtest? (-> obj bot-flags) (bot-flags bf09))
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod enemy-method-97 kid-escort ((obj kid-escort))
|
||||
(with-pp
|
||||
(let* ((s4-0 (handle->process (-> obj attacker-handle)))
|
||||
(s5-0 (if (type? s4-0 process-focusable)
|
||||
s4-0
|
||||
)
|
||||
)
|
||||
(s3-0 (handle->process (-> obj arrestor-handle)))
|
||||
(s4-1 (if (type? s3-0 process-focusable)
|
||||
s3-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when s5-0
|
||||
(cond
|
||||
((= (-> s5-0 type) target)
|
||||
(when (or (not (logtest? (-> obj bot-flags) (bot-flags attacked)))
|
||||
(>= (- (-> pp clock frame-counter) (-> obj attacker-time)) (seconds 1.5))
|
||||
)
|
||||
(if (logtest? (-> obj bot-flags) (bot-flags attacked))
|
||||
(reset-attacker! obj)
|
||||
)
|
||||
(set! s5-0 (the-as process #f))
|
||||
(set! (-> obj attacker-handle) (the-as handle #f))
|
||||
)
|
||||
)
|
||||
(else
|
||||
(when (>= (- (-> pp clock frame-counter) (-> obj attacker-time)) (seconds 6))
|
||||
(set! s5-0 (the-as process #f))
|
||||
(set! (-> obj attacker-handle) (the-as handle #f))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when s4-1
|
||||
(when (or (>= (- (-> pp clock frame-counter) (-> obj arrest-attempt-time)) (seconds 0.5))
|
||||
(logtest? (-> (the-as process-focusable s4-1) focus-status) (focus-status dead hit))
|
||||
)
|
||||
(set! s4-1 (the-as process #f))
|
||||
(set! (-> obj arrestor-handle) (the-as handle #f))
|
||||
)
|
||||
)
|
||||
(let ((v1-34 (-> obj focus-mode))
|
||||
(s3-1 (the-as process #f))
|
||||
)
|
||||
(cond
|
||||
((zero? v1-34)
|
||||
(cond
|
||||
(s4-1
|
||||
(set! s3-1 s4-1)
|
||||
)
|
||||
(s5-0
|
||||
(set! s3-1 s5-0)
|
||||
)
|
||||
((begin (set! s3-1 (select-focus! obj)) s3-1)
|
||||
(empty)
|
||||
)
|
||||
(else
|
||||
(let ((s5-1 (handle->process (-> obj poi-handle))))
|
||||
(set! s3-1 (if (type? s5-1 process-focusable)
|
||||
s5-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(if s3-1
|
||||
(empty)
|
||||
(set! s3-1 *target*)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
((= v1-34 1)
|
||||
(cond
|
||||
(s4-1
|
||||
(set! s3-1 s4-1)
|
||||
)
|
||||
(s5-0
|
||||
(set! s3-1 s5-0)
|
||||
)
|
||||
(else
|
||||
(let ((s5-2 (handle->process (-> obj poi-handle))))
|
||||
(set! s3-1 (if (type? s5-2 process-focusable)
|
||||
s5-2
|
||||
)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
(s3-1
|
||||
(empty)
|
||||
)
|
||||
((begin (set! s3-1 (select-focus! obj)) s3-1)
|
||||
(empty)
|
||||
)
|
||||
(else
|
||||
(set! s3-1 *target*)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
(s3-1
|
||||
(try-update-focus (-> obj focus) (the-as process-focusable s3-1) obj)
|
||||
(if (and (logtest? (-> obj bot-flags) (bot-flags attacked)) (!= (-> s3-1 type) target))
|
||||
(logclear! (-> obj bot-flags) (bot-flags attacked))
|
||||
)
|
||||
)
|
||||
(else
|
||||
(clear-focused (-> obj focus))
|
||||
(logclear! (-> obj bot-flags) (bot-flags attacked))
|
||||
)
|
||||
)
|
||||
s3-1
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch object vs symbol.
|
||||
(defmethod alive? kid-escort ((obj kid-escort))
|
||||
(let ((t9-0 (method-of-type bot alive?)))
|
||||
(the-as symbol (and (t9-0 obj) (-> obj next-state) (let ((v1-3 (-> obj next-state name)))
|
||||
(or (= v1-3 'waiting-idle) (= v1-3 'waiting-turn))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod init-from-entity! kid-escort ((obj kid-escort) (arg0 entity-actor))
|
||||
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
|
||||
This commonly includes things such as:
|
||||
- stack size
|
||||
- collision information
|
||||
- loading the skeleton group / bones
|
||||
- sounds"
|
||||
(stack-size-set! (-> obj main-thread) 512)
|
||||
((method-of-type bot init-from-entity!) obj arg0)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod init-enemy-collision! kid-escort ((obj kid-escort))
|
||||
"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 hit-by-others))))
|
||||
(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 3) 0)))
|
||||
(set! (-> s5-0 total-prims) (the-as uint 4))
|
||||
(set! (-> s4-0 prim-core collide-as) (collide-spec bot bot-targetable))
|
||||
(set! (-> s4-0 prim-core collide-with)
|
||||
(collide-spec backgnd jak crate civilian enemy obstacle vehicle-sphere hit-by-others-list player-list pusher)
|
||||
)
|
||||
(set! (-> s4-0 prim-core action) (collide-action solid can-ride no-standon))
|
||||
(set-vector! (-> s4-0 local-sphere) 0.0 3276.8 0.0 4505.6)
|
||||
(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 bot bot-targetable))
|
||||
(set! (-> v1-13 prim-core collide-with)
|
||||
(collide-spec backgnd jak crate civilian enemy obstacle vehicle-sphere hit-by-others-list player-list pusher)
|
||||
)
|
||||
(set! (-> v1-13 prim-core action) (collide-action solid can-ride))
|
||||
(set-vector! (-> v1-13 local-sphere) 0.0 2048.0 0.0 2048.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 bot bot-targetable))
|
||||
(set! (-> v1-15 prim-core collide-with)
|
||||
(collide-spec backgnd jak crate civilian enemy obstacle vehicle-sphere hit-by-others-list player-list pusher)
|
||||
)
|
||||
(set! (-> v1-15 prim-core action) (collide-action solid))
|
||||
(set-vector! (-> v1-15 local-sphere) 0.0 3584.0 0.0 2048.0)
|
||||
)
|
||||
(let ((v1-17 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
|
||||
(set! (-> v1-17 prim-core collide-as) (collide-spec bot bot-targetable))
|
||||
(set! (-> v1-17 prim-core collide-with)
|
||||
(collide-spec backgnd jak crate civilian enemy obstacle vehicle-sphere hit-by-others-list player-list pusher)
|
||||
)
|
||||
(set! (-> v1-17 prim-core action) (collide-action solid no-standon))
|
||||
(set-vector! (-> v1-17 local-sphere) 0.0 5120.0 0.0 2048.0)
|
||||
)
|
||||
(set! (-> s5-0 nav-radius) 3481.6)
|
||||
(let ((v1-19 (-> s5-0 root-prim)))
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-19 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-19 prim-core collide-with))
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 3))
|
||||
(set! (-> s5-0 event-priority) (the-as uint 3))
|
||||
(set! (-> obj root-override2) s5-0)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod init! kid-escort ((obj kid-escort))
|
||||
"Set defaults for various fields."
|
||||
(let ((t9-0 (method-of-type bot init!)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(set! (-> obj min-speed) 18022.4)
|
||||
(set! (-> obj max-speed) 18432.0)
|
||||
(set! (-> obj channel) (the-as uint 26))
|
||||
(set! (-> obj notice-enemy-dist) 122880.0)
|
||||
(set! (-> obj travel-anim-interp) 0.0)
|
||||
(set! (-> obj focus-info max-los-dist) 0.0)
|
||||
(set-vector! (-> obj root-override2 scale) 1.2 1.2 1.2 1.0)
|
||||
(set! (-> obj spot-color) (the-as uint #x60004f8f))
|
||||
(set! (-> obj arrestor-handle) (the-as handle #f))
|
||||
(set! (-> obj crocadog-handle) (the-as handle #f))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod init-enemy! kid-escort ((obj kid-escort))
|
||||
"Common method called to initialize the enemy, typically sets up default field values and calls ancillary helper methods"
|
||||
(init! obj)
|
||||
(initialize-skeleton
|
||||
obj
|
||||
(the-as skeleton-group (art-group-get-by-name *level* "skel-kid-escort" (the-as (pointer uint32) #f)))
|
||||
(the-as pair 0)
|
||||
)
|
||||
(init-enemy-behaviour-and-stats! obj *kid-escort-nav-enemy-info*)
|
||||
(let ((v1-7 (-> obj neck)))
|
||||
(set! (-> v1-7 up) (the-as uint 1))
|
||||
(set! (-> v1-7 nose) (the-as uint 2))
|
||||
(set! (-> v1-7 ear) (the-as uint 0))
|
||||
(set-vector! (-> v1-7 twist-max) 11832.889 11832.889 0.0 1.0)
|
||||
(set! (-> v1-7 ignore-angle) 30947.555)
|
||||
)
|
||||
(let ((t9-4 (method-of-type bot init-enemy!)))
|
||||
(t9-4 obj)
|
||||
)
|
||||
(let ((v1-10 (-> obj nav)))
|
||||
(set! (-> v1-10 sphere-mask) (the-as uint 126))
|
||||
)
|
||||
0
|
||||
(set! (-> obj my-simple-focus) (process-spawn simple-focus :to obj))
|
||||
(set! (-> obj draw light-index) (the-as uint 10))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod bot-method-214 kid-escort ((obj kid-escort))
|
||||
#f
|
||||
)
|
||||
|
||||
(defmethod react-to-focus kid-escort ((obj kid-escort))
|
||||
"@TODO - flesh out docs"
|
||||
(check-arrest obj)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defmethod go-waiting-turn kid-escort ((obj kid-escort))
|
||||
(go (method-of-object obj waiting-turn))
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defmethod check-arrest kid-escort ((obj kid-escort))
|
||||
(let ((s5-0 (handle->process (-> obj arrestor-handle))))
|
||||
(cond
|
||||
((if (type? s5-0 process-focusable)
|
||||
s5-0
|
||||
)
|
||||
(go (method-of-object obj arrested))
|
||||
)
|
||||
((logtest? (-> obj bot-flags) (bot-flags bf15))
|
||||
(go (method-of-object obj move-to-vehicle))
|
||||
)
|
||||
(else
|
||||
(go (method-of-object obj waiting-idle))
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod play-walk-anim kid-escort ((obj kid-escort))
|
||||
(with-pp
|
||||
(let ((f30-0 (-> obj nav state speed))
|
||||
(v1-5 (if (> (-> obj skel active-channels) 0)
|
||||
(-> obj skel root-channel 0 frame-group)
|
||||
)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((and v1-5 (= v1-5 (-> obj draw art-group data 4)))
|
||||
(let* ((f28-0 (current-cycle-distance (-> obj skel)))
|
||||
(f0-1 (quaternion-y-angle (-> obj root-override2 quat)))
|
||||
(f1-0 (deg- f0-1 (-> obj travel-prev-ry)))
|
||||
(f0-4 (fmin 18432.0 (* 0.35342914 (-> pp clock frames-per-second) (fabs f1-0))))
|
||||
(f0-7 (/ (* 8.0 (fmax f30-0 f0-4)) (* 15.0 f28-0)))
|
||||
(a0-8 (-> obj skel root-channel 0))
|
||||
)
|
||||
(set! (-> a0-8 param 0) f0-7)
|
||||
(joint-control-channel-group-eval! a0-8 (the-as art-joint-anim #f) num-func-loop!)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(ja-channel-push! 1 (seconds 0.15))
|
||||
(let ((a0-10 (-> obj skel root-channel 0)))
|
||||
(set! (-> a0-10 dist) 6553.6)
|
||||
(set! (-> a0-10 frame-group) (the-as art-joint-anim (-> obj draw art-group data 4)))
|
||||
(set! (-> a0-10 param 0) 1.0)
|
||||
(joint-control-channel-group! a0-10 (the-as art-joint-anim (-> obj draw art-group data 4)) num-func-loop!)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod damage-amount-from-attack kid-escort ((obj kid-escort) (arg0 process) (arg1 event-message-block))
|
||||
"@returns the amount of damage taken from an attack. This can come straight off the [[attack-info]] or via [[penetrate-using->damage]]"
|
||||
0
|
||||
)
|
||||
|
||||
(defmethod bot-method-190 kid-escort ((obj kid-escort))
|
||||
#t
|
||||
)
|
||||
|
||||
(defmethod enemy-method-78 kid-escort ((obj kid-escort) (arg0 (pointer float)))
|
||||
(ja-channel-push! 1 (seconds 0.1))
|
||||
(let ((a1-2 (-> obj draw art-group data (-> obj enemy-info-override knocked-land-anim)))
|
||||
(a0-4 (-> obj skel root-channel 0))
|
||||
)
|
||||
(set! (-> a0-4 frame-group) (the-as art-joint-anim a1-2))
|
||||
(set! (-> a0-4 param 0) (the float (+ (-> (the-as art-joint-anim a1-2) frames num-frames) -1)))
|
||||
(set! (-> a0-4 param 1) (-> arg0 0))
|
||||
(set! (-> a0-4 frame-num) 0.0)
|
||||
(joint-control-channel-group! a0-4 (the-as art-joint-anim a1-2) num-func-seek!)
|
||||
)
|
||||
#t
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch float vs meters.
|
||||
(defmethod set-cam-height! kid-escort ((obj kid-escort) (arg0 vector))
|
||||
(the-as
|
||||
meters
|
||||
(cond
|
||||
((and (-> obj next-state) (= (-> obj next-state name) 'arrested))
|
||||
(set-vector! arg0 49152.0 12288.0 49152.0 1.0)
|
||||
(vector<-cspace+vector! arg0 (-> obj node-list data 2) arg0)
|
||||
(if (logtest? (-> obj focus-status) (focus-status under-water))
|
||||
(set! (-> arg0 y) (+ (get-water-height obj) (-> *setting-control* cam-current target-height)))
|
||||
)
|
||||
)
|
||||
(else
|
||||
((method-of-type bot set-cam-height!) obj arg0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod get-penetrate-info kid-escort ((obj kid-escort))
|
||||
"@returns the allowed way(s) this enemy can take damage
|
||||
@see [[penetrate]] and [[penetrated-by-all&hit-points->penetrated-by]]"
|
||||
(let ((v1-1 ((method-of-type bot get-penetrate-info) obj)))
|
||||
(logior (penetrate jak-yellow-shot jak-red-shot jak-blue-shot) v1-1)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod bot-method-193 kid-escort ((obj kid-escort))
|
||||
(let* ((t9-0 (method-of-type bot bot-method-193))
|
||||
(v0-0 (t9-0 obj))
|
||||
)
|
||||
(if (and (not v0-0) (logtest? #x1c00000 (-> obj incoming penetrate-using)))
|
||||
(set! v0-0 #t)
|
||||
)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod enemy-method-79 kid-escort ((obj kid-escort) (arg0 int) (arg1 enemy-knocked-info))
|
||||
(local-vars (gp-0 symbol))
|
||||
(case arg0
|
||||
((3)
|
||||
(set! gp-0 (ja-done? 0))
|
||||
(let ((f30-0 1.0))
|
||||
(if (>= (ja-aframe-num 0) 5.0)
|
||||
(set! f30-0 0.28)
|
||||
)
|
||||
(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) f30-0)
|
||||
(joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! gp-0 ((method-of-type bot enemy-method-79) obj arg0 arg1))
|
||||
)
|
||||
)
|
||||
gp-0
|
||||
)
|
||||
|
||||
(defmethod want-exit-vehicle? kid-escort ((obj kid-escort) (arg0 vector))
|
||||
(let ((s3-0 (handle->process (-> obj vehicle-handle))))
|
||||
(if (or (not s3-0) (not (-> obj nav)))
|
||||
(return #f)
|
||||
)
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector)))
|
||||
(compute-seat-position (the-as vehicle s3-0) s4-0 (-> obj vehicle-seat-index))
|
||||
(vector-! s4-0 s4-0 (-> (the-as vehicle s3-0) root-override-2 trans))
|
||||
(set! (-> s4-0 y) 0.0)
|
||||
(vector-normalize! s4-0 (+ 14336.0 (vector-length s4-0)))
|
||||
(vector+! s4-0 s4-0 (-> (the-as vehicle s3-0) root-override-2 trans))
|
||||
(let ((s3-1 (new 'stack-no-clear 'collide-query)))
|
||||
(when (enemy-above-ground? obj s3-1 s4-0 (collide-spec backgnd) 8192.0 81920.0 1024.0)
|
||||
(set! (-> s4-0 y) (-> s3-1 best-other-tri intersect y))
|
||||
(let ((s3-2 (new 'stack-no-clear 'vector)))
|
||||
(do-navigation-to-destination (-> obj nav state) (-> obj root-override2 trans))
|
||||
(when (cloest-point-on-mesh (-> obj nav) s3-2 s4-0 (the-as nav-poly #f))
|
||||
(let ((f0-4 2048.0))
|
||||
(when (>= (* f0-4 f0-4) (vector-vector-xz-distance-squared s3-2 s4-0))
|
||||
(set! (-> arg0 quad) (-> s3-2 quad))
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod check-vehicle-exit kid-escort ((obj kid-escort))
|
||||
(local-vars (v1-25 enemy-flag))
|
||||
(with-pp
|
||||
(when (logtest? (focus-status pilot) (-> obj focus-status))
|
||||
(let ((s5-0 (handle->process (-> obj vehicle-handle))))
|
||||
(when (or (not s5-0) (logtest? (-> (the-as vehicle s5-0) flags) (rigid-body-object-flag dead)))
|
||||
(set! (-> obj bot-flags) (logior (bot-flags bf17) (-> obj bot-flags)))
|
||||
(logclear! (-> obj bot-flags) (bot-flags bf15))
|
||||
(logclear! (-> obj focus-status) (focus-status pilot-riding pilot))
|
||||
(if (the-as vehicle s5-0)
|
||||
(remove-rider (the-as vehicle s5-0) obj)
|
||||
)
|
||||
(set! (-> obj vehicle-seat-index) -1)
|
||||
(set! (-> obj vehicle-handle) (the-as handle #f))
|
||||
(logior! (-> obj root-override2 nav-flags) (nav-flags has-root-sphere))
|
||||
(let* ((s4-0 (-> obj root-override2 quat))
|
||||
(f30-0 (quaternion-y-angle s4-0))
|
||||
)
|
||||
(quaternion-identity! s4-0)
|
||||
(quaternion-rotate-y! s4-0 s4-0 f30-0)
|
||||
)
|
||||
(let ((v1-24 (-> obj enemy-flags)))
|
||||
(if (logtest? v1-24 (enemy-flag checking-water))
|
||||
(set! v1-25 (logior v1-24 (enemy-flag enable-on-active)))
|
||||
(set! v1-25 (logclear v1-24 (enemy-flag enable-on-active)))
|
||||
)
|
||||
)
|
||||
(set! (-> obj enemy-flags) v1-25)
|
||||
(let ((s4-2 (vector-!
|
||||
(new 'stack-no-clear 'vector)
|
||||
(-> obj root-override2 trans)
|
||||
(-> (the-as vehicle s5-0) root-override-2 trans)
|
||||
)
|
||||
)
|
||||
)
|
||||
(vector-normalize! s4-2 57344.0)
|
||||
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-4 from) (process->ppointer pp))
|
||||
(set! (-> a1-4 num-params) 2)
|
||||
(set! (-> a1-4 message) 'attack)
|
||||
(set! (-> a1-4 param 0) (the-as uint #f))
|
||||
(let ((v1-31 (new 'static 'attack-info :mask (attack-info-mask vector id attacker-velocity knock))))
|
||||
(let* ((a0-23 *game-info*)
|
||||
(a2-2 (+ (-> a0-23 attack-id) 1))
|
||||
)
|
||||
(set! (-> a0-23 attack-id) a2-2)
|
||||
(set! (-> v1-31 id) a2-2)
|
||||
)
|
||||
(set! (-> v1-31 vector quad) (-> s4-2 quad))
|
||||
(set! (-> v1-31 attacker-velocity quad) (-> s4-2 quad))
|
||||
(set! (-> v1-31 knock) (the-as uint 8))
|
||||
(set! (-> a1-4 param 1) (the-as uint v1-31))
|
||||
)
|
||||
(send-event-function obj a1-4)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod go-hostile kid-escort ((obj kid-escort))
|
||||
(cond
|
||||
((logtest? (bot-flags bf17) (-> obj bot-flags))
|
||||
(logior! (-> obj bot-flags) (bot-flags bf09))
|
||||
(logclear! (-> obj enemy-flags) (enemy-flag enable-on-active checking-water))
|
||||
(logclear! (-> obj focus-status) (focus-status dangerous))
|
||||
(logclear! (-> obj enemy-flags) (enemy-flag check-water))
|
||||
(logclear! (-> obj mask) (process-mask collectable))
|
||||
(logclear! (-> obj enemy-flags) (enemy-flag look-at-move-dest))
|
||||
(logclear! (-> obj mask) (process-mask actor-pause))
|
||||
(logclear! (-> obj enemy-flags) (enemy-flag notice))
|
||||
(logior! (-> obj focus-status) (focus-status disable))
|
||||
(go (method-of-object obj knocked-off-vehicle))
|
||||
)
|
||||
(else
|
||||
(react-to-focus obj)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod enemy-method-102 kid-escort ((obj kid-escort))
|
||||
(if (logtest? (bot-flags bf19) (-> obj bot-flags))
|
||||
#f
|
||||
((method-of-type bot enemy-method-102) obj)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod go-idle kid-escort ((obj kid-escort))
|
||||
(cond
|
||||
((task-node-closed? (game-task-node city-escort-kid-resolution))
|
||||
(cleanup-for-death obj)
|
||||
(go (method-of-object obj die-fast))
|
||||
)
|
||||
(else
|
||||
(check-arrest obj)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -7,3 +7,397 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
;; WARN: Return type mismatch float vs none.
|
||||
(defun kid4-update-spot-to-track-crocadog ((arg0 kid-escort))
|
||||
(let* ((s5-0 (handle->process (-> arg0 crocadog-handle)))
|
||||
(a0-5 (if (type? s5-0 process-focusable)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when a0-5
|
||||
(let ((v1-4 (get-trans (the-as process-focusable a0-5) 0))
|
||||
(a0-6 (-> arg0 spot))
|
||||
)
|
||||
(set! (-> a0-6 center x) (-> v1-4 x))
|
||||
(set! (-> a0-6 center y) (-> v1-4 y))
|
||||
(set! (-> a0-6 center z) (-> v1-4 z))
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(define *kid4-course*
|
||||
(new 'static 'bot-course
|
||||
:course-id #xb
|
||||
:spot-count #x8
|
||||
: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 kid-escort))
|
||||
(process-entity-status! arg0 (entity-perm-status no-kill) #t)
|
||||
(clear-speech-flags! arg0)
|
||||
(logior! (-> arg0 focus-status) (focus-status disable))
|
||||
(set! (-> arg0 notice-enemy-dist) 0.0)
|
||||
(let ((v1-5 (-> arg0 root-override2 root-prim)))
|
||||
(set! (-> v1-5 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-5 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
0
|
||||
(move-to-point! (-> arg0 root-override2) (the-as vector (-> arg0 course spots 0)))
|
||||
(logclear! (-> arg0 mask) (process-mask actor-pause))
|
||||
(logclear! (-> arg0 enemy-flags) (enemy-flag notice))
|
||||
(let ((v1-16 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-16 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-16 bytes 6) (the-as uint 0))
|
||||
(set! (-> v1-16 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-16) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort))
|
||||
(when (< 1 (-> arg1 waypoint-request))
|
||||
(let* ((a0-2 (-> arg1 actor-group 0 data 0 actor))
|
||||
(v1-4 (if a0-2
|
||||
(-> a0-2 extra process)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when v1-4
|
||||
(set! (-> arg1 master-handle) (process->handle v1-4))
|
||||
(set! (-> arg1 crocadog-handle) (-> (the-as hal-escort v1-4) slave-handle 1))
|
||||
(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
|
||||
:nav-mesh-index -1
|
||||
:skip-to #xe
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(add-icon! *minimap* arg0 (the-as uint 24) (the-as int #f) (the-as vector #t) 0)
|
||||
(let ((v1-3 (-> arg0 root-override2 root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (-> arg0 root-override2 backup-collide-as))
|
||||
(set! (-> v1-3 prim-core collide-with) (-> arg0 root-override2 backup-collide-with))
|
||||
)
|
||||
(logclear! (-> arg0 focus-status) (focus-status disable))
|
||||
(set! (-> arg0 focus-status) (logior (focus-status arrestable) (-> arg0 focus-status)))
|
||||
(let ((v1-9 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-9 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-9 bytes 6) (the-as uint 1))
|
||||
(set! (-> v1-9 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-9) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort))
|
||||
(let* ((s5-0 (handle->process (-> arg1 crocadog-handle)))
|
||||
(a0-5 (if (type? s5-0 process-focusable)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and a0-5 (>= (the-as int (send-event a0-5 'query 'waypoint)) 17))
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 17 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update (lambda ((arg0 kid-escort)) (kid4-update-spot-to-track-crocadog arg0) (none))
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 14
|
||||
:nav-mesh-index -1
|
||||
:skip-to #x13
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-1 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-1 bytes 6) (the-as uint 3))
|
||||
(set! (-> v1-1 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-1) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort))
|
||||
(let* ((s5-0 (handle->process (-> arg1 crocadog-handle)))
|
||||
(a0-5 (if (type? s5-0 process-focusable)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and a0-5 (>= (the-as int (send-event a0-5 'query 'waypoint)) 17))
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 17 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update (lambda ((arg0 kid-escort)) (kid4-update-spot-to-track-crocadog arg0) (none))
|
||||
:on-skipping-here (lambda ((arg0 kid-escort))
|
||||
(let ((v1-1 (-> arg0 root-override2 root-prim)))
|
||||
(set! (-> v1-1 prim-core collide-as) (-> arg0 root-override2 backup-collide-as))
|
||||
(set! (-> v1-1 prim-core collide-with) (-> arg0 root-override2 backup-collide-with))
|
||||
)
|
||||
(logclear! (-> arg0 focus-status) (focus-status disable))
|
||||
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
|
||||
(send-event arg0 'move-trans (-> arg0 course spots 2))
|
||||
(none)
|
||||
)
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 17
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-1 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-1 bytes 6) (the-as uint 4))
|
||||
(set! (-> v1-1 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-1) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort)) (when (logtest? (focus-status pilot) (-> arg1 focus-status))
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 18 #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 18
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(clear-poi-and-focus! arg0)
|
||||
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-3 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-3 bytes 6) (the-as uint 4))
|
||||
(set! (-> v1-3 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-3) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort))
|
||||
(when (and (not (logtest? (focus-status pilot) (-> arg1 focus-status)))
|
||||
(zero? (logand (bot-flags bf17) (-> arg1 bot-flags)))
|
||||
)
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 19 #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 19
|
||||
:nav-mesh-index 1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(logior! (-> arg0 focus-status) (focus-status disable))
|
||||
(set! (-> arg0 focus-status) (logior (focus-status arrestable) (-> arg0 focus-status)))
|
||||
(let ((v1-5 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-5 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-5 bytes 6) (the-as uint 1))
|
||||
(set! (-> v1-5 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-5) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort))
|
||||
(let* ((s5-0 (handle->process (-> arg1 crocadog-handle)))
|
||||
(a0-5 (if (type? s5-0 process-focusable)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and a0-5 (>= (the-as int (send-event a0-5 'query 'waypoint)) 21))
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 21 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update (lambda ((arg0 object) (arg1 kid-escort))
|
||||
(the-as symbol (kid4-update-spot-to-track-crocadog (the-as kid-escort arg0)))
|
||||
)
|
||||
:on-skipping-here (lambda ((arg0 kid-escort))
|
||||
(let ((v1-1 (-> arg0 root-override2 root-prim)))
|
||||
(set! (-> v1-1 prim-core collide-as) (-> arg0 root-override2 backup-collide-as))
|
||||
(set! (-> v1-1 prim-core collide-with) (-> arg0 root-override2 backup-collide-with))
|
||||
)
|
||||
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
|
||||
(send-event arg0 'move-trans (-> arg0 course spots 5))
|
||||
(none)
|
||||
)
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 21
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(logclear! (-> arg0 focus-status) (focus-status disable))
|
||||
(set! (-> arg0 focus-status) (logior (focus-status arrestable) (-> arg0 focus-status)))
|
||||
(let ((v1-5 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-5 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-5 bytes 6) (the-as uint 1))
|
||||
(set! (-> v1-5 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-5) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort))
|
||||
(let* ((s4-0 (handle->process (-> arg1 crocadog-handle)))
|
||||
(s5-0 (if (type? s4-0 process-focusable)
|
||||
s4-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
|
||||
s5-0
|
||||
(>= (the-as int (send-event s5-0 'query 'waypoint)) 25)
|
||||
)
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 25 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update (lambda ((arg0 kid-escort)) (kid4-update-spot-to-track-crocadog arg0) (none))
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 25
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-1 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-1 bytes 6) (the-as uint 1))
|
||||
(set! (-> v1-1 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-1) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort)) (when (>= (-> arg1 waypoint-request) 26)
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 26 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update (lambda ((arg0 kid-escort)) (kid4-update-spot-to-track-crocadog arg0) (none))
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 26
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(logclear! (-> arg0 focus-status) (focus-status disable))
|
||||
(send-event (ppointer->process (-> arg0 my-simple-focus)) 'move-trans (-> arg0 course spots 7))
|
||||
(set! (-> arg0 poi-handle) (ppointer->handle (-> arg0 my-simple-focus)))
|
||||
(set! (-> arg0 focus-mode) 1)
|
||||
(let ((v1-16 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-16 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-16 bytes 6) (the-as uint 6))
|
||||
(set! (-> v1-16 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-16) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort))
|
||||
(with-pp
|
||||
(when (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 2))
|
||||
(let ((v1-4 (-> arg1 spot)))
|
||||
(set! (-> v1-4 center quad) (-> arg1 root-override2 trans quad))
|
||||
(set! (-> v1-4 center w) 20480.0)
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update #f
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
)
|
||||
:spots (new 'static 'inline-array bot-spot 8
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4704133.0 :y 33341.44 :z 194764.8 :w 10240.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4707041.5 :y 33341.44 :z 711761.94 :w 8192.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4454113.5 :y 33341.44 :z 694026.25 :w 20480.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4488438.0 :y 33341.44 :z 751697.94 :w 20480.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4746608.5 :y 33341.44 :z 715816.94 :w 61440.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4086620.2 :y 32768.0 :z 4637122.5 :w 4096.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4494663.5 :y 102891.52 :z 4493230.0 :w 8192.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4588544.0 :y 112640.0 :z 4589322.0 :w 4096.0))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *bot-course-table* course 11) *kid4-course*)
|
||||
|
||||
@@ -7,3 +7,536 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype ashelin-tanker (ashelin)
|
||||
((suppress traffic-suppression-params :inline :offset-assert 1040)
|
||||
)
|
||||
:heap-base #x3c0
|
||||
:method-count-assert 252
|
||||
:size-assert #x439
|
||||
:flag-assert #xfc03c00439
|
||||
(:methods
|
||||
(suppress-traffic (_type_) none 251)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defmethod go-idle ashelin-tanker ((obj ashelin-tanker))
|
||||
(cond
|
||||
((task-node-closed? (game-task-node city-intercept-tanker-resolution))
|
||||
(cleanup-for-death obj)
|
||||
(go (method-of-object obj die-fast))
|
||||
)
|
||||
(else
|
||||
(go (method-of-object obj hidden))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch vector vs none.
|
||||
(defmethod init! ashelin-tanker ((obj ashelin-tanker))
|
||||
"Set defaults for various fields."
|
||||
(let ((t9-0 (method-of-type ashelin init!)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(let ((v1-1 (-> obj suppress)))
|
||||
(set! (-> v1-1 duration) (the-as uint 300))
|
||||
(set! (-> v1-1 id) -1)
|
||||
(let ((a0-4 (-> v1-1 bbox)))
|
||||
(set! (-> a0-4 min x) 1634304.0)
|
||||
(set! (-> a0-4 min y) 28672.0)
|
||||
(set! (-> a0-4 min z) 1708032.0)
|
||||
(set! (-> a0-4 min w) 1.0)
|
||||
)
|
||||
(set-vector! (-> v1-1 bbox max) 2048000.0 40960.0 2023424.0 1.0)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod suppress-traffic ashelin-tanker ((obj ashelin-tanker))
|
||||
(when *traffic-manager*
|
||||
(let ((a1-0 (new 'stack-no-clear 'traffic-danger-info)))
|
||||
(set! (-> a1-0 sphere quad) (-> (new 'static 'vector :x 1837465.6 :y 34406.4 :z 1868103.6 :w 225280.0) quad))
|
||||
(set! (-> a1-0 velocity quad) (the-as uint128 0))
|
||||
(set! (-> a1-0 notify-radius) 286720.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 tdt4))
|
||||
(add-danger (-> (the-as traffic-manager *traffic-manager*) traffic-engine) a1-0)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(define *ash4-course*
|
||||
(new 'static 'ashelin-course
|
||||
:course-id #x9
|
||||
:speech-count #x2d
|
||||
:spot-count #x1
|
||||
:attack-player-speeches (new 'static 'bot-speech-list-shuffle
|
||||
:flags #xe
|
||||
:last-local-index -1
|
||||
:speech-indexes (new 'static 'boxed-array :type int16 11 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26)
|
||||
)
|
||||
: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 ashelin-tanker))
|
||||
(clear-speech-flags! arg0)
|
||||
(move-to-point! (-> arg0 root-override2) (the-as vector (-> arg0 ash-course spots 0)))
|
||||
(let ((v1-7 (get-task-by-type (-> arg0 ai-ctrl) asht-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 -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-7) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker)) (let ((v1-0 *traffic-manager*))
|
||||
(cond
|
||||
((not (logtest? (-> arg1 waypoint-bits) 1))
|
||||
(if v1-0
|
||||
(logior! (-> arg1 waypoint-bits) 1)
|
||||
)
|
||||
#f
|
||||
)
|
||||
((not (logtest? (-> arg1 waypoint-bits) 2))
|
||||
(logior! (-> arg1 waypoint-bits) 2)
|
||||
#f
|
||||
)
|
||||
((not (logtest? (-> arg1 waypoint-bits) 4))
|
||||
(logior! (-> arg1 waypoint-bits) 4)
|
||||
#f
|
||||
)
|
||||
(else
|
||||
(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
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(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) asht-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 -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-3) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker))
|
||||
(let ((a0-1 *target*))
|
||||
(when a0-1
|
||||
(let ((v1-2 (get-trans a0-1 0)))
|
||||
(if (and (>= (-> v1-2 x) 1638400.0)
|
||||
(>= 2031616.0 (-> v1-2 x))
|
||||
(>= (-> v1-2 z) 1703936.0)
|
||||
(>= 2027520.0 (-> v1-2 z))
|
||||
)
|
||||
(logior! (-> arg1 bot-task-bits) 1)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-8 (get-current-task-event (-> arg1 task))))
|
||||
(when (and (logtest? (-> arg1 bot-task-bits) 1) (= (-> v1-8 action) (game-task-action say)))
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 3 #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 3
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(set-setting! 'calm #t 0 0)
|
||||
(set-setting! 'exclusive-task #f 0 42)
|
||||
(let ((v1-5 (get-task-by-type (-> arg0 ai-ctrl) asht-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 -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-5) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker)) (let ((v1-1 (get-current-task-event (-> arg1 task))))
|
||||
(when (scene-play arg1 (the-as string (-> v1-1 scene)) #f)
|
||||
(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
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) asht-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 -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-1) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker)) (when (scene-release? arg1)
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 5 #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 5
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(with-pp
|
||||
(send-event arg0 'hide #f)
|
||||
(remove-setting! 'calm)
|
||||
(set-setting! 'music 'danger9 0 0)
|
||||
(set! (-> arg0 notice-enemy-dist) 245760.0)
|
||||
(logior! (-> arg0 bot-flags) (bot-flags bf06))
|
||||
(set! (-> arg0 bot-task-bits) (logand -3 (-> arg0 bot-task-bits)))
|
||||
(let ((a1-3 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-3 from) (process->ppointer pp))
|
||||
(set! (-> a1-3 num-params) 0)
|
||||
(set! (-> a1-3 message) 'trigger)
|
||||
(let ((t9-3 send-event-function)
|
||||
(v1-18 (-> arg0 actor-group 0 data 0 actor))
|
||||
)
|
||||
(t9-3
|
||||
(if v1-18
|
||||
(-> v1-18 extra process)
|
||||
)
|
||||
a1-3
|
||||
)
|
||||
)
|
||||
)
|
||||
(ashelin-method-250 arg0 #t)
|
||||
(add-process *gui-control* arg0 (gui-channel art-load) (gui-action queue) "city-intercept-tanker-res" -99.0 0)
|
||||
(let ((v1-26 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
(set! (-> v1-26 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-26 bytes 6) (the-as uint 0))
|
||||
(set! (-> v1-26 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-26) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker)) (with-pp
|
||||
(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) 'query)
|
||||
(set! (-> a1-1 param 0) (the-as uint 'beaten))
|
||||
(let ((t9-0 send-event-function)
|
||||
(v1-7 (-> arg1 actor-group 0 data 0 actor))
|
||||
)
|
||||
(when (t9-0
|
||||
(if v1-7
|
||||
(-> v1-7 extra process)
|
||||
)
|
||||
a1-1
|
||||
)
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 6 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
:on-update (lambda ((arg0 ashelin-tanker))
|
||||
(suppress-traffic arg0)
|
||||
(when (logtest? (-> arg0 bot-task-bits) 2)
|
||||
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
|
||||
(go-to-waypoint! arg0 9 #f)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 6
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(with-pp
|
||||
(set! (-> arg0 waypoint-time0) (-> pp clock frame-counter))
|
||||
(ashelin-method-250 arg0 #f)
|
||||
(task-node-close! (game-task-node city-intercept-tanker-battle))
|
||||
(remove-setting! 'sound-mode)
|
||||
(remove-setting! 'music)
|
||||
(when (not (channel-active? arg0 (the-as uint 0)))
|
||||
(let ((v1-12 (get-rand-int arg0 3)))
|
||||
(cond
|
||||
((zero? v1-12)
|
||||
(play-speech arg0 42)
|
||||
)
|
||||
((= v1-12 1)
|
||||
(play-speech arg0 43)
|
||||
)
|
||||
(else
|
||||
(play-speech arg0 44)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-20 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
(set! (-> v1-20 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-20 bytes 6) (the-as uint 0))
|
||||
(set! (-> v1-20 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-20) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker))
|
||||
(let ((s5-0 (get-current-task-event (-> arg1 task))))
|
||||
(when (and (= (-> s5-0 action) (game-task-action say))
|
||||
(not (channel-active? arg1 (the-as uint 0)))
|
||||
(scene-play arg1 (the-as string (-> s5-0 scene)) #f)
|
||||
)
|
||||
(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
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
:on-update (lambda ((arg0 ashelin-tanker))
|
||||
(suppress-traffic arg0)
|
||||
(when (logtest? (-> arg0 bot-task-bits) 2)
|
||||
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
|
||||
(go-to-waypoint! arg0 9 #f)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 7
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(logclear! (-> arg0 bot-flags) (bot-flags bf06))
|
||||
(bot-method-196 arg0)
|
||||
(let ((v1-5 (-> arg0 root-override2 root-prim)))
|
||||
(set! (-> v1-5 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-5 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
(set! (-> arg0 root-override2 backup-collide-as) (collide-spec))
|
||||
(set! (-> arg0 root-override2 backup-collide-with) (collide-spec))
|
||||
0
|
||||
(send-event arg0 'hide #t)
|
||||
(let ((v1-15 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
(set! (-> v1-15 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-15 bytes 6) (the-as uint 0))
|
||||
(set! (-> v1-15 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-15) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker)) (when (scene-release? arg1)
|
||||
(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 ashelin-tanker)) (create-or-update-suppression-box (-> arg0 suppress)) (none))
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 8
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(remove-setting! 'exclusive-task)
|
||||
(process-entity-status! arg0 (entity-perm-status bit-4) #f)
|
||||
(process-entity-status! arg0 (entity-perm-status no-kill) #f)
|
||||
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) asht-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 -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-3) check-done)
|
||||
(the-as (function asht-wait-spot ashelin symbol) (lambda ((arg0 ashelin-tanker)) #f))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update (lambda ((arg0 ashelin-tanker)) (create-or-update-suppression-box (-> arg0 suppress)) (none))
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 9
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) asht-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 -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-1) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker)) (send-event arg1 'instant-death) (none))
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update (lambda ((arg0 ashelin-tanker))
|
||||
(suppress-traffic arg0)
|
||||
(create-or-update-suppression-box (-> arg0 suppress))
|
||||
(none)
|
||||
)
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
)
|
||||
:speeches (new 'static 'inline-array bot-speech-info 45
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha001")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha008")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha009")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha010")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha011")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha012")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha013")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha002")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf10) :hold-time #x5a :slave-id -1 :name "asha003")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf06) :hold-time #x5a :slave-id -1 :name "asha004")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf06) :hold-time #x5a :slave-id -1 :name "asha005")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha006")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf08) :hold-time #x5a :slave-id -1 :name "asha007")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha018")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha019")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha020")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha021")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha022")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha023")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha024")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha025")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha026")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha027")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha028")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha029")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf10) :hold-time #x5a :slave-id -1 :name "asha030")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha031")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha035")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha036")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha039")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha041")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha050")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha051")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha052")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha054")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha014")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha015")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha016")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha017")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf11) :hold-time #x5a :slave-id -1 :name "asha038")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf11) :hold-time #x5a :slave-id -1 :name "asha044")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf11) :hold-time #x5a :slave-id -1 :name "asha049")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha032")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha033")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha034")
|
||||
)
|
||||
:speech-tunings (new 'static 'inline-array bot-speech-tuning 1
|
||||
(new 'static 'bot-speech-tuning :fo-min 20 :fo-max 100 :fo-curve #xb :trans? #t)
|
||||
)
|
||||
:spots (new 'static 'inline-array bot-spot 1
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 1902510.1 :y 33587.2 :z 1786101.8 :w 61440.0))
|
||||
)
|
||||
:ouch-speeches (new 'static 'bot-speech-list-shuffle
|
||||
:flags #xe
|
||||
:last-local-index -1
|
||||
:speech-indexes (new 'static 'boxed-array :type int16 35 36 37 38 39 40 41)
|
||||
)
|
||||
:victory-speeches (new 'static 'bot-speech-list-shuffle
|
||||
:flags #xe
|
||||
:last-local-index -1
|
||||
:speech-indexes (new 'static 'boxed-array :type int16 0 1 2 3 4 5 6 27 28 29 30 31 32 33 34)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(set! (-> *bot-course-table* course 9) *ash4-course*)
|
||||
|
||||
+18
-18
@@ -15,20 +15,20 @@
|
||||
:size-assert #x410
|
||||
:flag-assert #xef03900410
|
||||
(:methods
|
||||
(crocadog-escort-method-225 () none 225)
|
||||
(crocadog-escort-method-226 () none 226)
|
||||
(crocadog-escort-method-227 () none 227)
|
||||
(crocadog-escort-method-228 () none 228)
|
||||
(crocadog-escort-method-229 () none 229)
|
||||
(crocadog-escort-method-230 () none 230)
|
||||
(crocadog-escort-method-231 () none 231)
|
||||
(crocadog-escort-method-232 () none 232)
|
||||
(crocadog-escort-method-233 () none 233)
|
||||
(crocadog-escort-method-234 () none 234)
|
||||
(crocadog-escort-method-235 () none 235)
|
||||
(crocadog-escort-method-236 () none 236)
|
||||
(crocadog-escort-method-237 () none 237)
|
||||
(crocadog-escort-method-238 () none 238)
|
||||
(traveling () _type_ :state 225)
|
||||
(traveling-blocked () _type_ :state 226)
|
||||
(waiting-idle () _type_ :state 227)
|
||||
(waiting-turn () _type_ :state 228)
|
||||
(move-to-vehicle () _type_ :state 229)
|
||||
(board-vehicle () _type_ :state 230)
|
||||
(ride-vehicle () _type_ :state 231)
|
||||
(exit-vehicle () _type_ :state 232)
|
||||
(knocked-off-vehicle () _type_ :state 233)
|
||||
(want-exit-vehicle? (_type_ vector) symbol 234)
|
||||
(go-idle-or-move (_type_) none 235)
|
||||
(go-waiting-turn (_type_) none 236)
|
||||
(check-vehicle-exit (_type_) none 237)
|
||||
(play-walk-anim (_type_) none 238)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -61,10 +61,10 @@
|
||||
|
||||
;; definition of type crocesct-wait-spot
|
||||
(deftype crocesct-wait-spot (ai-task)
|
||||
((check-done basic :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes int8 6 :offset 38)
|
||||
((check-done (function crocesct-wait-spot crocadog-escort symbol) :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes uint8 6 :offset 38)
|
||||
)
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
|
||||
+1079
File diff suppressed because it is too large
Load Diff
+49
@@ -0,0 +1,49 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition for method 9 of type crocesct-wait-spot
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod reset-task! crocesct-wait-spot ((obj crocesct-wait-spot))
|
||||
(set! (-> obj check-done) #f)
|
||||
(set! (-> obj which-spot) -1)
|
||||
(set! (-> obj num-spots) (the-as uint 0))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type crocesct-wait-spot
|
||||
;; WARN: Return type mismatch symbol vs none.
|
||||
(defmethod ai-task-method-11 crocesct-wait-spot ((obj crocesct-wait-spot) (arg0 bot))
|
||||
(let ((s4-0 (-> obj which-spot)))
|
||||
(when (>= s4-0 0)
|
||||
(let ((s3-0 (-> arg0 course spots (-> obj spot-indexes s4-0))))
|
||||
(if (and (not (outside-spot-radius? arg0 s3-0 (the-as vector #f) #f)) (player-blocking-spot? arg0 s3-0))
|
||||
(set! s4-0 -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (< s4-0 0)
|
||||
(set! s4-0 (choose-spot arg0 (the-as int (-> obj num-spots)) (the-as (pointer uint) (-> obj spot-indexes))))
|
||||
(set! (-> obj which-spot) s4-0)
|
||||
(mem-copy!
|
||||
(the-as pointer (-> arg0 spot))
|
||||
(the-as pointer (-> arg0 course spots (-> obj spot-indexes s4-0)))
|
||||
20
|
||||
)
|
||||
)
|
||||
(if (logtest? *display-bot-marks* (bot-marks-controls bmc16))
|
||||
(bot-debug-draw-spot-sphere
|
||||
arg0
|
||||
(the-as int (-> obj num-spots))
|
||||
(the-as (pointer uint) (-> obj spot-indexes))
|
||||
(the-as int (-> obj spot-indexes s4-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
((-> obj check-done) obj (the-as crocadog-escort arg0))
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
+1060
File diff suppressed because it is too large
Load Diff
+2091
File diff suppressed because it is too large
Load Diff
+19
-19
@@ -14,21 +14,21 @@
|
||||
:size-assert #x400
|
||||
:flag-assert #xf003800400
|
||||
(:methods
|
||||
(kid-escort-method-225 () none 225)
|
||||
(kid-escort-method-226 () none 226)
|
||||
(kid-escort-method-227 () none 227)
|
||||
(kid-escort-method-228 () none 228)
|
||||
(kid-escort-method-229 () none 229)
|
||||
(kid-escort-method-230 () none 230)
|
||||
(kid-escort-method-231 () none 231)
|
||||
(kid-escort-method-232 () none 232)
|
||||
(kid-escort-method-233 () none 233)
|
||||
(kid-escort-method-234 () none 234)
|
||||
(kid-escort-method-235 () none 235)
|
||||
(kid-escort-method-236 () none 236)
|
||||
(kid-escort-method-237 () none 237)
|
||||
(kid-escort-method-238 () none 238)
|
||||
(kid-escort-method-239 () none 239)
|
||||
(traveling () _type_ :state 225)
|
||||
(traveling-blocked () _type_ :state 226)
|
||||
(waiting-idle () _type_ :state 227)
|
||||
(waiting-turn () _type_ :state 228)
|
||||
(move-to-vehicle () _type_ :state 229)
|
||||
(board-vehicle () _type_ :state 230)
|
||||
(ride-vehicle () _type_ :state 231)
|
||||
(exit-vehicle () _type_ :state 232)
|
||||
(knocked-off-vehicle () _type_ :state 233)
|
||||
(arrested () _type_ :state 234)
|
||||
(want-exit-vehicle? (_type_ vector) symbol 235)
|
||||
(check-arrest (_type_) none 236)
|
||||
(go-waiting-turn (_type_) none 237)
|
||||
(check-vehicle-exit (_type_) none 238)
|
||||
(play-walk-anim (_type_) none 239)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -60,10 +60,10 @@
|
||||
|
||||
;; definition of type kidesct-wait-spot
|
||||
(deftype kidesct-wait-spot (ai-task)
|
||||
((check-done basic :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes int8 6 :offset 38)
|
||||
((check-done (function kidesct-wait-spot kid-escort symbol) :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes uint8 6 :offset 38)
|
||||
)
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
|
||||
+1143
File diff suppressed because it is too large
Load Diff
+49
@@ -0,0 +1,49 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition for method 9 of type kidesct-wait-spot
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod reset-task! kidesct-wait-spot ((obj kidesct-wait-spot))
|
||||
(set! (-> obj check-done) #f)
|
||||
(set! (-> obj which-spot) -1)
|
||||
(set! (-> obj num-spots) (the-as uint 0))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type kidesct-wait-spot
|
||||
;; WARN: Return type mismatch symbol vs none.
|
||||
(defmethod ai-task-method-11 kidesct-wait-spot ((obj kidesct-wait-spot) (arg0 bot))
|
||||
(let ((s4-0 (-> obj which-spot)))
|
||||
(when (>= s4-0 0)
|
||||
(let ((s3-0 (-> arg0 course spots (-> obj spot-indexes s4-0))))
|
||||
(if (and (not (outside-spot-radius? arg0 s3-0 (the-as vector #f) #f)) (player-blocking-spot? arg0 s3-0))
|
||||
(set! s4-0 -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (< s4-0 0)
|
||||
(set! s4-0 (choose-spot arg0 (the-as int (-> obj num-spots)) (the-as (pointer uint) (-> obj spot-indexes))))
|
||||
(set! (-> obj which-spot) s4-0)
|
||||
(mem-copy!
|
||||
(the-as pointer (-> arg0 spot))
|
||||
(the-as pointer (-> arg0 course spots (-> obj spot-indexes s4-0)))
|
||||
20
|
||||
)
|
||||
)
|
||||
(if (logtest? *display-bot-marks* (bot-marks-controls bmc16))
|
||||
(bot-debug-draw-spot-sphere
|
||||
arg0
|
||||
(the-as int (-> obj num-spots))
|
||||
(the-as (pointer uint) (-> obj spot-indexes))
|
||||
(the-as int (-> obj spot-indexes s4-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
((-> obj check-done) obj (the-as kid-escort arg0))
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
+404
@@ -0,0 +1,404 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition for function kid4-update-spot-to-track-crocadog
|
||||
;; WARN: Return type mismatch float vs none.
|
||||
(defun kid4-update-spot-to-track-crocadog ((arg0 kid-escort))
|
||||
(let* ((s5-0 (handle->process (-> arg0 crocadog-handle)))
|
||||
(a0-5 (if (type? s5-0 process-focusable)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when a0-5
|
||||
(let ((v1-4 (get-trans (the-as process-focusable a0-5) 0))
|
||||
(a0-6 (-> arg0 spot))
|
||||
)
|
||||
(set! (-> a0-6 center x) (-> v1-4 x))
|
||||
(set! (-> a0-6 center y) (-> v1-4 y))
|
||||
(set! (-> a0-6 center z) (-> v1-4 z))
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for symbol *kid4-course*, type bot-course
|
||||
(define *kid4-course*
|
||||
(new 'static 'bot-course
|
||||
:course-id #xb
|
||||
:spot-count #x8
|
||||
: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 kid-escort))
|
||||
(process-entity-status! arg0 (entity-perm-status no-kill) #t)
|
||||
(clear-speech-flags! arg0)
|
||||
(logior! (-> arg0 focus-status) (focus-status disable))
|
||||
(set! (-> arg0 notice-enemy-dist) 0.0)
|
||||
(let ((v1-5 (-> arg0 root-override2 root-prim)))
|
||||
(set! (-> v1-5 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-5 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
0
|
||||
(move-to-point! (-> arg0 root-override2) (the-as vector (-> arg0 course spots 0)))
|
||||
(logclear! (-> arg0 mask) (process-mask actor-pause))
|
||||
(logclear! (-> arg0 enemy-flags) (enemy-flag notice))
|
||||
(let ((v1-16 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-16 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-16 bytes 6) (the-as uint 0))
|
||||
(set! (-> v1-16 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-16) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort))
|
||||
(when (< 1 (-> arg1 waypoint-request))
|
||||
(let* ((a0-2 (-> arg1 actor-group 0 data 0 actor))
|
||||
(v1-4 (if a0-2
|
||||
(-> a0-2 extra process)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when v1-4
|
||||
(set! (-> arg1 master-handle) (process->handle v1-4))
|
||||
(set! (-> arg1 crocadog-handle) (-> (the-as hal-escort v1-4) slave-handle 1))
|
||||
(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
|
||||
:nav-mesh-index -1
|
||||
:skip-to #xe
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(add-icon! *minimap* arg0 (the-as uint 24) (the-as int #f) (the-as vector #t) 0)
|
||||
(let ((v1-3 (-> arg0 root-override2 root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (-> arg0 root-override2 backup-collide-as))
|
||||
(set! (-> v1-3 prim-core collide-with) (-> arg0 root-override2 backup-collide-with))
|
||||
)
|
||||
(logclear! (-> arg0 focus-status) (focus-status disable))
|
||||
(set! (-> arg0 focus-status) (logior (focus-status arrestable) (-> arg0 focus-status)))
|
||||
(let ((v1-9 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-9 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-9 bytes 6) (the-as uint 1))
|
||||
(set! (-> v1-9 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-9) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort))
|
||||
(let* ((s5-0 (handle->process (-> arg1 crocadog-handle)))
|
||||
(a0-5 (if (type? s5-0 process-focusable)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and a0-5 (>= (the-as int (send-event a0-5 'query 'waypoint)) 17))
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 17 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update (lambda ((arg0 kid-escort)) (kid4-update-spot-to-track-crocadog arg0) (none))
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 14
|
||||
:nav-mesh-index -1
|
||||
:skip-to #x13
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-1 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-1 bytes 6) (the-as uint 3))
|
||||
(set! (-> v1-1 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-1) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort))
|
||||
(let* ((s5-0 (handle->process (-> arg1 crocadog-handle)))
|
||||
(a0-5 (if (type? s5-0 process-focusable)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and a0-5 (>= (the-as int (send-event a0-5 'query 'waypoint)) 17))
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 17 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update (lambda ((arg0 kid-escort)) (kid4-update-spot-to-track-crocadog arg0) (none))
|
||||
:on-skipping-here (lambda ((arg0 kid-escort))
|
||||
(let ((v1-1 (-> arg0 root-override2 root-prim)))
|
||||
(set! (-> v1-1 prim-core collide-as) (-> arg0 root-override2 backup-collide-as))
|
||||
(set! (-> v1-1 prim-core collide-with) (-> arg0 root-override2 backup-collide-with))
|
||||
)
|
||||
(logclear! (-> arg0 focus-status) (focus-status disable))
|
||||
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
|
||||
(send-event arg0 'move-trans (-> arg0 course spots 2))
|
||||
(none)
|
||||
)
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 17
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-1 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-1 bytes 6) (the-as uint 4))
|
||||
(set! (-> v1-1 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-1) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort)) (when (logtest? (focus-status pilot) (-> arg1 focus-status))
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 18 #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 18
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(clear-poi-and-focus! arg0)
|
||||
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-3 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-3 bytes 6) (the-as uint 4))
|
||||
(set! (-> v1-3 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-3) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort))
|
||||
(when (and (not (logtest? (focus-status pilot) (-> arg1 focus-status)))
|
||||
(zero? (logand (bot-flags bf17) (-> arg1 bot-flags)))
|
||||
)
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 19 #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 19
|
||||
:nav-mesh-index 1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(logior! (-> arg0 focus-status) (focus-status disable))
|
||||
(set! (-> arg0 focus-status) (logior (focus-status arrestable) (-> arg0 focus-status)))
|
||||
(let ((v1-5 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-5 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-5 bytes 6) (the-as uint 1))
|
||||
(set! (-> v1-5 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-5) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort))
|
||||
(let* ((s5-0 (handle->process (-> arg1 crocadog-handle)))
|
||||
(a0-5 (if (type? s5-0 process-focusable)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and a0-5 (>= (the-as int (send-event a0-5 'query 'waypoint)) 21))
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 21 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update (lambda ((arg0 object) (arg1 kid-escort))
|
||||
(the-as symbol (kid4-update-spot-to-track-crocadog (the-as kid-escort arg0)))
|
||||
)
|
||||
:on-skipping-here (lambda ((arg0 kid-escort))
|
||||
(let ((v1-1 (-> arg0 root-override2 root-prim)))
|
||||
(set! (-> v1-1 prim-core collide-as) (-> arg0 root-override2 backup-collide-as))
|
||||
(set! (-> v1-1 prim-core collide-with) (-> arg0 root-override2 backup-collide-with))
|
||||
)
|
||||
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
|
||||
(send-event arg0 'move-trans (-> arg0 course spots 5))
|
||||
(none)
|
||||
)
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 21
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(logclear! (-> arg0 focus-status) (focus-status disable))
|
||||
(set! (-> arg0 focus-status) (logior (focus-status arrestable) (-> arg0 focus-status)))
|
||||
(let ((v1-5 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-5 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-5 bytes 6) (the-as uint 1))
|
||||
(set! (-> v1-5 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-5) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort))
|
||||
(let* ((s4-0 (handle->process (-> arg1 crocadog-handle)))
|
||||
(s5-0 (if (type? s4-0 process-focusable)
|
||||
s4-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
|
||||
s5-0
|
||||
(>= (the-as int (send-event s5-0 'query 'waypoint)) 25)
|
||||
)
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 25 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update (lambda ((arg0 kid-escort)) (kid4-update-spot-to-track-crocadog arg0) (none))
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 25
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-1 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-1 bytes 6) (the-as uint 1))
|
||||
(set! (-> v1-1 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-1) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort)) (when (>= (-> arg1 waypoint-request) 26)
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 26 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update (lambda ((arg0 kid-escort)) (kid4-update-spot-to-track-crocadog arg0) (none))
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 26
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 kid-escort))
|
||||
(logclear! (-> arg0 focus-status) (focus-status disable))
|
||||
(send-event (ppointer->process (-> arg0 my-simple-focus)) 'move-trans (-> arg0 course spots 7))
|
||||
(set! (-> arg0 poi-handle) (ppointer->handle (-> arg0 my-simple-focus)))
|
||||
(set! (-> arg0 focus-mode) 1)
|
||||
(let ((v1-16 (get-task-by-type (-> arg0 ai-ctrl) kidesct-wait-spot arg0)))
|
||||
(set! (-> v1-16 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-16 bytes 6) (the-as uint 6))
|
||||
(set! (-> v1-16 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as kidesct-wait-spot v1-16) check-done)
|
||||
(the-as
|
||||
(function kidesct-wait-spot kid-escort symbol)
|
||||
(lambda ((arg0 object) (arg1 kid-escort))
|
||||
(with-pp
|
||||
(when (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 2))
|
||||
(let ((v1-4 (-> arg1 spot)))
|
||||
(set! (-> v1-4 center quad) (-> arg1 root-override2 trans quad))
|
||||
(set! (-> v1-4 center w) 20480.0)
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update #f
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
)
|
||||
:spots (new 'static 'inline-array bot-spot 8
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4704133.0 :y 33341.44 :z 194764.8 :w 10240.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4707041.5 :y 33341.44 :z 711761.94 :w 8192.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4454113.5 :y 33341.44 :z 694026.25 :w 20480.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4488438.0 :y 33341.44 :z 751697.94 :w 20480.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4746608.5 :y 33341.44 :z 715816.94 :w 61440.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4086620.2 :y 32768.0 :z 4637122.5 :w 4096.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4494663.5 :y 102891.52 :z 4493230.0 :w 8192.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 4588544.0 :y 112640.0 :z 4589322.0 :w 4096.0))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *bot-course-table* course 11) *kid4-course*)
|
||||
|
||||
|
||||
|
||||
|
||||
Generated
Vendored
+560
@@ -0,0 +1,560 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type ashelin-tanker
|
||||
(deftype ashelin-tanker (ashelin)
|
||||
((suppress traffic-suppression-params :inline :offset-assert 1040)
|
||||
)
|
||||
:heap-base #x3c0
|
||||
:method-count-assert 252
|
||||
:size-assert #x439
|
||||
:flag-assert #xfc03c00439
|
||||
(:methods
|
||||
(suppress-traffic (_type_) none 251)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type ashelin-tanker
|
||||
(defmethod inspect ashelin-tanker ((obj ashelin-tanker))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(let ((t9-0 (method-of-type ashelin inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~2Tsuppress: #<traffic-suppression-params @ #x~X>~%" (-> obj suppress))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition for method 116 of type ashelin-tanker
|
||||
;; WARN: Return type mismatch object vs none.
|
||||
(defmethod go-idle ashelin-tanker ((obj ashelin-tanker))
|
||||
(cond
|
||||
((task-node-closed? (game-task-node city-intercept-tanker-resolution))
|
||||
(cleanup-for-death obj)
|
||||
(go (method-of-object obj die-fast))
|
||||
)
|
||||
(else
|
||||
(go (method-of-object obj hidden))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 210 of type ashelin-tanker
|
||||
;; WARN: Return type mismatch vector vs none.
|
||||
(defmethod init! ashelin-tanker ((obj ashelin-tanker))
|
||||
"Set defaults for various fields."
|
||||
(let ((t9-0 (method-of-type ashelin init!)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(let ((v1-1 (-> obj suppress)))
|
||||
(set! (-> v1-1 duration) (the-as uint 300))
|
||||
(set! (-> v1-1 id) -1)
|
||||
(let ((a0-4 (-> v1-1 bbox)))
|
||||
(set! (-> a0-4 min x) 1634304.0)
|
||||
(set! (-> a0-4 min y) 28672.0)
|
||||
(set! (-> a0-4 min z) 1708032.0)
|
||||
(set! (-> a0-4 min w) 1.0)
|
||||
)
|
||||
(set-vector! (-> v1-1 bbox max) 2048000.0 40960.0 2023424.0 1.0)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 251 of type ashelin-tanker
|
||||
;; INFO: Used lq/sq
|
||||
(defmethod suppress-traffic ashelin-tanker ((obj ashelin-tanker))
|
||||
(when *traffic-manager*
|
||||
(let ((a1-0 (new 'stack-no-clear 'traffic-danger-info)))
|
||||
(set! (-> a1-0 sphere quad) (-> (new 'static 'vector :x 1837465.6 :y 34406.4 :z 1868103.6 :w 225280.0) quad))
|
||||
(set! (-> a1-0 velocity quad) (the-as uint128 0))
|
||||
(set! (-> a1-0 notify-radius) 286720.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 tdt4))
|
||||
(add-danger (-> (the-as traffic-manager *traffic-manager*) traffic-engine) a1-0)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for symbol *ash4-course*, type ashelin-course
|
||||
(define *ash4-course*
|
||||
(new 'static 'ashelin-course
|
||||
:course-id #x9
|
||||
:speech-count #x2d
|
||||
:spot-count #x1
|
||||
:attack-player-speeches (new 'static 'bot-speech-list-shuffle
|
||||
:flags #xe
|
||||
:last-local-index -1
|
||||
:speech-indexes (new 'static 'boxed-array :type int16 11 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26)
|
||||
)
|
||||
: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 ashelin-tanker))
|
||||
(clear-speech-flags! arg0)
|
||||
(move-to-point! (-> arg0 root-override2) (the-as vector (-> arg0 ash-course spots 0)))
|
||||
(let ((v1-7 (get-task-by-type (-> arg0 ai-ctrl) asht-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 -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-7) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker)) (let ((v1-0 *traffic-manager*))
|
||||
(cond
|
||||
((not (logtest? (-> arg1 waypoint-bits) 1))
|
||||
(if v1-0
|
||||
(logior! (-> arg1 waypoint-bits) 1)
|
||||
)
|
||||
#f
|
||||
)
|
||||
((not (logtest? (-> arg1 waypoint-bits) 2))
|
||||
(logior! (-> arg1 waypoint-bits) 2)
|
||||
#f
|
||||
)
|
||||
((not (logtest? (-> arg1 waypoint-bits) 4))
|
||||
(logior! (-> arg1 waypoint-bits) 4)
|
||||
#f
|
||||
)
|
||||
(else
|
||||
(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
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(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) asht-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 -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-3) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker))
|
||||
(let ((a0-1 *target*))
|
||||
(when a0-1
|
||||
(let ((v1-2 (get-trans a0-1 0)))
|
||||
(if (and (>= (-> v1-2 x) 1638400.0)
|
||||
(>= 2031616.0 (-> v1-2 x))
|
||||
(>= (-> v1-2 z) 1703936.0)
|
||||
(>= 2027520.0 (-> v1-2 z))
|
||||
)
|
||||
(logior! (-> arg1 bot-task-bits) 1)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-8 (get-current-task-event (-> arg1 task))))
|
||||
(when (and (logtest? (-> arg1 bot-task-bits) 1) (= (-> v1-8 action) (game-task-action say)))
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 3 #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 3
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(set-setting! 'calm #t 0 0)
|
||||
(set-setting! 'exclusive-task #f 0 42)
|
||||
(let ((v1-5 (get-task-by-type (-> arg0 ai-ctrl) asht-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 -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-5) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker)) (let ((v1-1 (get-current-task-event (-> arg1 task))))
|
||||
(when (scene-play arg1 (the-as string (-> v1-1 scene)) #f)
|
||||
(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
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) asht-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 -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-1) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker)) (when (scene-release? arg1)
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 5 #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 5
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(with-pp
|
||||
(send-event arg0 'hide #f)
|
||||
(remove-setting! 'calm)
|
||||
(set-setting! 'music 'danger9 0 0)
|
||||
(set! (-> arg0 notice-enemy-dist) 245760.0)
|
||||
(logior! (-> arg0 bot-flags) (bot-flags bf06))
|
||||
(set! (-> arg0 bot-task-bits) (logand -3 (-> arg0 bot-task-bits)))
|
||||
(let ((a1-3 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-3 from) (process->ppointer pp))
|
||||
(set! (-> a1-3 num-params) 0)
|
||||
(set! (-> a1-3 message) 'trigger)
|
||||
(let ((t9-3 send-event-function)
|
||||
(v1-18 (-> arg0 actor-group 0 data 0 actor))
|
||||
)
|
||||
(t9-3
|
||||
(if v1-18
|
||||
(-> v1-18 extra process)
|
||||
)
|
||||
a1-3
|
||||
)
|
||||
)
|
||||
)
|
||||
(ashelin-method-250 arg0 #t)
|
||||
(add-process *gui-control* arg0 (gui-channel art-load) (gui-action queue) "city-intercept-tanker-res" -99.0 0)
|
||||
(let ((v1-26 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
(set! (-> v1-26 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-26 bytes 6) (the-as uint 0))
|
||||
(set! (-> v1-26 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-26) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker)) (with-pp
|
||||
(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) 'query)
|
||||
(set! (-> a1-1 param 0) (the-as uint 'beaten))
|
||||
(let ((t9-0 send-event-function)
|
||||
(v1-7 (-> arg1 actor-group 0 data 0 actor))
|
||||
)
|
||||
(when (t9-0
|
||||
(if v1-7
|
||||
(-> v1-7 extra process)
|
||||
)
|
||||
a1-1
|
||||
)
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 6 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
:on-update (lambda ((arg0 ashelin-tanker))
|
||||
(suppress-traffic arg0)
|
||||
(when (logtest? (-> arg0 bot-task-bits) 2)
|
||||
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
|
||||
(go-to-waypoint! arg0 9 #f)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 6
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(with-pp
|
||||
(set! (-> arg0 waypoint-time0) (-> pp clock frame-counter))
|
||||
(ashelin-method-250 arg0 #f)
|
||||
(task-node-close! (game-task-node city-intercept-tanker-battle))
|
||||
(remove-setting! 'sound-mode)
|
||||
(remove-setting! 'music)
|
||||
(when (not (channel-active? arg0 (the-as uint 0)))
|
||||
(let ((v1-12 (get-rand-int arg0 3)))
|
||||
(cond
|
||||
((zero? v1-12)
|
||||
(play-speech arg0 42)
|
||||
)
|
||||
((= v1-12 1)
|
||||
(play-speech arg0 43)
|
||||
)
|
||||
(else
|
||||
(play-speech arg0 44)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-20 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
(set! (-> v1-20 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-20 bytes 6) (the-as uint 0))
|
||||
(set! (-> v1-20 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-20) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker))
|
||||
(let ((s5-0 (get-current-task-event (-> arg1 task))))
|
||||
(when (and (= (-> s5-0 action) (game-task-action say))
|
||||
(not (channel-active? arg1 (the-as uint 0)))
|
||||
(scene-play arg1 (the-as string (-> s5-0 scene)) #f)
|
||||
)
|
||||
(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
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
:on-update (lambda ((arg0 ashelin-tanker))
|
||||
(suppress-traffic arg0)
|
||||
(when (logtest? (-> arg0 bot-task-bits) 2)
|
||||
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
|
||||
(go-to-waypoint! arg0 9 #f)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 7
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(logclear! (-> arg0 bot-flags) (bot-flags bf06))
|
||||
(bot-method-196 arg0)
|
||||
(let ((v1-5 (-> arg0 root-override2 root-prim)))
|
||||
(set! (-> v1-5 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-5 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
(set! (-> arg0 root-override2 backup-collide-as) (collide-spec))
|
||||
(set! (-> arg0 root-override2 backup-collide-with) (collide-spec))
|
||||
0
|
||||
(send-event arg0 'hide #t)
|
||||
(let ((v1-15 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
(set! (-> v1-15 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-15 bytes 6) (the-as uint 0))
|
||||
(set! (-> v1-15 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-15) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker)) (when (scene-release? arg1)
|
||||
(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 ashelin-tanker)) (create-or-update-suppression-box (-> arg0 suppress)) (none))
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 8
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(remove-setting! 'exclusive-task)
|
||||
(process-entity-status! arg0 (entity-perm-status bit-4) #f)
|
||||
(process-entity-status! arg0 (entity-perm-status no-kill) #f)
|
||||
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) asht-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 -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-3) check-done)
|
||||
(the-as (function asht-wait-spot ashelin symbol) (lambda ((arg0 ashelin-tanker)) #f))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update (lambda ((arg0 ashelin-tanker)) (create-or-update-suppression-box (-> arg0 suppress)) (none))
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 9
|
||||
:nav-mesh-index -1
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-tanker))
|
||||
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) asht-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 -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-1) check-done)
|
||||
(the-as
|
||||
(function asht-wait-spot ashelin symbol)
|
||||
(lambda ((arg0 object) (arg1 ashelin-tanker)) (send-event arg1 'instant-death) (none))
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update (lambda ((arg0 ashelin-tanker))
|
||||
(suppress-traffic arg0)
|
||||
(create-or-update-suppression-box (-> arg0 suppress))
|
||||
(none)
|
||||
)
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
)
|
||||
:speeches (new 'static 'inline-array bot-speech-info 45
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha001")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha008")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha009")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha010")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha011")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha012")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha013")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha002")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf10) :hold-time #x5a :slave-id -1 :name "asha003")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf06) :hold-time #x5a :slave-id -1 :name "asha004")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf06) :hold-time #x5a :slave-id -1 :name "asha005")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha006")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf08) :hold-time #x5a :slave-id -1 :name "asha007")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha018")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha019")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha020")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha021")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha022")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha023")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha024")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha025")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha026")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha027")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha028")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha029")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf10) :hold-time #x5a :slave-id -1 :name "asha030")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf09) :hold-time #x5a :slave-id -1 :name "asha031")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha035")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha036")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha039")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha041")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha050")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha051")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha052")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha054")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha014")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha015")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha016")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha017")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf11) :hold-time #x5a :slave-id -1 :name "asha038")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf11) :hold-time #x5a :slave-id -1 :name "asha044")
|
||||
(new 'static 'bot-speech-info :flags (speech-flags sf11) :hold-time #x5a :slave-id -1 :name "asha049")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha032")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha033")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha034")
|
||||
)
|
||||
:speech-tunings (new 'static 'inline-array bot-speech-tuning 1
|
||||
(new 'static 'bot-speech-tuning :fo-min 20 :fo-max 100 :fo-curve #xb :trans? #t)
|
||||
)
|
||||
:spots (new 'static 'inline-array bot-spot 1
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 1902510.1 :y 33587.2 :z 1786101.8 :w 61440.0))
|
||||
)
|
||||
:ouch-speeches (new 'static 'bot-speech-list-shuffle
|
||||
:flags #xe
|
||||
:last-local-index -1
|
||||
:speech-indexes (new 'static 'boxed-array :type int16 35 36 37 38 39 40 41)
|
||||
)
|
||||
:victory-speeches (new 'static 'bot-speech-list-shuffle
|
||||
:flags #xe
|
||||
:last-local-index -1
|
||||
:speech-indexes (new 'static 'boxed-array :type int16 0 1 2 3 4 5 6 27 28 29 30 31 32 33 34)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set! (-> *bot-course-table* course 9) *ash4-course*)
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user