mirror of
https://github.com/open-goal/jak-project
synced 2026-08-26 08:12:57 -04:00
decomp: ai-task-h, whack, bot, sig, ash files (#2127)
`whack` is missing a single function (`birth-func-whack-score`) that I couldn't figure out the right args for. I was not able to test any of this code because I cannot get `atoll` to extract.
This commit is contained in:
+432
-409
File diff suppressed because it is too large
Load Diff
@@ -731,5 +731,126 @@
|
||||
"tomb-boulder": [
|
||||
[0, "(function process vector cspace object object (pointer process))"],
|
||||
[4, "(function process-drawable vector)"]
|
||||
],
|
||||
"bot": [[25, "(function gui-connection symbol :behavior bot)"]],
|
||||
"sig0-course": [
|
||||
[0, "(function sig-atoll none)"],
|
||||
[1, "(function symbol)"],
|
||||
[2, "(function sig-atoll none)"],
|
||||
[3, "(function object sig-atoll symbol)"],
|
||||
[4, "(function sig-atoll none)"],
|
||||
[5, "(function object sig-atoll symbol)"],
|
||||
[6, "(function sig-atoll none)"],
|
||||
[7, "(function sig-atoll none)"],
|
||||
[8, "(function object sig-atoll symbol)"],
|
||||
[9, "(function sig-atoll none)"],
|
||||
[10, "(function object sig-atoll symbol)"],
|
||||
[11, "(function sig-atoll none)"],
|
||||
[12, "(function object sig-atoll symbol)"],
|
||||
[13, "(function sig-atoll none)"],
|
||||
[14, "(function sig-atoll none)"],
|
||||
[15, "(function object sig-atoll symbol)"],
|
||||
[16, "(function sig-atoll none)"],
|
||||
[17, "(function object sig-atoll symbol)"],
|
||||
[18, "(function sig-atoll none)"],
|
||||
[19, "(function sig-atoll none)"],
|
||||
[20, "(function object sig-atoll symbol)"],
|
||||
[21, "(function sig-atoll none)"],
|
||||
[22, "(function sig-atoll none)"],
|
||||
[23, "(function sig-atoll none)"],
|
||||
[24, "(function object sig-atoll symbol)"],
|
||||
[25, "(function sig-atoll none)"],
|
||||
[26, "(function object sig-atoll symbol)"],
|
||||
[27, "(function sig-atoll none)"],
|
||||
[28, "(function object sig-atoll symbol)"],
|
||||
[29, "(function sig-atoll none)"],
|
||||
[30, "(function object sig-atoll symbol)"],
|
||||
[31, "(function sig-atoll none)"],
|
||||
[32, "(function sig-atoll none)"],
|
||||
[33, "(function object sig-atoll symbol)"],
|
||||
[34, "(function sig-atoll none)"],
|
||||
[35, "(function sig-atoll none)"],
|
||||
[36, "(function object sig-atoll symbol)"],
|
||||
[37, "(function sig-atoll none)"],
|
||||
[38, "(function sig-atoll none)"],
|
||||
[39, "(function object sig-atoll symbol)"],
|
||||
[40, "(function sig-atoll none)"],
|
||||
[41, "(function object sig-atoll symbol)"],
|
||||
[42, "(function sig-atoll none)"],
|
||||
[43, "(function sig-atoll none)"],
|
||||
[44, "(function object sig-atoll symbol)"],
|
||||
[45, "(function sig-atoll none)"],
|
||||
[46, "(function object sig-atoll symbol)"],
|
||||
[47, "(function sig-atoll none)"],
|
||||
[48, "(function object sig-atoll symbol)"],
|
||||
[49, "(function sig-atoll none)"],
|
||||
[50, "(function sig-atoll none)"],
|
||||
[51, "(function object sig-atoll symbol)"],
|
||||
[52, "(function sig-atoll none)"],
|
||||
[53, "(function object sig-atoll symbol)"],
|
||||
[54, "(function sig-atoll none)"],
|
||||
[55, "(function object sig-atoll symbol)"],
|
||||
[56, "(function sig-atoll none)"],
|
||||
[57, "(function object sig-atoll symbol)"],
|
||||
[58, "(function sig-atoll none)"],
|
||||
[59, "(function sig-atoll none)"],
|
||||
[60, "(function object sig-atoll symbol)"],
|
||||
[61, "(function sig-atoll none)"],
|
||||
[62, "(function sig-atoll none)"],
|
||||
[63, "(function sig-atoll none)"],
|
||||
[64, "(function object sig-atoll symbol)"],
|
||||
[65, "(function sig-atoll none)"],
|
||||
[66, "(function object sig-atoll symbol)"],
|
||||
[67, "(function sig-atoll none)"],
|
||||
[68, "(function object sig-atoll symbol)"],
|
||||
[69, "(function sig-atoll none)"],
|
||||
[70, "(function object sig-atoll symbol)"],
|
||||
[71, "(function sig-atoll none)"],
|
||||
[72, "(function sig-atoll none)"],
|
||||
[73, "(function object sig-atoll symbol)"],
|
||||
[74, "(function sig-atoll none)"],
|
||||
[75, "(function sig-atoll none)"],
|
||||
[76, "(function object sig-atoll symbol)"],
|
||||
[77, "(function sig-atoll none)"],
|
||||
[78, "(function object sig-atoll symbol)"],
|
||||
[79, "(function sig-atoll none)"],
|
||||
[80, "(function object sig-atoll symbol)"],
|
||||
[81, "(function sig-atoll none)"],
|
||||
[82, "(function object sig-atoll symbol)"],
|
||||
[83, "(function sig-atoll none)"],
|
||||
[84, "(function sig-atoll none)"],
|
||||
[85, "(function ai-task-control sig-atoll symbol)"],
|
||||
[86, "(function sig-atoll none)"],
|
||||
[87, "(function sig-atoll none)"],
|
||||
[88, "(function sigt-choose-piston sig-atoll symbol)"],
|
||||
[89, "(function sig-atoll none)"],
|
||||
[90, "(function sig-atoll none)"],
|
||||
[91, "(function object sig-atoll symbol)"],
|
||||
[92, "(function sig-atoll none)"],
|
||||
[93, "(function sig-atoll none)"],
|
||||
[94, "(function object sig-atoll symbol)"],
|
||||
[95, "(function sig-atoll none)"],
|
||||
[96, "(function object sig-atoll symbol)"],
|
||||
[97, "(function sig-atoll bot-speech-list-shuffle none)"],
|
||||
[98, "(function object sig-atoll symbol)"]
|
||||
],
|
||||
"ash1-course": [
|
||||
[0, "(function ashelin-battle none)"],
|
||||
[1, "(function asht-wait-spot ashelin-battle symbol)"],
|
||||
[2, "(function ashelin-battle none)"],
|
||||
[3, "(function asht-wait-spot ashelin-battle symbol)"],
|
||||
[4, "(function ashelin-battle symbol)"],
|
||||
[5, "(function asht-wait-spot ashelin-battle symbol)"],
|
||||
[6, "(function ashelin-battle none)"],
|
||||
[7, "(function ashelin-battle none)"],
|
||||
[8, "(function asht-wait-spot ashelin-battle symbol)"],
|
||||
[9, "(function ashelin-battle none)"],
|
||||
[10, "(function asht-wait-spot ashelin-battle symbol)"],
|
||||
[11, "(function ashelin-battle none)"],
|
||||
[12, "(function asht-wait-spot ashelin-battle symbol)"]
|
||||
],
|
||||
"whack": [
|
||||
[0, "(function (pointer process) :behavior whack-a-metal)"],
|
||||
[6, "(function int none :behavior whack-a-metal)"]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
"(method 77 spyder)",
|
||||
"(method 77 flamer)",
|
||||
"(method 77 grenadier)",
|
||||
"(method 224 bot)",
|
||||
// until loop without nop:
|
||||
"target-history-print",
|
||||
"display-list-control",
|
||||
@@ -51,8 +50,6 @@
|
||||
"(anon-function 10 pilot-recorder)",
|
||||
"(method 0 hover-nav-control)",
|
||||
"(method 24 nav-network)",
|
||||
"(method 9 bot-speech-list)",
|
||||
"(method 9 bot-speech-list-shuffle)",
|
||||
"(anon-function 10 sig-recorder)",
|
||||
// actual asm
|
||||
"quad-copy!",
|
||||
@@ -108,7 +105,6 @@
|
||||
"(method 9 editable-region)", // condition branch assert hit
|
||||
"(anon-function 10 meet-brutter)",
|
||||
"(method 154 vehicle-racer)",
|
||||
"(anon-function 13 sig0-course)",
|
||||
"(method 228 hal-sewer)",
|
||||
"(method 154 vehicle-city-racer)",
|
||||
"(method 53 squid)",
|
||||
@@ -519,7 +515,8 @@
|
||||
"(anon-function 1 ruins-obs)": [
|
||||
1, 2, 4, 6, 7, 14, 17, 19, 22, 24, 26, 27, 29, 31, 33, 35
|
||||
],
|
||||
"(anon-function 2 ruins-obs)": [7, 28, 37, 50, 51, 61, 62, 71]
|
||||
"(anon-function 2 ruins-obs)": [7, 28, 37, 50, 51, 61, 62, 71],
|
||||
"(anon-function 62 sig0-course)": [0, 1, 5, 6]
|
||||
},
|
||||
|
||||
// Sometimes the game might use format strings that are fetched dynamically,
|
||||
|
||||
@@ -215,14 +215,13 @@
|
||||
"LWIDEA.DGO",
|
||||
"LWIDEB.DGO",
|
||||
"LWIDEC.DGO",
|
||||
"FEA.DGO",
|
||||
"FEB.DGO",
|
||||
// "ATE.DGO",
|
||||
// "ATO.DGO",
|
||||
"DRI.DGO",
|
||||
"TOC.DGO",
|
||||
"FOB.DGO",
|
||||
"SAG.DGO",
|
||||
"MTX.DGO",
|
||||
"MCN.DGO",
|
||||
"MTN.DGO",
|
||||
"TOB.DGO",
|
||||
"TOA.DGO",
|
||||
|
||||
@@ -1048,5 +1048,33 @@
|
||||
"tomb-beetle": [
|
||||
["L118", "attack-info"],
|
||||
["L126", "(pointer int64)", 2]
|
||||
],
|
||||
"bot": [
|
||||
["L382", "attack-info"],
|
||||
["L383", "attack-info"]
|
||||
],
|
||||
"sig0-course": [
|
||||
["L536", "vector"],
|
||||
["L549", "vector"],
|
||||
["L619", "uint64", true],
|
||||
["L620", "uint64", true]
|
||||
],
|
||||
"sig": [["L190", "sphere"]],
|
||||
"ash1-course": [["L126", "uint64", true]],
|
||||
"whack": [
|
||||
["L1103", "uint64", true],
|
||||
["L1104", "uint64", true],
|
||||
["L1105", "uint64", true],
|
||||
["L1106", "uint64", true],
|
||||
["L1107", "uint64", true],
|
||||
["L1108", "uint64", true],
|
||||
["L1109", "uint64", true],
|
||||
["L1110", "uint64", true],
|
||||
["L1111", "uint64", true],
|
||||
["L1112", "uint64", true],
|
||||
["L1113", "uint64", true],
|
||||
["L1152", "uint64", true],
|
||||
["L1153", "uint64", true],
|
||||
["L1154", "uint64", true]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1435,11 +1435,40 @@
|
||||
"(method 24 minimap)": [[16, "minimap-draw-work"]],
|
||||
"(method 15 minimap)": [[16, "minimap-draw-work"]],
|
||||
"(method 11 minimap)": [[16, ["inline-array", "vector", 4]]],
|
||||
"(method 26 minimap)": [[32, "vector"], [64, "matrix"], [48, "vector"]],
|
||||
"(method 23 minimap)": [[32, "vector"], [48, "vector"], [64, "matrix"], [80, "matrix"], [144, "matrix"]],
|
||||
"(method 17 minimap)": [[32, "vector"], [48, "vector"], [64, "matrix"], [80, "matrix"], [144, "matrix"], [240, "vector"], [256, "vector"]],
|
||||
"(method 18 minimap)": [[32, "vector"], [48, "vector"], [64, "matrix"], [80, "matrix"], [144, "matrix"], [240, "vector"], [256, "vector"]],
|
||||
"(method 19 minimap)": [[16, "vector"], [32, "matrix"]],
|
||||
"(method 26 minimap)": [
|
||||
[32, "vector"],
|
||||
[64, "matrix"],
|
||||
[48, "vector"]
|
||||
],
|
||||
"(method 23 minimap)": [
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "matrix"],
|
||||
[80, "matrix"],
|
||||
[144, "matrix"]
|
||||
],
|
||||
"(method 17 minimap)": [
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "matrix"],
|
||||
[80, "matrix"],
|
||||
[144, "matrix"],
|
||||
[240, "vector"],
|
||||
[256, "vector"]
|
||||
],
|
||||
"(method 18 minimap)": [
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "matrix"],
|
||||
[80, "matrix"],
|
||||
[144, "matrix"],
|
||||
[240, "vector"],
|
||||
[256, "vector"]
|
||||
],
|
||||
"(method 19 minimap)": [
|
||||
[16, "vector"],
|
||||
[32, "matrix"]
|
||||
],
|
||||
"(method 12 trail-graph)": [[16, ["inline-array", "vector", 2]]],
|
||||
"(method 14 trail-graph)": [[16, ["inline-array", "vector", 2]]],
|
||||
"(method 13 trail-graph)": [[16, ["inline-array", "vector", 2]]],
|
||||
@@ -1477,7 +1506,7 @@
|
||||
[48, "vector"],
|
||||
[64, "vector"]
|
||||
],
|
||||
"(method 13 grid-info)": [[16, "bounding-box"]],
|
||||
"(method 13 grid-info)": [[16, "bounding-box"]],
|
||||
"(method 20 vehicle-controller)": [[16, "vehicle-control-point"]],
|
||||
"(method 16 vehicle-controller)": [[16, "vehicle-control-point"]],
|
||||
"(method 104 vehicle)": [[16, "vehicle-control-point"]],
|
||||
@@ -1603,5 +1632,25 @@
|
||||
],
|
||||
"(trans show-sequence tomb-plat-simon)": [[16, "event-message-block"]],
|
||||
"(event dangerous tomb-simon-block)": [[16, "vector"]],
|
||||
"(method 185 tomb-beetle)": [[16, "vector"]]
|
||||
"(method 185 tomb-beetle)": [[16, "vector"]],
|
||||
"(method 189 bot)": [
|
||||
[16, "enemy-best-focus"],
|
||||
[32, "sphere"]
|
||||
],
|
||||
"(method 190 bot)": [[16, "connection-pers"]],
|
||||
"(method 247 sig)": [[16, "projectile-init-by-other-params"]],
|
||||
"(method 250 sig)": [[16, "sphere"]],
|
||||
"(method 25 sig-shot)": [[32, "vector"]],
|
||||
"(method 12 sigt-choose-piston)": [[16, "event-message-block"]],
|
||||
"(method 11 sigt-riding-piston)": [[16, "event-message-block"]],
|
||||
"(anon-function 48 sig0-course)": [[16, "event-message-block"]],
|
||||
"ashelin-shot-move": [[16, "vector"]],
|
||||
"(method 25 ashelin-shot)": [[32, "vector"]],
|
||||
"(anon-function 97 sig0-course)": [[16, "vector"]],
|
||||
"(anon-function 12 ash1-course)": [[16, "event-message-block"]],
|
||||
"(anon-function 93 sig0-course)": [[16, ["array", "symbol", 3]]],
|
||||
"(code active whack-a-metal)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -6545,7 +6545,7 @@
|
||||
"(method 3 engine-minimap)": [
|
||||
[7, "t9", "(function engine-minimap engine-minimap)"]
|
||||
],
|
||||
"(method 24 minimap)":[
|
||||
"(method 24 minimap)": [
|
||||
[189, "s2", "connection-minimap"],
|
||||
[194, "s2", "connection-minimap"],
|
||||
[18, "v1", "(pointer uint128)"],
|
||||
@@ -6560,9 +6560,7 @@
|
||||
[141, "v1", "(inline-array vector4w)"],
|
||||
[161, "s2", "(pointer uint128)"]
|
||||
],
|
||||
"(method 15 minimap)": [
|
||||
[48, "s2", "(pointer uint128)"]
|
||||
],
|
||||
"(method 15 minimap)": [[48, "s2", "(pointer uint128)"]],
|
||||
"(method 16 minimap)": [
|
||||
[[30, 35], "v1", "process-drawable"],
|
||||
[56, "v1", "entity-actor"],
|
||||
@@ -6582,9 +6580,7 @@
|
||||
[[3, 180], "s3", "connection-minimap"],
|
||||
[143, "v1", "basic"]
|
||||
],
|
||||
"(method 10 engine-minimap)": [
|
||||
[6, "s5", "connection-minimap"]
|
||||
],
|
||||
"(method 10 engine-minimap)": [[6, "s5", "connection-minimap"]],
|
||||
"(method 26 minimap)": [
|
||||
[34, "a0", "process-drawable"],
|
||||
[49, "v1", "process-drawable"],
|
||||
@@ -6766,9 +6762,7 @@
|
||||
],
|
||||
"(trans attack-forward gator)": [[[19, 23], "gp", "process-focusable"]],
|
||||
"(code attack-forward gator)": [[14, "v1", "art-joint-anim"]],
|
||||
"(method 11 sew-light-switch)": [
|
||||
["_stack_", 16, "res-tag"]
|
||||
],
|
||||
"(method 11 sew-light-switch)": [["_stack_", 16, "res-tag"]],
|
||||
"(method 33 mtn-dice-button)": [[35, "v1", "art-joint-anim"]],
|
||||
"(trans restart mtn-dice)": [
|
||||
[128, "v1", "collide-shape-prim-group"],
|
||||
@@ -6835,7 +6829,10 @@
|
||||
[103, "a0", "(pointer entity-actor)"],
|
||||
[287, "v1", "int"]
|
||||
],
|
||||
"(method 11 strip-hazard)": [[34, "v0", "(pointer float)"], ["_stack_", 64, "res-tag"]],
|
||||
"(method 11 strip-hazard)": [
|
||||
[34, "v0", "(pointer float)"],
|
||||
["_stack_", 64, "res-tag"]
|
||||
],
|
||||
"(method 11 strip-chain-crate)": [[38, "v0", "(pointer float)"]],
|
||||
"(method 33 vehicle-rider)": [[10, "s4", "vehicle"]],
|
||||
"(method 35 vehicle-rider)": [[[10, 15], "a0", "vehicle"]],
|
||||
@@ -7126,5 +7123,299 @@
|
||||
"(enter fly-away tomb-beetle)": [
|
||||
[6, "a0", "vector"],
|
||||
[[1, 53], "gp", "(inline-array tomb-beetle-fly-info)"]
|
||||
]
|
||||
],
|
||||
"(method 76 bot)": [[45, "v1", "process-focusable"]],
|
||||
"(code failed bot)": [[23, "gp", "art-joint-anim"]],
|
||||
"(code die-falling bot)": [[32, "gp", "art-joint-anim"]],
|
||||
"(code hit bot)": [[30, "v1", "art-joint-anim"]],
|
||||
"(method 74 bot)": [
|
||||
[115, "v1", "process"],
|
||||
[230, "a0", "vector"]
|
||||
],
|
||||
"(method 97 bot)": [
|
||||
[130, "s5", "process-focusable"],
|
||||
[138, "s5", "process-focusable"]
|
||||
],
|
||||
"(method 129 bot)": [
|
||||
[70, "s5", "process-focusable"],
|
||||
[73, "s5", "process-focusable"]
|
||||
],
|
||||
"(method 189 bot)": [
|
||||
[41, "a0", "connection"],
|
||||
[42, "a0", "collide-shape"],
|
||||
[90, "a0", "connection"],
|
||||
[91, "a0", "collide-shape"],
|
||||
[153, "a1", "process-focusable"]
|
||||
],
|
||||
"(method 190 bot)": [
|
||||
[10, "v1", "sphere"],
|
||||
[40, "a0", "connection"],
|
||||
[41, "a0", "collide-shape"],
|
||||
[49, "a3", "sphere"],
|
||||
[58, "f2", "float"],
|
||||
[89, "a0", "connection"],
|
||||
[90, "a0", "collide-shape"],
|
||||
[98, "a3", "sphere"],
|
||||
[107, "f2", "float"]
|
||||
],
|
||||
"(method 223 bot)": [
|
||||
[29, "s3", "process-focusable"],
|
||||
[38, "s3", "process-focusable"]
|
||||
],
|
||||
"(method 10 sig)": [
|
||||
[[3, 20], "v0", "sound-rpc-set-param"],
|
||||
[19, "v0", "sound-rpc-set-param"]
|
||||
],
|
||||
"(method 78 sig)": [
|
||||
[23, "v1", "art-joint-anim"],
|
||||
[59, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(method 88 sig)": [[32, "a1", "art-joint-anim"]],
|
||||
"(method 89 sig)": [[32, "a1", "art-joint-anim"]],
|
||||
"(method 97 sig)": [
|
||||
[67, "a0", "process-focusable"],
|
||||
[131, "a0", "process-focusable"],
|
||||
[192, "s5", "process-focusable"],
|
||||
[134, "a0", "process-focusable"],
|
||||
[70, "a0", "process-focusable"],
|
||||
[130, "s4", "process-focusable"],
|
||||
[66, "s4", "process-focusable"]
|
||||
],
|
||||
"(code waiting-crouched sig)": [[14, "v1", "art-joint-anim"]],
|
||||
"(code waiting-far sig)": [
|
||||
[158, "v1", "art-joint-anim"],
|
||||
[101, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(code waiting-close sig)": [
|
||||
[27, "v1", "art-joint-anim"],
|
||||
[180, "gp", "art-joint-anim"]
|
||||
],
|
||||
"(code waiting-turn sig)": [
|
||||
[50, "v1", "art-joint-anim"],
|
||||
[194, "a1", "art-joint-anim"],
|
||||
[327, "s4", "art-joint-anim"]
|
||||
],
|
||||
"(code charge-plasma sig)": [
|
||||
[14, "v1", "art-joint-anim"],
|
||||
[73, "v1", "art-joint-anim"],
|
||||
[142, "v1", "art-joint-anim"],
|
||||
[198, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(code repair-gun sig)": [
|
||||
[14, "v1", "art-joint-anim"],
|
||||
[159, "v1", "art-joint-anim"],
|
||||
[236, "v1", "art-joint-anim"],
|
||||
[313, "v1", "art-joint-anim"],
|
||||
[390, "v1", "art-joint-anim"],
|
||||
[467, "v1", "art-joint-anim"],
|
||||
[633, "v1", "art-joint-anim"],
|
||||
[553, "v1", "art-joint-anim"],
|
||||
[79, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(code clean-gun sig)": [
|
||||
[14, "v1", "art-joint-anim"],
|
||||
[214, "v1", "art-joint-anim"],
|
||||
[85, "v1", "art-joint-anim"],
|
||||
[154, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(code traveling-blocked sig)": [[14, "v1", "art-joint-anim"]],
|
||||
"(code stare sig)": [
|
||||
[27, "v1", "art-joint-anim"],
|
||||
[180, "gp", "art-joint-anim"]
|
||||
],
|
||||
"(code whip sig)": [[44, "a1", "art-joint-anim"]],
|
||||
"(post chase sig)": [
|
||||
[14, "a0", "process-focusable"],
|
||||
[17, "a0", "process-focusable"]
|
||||
],
|
||||
"(post chase-attack sig)": [
|
||||
[15, "a0", "process-focusable"],
|
||||
[18, "a0", "process-focusable"]
|
||||
],
|
||||
"(code hit sig)": [[14, "v1", "art-joint-anim"]],
|
||||
"(code failed sig)": [
|
||||
[14, "v1", "art-joint-anim"],
|
||||
[70, "v1", "art-joint-anim"],
|
||||
[129, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(code sig-path-jump sig)": [[31, "v1", "art-joint-anim"]],
|
||||
"(code sig-path-jump-land sig)": [[24, "v1", "art-joint-anim"]],
|
||||
"(code sig-path-shoot-jump sig)": [[31, "v1", "art-joint-anim"]],
|
||||
"(code sig-path-shoot-jump-land sig)": [[24, "v1", "art-joint-anim"]],
|
||||
"(code sig-path-idle sig)": [
|
||||
[14, "v1", "art-joint-anim"],
|
||||
[66, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(method 30 sig-shot)": [[116, "a0", "sig"]],
|
||||
"(method 14 sig-plasma)": [
|
||||
[40, "v0", "sound-rpc-set-param"],
|
||||
[56, "v0", "sound-rpc-set-param"]
|
||||
],
|
||||
"sparticle-sig-plasma-lightning": [[15, "a0", "sig-atoll"]],
|
||||
"sig0-say-look-out-if-should": [[29, "v1", "process-focusable"]],
|
||||
"(method 77 sig)": [
|
||||
[57, "s5", "art-joint-anim"],
|
||||
[91, "v1", "art-joint-anim"],
|
||||
[176, "s4", "art-joint-anim"]
|
||||
],
|
||||
"(method 86 sig)": [[28, "a0", "process-focusable"]],
|
||||
"(method 250 sig)": [
|
||||
[63, "a0", "connection"],
|
||||
[64, "a0", "collide-shape"],
|
||||
[112, "a0", "connection"],
|
||||
[113, "a0", "collide-shape"],
|
||||
[204, "s4", "process-focusable"],
|
||||
[176, "a0", "process-focusable"],
|
||||
[175, "s2", "process-focusable"],
|
||||
[207, "s4", "process-focusable"]
|
||||
],
|
||||
"(method 11 sigt-charge-plasma)": [
|
||||
[110, "s3", "process-focusable"],
|
||||
[113, "s3", "process-focusable"]
|
||||
],
|
||||
"(method 12 sigt-choose-piston)": [
|
||||
[61, "s5", "process-focusable"],
|
||||
[102, "s5", "process-focusable"],
|
||||
[111, "s5", "process-focusable"]
|
||||
],
|
||||
"(method 14 sigt-choose-piston)": [[34, "gp", "process-focusable"]],
|
||||
"(method 186 bot)": [
|
||||
[19, "a0", "uint"],
|
||||
[19, "v1", "uint"]
|
||||
],
|
||||
"(method 46 sig)": [
|
||||
[6, "v1", "collide-shape-prim-group"],
|
||||
[24, "v1", "collide-shape-prim-group"],
|
||||
[44, "v1", "collide-shape-prim-group"],
|
||||
[63, "v1", "collide-shape-prim-group"],
|
||||
[82, "v1", "collide-shape-prim-group"]
|
||||
],
|
||||
"(method 79 ashelin)": [[67, "v1", "art-joint-anim"]],
|
||||
"(method 78 ashelin)": [
|
||||
[22, "s5", "art-joint-anim"],
|
||||
[74, "v1", "art-joint-anim"],
|
||||
[108, "v1", "art-joint-anim"],
|
||||
[159, "v1", "art-joint-anim"],
|
||||
[193, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(method 77 ashelin)": [[129, "s5", "art-joint-anim"]],
|
||||
"(method 51 ashelin)": [
|
||||
[22, "a0", "process-focusable"],
|
||||
[25, "a0", "process-focusable"]
|
||||
],
|
||||
"(code waiting-idle ashelin)": [
|
||||
[204, "v1", "art-joint-anim"],
|
||||
[95, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(code standing-idle ashelin)": [
|
||||
[189, "v1", "art-joint-anim"],
|
||||
[126, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(code standing-turn ashelin)": [[47, "s4", "art-joint-anim"]],
|
||||
"(code standing-blast ashelin)": [[68, "v1", "art-joint-anim"]],
|
||||
"(post chase ashelin)": [
|
||||
[14, "a0", "process-focusable"],
|
||||
[17, "a0", "process-focusable"]
|
||||
],
|
||||
"(code back-spring ashelin)": [
|
||||
[30, "v1", "art-joint-anim"],
|
||||
[309, "v1", "art-joint-anim"],
|
||||
[171, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(code tumble-right ashelin)": [
|
||||
[35, "v1", "art-joint-anim"],
|
||||
[168, "v1", "art-joint-anim"],
|
||||
[280, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(code cartwheel-left ashelin)": [
|
||||
[35, "v1", "art-joint-anim"],
|
||||
[168, "v1", "art-joint-anim"],
|
||||
[280, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(code die-falling ashelin)": [[108, "gp", "art-joint-anim"]],
|
||||
"(anon-function 0 ash1-course)": [[31, "v1", "asht-wait-spot"]],
|
||||
"ashelin-shot-move": [[49, "v1", "(state ashelin)"]],
|
||||
"(method 28 ashelin-shot)": [
|
||||
[47, "t9", "(function projectile projectile-options none)"]
|
||||
],
|
||||
"(method 30 ashelin-shot)": [[119, "a0", "ashelin"]],
|
||||
"(anon-function 2 ash1-course)": [[50, "v1", "asht-wait-spot"]],
|
||||
"(anon-function 7 ash1-course)": [[90, "v1", "asht-wait-spot"]],
|
||||
"(anon-function 9 ash1-course)": [[12, "v1", "asht-wait-spot"]],
|
||||
"(anon-function 0 sig0-course)": [[64, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 2 sig0-course)": [[15, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 4 sig0-course)": [[43, "v1", "sigt-charge-plasma"]],
|
||||
"(anon-function 7 sig0-course)": [[44, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 9 sig0-course)": [[21, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 11 sig0-course)": [[44, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 14 sig0-course)": [[42, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 16 sig0-course)": [[21, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 19 sig0-course)": [[51, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 23 sig0-course)": [[27, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 25 sig0-course)": [[15, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 27 sig0-course)": [[43, "v1", "sigt-charge-plasma"]],
|
||||
"(anon-function 29 sig0-course)": [[33, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 32 sig0-course)": [[22, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 35 sig0-course)": [[15, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 47 sig0-course)": [[17, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 45 sig0-course)": [[46, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 43 sig0-course)": [[43, "v1", "sigt-charge-plasma"]],
|
||||
"(anon-function 38 sig0-course)": [[21, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 40 sig0-course)": [[15, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 50 sig0-course)": [[15, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 52 sig0-course)": [[17, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 54 sig0-course)": [[51, "v1", "sigt-charge-plasma"]],
|
||||
"(anon-function 56 sig0-course)": [[41, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 59 sig0-course)": [[15, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 63 sig0-course)": [[21, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 65 sig0-course)": [[17, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 67 sig0-course)": [[45, "v1", "sigt-charge-plasma"]],
|
||||
"(anon-function 69 sig0-course)": [[51, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 72 sig0-course)": [[42, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 75 sig0-course)": [[29, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 77 sig0-course)": [[15, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 79 sig0-course)": [[55, "v1", "sigt-charge-plasma"]],
|
||||
"(anon-function 81 sig0-course)": [[20, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 84 sig0-course)": [[26, "v1", "sigt-riding-piston"]],
|
||||
"(anon-function 87 sig0-course)": [[29, "v1", "sigt-choose-piston"]],
|
||||
"(anon-function 90 sig0-course)": [[18, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 93 sig0-course)": [[92, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 95 sig0-course)": [[21, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 13 sig0-course)": [[67, "v1", "int"]],
|
||||
"(code active hip-mole)": [
|
||||
[11, "v1", "art-joint-anim"],
|
||||
[119, "v1", "art-joint-anim"]
|
||||
],
|
||||
"(post idle hip-mole)": [
|
||||
[52, "gp", "process-drawable"],
|
||||
[58, "gp", "process-drawable"]
|
||||
],
|
||||
"(method 28 whack-a-metal)": [
|
||||
[68, "s5", "process-drawable"],
|
||||
[76, "s5", "process-drawable"],
|
||||
[125, "s5", "process-drawable"]
|
||||
],
|
||||
"(code active whack-a-metal)": [
|
||||
[47, "v1", "art-joint-anim"],
|
||||
[219, "v1", "art-joint-anim"],
|
||||
[288, "v1", "art-joint-anim"],
|
||||
[143, "v1", "lightning-tracker"]
|
||||
],
|
||||
"(method 10 whack-a-metal)": [[24, "t9", "(function process none)"]],
|
||||
"(method 7 whack-a-metal)": [
|
||||
[26, "t9", "(function process-drawable int process-drawable)"]
|
||||
],
|
||||
"(method 27 whack-a-metal)": [
|
||||
[69, "a1", "hip-mole"],
|
||||
[78, "a1", "hip-mole"],
|
||||
[156, "a1", "hip-mole"],
|
||||
[165, "a1", "hip-mole"]
|
||||
],
|
||||
"(method 224 bot)": [
|
||||
[28, "t9", "(function bot int)"],
|
||||
[46, "t9", "(function bot int)"]
|
||||
],
|
||||
"(anon-function 97 sig0-course)": [[62, "v1", "sigt-wait-spot"]],
|
||||
"(anon-function 11 ash1-course)": [[51, "v1", "asht-wait-spot"]],
|
||||
"(anon-function 4 ash1-course)": [[99, "v1", "asht-wait-spot"]]
|
||||
}
|
||||
|
||||
@@ -2162,7 +2162,9 @@
|
||||
}
|
||||
},
|
||||
"(method 54 collide-shape)": {
|
||||
"vars": { "v1-3": "proc" }
|
||||
"vars": {
|
||||
"v1-3": "proc"
|
||||
}
|
||||
},
|
||||
"(method 42 collide-shape)": {
|
||||
"args": ["obj", "other", "cquery"]
|
||||
@@ -2233,7 +2235,6 @@
|
||||
"f0-11": "dist-until-gone"
|
||||
}
|
||||
},
|
||||
|
||||
"dma-add-process-drawable": {
|
||||
"args": ["pd", "dc", "flag", "dma-buf"],
|
||||
"vars": {
|
||||
@@ -2281,6 +2282,179 @@
|
||||
"vars": { "s4-0": ["s4-0", "art-joint-anim"] }
|
||||
},
|
||||
"(code target-running-attack)": {
|
||||
"vars": {"t1-6": ["t1-6", "sound-name"]}
|
||||
"vars": { "t1-6": ["t1-6", "sound-name"] }
|
||||
},
|
||||
"(method 9 bot-speech-list)": {
|
||||
"vars": {
|
||||
"s2-0": "sp-indexes",
|
||||
"s1-0": "last-idx",
|
||||
"s0-0": "idx",
|
||||
"v1-37": "flags"
|
||||
},
|
||||
"args": ["sp-list", "bot", "sp-info", "arg3"]
|
||||
},
|
||||
"(method 182 bot)": {
|
||||
"vars": {
|
||||
"s5-0": "bot-root",
|
||||
"a0-7": "proc-vel",
|
||||
"v1-4": "targ-pos"
|
||||
},
|
||||
"args": ["obj", "turn-info", "proc", "arg3"]
|
||||
},
|
||||
"(method 223 bot)": {
|
||||
"vars": {
|
||||
"gp-0": "focus",
|
||||
"s3-0": "focus-proc",
|
||||
"v1-1": "timer",
|
||||
"s4-1": "cquery"
|
||||
}
|
||||
},
|
||||
"(method 213 bot)": {
|
||||
"vars": {
|
||||
"v1-0": "course",
|
||||
"a0-2": "waypoint-count",
|
||||
"a2-1": "i",
|
||||
"s4-0": "waypoint",
|
||||
"s5-1": "on-skip",
|
||||
"t9-4": "on-set",
|
||||
"s3-0": "mesh-idx"
|
||||
},
|
||||
"args": ["obj", "id", "skipped?"]
|
||||
},
|
||||
"(method 215 bot)": {
|
||||
"vars": {
|
||||
"s5-0": "skip-id"
|
||||
}
|
||||
},
|
||||
"(method 205 bot)": {
|
||||
"args": ["obj", "scene", "grab?"]
|
||||
},
|
||||
"(method 207 bot)": {
|
||||
"args": ["obj", "sound"]
|
||||
},
|
||||
"(method 206 bot)": {
|
||||
"args": ["obj", "idx"],
|
||||
"vars": {
|
||||
"s5-0": "speech",
|
||||
"gp-0": "course",
|
||||
"a1-4": "proc",
|
||||
"t2-0": "hold-time",
|
||||
"v1-5": "tuning"
|
||||
}
|
||||
},
|
||||
"(method 211 bot)": {
|
||||
"vars": {
|
||||
"v1-1": "speeches",
|
||||
"a0-2": "i",
|
||||
"a1-1": "speech"
|
||||
}
|
||||
},
|
||||
"(method 217 bot)": {
|
||||
"args": ["obj", "idx"],
|
||||
"vars": {
|
||||
"v1-2": "speech"
|
||||
}
|
||||
},
|
||||
"(method 189 bot)": {
|
||||
"vars": {
|
||||
"s3-0": "sphere",
|
||||
"gp-0": "focus",
|
||||
"f0-0": "enemy-dist",
|
||||
"s4-0": ["coll-spec", "collide-spec"],
|
||||
"a0-5": "next-actor",
|
||||
"a1-1": "cshape",
|
||||
"a1-2": "ccore",
|
||||
"a1-26": "enemy",
|
||||
"s2-0": "proc",
|
||||
"s3-1": "i",
|
||||
"v1-27": "actor"
|
||||
}
|
||||
},
|
||||
"(method 184 bot)": {
|
||||
"vars": {
|
||||
"s5-0": "course",
|
||||
"s4-0": "i",
|
||||
"s3-0": "spot",
|
||||
"a2-2": "spot-id"
|
||||
}
|
||||
},
|
||||
"(method 197 bot)": {
|
||||
"vars": {
|
||||
"s5-0": "mission-failed?",
|
||||
"a0-7": "master-handle",
|
||||
"a1-2": "fail-params"
|
||||
}
|
||||
},
|
||||
"(method 201 bot)": {
|
||||
"vars": {
|
||||
"f0-0": "rating",
|
||||
"v1-0": "enemy-dist"
|
||||
},
|
||||
"args": ["obj", "enemy", "arg2"]
|
||||
},
|
||||
"(method 220 bot)": {
|
||||
"args": ["obj", "channel"]
|
||||
},
|
||||
"(method 214 bot)": {
|
||||
"vars": {
|
||||
"a1-0": "fproc"
|
||||
}
|
||||
},
|
||||
"(method 208 bot)": {
|
||||
"vars": {
|
||||
"a1-0": "target-trans",
|
||||
"v1-4": "bot-root"
|
||||
}
|
||||
},
|
||||
"(method 194 bot)": {
|
||||
"args": ["obj", "spot", "bot-trans", "arg3"]
|
||||
},
|
||||
"(method 209 bot)": {
|
||||
"args": ["obj", "channel"]
|
||||
},
|
||||
"(method 218 bot)": {
|
||||
"args": ["obj", "idx"]
|
||||
},
|
||||
"(method 219 bot)": {
|
||||
"args": ["obj", "spot"]
|
||||
},
|
||||
"(method 202 bot)": {
|
||||
"vars": {
|
||||
"s2-0": "i",
|
||||
"s3-0": "bot-trans",
|
||||
"f0-0": "spot-dist",
|
||||
"s1-0": "spot",
|
||||
"gp-0": "spot-idx"
|
||||
},
|
||||
"args": ["obj", "num-spots", "spot-indices"]
|
||||
},
|
||||
"(method 203 bot)": {
|
||||
"vars": {
|
||||
"a1-2": "idx"
|
||||
}
|
||||
},
|
||||
"(method 9 bot-speech-list-shuffle)": {
|
||||
"args": ["obj", "bot", "sp-info", "sp-flags"],
|
||||
"vars": {
|
||||
"v1-1": "course-cookie",
|
||||
"s2-0": "history-mask",
|
||||
"s0-0": "speech-idx",
|
||||
"s1-0": "last-idx"
|
||||
}
|
||||
},
|
||||
"(method 204 bot)": {
|
||||
"vars": {
|
||||
"a1-2": "idx"
|
||||
}
|
||||
},
|
||||
"(method 224 bot)": {
|
||||
"vars": {
|
||||
"t9-0": "check-too-far-func",
|
||||
"gp-0": "result",
|
||||
"v1-0": "too-far-check"
|
||||
}
|
||||
},
|
||||
"(method 195 bot)": {
|
||||
"args": ["obj", "fproc"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -559,7 +559,7 @@ void update_proto_info(std::vector<TieProtoInfo>* out,
|
||||
u32 tex_combo = (((u32)tpage) << 16) | tidx;
|
||||
// look up the texture to make sure it's valid
|
||||
auto tex = tdb.textures.find(tex_combo);
|
||||
ASSERT(tex != tdb.textures.end());
|
||||
// ASSERT(tex != tdb.textures.end());
|
||||
// remember the texture id
|
||||
adgif.combo_tex = tex_combo;
|
||||
// and the hidden value in the unused a+d
|
||||
|
||||
@@ -848,7 +848,21 @@ const std::unordered_map<
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"predator-graph",
|
||||
{{"node", ArrayFieldDecompMeta(TypeSpec("predator-node"), 48)},
|
||||
{"edge", ArrayFieldDecompMeta(TypeSpec("predator-edge"), 4)}}}}}};
|
||||
{"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)}}}}}};
|
||||
|
||||
goos::Object decompile_structure(const TypeSpec& type,
|
||||
const DecompilerLabel& label,
|
||||
|
||||
@@ -7,3 +7,82 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype ashelin-course (bot-course)
|
||||
((ouch-speeches bot-speech-list-shuffle :offset-assert 48)
|
||||
(victory-speeches bot-speech-list-shuffle :offset-assert 52)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x38
|
||||
:flag-assert #x900000038
|
||||
)
|
||||
|
||||
|
||||
(deftype ashelin (bot)
|
||||
((ash-course ashelin-course :offset 652)
|
||||
(knocked-anim art-joint-anim :offset-assert 992)
|
||||
(travel-anim-interp float :offset-assert 996)
|
||||
(fired-gun-count uint32 :offset-assert 1000)
|
||||
(last-fire-time time-frame :offset-assert 1008)
|
||||
(victory-speech-time time-frame :offset-assert 1016)
|
||||
(frontline plane :inline :offset-assert 1024)
|
||||
)
|
||||
:heap-base #x390
|
||||
:method-count-assert 251
|
||||
:size-assert #x410
|
||||
:flag-assert #xfb03900410
|
||||
(:methods
|
||||
(back-spring () _type_ :state 225)
|
||||
(cartwheel-left () _type_ :state 226)
|
||||
(tumble-right () _type_ :state 227)
|
||||
(chase () _type_ :state 228)
|
||||
(traveling () _type_ :state 229)
|
||||
(traveling-blocked () _type_ :state 230)
|
||||
(waiting-idle () _type_ :state 231)
|
||||
(standing-idle () _type_ :state 232)
|
||||
(standing-turn () _type_ :state 233)
|
||||
(standing-blast () _type_ :state 234)
|
||||
(ashelin-method-235 (_type_ symbol) symbol 235)
|
||||
(ashelin-method-236 (_type_ vector float float float float) symbol 236)
|
||||
(fire-projectile (_type_ vector) none 237)
|
||||
(ashelin-method-238 (_type_ symbol symbol) symbol 238)
|
||||
(ashelin-method-239 (_type_) none 239)
|
||||
(ashelin-method-240 (_type_ int) none 240)
|
||||
(ashelin-method-241 (_type_) int 241)
|
||||
(ashelin-method-242 (_type_) int 242)
|
||||
(ashelin-method-243 (_type_ float) int 243)
|
||||
(ashelin-method-244 (_type_) none 244)
|
||||
(ashelin-method-245 (_type_) none 245)
|
||||
(ashelin-method-246 (_type_) int 246)
|
||||
(ashelin-method-247 (_type_) symbol 247)
|
||||
(ashelin-method-248 (_type_) symbol 248)
|
||||
(ashelin-method-249 (_type_) none 249)
|
||||
(ashelin-method-250 (_type_ symbol) none 250)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defskelgroup skel-ashelin ashelin 0 3
|
||||
((1 (meters 999999)))
|
||||
:bounds (static-spherem 0 0 0 2.7)
|
||||
:shadow 2
|
||||
:origin-joint-index 13
|
||||
)
|
||||
|
||||
(deftype asht-wait-spot (ai-task)
|
||||
((check-done (function asht-wait-spot ashelin 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
|
||||
:flag-assert #xc00000030
|
||||
)
|
||||
|
||||
|
||||
(deftype asht-fight-focus (ai-task)
|
||||
()
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
:flag-assert #xc00000030
|
||||
)
|
||||
|
||||
@@ -7,3 +7,517 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defpart 672
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x45 :page #xc))
|
||||
(sp-func spt-birth-func 'birth-func-set-quat)
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 0.75))
|
||||
(sp-flt spt-scale-y (meters 10))
|
||||
(sp-flt spt-r 128.0)
|
||||
(sp-flt spt-g 0.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-rnd-flt spt-a 32.0 64.0 1.0)
|
||||
(sp-int spt-timer 5)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-14 left-multiply-quat)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 673
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 1) (meters 3) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 128.0)
|
||||
(sp-flt spt-g 0.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-rnd-flt spt-a 64.0 32.0 1.0)
|
||||
(sp-int spt-timer 5)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 674
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x34 :page #xc))
|
||||
(sp-flt spt-num 1.5)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 128.0)
|
||||
(sp-flt spt-b 128.0)
|
||||
(sp-rnd-flt spt-a 16.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-scalevel-x (meters 0.013333334) (meters 0.006666667) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -1.28)
|
||||
(sp-flt spt-fade-b -1.28)
|
||||
(sp-flt spt-fade-a -0.48)
|
||||
(sp-int spt-timer 100)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 675
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x46 :page #xc))
|
||||
(sp-func spt-birth-func 'birth-func-set-quat)
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 2))
|
||||
(sp-flt spt-scale-y (meters 4.5))
|
||||
(sp-flt spt-r 128.0)
|
||||
(sp-flt spt-g 0.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-flt spt-a 128.0)
|
||||
(sp-flt spt-fade-a -3.6571429)
|
||||
(sp-int spt-timer 35)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 left-multiply-quat)
|
||||
)
|
||||
)
|
||||
|
||||
(defpartgroup group-ashelin-shot-hit
|
||||
:id 149
|
||||
:duration (seconds 1)
|
||||
:flags (use-local-clock)
|
||||
:bounds (static-bspherem 0 0 0 8)
|
||||
:parts ((sp-item 676 :period 600 :length 5)
|
||||
(sp-item 677 :fade-after (meters 100) :period 600 :length 5)
|
||||
(sp-item 678 :period 600 :length 5)
|
||||
(sp-item 679 :fade-after (meters 50) :falloff-to (meters 50) :period 600 :length 200)
|
||||
(sp-item 680 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 200)
|
||||
(sp-item 680 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 150)
|
||||
(sp-item 680 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 125)
|
||||
(sp-item 680 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 100)
|
||||
(sp-item 680 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 75)
|
||||
(sp-item 680 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 65)
|
||||
(sp-item 680 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 50)
|
||||
(sp-item 680 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 40)
|
||||
(sp-item 680 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 25)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 679
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
|
||||
(sp-rnd-flt spt-num 0.0 0.2 1.0)
|
||||
(sp-flt spt-y (meters 0.25))
|
||||
(sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0)
|
||||
(sp-int spt-rot-x 4)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.06666667) (meters 0.013333334) 1.0)
|
||||
(sp-rnd-flt spt-scalevel-x (meters -0.001) (meters -0.00033333333) 1.0)
|
||||
(sp-rnd-int-flt spt-rotvel-z (degrees -2.4) 1 873.81335)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.10666667)
|
||||
(sp-flt spt-fade-b -0.10666667)
|
||||
(sp-rnd-flt spt-accel-y -1.3653333 -5.4613333 1.0)
|
||||
(sp-flt spt-friction 0.9)
|
||||
(sp-int spt-timer 300)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
(sp-int spt-next-time 200)
|
||||
(sp-launcher-by-id spt-next-launcher 681)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 680
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
|
||||
(sp-flt spt-num 0.5)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.3) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-flt spt-a 96.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0)
|
||||
(sp-rnd-flt spt-scalevel-x (meters -0.0005) (meters -0.0005) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.10666667)
|
||||
(sp-flt spt-fade-b -0.10666667)
|
||||
(sp-rnd-flt spt-accel-y -1.3653333 -5.4613333 1.0)
|
||||
(sp-flt spt-friction 0.8)
|
||||
(sp-int spt-timer 300)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
(sp-int spt-next-time 200)
|
||||
(sp-launcher-by-id spt-next-launcher 681)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 681
|
||||
:init-specs ((sp-flt spt-fade-a -0.96))
|
||||
)
|
||||
|
||||
(defpart 677
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x47 :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 5) (meters 0.1) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-flt spt-a 128.0)
|
||||
(sp-flt spt-rotvel-z (degrees -0.1))
|
||||
(sp-flt spt-fade-a -0.32)
|
||||
(sp-int spt-timer 400)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
(sp-int spt-next-time 10)
|
||||
(sp-launcher-by-id spt-next-launcher 682)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 682
|
||||
:init-specs ((sp-rnd-flt spt-scale-x (meters 2) (meters 0.5) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-int spt-next-time 5)
|
||||
(sp-launcher-by-id spt-next-launcher 682)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 678
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x47 :page #xc))
|
||||
(sp-flt spt-num 2.0)
|
||||
(sp-flt spt-scale-x (meters 1))
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-flt spt-a 48.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.12857144))
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.9142857)
|
||||
(sp-flt spt-fade-b -0.9142857)
|
||||
(sp-int spt-timer 400)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2)
|
||||
(sp-int spt-next-time 35)
|
||||
(sp-launcher-by-id spt-next-launcher 683)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 683
|
||||
:init-specs ((sp-flt spt-scale-x (meters 4.5))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-scalevel-x (meters -0.010958904))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.38356164)
|
||||
(sp-flt spt-fade-b 0.0)
|
||||
(sp-flt spt-fade-a -0.13150685)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 676
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x47 :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 1))
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 96.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.16666667))
|
||||
(sp-flt spt-rotvel-z (degrees 0.3))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-int spt-timer 55)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)
|
||||
(sp-int spt-next-time 15)
|
||||
(sp-launcher-by-id spt-next-launcher 684)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 684
|
||||
:init-specs ((sp-flt spt-scale-x (meters 3.5))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-scalevel-x (meters -0.0875))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-b -6.4)
|
||||
)
|
||||
)
|
||||
|
||||
(deftype ashelin-shot (projectile)
|
||||
((tail-pos vector :inline :offset-assert 480)
|
||||
(hit-pos vector :inline :offset-assert 496)
|
||||
)
|
||||
:heap-base #x180
|
||||
:method-count-assert 40
|
||||
:size-assert #x200
|
||||
:flag-assert #x2801800200
|
||||
)
|
||||
|
||||
|
||||
(defmethod draw-laser-sight ashelin-shot ((obj ashelin-shot))
|
||||
"TODO - confirm If applicable, draw the laser sight particles
|
||||
:virtual"
|
||||
(draw-beam (-> *part-id-table* 675) (-> obj tail-pos) (-> obj starting-dir) #f #t)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod spawn-impact-particles ashelin-shot ((obj ashelin-shot))
|
||||
"Spawns associated particles with the projectile if applicable"
|
||||
(rlet ((acc :class vf)
|
||||
(vf0 :class vf)
|
||||
(vf4 :class vf)
|
||||
(vf5 :class vf)
|
||||
(vf6 :class vf)
|
||||
(vf7 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let* ((v1-1 (-> obj root-override trans))
|
||||
(a1-0 (-> obj tail-pos))
|
||||
(s5-1 (vector-! (new 'stack-no-clear 'vector) v1-1 a1-0))
|
||||
(gp-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(let ((v1-2 a1-0))
|
||||
(let ((a0-2 s5-1))
|
||||
(let ((a2-1 0.8))
|
||||
(.mov vf7 a2-1)
|
||||
)
|
||||
(.lvf vf5 (&-> a0-2 quad))
|
||||
)
|
||||
(.lvf vf4 (&-> v1-2 quad))
|
||||
)
|
||||
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
|
||||
(.mul.x.vf acc vf5 vf7 :mask #b111)
|
||||
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
|
||||
(.svf (&-> gp-0 quad) vf6)
|
||||
(let ((f30-0 (-> *part-id-table* 672 init-specs 4 initial-valuef)))
|
||||
(set! (-> *part-id-table* 672 init-specs 4 initial-valuef) (fmin f30-0 (vector-length s5-1)))
|
||||
(draw-beam (-> *part-id-table* 672) a1-0 s5-1 #f #t)
|
||||
(set! (-> *part-id-table* 672 init-specs 4 initial-valuef) f30-0)
|
||||
)
|
||||
(vector-normalize! s5-1 1.0)
|
||||
(let ((t9-2 sp-launch-particles-var)
|
||||
(a0-5 *sp-particle-system-2d*)
|
||||
(a1-2 (-> *part-id-table* 673))
|
||||
(a2-3 *launch-matrix*)
|
||||
)
|
||||
(set! (-> a2-3 trans quad) (-> gp-0 quad))
|
||||
(t9-2 a0-5 a1-2 a2-3 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
||||
)
|
||||
(let ((f0-4 (vector-dot s5-1 (-> (camera-matrix) vector 2))))
|
||||
(when (< 0.0 f0-4)
|
||||
(let ((f0-5 (* f0-4 f0-4))
|
||||
(f30-1 (-> *part-id-table* 674 init-specs 8 initial-valuef))
|
||||
(f28-0 (-> *part-id-table* 674 init-specs 8 random-rangef))
|
||||
)
|
||||
(set! (-> *part-id-table* 674 init-specs 8 initial-valuef) (* f30-1 f0-5))
|
||||
(set! (-> *part-id-table* 674 init-specs 8 random-rangef) (* f28-0 f0-5))
|
||||
(let ((t9-4 sp-launch-particles-var)
|
||||
(a0-6 *sp-particle-system-2d*)
|
||||
(a1-3 (-> *part-id-table* 674))
|
||||
(a2-4 *launch-matrix*)
|
||||
)
|
||||
(set! (-> a2-4 trans quad) (-> gp-0 quad))
|
||||
(t9-4 a0-6 a1-3 a2-4 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
||||
)
|
||||
(set! (-> *part-id-table* 674 init-specs 8 initial-valuef) f30-1)
|
||||
(set! (-> *part-id-table* 674 init-specs 8 random-rangef) f28-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod spawn-shell-particles ashelin-shot ((obj ashelin-shot))
|
||||
"TODO - confirm"
|
||||
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-0
|
||||
(let ((t9-1 (method-of-type part-tracker activate)))
|
||||
(t9-1
|
||||
(the-as part-tracker gp-0)
|
||||
*entity-pool*
|
||||
(symbol->string (-> part-tracker symbol))
|
||||
(the-as pointer #x70004000)
|
||||
)
|
||||
)
|
||||
(let ((t9-2 run-function-in-process)
|
||||
(a0-3 gp-0)
|
||||
(a1-2 part-tracker-init)
|
||||
(a2-4 (-> *part-group-id-table* 149))
|
||||
(a3-1 0)
|
||||
(t0-0 #f)
|
||||
(t1-0 #f)
|
||||
(t2-0 #f)
|
||||
(t3-0 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-0 trans quad) (-> obj root-override trans quad))
|
||||
((the-as (function object object object object object object object object none) t9-2)
|
||||
a0-3
|
||||
a1-2
|
||||
a2-4
|
||||
a3-1
|
||||
t0-0
|
||||
t1-0
|
||||
t2-0
|
||||
t3-0
|
||||
)
|
||||
)
|
||||
(-> gp-0 ppointer)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch none vs sound-id.
|
||||
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 18]
|
||||
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 36]
|
||||
(defmethod play-impact-sound ashelin-shot ((obj ashelin-shot) (arg0 projectile-options))
|
||||
(let ((v1-0 arg0))
|
||||
(the-as
|
||||
sound-id
|
||||
(cond
|
||||
((zero? v1-0)
|
||||
(sound-play "ashelin-fire")
|
||||
)
|
||||
((= v1-0 (projectile-options lose-altitude))
|
||||
(sound-play "ashelin-shot-hi")
|
||||
)
|
||||
((= v1-0 (projectile-options lose-altitude proj-options-2))
|
||||
((the-as (function projectile projectile-options none) (find-parent-method ashelin-shot 28)) obj arg0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod made-impact? ashelin-shot ((obj ashelin-shot))
|
||||
"TODO - queries the collision cache, return true/false"
|
||||
(let ((v1-0 (-> obj root-override))
|
||||
(t1-0 (new 'stack-no-clear 'collide-query))
|
||||
)
|
||||
(let ((a1-0 t1-0))
|
||||
(set! (-> a1-0 radius) (-> v1-0 root-prim prim-core world-sphere w))
|
||||
(set! (-> a1-0 collide-with) (-> v1-0 root-prim prim-core collide-with))
|
||||
(set! (-> a1-0 ignore-process0) obj)
|
||||
(set! (-> a1-0 ignore-process1) (ppointer->process (-> obj parent)))
|
||||
(set! (-> a1-0 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1))
|
||||
(set! (-> a1-0 action-mask) (collide-action solid))
|
||||
)
|
||||
(fill-and-try-snap-to-surface v1-0 (-> v1-0 transv) -10240.0 12697.6 -4096.0 t1-0)
|
||||
)
|
||||
)
|
||||
|
||||
(defun ashelin-shot-move ((arg0 ashelin-shot))
|
||||
(projectile-move-fill-line-sphere arg0)
|
||||
(let ((s5-0 (-> arg0 root-override)))
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector)))
|
||||
(vector-! s4-0 (-> arg0 tail-pos) (-> s5-0 trans))
|
||||
(let ((f0-0 (vector-length s4-0)))
|
||||
(when (< 40960.0 f0-0)
|
||||
(vector-normalize! s4-0 40960.0)
|
||||
(vector+! (-> arg0 tail-pos) (-> s5-0 trans) s4-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (logtest? (-> s5-0 status) (collide-status touch-surface))
|
||||
(let ((v1-9 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> arg0 tail-pos) (-> s5-0 trans)) 2048.0))
|
||||
(a1-5 (-> arg0 hit-pos))
|
||||
)
|
||||
(set! (-> a1-5 quad) (-> s5-0 trans quad))
|
||||
(vector+! a1-5 a1-5 v1-9)
|
||||
(move-to-point! (-> arg0 root-override) a1-5)
|
||||
)
|
||||
(go (the-as (state ashelin) (method-of-object arg0 impact)))
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch symbol vs none.
|
||||
(defmethod init-collision! ashelin-shot ((obj ashelin-shot))
|
||||
"Init the [[projectile]]'s [[collide-shape]]"
|
||||
(let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player))))
|
||||
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
||||
(set! (-> s5-0 reaction)
|
||||
(the-as (function control-info collide-query vector vector collide-status) cshape-reaction-just-move)
|
||||
)
|
||||
(set! (-> s5-0 no-reaction)
|
||||
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
||||
)
|
||||
(set! (-> s5-0 penetrate-using) (penetrate enemy-yellow-shot))
|
||||
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0)))
|
||||
(set! (-> s5-0 total-prims) (the-as uint 3))
|
||||
(set! (-> s4-0 prim-core collide-as) (collide-spec projectile))
|
||||
(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))
|
||||
(set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4096.0)
|
||||
(set! (-> s5-0 root-prim) s4-0)
|
||||
)
|
||||
(let ((v1-13 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
|
||||
(set! (-> v1-13 prim-core collide-as) (collide-spec projectile))
|
||||
(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))
|
||||
(set-vector! (-> v1-13 local-sphere) 0.0 0.0 0.0 819.2)
|
||||
)
|
||||
(let ((v1-15 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
|
||||
(set! (-> v1-15 prim-core collide-as) (collide-spec projectile))
|
||||
(set! (-> v1-15 prim-core collide-with)
|
||||
(collide-spec jak crate civilian enemy obstacle vehicle-sphere hit-by-others-list player-list pusher)
|
||||
)
|
||||
(set-vector! (-> v1-15 local-sphere) 0.0 0.0 0.0 4096.0)
|
||||
)
|
||||
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
||||
(let ((v1-18 (-> s5-0 root-prim)))
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-18 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-18 prim-core collide-with))
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 1))
|
||||
(set! (-> s5-0 event-self) 'touched)
|
||||
(set! (-> obj root-override) s5-0)
|
||||
)
|
||||
(set! (-> obj root-override pat-ignore-mask)
|
||||
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noproj #x1 :noendlessfall #x1)
|
||||
)
|
||||
(let ((v1-23 (-> obj parent)))
|
||||
(when (not (logtest? (-> (the-as ashelin (if v1-23
|
||||
(the-as ashelin (-> v1-23 0 self))
|
||||
)
|
||||
)
|
||||
bot-flags
|
||||
)
|
||||
(bot-flags attacked)
|
||||
)
|
||||
)
|
||||
(let* ((a0-17 (-> obj root-override))
|
||||
(v1-27 (-> a0-17 root-prim))
|
||||
)
|
||||
(countdown (a0-18 (-> a0-17 total-prims))
|
||||
(logclear! (-> v1-27 prim-core collide-with) (collide-spec jak))
|
||||
(&+! v1-27 80)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod init-proj-settings! ashelin-shot ((obj ashelin-shot))
|
||||
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc
|
||||
:virtual"
|
||||
(set! (-> obj tail-pos quad) (-> obj root-override trans quad))
|
||||
(set! (-> obj attack-mode) 'eco-yellow)
|
||||
(set! (-> obj max-speed) 307200.0)
|
||||
(set! (-> obj move) ashelin-shot-move)
|
||||
(set! (-> obj timeout) (seconds 1.335))
|
||||
(none)
|
||||
)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,3 +7,74 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defmethod reset-task! asht-wait-spot ((obj asht-wait-spot))
|
||||
"Virtual"
|
||||
(set! (-> obj check-done) #f)
|
||||
(set! (-> obj which-spot) -1)
|
||||
(set! (-> obj num-spots) (the-as uint 0))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod ai-task-method-11 asht-wait-spot ((obj asht-wait-spot) (arg0 bot))
|
||||
"Virtual"
|
||||
(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))
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (not ((-> obj check-done) obj (the-as ashelin arg0)))
|
||||
(let ((a1-10 (handle->process (-> arg0 focus handle))))
|
||||
(when (and a1-10
|
||||
(attacked-by-player? arg0 (the-as process-focusable a1-10))
|
||||
(zero? (logand (-> arg0 focus-status) (focus-status grabbed)))
|
||||
)
|
||||
(get-task-by-type (-> arg0 ai-ctrl) asht-fight-focus arg0)
|
||||
(ai-task-control-method-10 (-> arg0 ai-ctrl) arg0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod ai-task-method-11 asht-fight-focus ((obj asht-fight-focus) (arg0 bot))
|
||||
"Virtual"
|
||||
(let ((a1-1 (handle->process (-> arg0 focus handle))))
|
||||
(if (and a1-1
|
||||
(attacked-by-player? arg0 (the-as process-focusable a1-1))
|
||||
(zero? (logand (-> arg0 focus-status) (focus-status grabbed)))
|
||||
)
|
||||
(logior! (-> arg0 bot-flags) (bot-flags bf00))
|
||||
(ai-task-control-method-14 (-> arg0 ai-ctrl) obj arg0)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch bot-flags vs none.
|
||||
(defmethod ai-task-method-10 asht-fight-focus ((obj asht-fight-focus) (arg0 bot))
|
||||
"Virtual"
|
||||
(logclear! (-> arg0 bot-flags) (bot-flags bf00))
|
||||
(none)
|
||||
)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,29 +7,192 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype sig-plasma (structure)
|
||||
((flags uint8 :offset-assert 0)
|
||||
(level float :offset-assert 4)
|
||||
(min-level float :offset-assert 8)
|
||||
(charge-speed float :offset-assert 12)
|
||||
(powerup-sound-id sound-id :offset-assert 16)
|
||||
(plasma-sound-id sound-id :offset-assert 20)
|
||||
)
|
||||
:pack-me
|
||||
:method-count-assert 15
|
||||
:size-assert #x18
|
||||
:flag-assert #xf00000018
|
||||
(:methods
|
||||
(sig-plasma-method-9 (_type_) none 9)
|
||||
(sig-plasma-method-10 (_type_) symbol 10)
|
||||
(sig-plasma-method-11 (_type_ symbol) none 11)
|
||||
(sig-plasma-method-12 (_type_) none 12)
|
||||
(sig-plasma-method-13 (_type_) symbol 13)
|
||||
(sig-plasma-method-14 (_type_ process-focusable) none 14)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype sig-path-sample (structure)
|
||||
((bytes uint8 32 :offset-assert 0)
|
||||
(pos vector :inline :offset-assert 32)
|
||||
(quat quaternion :inline :offset-assert 48)
|
||||
(flags uint8 :offset 12)
|
||||
(pos-x float :offset 32)
|
||||
(pos-y float :offset 36)
|
||||
(pos-z float :offset 40)
|
||||
(quat-x float :offset 48)
|
||||
(quat-y float :offset 52)
|
||||
(quat-z float :offset 56)
|
||||
(quat-w float :offset 60)
|
||||
((bytes uint8 32 :offset-assert 0)
|
||||
(pos vector :inline :offset-assert 32)
|
||||
(quat quaternion :inline :offset-assert 48)
|
||||
(flags uint8 :offset 12)
|
||||
(pos-x float :offset 32)
|
||||
(pos-y float :offset 36)
|
||||
(pos-z float :offset 40)
|
||||
(quat-x float :offset 48)
|
||||
(quat-y float :offset 52)
|
||||
(quat-z float :offset 56)
|
||||
(quat-w float :offset 60)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x40
|
||||
:flag-assert #x900000040
|
||||
)
|
||||
|
||||
;; ERROR: failed type prop at 14: add failed: sig-path-sample <integer 0>
|
||||
|
||||
|
||||
(deftype sig-path (basic)
|
||||
((sample-count int32 :offset-assert 4)
|
||||
(samples (inline-array sig-path-sample) :offset-assert 8)
|
||||
((sample-count int32 :offset-assert 4)
|
||||
(samples (inline-array sig-path-sample) :offset-assert 8)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #xc
|
||||
:flag-assert #x90000000c
|
||||
)
|
||||
|
||||
|
||||
(deftype sig (bot)
|
||||
((fired-gun-count uint32 :offset-assert 992)
|
||||
(sig-path sig-path :offset-assert 996)
|
||||
(sig-path-clock clock :offset-assert 1000)
|
||||
(travel-anim-interp float :offset-assert 1004)
|
||||
(platform-index uint8 :offset-assert 1008)
|
||||
(played-unjam-time time-frame :offset-assert 1016)
|
||||
(sig-path-start-time time-frame :offset-assert 1024)
|
||||
(sig-path-cur-time time-frame :offset-assert 1032)
|
||||
(sig-path-prev-time time-frame :offset-assert 1040)
|
||||
(plasma sig-plasma :inline :offset 1048)
|
||||
(sig-path-prev-pos vector :inline :offset 368)
|
||||
)
|
||||
:heap-base #x3b0
|
||||
:method-count-assert 259
|
||||
:size-assert #x430
|
||||
:flag-assert #x10303b00430
|
||||
(:methods
|
||||
(whip () _type_ :state 225)
|
||||
(blast () _type_ :state 226)
|
||||
(chase () _type_ :state 227)
|
||||
(chase-attack () _type_ :state 228)
|
||||
(traveling () _type_ :state 229)
|
||||
(traveling-blocked () _type_ :state 230)
|
||||
(waiting-far () _type_ :state 231)
|
||||
(waiting-close () _type_ :state 232)
|
||||
(waiting-turn () _type_ :state 233)
|
||||
(waiting-crouched () _type_ :state 234)
|
||||
(charge-plasma () _type_ :state 235)
|
||||
(gun-jam () _type_ :state 236)
|
||||
(repair-gun () _type_ :state 237)
|
||||
(clean-gun () _type_ :state 238)
|
||||
(sig-path-run () _type_ :state 239)
|
||||
(sig-path-jump () _type_ :state 240)
|
||||
(sig-path-jump-land () _type_ :state 241)
|
||||
(sig-path-shoot-jump () _type_ :state 242)
|
||||
(sig-path-shoot-jump-land () _type_ :state 243)
|
||||
(sig-path-idle () _type_ :state 244)
|
||||
(sig-method-245 (_type_) symbol 245)
|
||||
(sig-method-246 (_type_) symbol 246)
|
||||
(fire-gun (_type_ vector) (pointer process) 247)
|
||||
(sig-method-248 (_type_ sig-path-sample) none 248)
|
||||
(sig-method-249 (_type_ sig-path) none 249)
|
||||
(sig-method-250 (_type_) symbol 250)
|
||||
(sig-method-251 (_type_) symbol 251)
|
||||
(sig-method-252 (_type_) symbol 252)
|
||||
(sig-method-253 (_type_) none 253)
|
||||
(sig-method-254 (_type_) symbol 254)
|
||||
(sig-method-255 (_type_) symbol 255)
|
||||
(sig-method-256 (_type_) none 256)
|
||||
(sig-method-257 (_type_) symbol 257)
|
||||
(sig-method-258 (_type_) none 258)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defskelgroup skel-sig sig 0 7
|
||||
((1 (meters 999999)))
|
||||
:bounds (static-spherem 0 0 0 5)
|
||||
:shadow 2
|
||||
:origin-joint-index 25
|
||||
)
|
||||
|
||||
(deftype sigt-wait-spot (ai-task)
|
||||
((check-done (function sigt-wait-spot sig 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
|
||||
:flag-assert #xc00000030
|
||||
)
|
||||
|
||||
|
||||
(deftype sigt-choose-piston (ai-task)
|
||||
((check-done (function sigt-choose-piston sig symbol) :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes uint8 4 :offset 38)
|
||||
(actor-indexes uint8 4 :offset 42)
|
||||
)
|
||||
:method-count-assert 15
|
||||
:size-assert #x30
|
||||
:flag-assert #xf00000030
|
||||
(:methods
|
||||
(sigt-choose-piston-method-12 (_type_ sig) symbol 12)
|
||||
(sigt-choose-piston-method-13 (_type_ sig) none 13)
|
||||
(sigt-choose-piston-method-14 (_type_ sig int) symbol 14)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype sigt-riding-piston (ai-task)
|
||||
((check-done (function sigt-riding-piston sig symbol) :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes uint8 4 :offset 38)
|
||||
)
|
||||
:method-count-assert 13
|
||||
:size-assert #x30
|
||||
:flag-assert #xd00000030
|
||||
(:methods
|
||||
(sigt-riding-piston-method-12 (_type_ sig) symbol 12)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype sigt-charge-plasma (ai-task)
|
||||
((check-done (function sigt-charge-plasma sig symbol) :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes uint8 4 :offset 38)
|
||||
(actor-index uint8 :offset 42)
|
||||
)
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
:flag-assert #xc00000030
|
||||
)
|
||||
|
||||
|
||||
(deftype sigt-fight-focus (ai-task)
|
||||
()
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
:flag-assert #xc00000030
|
||||
)
|
||||
|
||||
|
||||
(deftype sigt-repair-gun (ai-task)
|
||||
()
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
:flag-assert #xc00000030
|
||||
)
|
||||
|
||||
@@ -5,5 +5,271 @@
|
||||
;; name in dgo: sig-plasma
|
||||
;; dgos: ATE, UNB
|
||||
|
||||
(declare-type sig-atoll sig)
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defun sparticle-sig-plasma-lightning ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector))
|
||||
(let* ((v1-1 (-> arg1 key proc))
|
||||
(a1-2 (cond
|
||||
((= (-> v1-1 type) sig-atoll)
|
||||
(-> v1-1 node-list data 24)
|
||||
)
|
||||
(else
|
||||
(let ((v1-3 (-> v1-1 parent)))
|
||||
(-> (the-as sig-atoll (if v1-3
|
||||
(the-as sig-atoll (-> v1-3 0 self))
|
||||
)
|
||||
)
|
||||
node-list
|
||||
data
|
||||
52
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(v1-6 (vector<-cspace! (new 'stack-no-clear 'vector) a1-2))
|
||||
)
|
||||
(set! (-> arg2 x) (-> v1-6 x))
|
||||
(set! (-> arg2 y) (-> v1-6 y))
|
||||
(set! (-> arg2 z) (-> v1-6 z))
|
||||
)
|
||||
(sparticle-texture-animate arg0 arg1 arg2)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defpartgroup group-sig-plasma
|
||||
:id 147
|
||||
:bounds (static-bspherem 0 0 0 1)
|
||||
:parts ((sp-item 665) (sp-item 666 :flags (bit6)) (sp-item 667 :flags (bit6)) (sp-item 668 :flags (bit6)))
|
||||
)
|
||||
|
||||
(defpart 667
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 2.25) (meters 0.1) 1.0)
|
||||
(sp-flt spt-rot-x 409.6)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 32.0)
|
||||
(sp-int spt-timer 5)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow)
|
||||
(sp-flt spt-userdata 2048.0)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 668
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 8) (meters 0.1) 1.0)
|
||||
(sp-flt spt-rot-x 409.6)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 0.0)
|
||||
(sp-flt spt-g 128.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 16.0)
|
||||
(sp-int spt-timer 5)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow)
|
||||
(sp-flt spt-userdata 2048.0)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 666
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x1 :page #x43b))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 2))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 0.0 32.0 1.0)
|
||||
(sp-copy-from-other spt-g -1)
|
||||
(sp-rnd-flt spt-b 128.0 128.0 1.0)
|
||||
(sp-rnd-flt spt-a 128.0 64.0 1.0)
|
||||
(sp-int spt-timer 5)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 665
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xcc :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 0.9))
|
||||
(sp-int spt-rot-x 4)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-flt spt-scale-y (meters 0))
|
||||
(sp-flt spt-r 0.0)
|
||||
(sp-flt spt-g 0.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 0.0)
|
||||
(sp-flt spt-scalevel-y (meters 0.0125))
|
||||
(sp-flt spt-fade-r 6.4)
|
||||
(sp-flt spt-fade-g 6.4)
|
||||
(sp-flt spt-fade-a 6.4)
|
||||
(sp-int spt-timer 200)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
(new 'static 'sp-field-init-spec
|
||||
:field (sp-field-id spt-userdata)
|
||||
:flags (sp-flag plain-v2)
|
||||
:object (new 'static 'boxed-array :type int32 15 1 0 #xc0cc00 #xc0cd00 #xc0ce00 #xc0cf00 #xc0d000 #xc0d100 #xc0d200)
|
||||
)
|
||||
(sp-func spt-func 'sparticle-sig-plasma-lightning)
|
||||
(sp-int-plain-rnd spt-next-time 15 4 1)
|
||||
(sp-launcher-by-id spt-next-launcher 669)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 669
|
||||
:init-specs ((sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 255.0)
|
||||
(sp-flt spt-scalevel-x (meters 0))
|
||||
(sp-flt spt-scalevel-y (meters 0))
|
||||
(sp-flt spt-fade-r -8.533334)
|
||||
(sp-flt spt-fade-g -8.533334)
|
||||
(sp-flt spt-fade-a -8.533334)
|
||||
(sp-int-plain-rnd spt-next-time 15 4 1)
|
||||
(sp-launcher-by-id spt-next-launcher 670)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 670
|
||||
:init-specs ((sp-rnd-flt spt-scalevel-x (meters -0.00093750004) (meters -0.00093750004) 1.0)
|
||||
(sp-rnd-flt spt-scalevel-y (meters -0.00078125) (meters -0.00078125) 1.0)
|
||||
(sp-flt spt-fade-r -0.8)
|
||||
(sp-flt spt-fade-g -0.8)
|
||||
(sp-flt spt-fade-a -0.8)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod sig-plasma-method-14 sig-plasma ((obj sig-plasma) (arg0 process-focusable))
|
||||
(with-pp
|
||||
(let* ((f0-0 (-> obj level))
|
||||
(f30-0 (cond
|
||||
((logtest? (-> obj flags) 2)
|
||||
(seek f0-0 1.0 (* (-> obj charge-speed) (-> pp clock seconds-per-frame)))
|
||||
)
|
||||
(else
|
||||
(let ((f1-1 (-> obj min-level)))
|
||||
(when (< f0-0 f1-1)
|
||||
(set! f1-1 f0-0)
|
||||
(set! (-> obj min-level) f1-1)
|
||||
)
|
||||
(seek f0-0 f1-1 (* 0.25 (-> pp clock seconds-per-frame)))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> obj level) f30-0)
|
||||
(cond
|
||||
((= f30-0 0.0)
|
||||
(let ((v1-9 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
||||
(set! (-> v1-9 command) (sound-command set-param))
|
||||
(set! (-> v1-9 id) (-> obj powerup-sound-id))
|
||||
(set! (-> v1-9 params volume) -4)
|
||||
(set! (-> v1-9 auto-time) 24)
|
||||
(set! (-> v1-9 auto-from) 2)
|
||||
(set! (-> v1-9 params mask) (the-as uint 17))
|
||||
(-> v1-9 id)
|
||||
)
|
||||
(let ((v1-11 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
||||
(set! (-> v1-11 command) (sound-command set-param))
|
||||
(set! (-> v1-11 id) (-> obj plasma-sound-id))
|
||||
(set! (-> v1-11 params volume) -4)
|
||||
(set! (-> v1-11 auto-time) 24)
|
||||
(set! (-> v1-11 auto-from) 2)
|
||||
(set! (-> v1-11 params mask) (the-as uint 17))
|
||||
(-> v1-11 id)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let ((s4-0 (-> arg0 root-override trans)))
|
||||
(if (movie?)
|
||||
(set! s4-0 (camera-pos))
|
||||
)
|
||||
(let ((f28-0 (+ 0.25 (* 0.75 f30-0))))
|
||||
(sound-play-by-name
|
||||
(static-sound-name "sig-gun-powerup")
|
||||
(-> obj powerup-sound-id)
|
||||
(the int (* 1024.0 f28-0))
|
||||
(the int (* 1524.0 (+ 0.5 (* 0.5 f30-0))))
|
||||
0
|
||||
(sound-group sfx)
|
||||
s4-0
|
||||
)
|
||||
(sound-play-by-name
|
||||
(static-sound-name "sig-gun-plasma")
|
||||
(-> obj plasma-sound-id)
|
||||
(the int (* 1024.0 f28-0))
|
||||
(the int (* 1524.0 (rand-vu-float-range -1.0 1.0)))
|
||||
0
|
||||
(sound-group sfx)
|
||||
s4-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (not (logtest? (-> arg0 draw status) (draw-control-status no-draw)))
|
||||
(let ((s5-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> arg0 node-list data 24))))
|
||||
(set! (-> *part-id-table* 667 init-specs 2 initial-valuef) (lerp 409.6 9216.0 f30-0))
|
||||
(set! (-> *part-id-table* 667 init-specs 8 initial-valuef) (lerp 0.0 32.0 f30-0))
|
||||
(set! (-> *part-id-table* 668 init-specs 2 initial-valuef) (lerp 409.6 32768.0 f30-0))
|
||||
(set! (-> *part-id-table* 668 init-specs 8 initial-valuef) (lerp 0.0 16.0 f30-0))
|
||||
(set! (-> *part-id-table* 666 init-specs 2 initial-valuef) (lerp 409.6 8192.0 f30-0))
|
||||
(set! (-> *part-id-table* 665 init-specs 1 initial-valuef) (lerp 0.1 1.0 f30-0))
|
||||
(set! (-> *part-id-table* 665 init-specs 2 initial-valuef) (lerp 409.6 3686.4 f30-0))
|
||||
(spawn (-> arg0 part) s5-2)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch uint vs none.
|
||||
(defmethod sig-plasma-method-12 sig-plasma ((obj sig-plasma))
|
||||
(let ((f0-0 (-> obj level)))
|
||||
(-> obj min-level)
|
||||
(when (>= f0-0 1.0)
|
||||
(set! f0-0 0.99)
|
||||
(set! (-> obj level) f0-0)
|
||||
)
|
||||
(set! (-> obj min-level) (fmax 0.0 (+ -0.5 f0-0)))
|
||||
)
|
||||
(set! (-> obj flags) (logand -23 (-> obj flags)))
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch uint vs none.
|
||||
(defmethod sig-plasma-method-11 sig-plasma ((obj sig-plasma) (arg0 symbol))
|
||||
(set! (-> obj min-level) 0.0)
|
||||
(cond
|
||||
(arg0
|
||||
(set! (-> obj level) 0.0)
|
||||
)
|
||||
(else
|
||||
(if (>= (-> obj level) 1.0)
|
||||
(set! (-> obj level) 0.99)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> obj flags) (logand -24 (-> obj flags)))
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch uint vs none.
|
||||
(defmethod sig-plasma-method-9 sig-plasma ((obj sig-plasma))
|
||||
(logior! (-> obj flags) 8)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod sig-plasma-method-10 sig-plasma ((obj sig-plasma))
|
||||
(logtest? (-> obj flags) 4)
|
||||
)
|
||||
|
||||
(defmethod sig-plasma-method-13 sig-plasma ((obj sig-plasma))
|
||||
(and (logtest? (-> obj flags) 8) (logtest? (-> obj flags) 16))
|
||||
)
|
||||
|
||||
@@ -7,3 +7,509 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defpart 652
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x45 :page #xc))
|
||||
(sp-func spt-birth-func 'birth-func-set-quat)
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 0.75))
|
||||
(sp-flt spt-scale-y (meters 10))
|
||||
(sp-flt spt-r 128.0)
|
||||
(sp-flt spt-g 0.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-rnd-flt spt-a 32.0 64.0 1.0)
|
||||
(sp-int spt-timer 5)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-14 left-multiply-quat)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 653
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 1) (meters 3) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 128.0)
|
||||
(sp-flt spt-g 0.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-rnd-flt spt-a 64.0 32.0 1.0)
|
||||
(sp-int spt-timer 5)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 654
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x34 :page #xc))
|
||||
(sp-flt spt-num 1.5)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 128.0)
|
||||
(sp-flt spt-b 128.0)
|
||||
(sp-rnd-flt spt-a 16.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-scalevel-x (meters 0.013333334) (meters 0.006666667) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -1.28)
|
||||
(sp-flt spt-fade-b -1.28)
|
||||
(sp-flt spt-fade-a -0.48)
|
||||
(sp-int spt-timer 100)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 655
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x46 :page #xc))
|
||||
(sp-func spt-birth-func 'birth-func-set-quat)
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 2))
|
||||
(sp-flt spt-scale-y (meters 4.5))
|
||||
(sp-flt spt-r 128.0)
|
||||
(sp-flt spt-g 0.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-flt spt-a 128.0)
|
||||
(sp-flt spt-fade-a -3.6571429)
|
||||
(sp-int spt-timer 35)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 left-multiply-quat)
|
||||
)
|
||||
)
|
||||
|
||||
(defpartgroup group-sig-shot-hit
|
||||
:id 146
|
||||
:duration (seconds 1)
|
||||
:flags (use-local-clock)
|
||||
:bounds (static-bspherem 0 0 0 8)
|
||||
:parts ((sp-item 656 :period 600 :length 5)
|
||||
(sp-item 657 :fade-after (meters 100) :period 600 :length 5)
|
||||
(sp-item 658 :period 600 :length 5)
|
||||
(sp-item 659 :fade-after (meters 50) :falloff-to (meters 50) :period 600 :length 200)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 200)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 150)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 125)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 100)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 75)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 65)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 50)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 40)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 25)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 659
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
|
||||
(sp-rnd-flt spt-num 0.0 0.2 1.0)
|
||||
(sp-flt spt-y (meters 0.25))
|
||||
(sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0)
|
||||
(sp-int spt-rot-x 4)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.06666667) (meters 0.013333334) 1.0)
|
||||
(sp-rnd-flt spt-scalevel-x (meters -0.001) (meters -0.00033333333) 1.0)
|
||||
(sp-rnd-int-flt spt-rotvel-z (degrees -2.4) 1 873.81335)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.10666667)
|
||||
(sp-flt spt-fade-b -0.10666667)
|
||||
(sp-rnd-flt spt-accel-y -1.3653333 -5.4613333 1.0)
|
||||
(sp-flt spt-friction 0.9)
|
||||
(sp-int spt-timer 300)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
(sp-int spt-next-time 200)
|
||||
(sp-launcher-by-id spt-next-launcher 661)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 660
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
|
||||
(sp-flt spt-num 0.5)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.3) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-flt spt-a 96.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0)
|
||||
(sp-rnd-flt spt-scalevel-x (meters -0.0005) (meters -0.0005) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.10666667)
|
||||
(sp-flt spt-fade-b -0.10666667)
|
||||
(sp-rnd-flt spt-accel-y -1.3653333 -5.4613333 1.0)
|
||||
(sp-flt spt-friction 0.8)
|
||||
(sp-int spt-timer 300)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
(sp-int spt-next-time 200)
|
||||
(sp-launcher-by-id spt-next-launcher 661)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 661
|
||||
:init-specs ((sp-flt spt-fade-a -0.96))
|
||||
)
|
||||
|
||||
(defpart 657
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x47 :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 5) (meters 0.1) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-flt spt-a 128.0)
|
||||
(sp-flt spt-rotvel-z (degrees -0.1))
|
||||
(sp-flt spt-fade-a -0.32)
|
||||
(sp-int spt-timer 400)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
(sp-int spt-next-time 10)
|
||||
(sp-launcher-by-id spt-next-launcher 662)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 662
|
||||
:init-specs ((sp-rnd-flt spt-scale-x (meters 2) (meters 0.5) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-int spt-next-time 5)
|
||||
(sp-launcher-by-id spt-next-launcher 662)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 658
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x47 :page #xc))
|
||||
(sp-flt spt-num 2.0)
|
||||
(sp-flt spt-scale-x (meters 1))
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-flt spt-a 48.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.12857144))
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.9142857)
|
||||
(sp-flt spt-fade-b -0.9142857)
|
||||
(sp-int spt-timer 400)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2)
|
||||
(sp-int spt-next-time 35)
|
||||
(sp-launcher-by-id spt-next-launcher 663)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 663
|
||||
:init-specs ((sp-flt spt-scale-x (meters 4.5))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-scalevel-x (meters -0.010958904))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.38356164)
|
||||
(sp-flt spt-fade-b 0.0)
|
||||
(sp-flt spt-fade-a -0.13150685)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 656
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x47 :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 1))
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 96.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.16666667))
|
||||
(sp-flt spt-rotvel-z (degrees 0.3))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-int spt-timer 55)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)
|
||||
(sp-int spt-next-time 15)
|
||||
(sp-launcher-by-id spt-next-launcher 664)
|
||||
)
|
||||
)
|
||||
|
||||
(defpart 664
|
||||
:init-specs ((sp-flt spt-scale-x (meters 3.5))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-scalevel-x (meters -0.0875))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-b -6.4)
|
||||
)
|
||||
)
|
||||
|
||||
(deftype sig-shot (projectile)
|
||||
((tail-pos vector :inline :offset-assert 480)
|
||||
(hit-pos vector :inline :offset-assert 496)
|
||||
)
|
||||
:heap-base #x180
|
||||
:method-count-assert 40
|
||||
:size-assert #x200
|
||||
:flag-assert #x2801800200
|
||||
)
|
||||
|
||||
|
||||
(defmethod draw-laser-sight sig-shot ((obj sig-shot))
|
||||
"TODO - confirm If applicable, draw the laser sight particles
|
||||
:virtual"
|
||||
(draw-beam (-> *part-id-table* 655) (-> obj tail-pos) (-> obj starting-dir) #f #t)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod spawn-impact-particles sig-shot ((obj sig-shot))
|
||||
"Spawns associated particles with the projectile if applicable"
|
||||
(rlet ((acc :class vf)
|
||||
(vf0 :class vf)
|
||||
(vf4 :class vf)
|
||||
(vf5 :class vf)
|
||||
(vf6 :class vf)
|
||||
(vf7 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let* ((v1-1 (-> obj root-override trans))
|
||||
(a1-0 (-> obj tail-pos))
|
||||
(s5-1 (vector-! (new 'stack-no-clear 'vector) v1-1 a1-0))
|
||||
(gp-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(let ((v1-2 a1-0))
|
||||
(let ((a0-2 s5-1))
|
||||
(let ((a2-1 0.8))
|
||||
(.mov vf7 a2-1)
|
||||
)
|
||||
(.lvf vf5 (&-> a0-2 quad))
|
||||
)
|
||||
(.lvf vf4 (&-> v1-2 quad))
|
||||
)
|
||||
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
|
||||
(.mul.x.vf acc vf5 vf7 :mask #b111)
|
||||
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
|
||||
(.svf (&-> gp-0 quad) vf6)
|
||||
(let ((f30-0 (-> *part-id-table* 652 init-specs 4 initial-valuef)))
|
||||
(set! (-> *part-id-table* 652 init-specs 4 initial-valuef) (fmin f30-0 (vector-length s5-1)))
|
||||
(draw-beam (-> *part-id-table* 652) a1-0 s5-1 #f #t)
|
||||
(set! (-> *part-id-table* 652 init-specs 4 initial-valuef) f30-0)
|
||||
)
|
||||
(vector-normalize! s5-1 1.0)
|
||||
(let ((t9-2 sp-launch-particles-var)
|
||||
(a0-5 *sp-particle-system-2d*)
|
||||
(a1-2 (-> *part-id-table* 653))
|
||||
(a2-3 *launch-matrix*)
|
||||
)
|
||||
(set! (-> a2-3 trans quad) (-> gp-0 quad))
|
||||
(t9-2 a0-5 a1-2 a2-3 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
||||
)
|
||||
(let ((f0-4 (vector-dot s5-1 (-> (camera-matrix) vector 2))))
|
||||
(when (< 0.0 f0-4)
|
||||
(let ((f0-5 (* f0-4 f0-4))
|
||||
(f30-1 (-> *part-id-table* 654 init-specs 8 initial-valuef))
|
||||
(f28-0 (-> *part-id-table* 654 init-specs 8 random-rangef))
|
||||
)
|
||||
(set! (-> *part-id-table* 654 init-specs 8 initial-valuef) (* f30-1 f0-5))
|
||||
(set! (-> *part-id-table* 654 init-specs 8 random-rangef) (* f28-0 f0-5))
|
||||
(let ((t9-4 sp-launch-particles-var)
|
||||
(a0-6 *sp-particle-system-2d*)
|
||||
(a1-3 (-> *part-id-table* 654))
|
||||
(a2-4 *launch-matrix*)
|
||||
)
|
||||
(set! (-> a2-4 trans quad) (-> gp-0 quad))
|
||||
(t9-4 a0-6 a1-3 a2-4 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
||||
)
|
||||
(set! (-> *part-id-table* 654 init-specs 8 initial-valuef) f30-1)
|
||||
(set! (-> *part-id-table* 654 init-specs 8 random-rangef) f28-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod spawn-shell-particles sig-shot ((obj sig-shot))
|
||||
"TODO - confirm"
|
||||
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-0
|
||||
(let ((t9-1 (method-of-type part-tracker activate)))
|
||||
(t9-1
|
||||
(the-as part-tracker gp-0)
|
||||
*entity-pool*
|
||||
(symbol->string (-> part-tracker symbol))
|
||||
(the-as pointer #x70004000)
|
||||
)
|
||||
)
|
||||
(let ((t9-2 run-function-in-process)
|
||||
(a0-3 gp-0)
|
||||
(a1-2 part-tracker-init)
|
||||
(a2-4 (-> *part-group-id-table* 146))
|
||||
(a3-1 0)
|
||||
(t0-0 #f)
|
||||
(t1-0 #f)
|
||||
(t2-0 #f)
|
||||
(t3-0 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-0 trans quad) (-> obj root-override trans quad))
|
||||
((the-as (function object object object object object object object object none) t9-2)
|
||||
a0-3
|
||||
a1-2
|
||||
a2-4
|
||||
a3-1
|
||||
t0-0
|
||||
t1-0
|
||||
t2-0
|
||||
t3-0
|
||||
)
|
||||
)
|
||||
(-> gp-0 ppointer)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch int vs sound-id.
|
||||
(defmethod play-impact-sound sig-shot ((obj sig-shot) (arg0 projectile-options))
|
||||
(let ((v1-0 arg0))
|
||||
(cond
|
||||
((zero? v1-0)
|
||||
(sound-play "sig-shot-fire")
|
||||
)
|
||||
((= v1-0 (projectile-options lose-altitude))
|
||||
(sound-play "sig-shot-hit")
|
||||
)
|
||||
)
|
||||
)
|
||||
(the-as sound-id 0)
|
||||
)
|
||||
|
||||
(defmethod made-impact? sig-shot ((obj sig-shot))
|
||||
"TODO - queries the collision cache, return true/false"
|
||||
(let ((v1-0 (-> obj root-override))
|
||||
(t1-0 (new 'stack-no-clear 'collide-query))
|
||||
)
|
||||
(let ((a1-0 t1-0))
|
||||
(set! (-> a1-0 radius) (-> v1-0 root-prim prim-core world-sphere w))
|
||||
(set! (-> a1-0 collide-with) (-> v1-0 root-prim prim-core collide-with))
|
||||
(set! (-> a1-0 ignore-process0) obj)
|
||||
(set! (-> a1-0 ignore-process1) (ppointer->process (-> obj parent)))
|
||||
(set! (-> a1-0 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1))
|
||||
(set! (-> a1-0 action-mask) (collide-action solid))
|
||||
)
|
||||
(fill-and-try-snap-to-surface v1-0 (-> v1-0 transv) -10240.0 12697.6 -4096.0 t1-0)
|
||||
)
|
||||
)
|
||||
|
||||
(defun sig-shot-move ((arg0 sig-shot))
|
||||
(projectile-move-fill-line-sphere arg0)
|
||||
(let ((s5-0 (-> arg0 root-override)))
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector)))
|
||||
(vector-! s4-0 (-> arg0 tail-pos) (-> s5-0 trans))
|
||||
(let ((f0-0 (vector-length s4-0)))
|
||||
(when (< 40960.0 f0-0)
|
||||
(vector-normalize! s4-0 40960.0)
|
||||
(vector+! (-> arg0 tail-pos) (-> s5-0 trans) s4-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (logtest? (-> s5-0 status) (collide-status touch-surface))
|
||||
(let ((v1-9 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> arg0 tail-pos) (-> s5-0 trans)) 2048.0))
|
||||
(a1-5 (-> arg0 hit-pos))
|
||||
)
|
||||
(set! (-> a1-5 quad) (-> s5-0 trans quad))
|
||||
(vector+! a1-5 a1-5 v1-9)
|
||||
(move-to-point! (-> arg0 root-override) a1-5)
|
||||
)
|
||||
(go (method-of-object arg0 impact))
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod init-collision! sig-shot ((obj sig-shot))
|
||||
"Init the [[projectile]]'s [[collide-shape]]"
|
||||
(let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player))))
|
||||
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
||||
(set! (-> s5-0 reaction)
|
||||
(the-as (function control-info collide-query vector vector collide-status) cshape-reaction-just-move)
|
||||
)
|
||||
(set! (-> s5-0 no-reaction)
|
||||
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
||||
)
|
||||
(set! (-> s5-0 penetrate-using) (penetrate enemy-yellow-shot))
|
||||
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0)))
|
||||
(set! (-> s5-0 total-prims) (the-as uint 3))
|
||||
(set! (-> s4-0 prim-core collide-as) (collide-spec projectile))
|
||||
(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))
|
||||
(set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4096.0)
|
||||
(set! (-> s5-0 root-prim) s4-0)
|
||||
)
|
||||
(let ((v1-13 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
|
||||
(set! (-> v1-13 prim-core collide-as) (collide-spec projectile))
|
||||
(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))
|
||||
(set-vector! (-> v1-13 local-sphere) 0.0 0.0 0.0 819.2)
|
||||
)
|
||||
(let ((v1-15 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
|
||||
(set! (-> v1-15 prim-core collide-as) (collide-spec projectile))
|
||||
(set! (-> v1-15 prim-core collide-with)
|
||||
(collide-spec jak crate civilian enemy obstacle vehicle-sphere hit-by-others-list player-list pusher)
|
||||
)
|
||||
(set-vector! (-> v1-15 local-sphere) 0.0 0.0 0.0 4096.0)
|
||||
)
|
||||
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
||||
(let ((v1-18 (-> s5-0 root-prim)))
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-18 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-18 prim-core collide-with))
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 1))
|
||||
(set! (-> s5-0 event-self) 'touched)
|
||||
(set! (-> obj root-override) s5-0)
|
||||
)
|
||||
(let ((v1-22 (-> obj parent)))
|
||||
(when (not (logtest? (-> (the-as sig (if v1-22
|
||||
(the-as sig (-> v1-22 0 self))
|
||||
)
|
||||
)
|
||||
bot-flags
|
||||
)
|
||||
(bot-flags attacked)
|
||||
)
|
||||
)
|
||||
(let* ((a0-16 (-> obj root-override))
|
||||
(v1-27 (-> a0-16 root-prim))
|
||||
)
|
||||
(countdown (a0-17 (-> a0-16 total-prims))
|
||||
(logclear! (-> v1-27 prim-core collide-with) (collide-spec jak))
|
||||
(&+! v1-27 80)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> obj root-override pat-ignore-mask)
|
||||
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noproj #x1 :noendlessfall #x1)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod init-proj-settings! sig-shot ((obj sig-shot))
|
||||
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc
|
||||
:virtual"
|
||||
(set! (-> obj tail-pos quad) (-> obj root-override trans quad))
|
||||
(set! (-> obj attack-mode) 'eco-yellow)
|
||||
(set! (-> obj max-speed) 307200.0)
|
||||
(set! (-> obj move) sig-shot-move)
|
||||
(set! (-> obj timeout) (seconds 1.335))
|
||||
(none)
|
||||
)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,3 +7,430 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defmethod reset-task! sigt-wait-spot ((obj sigt-wait-spot))
|
||||
"Virtual"
|
||||
(set! (-> obj check-done) #f)
|
||||
(set! (-> obj which-spot) -1)
|
||||
(set! (-> obj num-spots) (the-as uint 0))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod ai-task-method-11 sigt-wait-spot ((obj sigt-wait-spot) (arg0 bot))
|
||||
"Virtual"
|
||||
(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))
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (not ((-> obj check-done) obj (the-as sig arg0)))
|
||||
(let ((a1-10 (handle->process (-> arg0 focus handle))))
|
||||
(cond
|
||||
((and a1-10
|
||||
(attacked-by-player? arg0 (the-as process-focusable a1-10))
|
||||
(zero? (logand (-> arg0 focus-status) (focus-status grabbed)))
|
||||
)
|
||||
(get-task-by-type (-> arg0 ai-ctrl) sigt-fight-focus arg0)
|
||||
(ai-task-control-method-10 (-> arg0 ai-ctrl) arg0)
|
||||
)
|
||||
((logtest? (bot-flags bf19) (-> arg0 bot-flags))
|
||||
(get-task-by-type (-> arg0 ai-ctrl) sigt-repair-gun arg0)
|
||||
(ai-task-control-method-10 (-> arg0 ai-ctrl) arg0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod ai-task-method-11 sigt-fight-focus ((obj sigt-fight-focus) (arg0 bot))
|
||||
"Virtual"
|
||||
(let ((a1-1 (handle->process (-> arg0 focus handle))))
|
||||
(if (and a1-1
|
||||
(attacked-by-player? arg0 (the-as process-focusable a1-1))
|
||||
(zero? (logand (-> arg0 focus-status) (focus-status grabbed)))
|
||||
)
|
||||
(logior! (-> arg0 bot-flags) (bot-flags bf00))
|
||||
(ai-task-control-method-14 (-> arg0 ai-ctrl) obj arg0)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch bot-flags vs none.
|
||||
(defmethod ai-task-method-10 sigt-fight-focus ((obj sigt-fight-focus) (arg0 bot))
|
||||
"Virtual"
|
||||
(logclear! (-> arg0 bot-flags) (bot-flags bf00))
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod ai-task-method-11 sigt-repair-gun ((obj sigt-repair-gun) (arg0 bot))
|
||||
"Virtual"
|
||||
(cond
|
||||
((not (logtest? (bot-flags bf19) (-> arg0 bot-flags)))
|
||||
(ai-task-control-method-14 (-> arg0 ai-ctrl) obj arg0)
|
||||
)
|
||||
(else
|
||||
(let ((a1-4 (handle->process (-> arg0 focus handle))))
|
||||
(when (and a1-4
|
||||
(attacked-by-player? arg0 (the-as process-focusable a1-4))
|
||||
(zero? (logand (-> arg0 focus-status) (focus-status grabbed)))
|
||||
)
|
||||
(get-task-by-type (-> arg0 ai-ctrl) sigt-fight-focus arg0)
|
||||
(ai-task-control-method-10 (-> arg0 ai-ctrl) arg0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod sigt-choose-piston-method-14 sigt-choose-piston ((obj sigt-choose-piston) (arg0 sig) (arg1 int))
|
||||
(let* ((v1-2 (-> arg0 course spots (-> obj spot-indexes arg1)))
|
||||
(a0-6 (-> arg0 actor-group 0 data (-> obj actor-indexes arg1) actor))
|
||||
(gp-0 (if a0-6
|
||||
(-> a0-6 extra process)
|
||||
)
|
||||
)
|
||||
)
|
||||
(or (player-blocking-spot? arg0 v1-2)
|
||||
(or (not gp-0)
|
||||
(>= 14336.0
|
||||
(vector-vector-xz-distance (target-pos 0) (-> (the-as process-focusable gp-0) root-override trans))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod sigt-choose-piston-method-13 sigt-choose-piston ((obj sigt-choose-piston) (arg0 sig))
|
||||
(let ((s4-0 0))
|
||||
(let ((f30-0 -1.0)
|
||||
(s3-0 (-> arg0 root-override2 trans))
|
||||
)
|
||||
(countdown (s2-0 (-> obj num-spots))
|
||||
(let* ((v1-3 (-> obj spot-indexes s2-0))
|
||||
(f28-0 (vector-vector-xz-distance s3-0 (the-as vector (-> arg0 course spots v1-3))))
|
||||
)
|
||||
(when (and (or (< f30-0 0.0) (< f28-0 f30-0)) (not (sigt-choose-piston-method-14 obj arg0 (the-as int s2-0))))
|
||||
(set! f30-0 f28-0)
|
||||
(set! s4-0 (the-as int s2-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(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
|
||||
)
|
||||
(let* ((v1-22 (-> arg0 actor-group 0 data (-> obj actor-indexes s4-0) actor))
|
||||
(a0-6 (if v1-22
|
||||
(-> v1-22 extra process)
|
||||
)
|
||||
)
|
||||
)
|
||||
(if a0-6
|
||||
(set! (-> arg0 poi-handle) (process->handle a0-6))
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod sigt-choose-piston-method-12 sigt-choose-piston ((obj sigt-choose-piston) (arg0 sig))
|
||||
(with-pp
|
||||
(when (and (outside-spot-radius? arg0 (the-as bot-spot #f) (the-as vector #f) #f)
|
||||
(not (sigt-choose-piston-method-14 obj arg0 (-> obj which-spot)))
|
||||
)
|
||||
(let* ((v1-12 (-> arg0 actor-group 0 data (-> obj actor-indexes (-> obj which-spot)) actor))
|
||||
(s5-1 (if v1-12
|
||||
(-> v1-12 extra process)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when s5-1
|
||||
(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) 'sync)
|
||||
(let ((v1-19
|
||||
(- ((method-of-type sync-info get-timeframe-offset!) (the-as sync-info (send-event-function s5-1 a1-3)) 0)
|
||||
(-> pp clock frame-counter)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and (< v1-19 (seconds 0.5)) (< (seconds 0.2) v1-19))
|
||||
(let ((v1-22 (-> (the-as process-focusable s5-1) root-override))
|
||||
(s4-0 (-> arg0 root-override2))
|
||||
)
|
||||
(when (>= 10012.445
|
||||
(fabs (deg-
|
||||
(atan (- (-> v1-22 trans x) (-> s4-0 trans x)) (- (-> v1-22 trans z) (-> s4-0 trans z)))
|
||||
(quaternion-y-angle (-> s4-0 quat))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> arg0 enemy-flags) (the-as enemy-flag (logclear (-> arg0 enemy-flags) (enemy-flag vulnerable))))
|
||||
(when (send-event arg0 'jump 4 (-> (the-as process-focusable s5-1) root-override trans))
|
||||
(set! (-> arg0 spot center quad) (-> (the-as process-focusable s5-1) root-override trans quad))
|
||||
(set! (-> arg0 spot center w) 10240.0)
|
||||
(return #t)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod reset-task! sigt-choose-piston ((obj sigt-choose-piston))
|
||||
"Virtual"
|
||||
(set! (-> obj check-done) #f)
|
||||
(set! (-> obj which-spot) -1)
|
||||
(set! (-> obj num-spots) (the-as uint 0))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod ai-task-method-11 sigt-choose-piston ((obj sigt-choose-piston) (arg0 bot))
|
||||
"Virtual"
|
||||
(let ((s4-0 (-> obj which-spot)))
|
||||
(cond
|
||||
((< s4-0 0)
|
||||
(sigt-choose-piston-method-13 obj (the-as sig arg0))
|
||||
)
|
||||
((sigt-choose-piston-method-14 obj (the-as sig arg0) s4-0)
|
||||
(sigt-choose-piston-method-13 obj (the-as sig arg0))
|
||||
)
|
||||
)
|
||||
(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))
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (not ((-> obj check-done) obj (the-as sig arg0)))
|
||||
(let ((a1-6 (handle->process (-> arg0 focus handle))))
|
||||
(when (and a1-6
|
||||
(attacked-by-player? arg0 (the-as process-focusable a1-6))
|
||||
(zero? (logand (-> arg0 focus-status) (focus-status grabbed)))
|
||||
)
|
||||
(get-task-by-type (-> arg0 ai-ctrl) sigt-fight-focus arg0)
|
||||
(ai-task-control-method-10 (-> arg0 ai-ctrl) arg0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod ai-task-method-10 sigt-choose-piston ((obj sigt-choose-piston) (arg0 bot))
|
||||
"Virtual"
|
||||
(clear-poi-and-focus! arg0)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod sigt-riding-piston-method-12 sigt-riding-piston ((obj sigt-riding-piston) (arg0 sig))
|
||||
(with-pp
|
||||
(when (not (player-blocking-spot? arg0 (-> arg0 course spots (-> obj spot-indexes (-> obj which-spot)))))
|
||||
(let* ((v1-9 (-> arg0 actor-group 0 data (-> arg0 platform-index) actor))
|
||||
(a0-4 (if v1-9
|
||||
(-> v1-9 extra process)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when a0-4
|
||||
(let ((a1-6 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-6 from) (process->ppointer pp))
|
||||
(set! (-> a1-6 num-params) 0)
|
||||
(set! (-> a1-6 message) 'sync)
|
||||
(let ((v1-16
|
||||
(- ((method-of-type sync-info get-timeframe-offset!) (the-as sync-info (send-event-function a0-4 a1-6)) 0)
|
||||
(-> pp clock frame-counter)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and (< v1-16 (seconds 2.8)) (< (seconds 1.8) v1-16))
|
||||
(let ((v1-19 (-> arg0 nav)))
|
||||
(set! (-> v1-19 target-speed) 0.0)
|
||||
)
|
||||
0
|
||||
(let ((s5-1 (-> arg0 course spots (-> obj spot-indexes (-> obj which-spot)))))
|
||||
(set! (-> arg0 enemy-flags) (the-as enemy-flag (logclear (-> arg0 enemy-flags) (enemy-flag vulnerable))))
|
||||
(when (send-event arg0 'jump 0 (-> s5-1 center))
|
||||
(mem-copy! (the-as pointer (-> arg0 spot)) (the-as pointer s5-1) 20)
|
||||
(return #t)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod reset-task! sigt-riding-piston ((obj sigt-riding-piston))
|
||||
"Virtual"
|
||||
(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 sigt-riding-piston ((obj sigt-riding-piston) (arg0 bot))
|
||||
"Virtual"
|
||||
(let ((s4-0 (-> obj which-spot)))
|
||||
(when (or (< s4-0 0) (player-blocking-spot? arg0 (-> arg0 course spots (-> obj spot-indexes s4-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)
|
||||
(send-event
|
||||
(ppointer->process (-> arg0 my-simple-focus))
|
||||
'move-trans
|
||||
(-> arg0 course spots (-> obj spot-indexes s4-0))
|
||||
)
|
||||
(set! (-> arg0 poi-handle) (ppointer->handle (-> arg0 my-simple-focus)))
|
||||
)
|
||||
(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 sig arg0))
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod ai-task-method-10 sigt-riding-piston ((obj sigt-riding-piston) (arg0 bot))
|
||||
"Virtual"
|
||||
(clear-poi-and-focus! arg0)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod reset-task! sigt-charge-plasma ((obj sigt-charge-plasma))
|
||||
"Virtual"
|
||||
(set! (-> obj check-done) #f)
|
||||
(set! (-> obj which-spot) -1)
|
||||
(set! (-> obj num-spots) (the-as uint 0))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod ai-task-method-11 sigt-charge-plasma ((obj sigt-charge-plasma) (arg0 bot))
|
||||
"Virtual"
|
||||
(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))
|
||||
)
|
||||
)
|
||||
(let* ((v1-24 (-> arg0 actor-group 0 data (-> obj actor-index) actor))
|
||||
(s3-1 (when v1-24
|
||||
(let ((s2-0 (-> v1-24 extra process)))
|
||||
(if (type? s2-0 process-focusable)
|
||||
s2-0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
(s3-1
|
||||
(set! (-> arg0 poi-handle) (process->handle s3-1))
|
||||
(set! (-> arg0 focus-mode) 1)
|
||||
(let ((a1-10 (-> arg0 course spots (-> obj spot-indexes s4-0))))
|
||||
(if (and (outside-spot-radius? arg0 a1-10 (the-as vector #f) #f)
|
||||
(enemy-method-95 arg0 (get-trans (the-as process-focusable s3-1) 3) 10012.445)
|
||||
)
|
||||
(logior! (-> arg0 stack 920) 1)
|
||||
(set! (-> arg0 stack 920) (logand -2 (-> arg0 stack 920)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(clear-poi-and-focus! arg0)
|
||||
(set! (-> arg0 stack 920) (logand -2 (-> arg0 stack 920)))
|
||||
(set! (-> arg0 focus-mode) 0)
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (not ((-> obj check-done) obj (the-as sig arg0)))
|
||||
(let ((a1-14 (handle->process (-> arg0 focus handle))))
|
||||
(when (and a1-14
|
||||
(attacked-by-player? arg0 (the-as process-focusable a1-14))
|
||||
(zero? (logand (-> arg0 focus-status) (focus-status grabbed)))
|
||||
)
|
||||
(get-task-by-type (-> arg0 ai-ctrl) sigt-fight-focus arg0)
|
||||
(ai-task-control-method-10 (-> arg0 ai-ctrl) arg0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod ai-task-method-10 sigt-charge-plasma ((obj sigt-charge-plasma) (arg0 bot))
|
||||
"Virtual"
|
||||
(clear-poi-and-focus! arg0)
|
||||
(set! (-> arg0 stack 920) (logand -2 (-> arg0 stack 920)))
|
||||
(set! (-> arg0 focus-mode) 0)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -47,7 +47,20 @@
|
||||
(all-off 0)
|
||||
(course-spots 1)
|
||||
(task-spots 2)
|
||||
(all-on 3))
|
||||
(all-on 3)
|
||||
(bmc04 4)
|
||||
(bmc05 5)
|
||||
(bmc06 6)
|
||||
(bmc07 7)
|
||||
(bmc08 8)
|
||||
(bmc09 9)
|
||||
(bmc10 10)
|
||||
(bmc11 11)
|
||||
(bmc12 12)
|
||||
(bmc13 13)
|
||||
(bmc14 14)
|
||||
(bmc15 15)
|
||||
(bmc16 16))
|
||||
;; ---bot-marks-controls
|
||||
|
||||
;; +++race-marks-controls
|
||||
|
||||
@@ -7,3 +7,461 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype ashelin-battle (ashelin)
|
||||
((player-in-bounds-time time-frame :offset-assert 1040)
|
||||
)
|
||||
:heap-base #x3a0
|
||||
:method-count-assert 252
|
||||
:size-assert #x418
|
||||
:flag-assert #xfc03a00418
|
||||
(:methods
|
||||
(set-frontline-dist! (_type_) none 251)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defmethod set-frontline-dist! ashelin-battle ((obj ashelin-battle))
|
||||
(let ((a0-1 *target*))
|
||||
(when a0-1
|
||||
(set! (-> obj frontline w) (- (+ 40960.0 (vector-dot (the-as vector (-> obj frontline)) (get-trans a0-1 0)))))
|
||||
0
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(define *ash1-course*
|
||||
(new 'static 'ashelin-course
|
||||
:course-id #x1
|
||||
:speech-count #x30
|
||||
:spot-count #x8
|
||||
: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-battle))
|
||||
(clear-speech-flags! arg0)
|
||||
(move-to-point! (-> arg0 root-override2) (the-as vector (-> arg0 ash-course spots 0)))
|
||||
(let ((v1-7 (game-task-control-method-9 (-> arg0 task))))
|
||||
(if (= (-> v1-7 action) (game-task-action say))
|
||||
(add-process
|
||||
*gui-control*
|
||||
arg0
|
||||
(gui-channel art-load)
|
||||
(gui-action queue)
|
||||
(the-as string (-> v1-7 scene))
|
||||
-99.0
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((a0-8 15))
|
||||
(set! (-> arg0 hit-points) a0-8)
|
||||
(set! (-> arg0 enemy-info-override default-hit-points) a0-8)
|
||||
)
|
||||
(set! (-> arg0 waypoint-time0) 0)
|
||||
(let ((v1-10 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
(set! (-> v1-10 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-10 bytes 6) (the-as uint 0))
|
||||
(set! (-> v1-10 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-10) check-done)
|
||||
(lambda ((arg0 asht-wait-spot) (arg1 ashelin-battle))
|
||||
(with-pp
|
||||
(if (and (zero? (-> arg1 waypoint-time0)) (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-9 (-> arg1 actor-group 0 data 0 actor))
|
||||
)
|
||||
(t9-0
|
||||
(if v1-9
|
||||
(-> v1-9 extra process)
|
||||
)
|
||||
a1-1
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> arg1 waypoint-time0) (-> pp clock frame-counter))
|
||||
)
|
||||
(let ((s5-0 (game-task-control-method-9 (-> arg1 task))))
|
||||
(cond
|
||||
((and (nonzero? (-> arg1 waypoint-time0))
|
||||
(and (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 1))
|
||||
(let ((f0-0 143360.0))
|
||||
(and (>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (target-pos 0) (-> arg1 root-override2 trans)))
|
||||
(= (-> s5-0 action) (game-task-action say))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(process-entity-status! arg1 (entity-perm-status no-kill) #t)
|
||||
(when (scene-play arg1 (the-as string (-> s5-0 scene)) #f)
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 2 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
(return #t)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(process-entity-status! arg1 (entity-perm-status no-kill) #f)
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update #f
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 2
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-battle))
|
||||
(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! (-> (the-as asht-wait-spot v1-1) check-done)
|
||||
(lambda ((arg0 asht-wait-spot) (arg1 ashelin-battle))
|
||||
(when (scene-release? arg1)
|
||||
(set! (-> arg1 bot-flags) (logior (bot-flags bf20) (-> arg1 bot-flags)))
|
||||
(let ((s5-0 (-> arg1 ash-course spots)))
|
||||
(vector-! (the-as vector (-> arg1 frontline)) (the-as vector (-> s5-0 2)) (the-as vector (-> s5-0 1)))
|
||||
(vector-normalize! (-> arg1 frontline) 1.0)
|
||||
(set! (-> arg1 frontline w) (- (vector-dot (the-as vector (-> arg1 frontline)) (the-as vector (-> s5-0 1)))))
|
||||
)
|
||||
(set-frontline-dist! arg1)
|
||||
(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
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-battle))
|
||||
(with-pp
|
||||
(send-event arg0 'hide #f)
|
||||
(ashelin-method-250 arg0 #t)
|
||||
(set! (-> arg0 notice-enemy-dist) 245760.0)
|
||||
(set-setting! 'sound-mode #f 0 1)
|
||||
(logior! (-> arg0 bot-flags) (bot-flags bf06))
|
||||
(set-setting! 'airlock #f 0 0)
|
||||
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-4 from) (process->ppointer pp))
|
||||
(set! (-> a1-4 num-params) 0)
|
||||
(set! (-> a1-4 message) 'trigger)
|
||||
(let ((t9-4 send-event-function)
|
||||
(v1-18 (-> arg0 actor-group 0 data 1 actor))
|
||||
)
|
||||
(t9-4
|
||||
(if v1-18
|
||||
(-> v1-18 extra process)
|
||||
)
|
||||
a1-4
|
||||
)
|
||||
)
|
||||
)
|
||||
(add-process *gui-control* arg0 (gui-channel art-load) (gui-action queue) "atoll-save-ashelin-res-b" -99.0 0)
|
||||
(let ((v1-24 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
(set! (-> v1-24 bytes 5) (the-as uint 2))
|
||||
(set! (-> v1-24 bytes 6) (the-as uint 3))
|
||||
(set! (-> v1-24 bytes 7) (the-as uint 4))
|
||||
(set! (-> (the-as asht-wait-spot v1-24) check-done)
|
||||
(lambda ((arg0 asht-wait-spot) (arg1 ashelin-battle))
|
||||
(with-pp
|
||||
(when (not (channel-active? arg1 (the-as uint 0)))
|
||||
(cond
|
||||
((and (not (speech-playing? arg1 45))
|
||||
(>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 2.5))
|
||||
)
|
||||
(play-speech arg1 45)
|
||||
)
|
||||
((and (not (speech-playing? arg1 46))
|
||||
(>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 7))
|
||||
)
|
||||
(play-speech arg1 46)
|
||||
)
|
||||
((and (not (speech-playing? arg1 47))
|
||||
(>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 14))
|
||||
)
|
||||
(play-speech arg1 47)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((a1-8 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-8 from) (process->ppointer pp))
|
||||
(set! (-> a1-8 num-params) 1)
|
||||
(set! (-> a1-8 message) 'query)
|
||||
(set! (-> a1-8 param 0) (the-as uint 'beaten))
|
||||
(let ((t9-7 send-event-function)
|
||||
(v1-37 (-> arg1 actor-group 0 data 1 actor))
|
||||
)
|
||||
(when (t9-7
|
||||
(if v1-37
|
||||
(-> v1-37 extra process)
|
||||
)
|
||||
a1-8
|
||||
)
|
||||
(logclear! (-> arg1 bot-flags) (bot-flags bf20))
|
||||
(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 (lambda ((arg0 ashelin-battle))
|
||||
(with-pp
|
||||
(set-frontline-dist! arg0)
|
||||
(let ((s5-0 (target-pos 0)))
|
||||
(if (>= (-> s5-0 y) 176128.0)
|
||||
(set! (-> arg0 player-in-bounds-time) (-> pp clock frame-counter))
|
||||
)
|
||||
(if (>= (- (-> pp clock frame-counter) (-> arg0 player-in-bounds-time)) (seconds 4))
|
||||
(send-event arg0 'instant-death)
|
||||
)
|
||||
(if (< (-> s5-0 y) 192512.0)
|
||||
(logior! (-> arg0 bot-flags) (bot-flags bf10))
|
||||
(logclear! (-> arg0 bot-flags) (bot-flags bf10))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 4
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-battle))
|
||||
(task-node-close! (game-task-node atoll-battle-battle))
|
||||
(remove-setting! 'sound-mode)
|
||||
(ashelin-method-250 arg0 #f)
|
||||
(remove-setting! 'airlock)
|
||||
(logclear! (-> arg0 bot-flags) (bot-flags bf10))
|
||||
(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 (game-task-control-method-9 (-> arg0 task))))
|
||||
(if (= (-> v1-20 action) (game-task-action say))
|
||||
(add-process
|
||||
*gui-control*
|
||||
arg0
|
||||
(gui-channel art-load)
|
||||
(gui-action queue)
|
||||
(the-as string (-> v1-20 scene))
|
||||
-99.0
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-22 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
(set! (-> v1-22 bytes 5) (the-as uint 3))
|
||||
(set! (-> v1-22 bytes 6) (the-as uint 5))
|
||||
(set! (-> v1-22 bytes 7) (the-as uint 6))
|
||||
(set! (-> v1-22 bytes 8) (the-as uint 7))
|
||||
(let ((v0-12
|
||||
(lambda ((arg0 asht-wait-spot) (arg1 ashelin-battle))
|
||||
(with-pp
|
||||
(when (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 1.5))
|
||||
(let ((s5-0 (game-task-control-method-9 (-> 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 5 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> (the-as asht-wait-spot v1-22) check-done) v0-12)
|
||||
(the-as symbol v0-12)
|
||||
)
|
||||
)
|
||||
)
|
||||
:on-update #f
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 5
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-battle))
|
||||
(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 3))
|
||||
(set! (-> v1-15 bytes 6) (the-as uint 5))
|
||||
(set! (-> v1-15 bytes 7) (the-as uint 6))
|
||||
(set! (-> v1-15 bytes 8) (the-as uint 7))
|
||||
(set! (-> (the-as asht-wait-spot v1-15) check-done)
|
||||
(lambda ((arg0 asht-wait-spot) (arg1 ashelin-battle)) (when (scene-release? arg1)
|
||||
(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 #f
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 6
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-battle))
|
||||
(process-entity-status! arg0 (entity-perm-status bit-4) #f)
|
||||
(process-entity-status! arg0 (entity-perm-status no-kill) #f)
|
||||
(logclear! (-> arg0 enemy-flags) (enemy-flag use-notice-distance))
|
||||
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
(set! (-> v1-3 bytes 5) (the-as uint 3))
|
||||
(set! (-> v1-3 bytes 6) (the-as uint 5))
|
||||
(set! (-> v1-3 bytes 7) (the-as uint 6))
|
||||
(set! (-> v1-3 bytes 8) (the-as uint 7))
|
||||
(set! (-> (the-as asht-wait-spot v1-3) check-done) (lambda ((arg0 asht-wait-spot) (arg1 ashelin-battle)) #f))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update #f
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
)
|
||||
:speeches (new 'static 'inline-array bot-speech-info 48
|
||||
(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")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha037")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha047")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha042")
|
||||
)
|
||||
:speech-tunings (new 'static 'inline-array bot-speech-tuning 1
|
||||
(new 'static 'bot-speech-tuning :fo-min 30 :fo-max 100 :fo-curve #xb :trans? #t)
|
||||
)
|
||||
:spots (new 'static 'inline-array bot-spot 8
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2263285.8 :y 213319.69 :z -4552335.5 :w 16384.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2293555.2 :z -4570276.0 :w 4096.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2235105.2 :z -4669890.5 :w 4096.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2224291.8 :y 222167.05 :z -4707533.0 :w 16384.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2164695.0 :y 221593.6 :z -4725145.5 :w 16384.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2305392.8 :y 214671.36 :z -4561797.0 :w 8192.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2245959.8 :y 214425.6 :z -4561961.0 :w 8192.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2269757.5 :y 216965.12 :z -4560404.5 :w 8192.0))
|
||||
)
|
||||
:ouch-speeches (new 'static 'bot-speech-list-shuffle
|
||||
:flags #x6
|
||||
: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 1) *ash1-course*)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,22 +5,261 @@
|
||||
;; name in dgo: ai-task-h
|
||||
;; dgos: ATE, SEB, SWB, LKIDDOGE, UNB, CTYKORA, CTYASHA
|
||||
|
||||
(declare-type ai-task-pool basic)
|
||||
(declare-type bot nav-enemy)
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype ai-task (basic)
|
||||
((next basic :offset-assert 4)
|
||||
(prev basic :offset-assert 8)
|
||||
(pool basic :offset-assert 12)
|
||||
(unique-id uint32 :offset-assert 16)
|
||||
(pad-ik1n231 uint32 3 :offset-assert 20)
|
||||
(bytes int8 16 :offset-assert 32)
|
||||
((next ai-task :offset-assert 4)
|
||||
(prev ai-task :offset-assert 8)
|
||||
(pool ai-task-pool :offset-assert 12)
|
||||
(unique-id uint32 :offset-assert 16)
|
||||
(bytes uint8 16 :offset 32)
|
||||
)
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
:flag-assert #xc00000030
|
||||
(:methods
|
||||
(ai-task-method-9 () none 9)
|
||||
(ai-task-method-10 () none 10)
|
||||
(ai-task-method-11 () none 11)
|
||||
(reset-task! (_type_) none 9)
|
||||
(ai-task-method-10 (_type_ bot) none 10)
|
||||
(ai-task-method-11 (_type_ bot) none 11)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype ai-task-pool (basic)
|
||||
((anchor ai-task :offset-assert 4)
|
||||
(tasks (pointer uint32) :offset-assert 8)
|
||||
(tasks-length uint32 :offset-assert 12)
|
||||
(unique-id uint32 :offset-assert 16)
|
||||
)
|
||||
:method-count-assert 12
|
||||
:size-assert #x14
|
||||
:flag-assert #xc00000014
|
||||
(:methods
|
||||
(assign-ids! (_type_ type) ai-task 9)
|
||||
(set-next-task! (_type_ ai-task) none 10)
|
||||
(ai-task-pool-method-11 (_type_) ai-task 11)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype ai-task-control (basic)
|
||||
((anchor ai-task :offset-assert 4)
|
||||
(pool ai-task-pool :offset-assert 8)
|
||||
)
|
||||
:method-count-assert 18
|
||||
:size-assert #xc
|
||||
:flag-assert #x120000000c
|
||||
(:methods
|
||||
(new (symbol type ai-task-pool) _type_ 0)
|
||||
(ai-task-control-method-9 (_type_) none 9)
|
||||
(ai-task-control-method-10 (_type_ bot) none 10)
|
||||
(get-task-by-type (_type_ type bot) ai-task 11)
|
||||
(ai-task-control-method-12 (_type_ bot) symbol 12)
|
||||
(ai-task-control-method-13 (_type_ ai-task bot) ai-task 13)
|
||||
(ai-task-control-method-14 (_type_ ai-task bot) none 14)
|
||||
(init-task! (_type_ type bot) ai-task 15)
|
||||
(set-next-task-for-pool! (_type_ ai-task) none 16)
|
||||
(set-next-task! (_type_ ai-task) none 17)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defmethod ai-task-method-11 ai-task ((obj ai-task) (arg0 bot))
|
||||
"Virtual"
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod ai-task-method-10 ai-task ((obj ai-task) (arg0 bot))
|
||||
"Virtual"
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod reset-task! ai-task ((obj ai-task))
|
||||
"Virtual"
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch (pointer uint32) vs ai-task.
|
||||
(defmethod ai-task-pool-method-11 ai-task-pool ((obj ai-task-pool))
|
||||
(set! (-> obj unique-id) (the-as uint 0))
|
||||
(let ((t0-0 (the-as (pointer uint32) #f))
|
||||
(a1-0 (the-as (pointer uint32) #f))
|
||||
(v1-0 (-> obj tasks))
|
||||
)
|
||||
(let ((a2-0 (-> obj tasks-length)))
|
||||
(dotimes (a3-0 (the-as int a2-0))
|
||||
(set! a1-0 (&+ v1-0 (* 48 a3-0)))
|
||||
(set! (-> a1-0 2) (the-as uint obj))
|
||||
(set! (-> a1-0 3) (the-as uint 0))
|
||||
(set! (-> a1-0 1) (the-as uint t0-0))
|
||||
(if t0-0
|
||||
(set! (-> t0-0 0) (the-as uint a1-0))
|
||||
)
|
||||
(set! t0-0 a1-0)
|
||||
)
|
||||
)
|
||||
(set! (-> a1-0 0) (the-as uint #f))
|
||||
(let ((v0-0 (&-> v1-0 0)))
|
||||
(set! (-> obj anchor) (the-as ai-task v0-0))
|
||||
(the-as ai-task v0-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod assign-ids! ai-task-pool ((obj ai-task-pool) (arg0 type))
|
||||
"Assign unique IDs to the [[ai-task-pool]] and its `anchor`s `next`"
|
||||
(let ((v1-1 (-> obj anchor next)))
|
||||
(when v1-1
|
||||
(let ((a2-0 (-> v1-1 prev))
|
||||
(a3-0 (-> v1-1 next))
|
||||
)
|
||||
(set! (-> v1-1 prev) #f)
|
||||
(set! (-> v1-1 next) #f)
|
||||
(let ((t0-1 (the-as int (+ (-> obj unique-id) 1))))
|
||||
(if (zero? (the-as uint t0-1))
|
||||
(set! t0-1 1)
|
||||
)
|
||||
(set! (-> obj unique-id) (the-as uint t0-1))
|
||||
(set! (-> v1-1 unique-id) (the-as uint t0-1))
|
||||
)
|
||||
(set! (-> a2-0 next) a3-0)
|
||||
(if a3-0
|
||||
(set! (-> a3-0 prev) a2-0)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-1 type) arg0)
|
||||
v1-1
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch ai-task vs none.
|
||||
(defmethod set-next-task! ai-task-pool ((obj ai-task-pool) (arg0 ai-task))
|
||||
"Set the next task in the [[ai-task-pool]] to the specified [[ai-task]]."
|
||||
(let* ((v1-0 (-> obj anchor))
|
||||
(v0-0 (-> v1-0 next))
|
||||
)
|
||||
(set! (-> v1-0 next) arg0)
|
||||
(set! (-> arg0 prev) v1-0)
|
||||
(set! (-> arg0 next) v0-0)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod new ai-task-control ((allocation symbol) (type-to-make type) (arg0 ai-task-pool))
|
||||
(let ((s5-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
|
||||
(set! (-> s5-0 pool) arg0)
|
||||
(set! (-> s5-0 anchor) (assign-ids! arg0 ai-task))
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod ai-task-control-method-12 ai-task-control ((obj ai-task-control) (arg0 bot))
|
||||
(let ((gp-0 (-> obj anchor)))
|
||||
(let ((s3-0 (-> obj anchor next)))
|
||||
(while s3-0
|
||||
(let ((s4-0 (-> s3-0 next)))
|
||||
(if arg0
|
||||
(ai-task-method-10 s3-0 arg0)
|
||||
)
|
||||
(set-next-task! (-> s3-0 pool) s3-0)
|
||||
(set! s3-0 s4-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> gp-0 prev) #f)
|
||||
(set! (-> gp-0 next) #f)
|
||||
)
|
||||
#f
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch symbol vs none.
|
||||
(defmethod ai-task-control-method-9 ai-task-control ((obj ai-task-control))
|
||||
(ai-task-control-method-12 obj (the-as bot #f))
|
||||
(let ((a1-1 (-> obj anchor)))
|
||||
(when a1-1
|
||||
(set-next-task! (-> a1-1 pool) a1-1)
|
||||
(set! (-> obj anchor) #f)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod init-task! ai-task-control ((obj ai-task-control) (arg0 type) (arg1 bot))
|
||||
"Initialize a task of the given type in the [[ai-task-control]]'s pool."
|
||||
(let ((s5-0 (assign-ids! (-> obj pool) arg0)))
|
||||
(if s5-0
|
||||
(reset-task! s5-0)
|
||||
)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch ai-task vs none.
|
||||
(defmethod set-next-task! ai-task-control ((obj ai-task-control) (arg0 ai-task))
|
||||
"Set `next` of this [[ai-task-control]]'s `anchor` to the given [[ai-task]]."
|
||||
(let* ((v1-0 (-> obj anchor))
|
||||
(a0-1 (-> v1-0 next))
|
||||
)
|
||||
(set! (-> v1-0 next) arg0)
|
||||
(set! (-> arg0 prev) v1-0)
|
||||
(set! (-> arg0 next) a0-1)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod set-next-task-for-pool! ai-task-control ((obj ai-task-control) (arg0 ai-task))
|
||||
(set-next-task! (-> obj pool) arg0)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod get-task-by-type ai-task-control ((obj ai-task-control) (arg0 type) (arg1 bot))
|
||||
(let ((s5-0 (init-task! obj arg0 arg1)))
|
||||
(if s5-0
|
||||
(set-next-task! obj s5-0)
|
||||
)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod ai-task-control-method-13 ai-task-control ((obj ai-task-control) (arg0 ai-task) (arg1 bot))
|
||||
(let ((gp-0 (-> arg0 prev))
|
||||
(s5-0 (-> arg0 next))
|
||||
)
|
||||
(if arg1
|
||||
(ai-task-method-10 arg0 arg1)
|
||||
)
|
||||
(set-next-task! (-> obj pool) arg0)
|
||||
(if gp-0
|
||||
(set! (-> gp-0 next) s5-0)
|
||||
)
|
||||
(if s5-0
|
||||
(set! (-> s5-0 prev) gp-0)
|
||||
)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod ai-task-control-method-10 ai-task-control ((obj ai-task-control) (arg0 bot))
|
||||
(let ((a0-1 (-> obj anchor next)))
|
||||
(if a0-1
|
||||
(ai-task-method-11 a0-1 arg0)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod ai-task-control-method-14 ai-task-control ((obj ai-task-control) (arg0 ai-task) (arg1 bot))
|
||||
(let ((a0-1 (ai-task-control-method-13 obj arg0 arg1)))
|
||||
(if a0-1
|
||||
(ai-task-method-11 a0-1 arg1)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -5,165 +5,709 @@
|
||||
;; name in dgo: bot-h
|
||||
;; dgos: ATE, SEB, SWB, LKIDDOGE, UNB, CTYKORA, CTYASHA
|
||||
|
||||
;; +++bot-h:speech-flags
|
||||
(defenum speech-flags
|
||||
:type uint16
|
||||
:bitfield #t
|
||||
(playing)
|
||||
(sf01)
|
||||
(sf02)
|
||||
(sf03)
|
||||
(sf04)
|
||||
(sf05)
|
||||
(sf06)
|
||||
(sf08)
|
||||
(sf09)
|
||||
(sf10)
|
||||
(sf11)
|
||||
(sf12)
|
||||
(sf13)
|
||||
(sf14)
|
||||
(sf15)
|
||||
)
|
||||
;; ---bot-h:speech-flags
|
||||
|
||||
;; +++bot-h:bot-flags
|
||||
(defenum bot-flags
|
||||
:type uint32
|
||||
:bitfield #t
|
||||
(bf00 0)
|
||||
(failed 1)
|
||||
(bf02 2)
|
||||
(bf03 3)
|
||||
(bf04 4)
|
||||
(bf05 5)
|
||||
(bf06 6)
|
||||
(attacked 7)
|
||||
(too-far-fail 8) ;; not sure
|
||||
(bf09 9)
|
||||
(bf10 10)
|
||||
(bf11 11)
|
||||
(bf12 12)
|
||||
(bf13 13)
|
||||
(bf14 14)
|
||||
(bf15 15)
|
||||
(bf16 16)
|
||||
(bf17 17)
|
||||
(bf18 18)
|
||||
(bf19 19)
|
||||
(bf20 20)
|
||||
(bf21 21)
|
||||
(bf22 22)
|
||||
(bf23 23)
|
||||
(bf24 24)
|
||||
(bf25 25)
|
||||
(bf26 26)
|
||||
(bf27 27)
|
||||
(bf28 28)
|
||||
(bf29 29)
|
||||
(bf30 30)
|
||||
(bf31 31)
|
||||
)
|
||||
;; ---bot-h:bot-flags
|
||||
|
||||
(declare-type bot nav-enemy)
|
||||
(declare-type bot-speech-list basic)
|
||||
(declare-type bot-speech-list-shuffle bot-speech-list)
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype bot-focus-info (structure)
|
||||
((max-los-dist float :offset-assert 0)
|
||||
(fproc basic :offset-assert 4)
|
||||
(bullseye-xz-dist float :offset-assert 8)
|
||||
(ry-diff float :offset-assert 12)
|
||||
(my-facing-ry float :offset-assert 16)
|
||||
(bullseye-ry float :offset-assert 20)
|
||||
(los int8 :offset-assert 24)
|
||||
(update-time time-frame :offset-assert 32)
|
||||
(bullseye vector :inline :offset-assert 48)
|
||||
(pos vector :inline :offset-assert 64)
|
||||
(my-facing-xz-dir vector :inline :offset-assert 80)
|
||||
(bullseye-xz-dir vector :inline :offset-assert 96)
|
||||
((max-los-dist float :offset-assert 0)
|
||||
(fproc process-focusable :offset-assert 4)
|
||||
(bullseye-xz-dist float :offset-assert 8)
|
||||
(ry-diff float :offset-assert 12)
|
||||
(my-facing-ry float :offset-assert 16)
|
||||
(bullseye-ry float :offset-assert 20)
|
||||
(los int8 :offset-assert 24)
|
||||
(update-time time-frame :offset-assert 32)
|
||||
(bullseye vector :inline :offset-assert 48)
|
||||
(pos vector :inline :offset-assert 64)
|
||||
(my-facing-xz-dir vector :inline :offset-assert 80)
|
||||
(bullseye-xz-dir vector :inline :offset-assert 96)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x70
|
||||
:flag-assert #x900000070
|
||||
)
|
||||
|
||||
|
||||
(deftype bot-turn-info (structure)
|
||||
((facing-ry float :offset-assert 0)
|
||||
(targ-ry float :offset-assert 4)
|
||||
(ry-diff float :offset-assert 8)
|
||||
(predicted-ry-diff float :offset-assert 12)
|
||||
(predicted-targ-ry float :offset-assert 16)
|
||||
(facing-dir vector :inline :offset-assert 32)
|
||||
(targ-pos vector :inline :offset-assert 48)
|
||||
(predicted-targ-pos vector :inline :offset-assert 64)
|
||||
(src-quat quaternion :inline :offset-assert 80)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x60
|
||||
:flag-assert #x900000060
|
||||
)
|
||||
|
||||
|
||||
(deftype bot-speech-tuning (structure)
|
||||
((fo-min int32 :offset-assert 0)
|
||||
(fo-max int32 :offset-assert 4)
|
||||
(fo-curve int8 :offset-assert 8)
|
||||
(trans? symbol :offset-assert 12)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x10
|
||||
:flag-assert #x900000010
|
||||
)
|
||||
|
||||
|
||||
(deftype bot-speech-info (structure)
|
||||
((flags speech-flags :offset-assert 0)
|
||||
(hold-time uint16 :offset-assert 2)
|
||||
(slave-id int8 :offset-assert 4)
|
||||
(tuning-id int8 :offset-assert 5)
|
||||
(name string :offset-assert 8)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #xc
|
||||
:flag-assert #x90000000c
|
||||
)
|
||||
|
||||
|
||||
(deftype bot-spot (structure)
|
||||
((center vector :inline :offset-assert 0)
|
||||
(center-x float :offset 0)
|
||||
(center-y float :offset 4)
|
||||
(center-z float :offset 8)
|
||||
(inside-xz-dist float :offset 12)
|
||||
(blocked-xz-dist float :offset-assert 16)
|
||||
((center vector :inline :offset-assert 0)
|
||||
(center-x float :offset 0)
|
||||
(center-y float :offset 4)
|
||||
(center-z float :offset 8)
|
||||
(inside-xz-dist float :offset 12)
|
||||
(blocked-xz-dist float :offset-assert 16)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x14
|
||||
:flag-assert #x900000014
|
||||
)
|
||||
|
||||
|
||||
(deftype bot-waypoint (basic)
|
||||
((waypoint-id int16 :offset-assert 4)
|
||||
(nav-mesh-index int8 :offset-assert 6)
|
||||
(skip-to int8 :offset-assert 7)
|
||||
(on-set (function bot none) :offset-assert 8)
|
||||
(on-update (function bot none) :offset-assert 12)
|
||||
(on-skipping-here (function bot none) :offset-assert 16)
|
||||
(check-too-far symbol :offset-assert 20)
|
||||
(warn-dist float :offset-assert 24)
|
||||
(fail-dist-delta float :offset-assert 28)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x20
|
||||
:flag-assert #x900000020
|
||||
)
|
||||
|
||||
|
||||
(deftype bot-course (basic)
|
||||
((course-id uint8 :offset-assert 4)
|
||||
(speech-count uint16 :offset-assert 6)
|
||||
(spot-count uint16 :offset-assert 8)
|
||||
(retry-cookie uint8 :offset-assert 10)
|
||||
(too-far-warn-speeches basic :offset-assert 12)
|
||||
(too-far-fail-speeches basic :offset-assert 16)
|
||||
(attack-player-speeches basic :offset-assert 20)
|
||||
(default-check-too-far basic :offset-assert 24)
|
||||
(waypoints basic :offset-assert 28)
|
||||
(speeches uint32 :offset-assert 32)
|
||||
(speech-tunings uint32 :offset-assert 36)
|
||||
(dirs uint32 :offset-assert 40)
|
||||
(spots uint32 :offset-assert 44)
|
||||
((course-id uint8 :offset-assert 4)
|
||||
(speech-count uint16 :offset-assert 6)
|
||||
(spot-count uint16 :offset-assert 8)
|
||||
(retry-cookie uint8 :offset-assert 10)
|
||||
(too-far-warn-speeches bot-speech-list-shuffle :offset-assert 12)
|
||||
(too-far-fail-speeches bot-speech-list-shuffle :offset-assert 16)
|
||||
(attack-player-speeches bot-speech-list :offset-assert 20)
|
||||
(default-check-too-far symbol :offset-assert 24)
|
||||
(waypoints (array bot-waypoint) :offset-assert 28)
|
||||
(speeches (inline-array bot-speech-info) :offset-assert 32)
|
||||
(speech-tunings (inline-array bot-speech-tuning) :offset-assert 36)
|
||||
(dirs (inline-array vector) :offset-assert 40)
|
||||
(spots (inline-array bot-spot) :offset-assert 44)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x30
|
||||
:flag-assert #x900000030
|
||||
;; field default-check-too-far uses ~A with a signed load
|
||||
)
|
||||
|
||||
|
||||
(deftype bot (nav-enemy)
|
||||
((bot-flags uint32 :offset-assert 604)
|
||||
(min-speed float :offset-assert 608)
|
||||
(max-speed float :offset-assert 612)
|
||||
(follow-offset float :offset-assert 616)
|
||||
(too-far-warn-dist float :offset-assert 620)
|
||||
(too-far-fail-dist-delta float :offset-assert 624)
|
||||
(too-far-warn-dist-default float :offset-assert 628)
|
||||
(too-far-fail-dist-delta-default float :offset-assert 632)
|
||||
(travel-prev-ry float :offset-assert 636)
|
||||
(travel-prev-ry1 float :offset-assert 640)
|
||||
(player-blocking float :offset-assert 644)
|
||||
(ai-ctrl basic :offset-assert 648)
|
||||
(course basic :offset-assert 652)
|
||||
(waypoint basic :offset-assert 656)
|
||||
(waypoint-bits uint32 :offset-assert 660)
|
||||
(waypoint-int32a int32 :offset-assert 664)
|
||||
(bot-task-bits uint32 :offset-assert 668)
|
||||
(hit-invuln-ignore-me-delay uint32 :offset-assert 672)
|
||||
(hit-invuln-focus-disable-delay uint32 :offset-assert 676)
|
||||
(warn-to-fail-timeout uint32 :offset-assert 680)
|
||||
(warn-min-delay uint32 :offset-assert 684)
|
||||
(warn-max-delay uint32 :offset-assert 688)
|
||||
(spot-color uint32 :offset-assert 692)
|
||||
(waypoint-request int16 :offset-assert 696)
|
||||
(hit-by-enemy-count uint16 :offset-assert 698)
|
||||
(hit-by-player-count uint16 :offset-assert 700)
|
||||
(notice-enemy-dist float :offset-assert 704)
|
||||
(channel uint8 :offset-assert 708)
|
||||
(focus-mode int8 :offset-assert 709)
|
||||
(nav-mesh-index int8 :offset-assert 710)
|
||||
(delay-too-far-check int8 :offset-assert 711)
|
||||
(slave-id int8 :offset-assert 712)
|
||||
(vehicle-seat-index int8 :offset-assert 713)
|
||||
(bot-health-index int8 :offset-assert 714)
|
||||
(task basic :offset-assert 716)
|
||||
(swivel-joint-mod basic :offset-assert 720)
|
||||
(health-handle uint64 :offset-assert 728)
|
||||
(poi-handle uint64 :offset-assert 736)
|
||||
(my-simple-focus uint32 :offset-assert 744)
|
||||
(attacker-handle uint64 :offset-assert 752)
|
||||
(scene-player-handle uint64 :offset-assert 760)
|
||||
(master-handle uint64 :offset-assert 768)
|
||||
(vehicle-handle uint64 :offset-assert 776)
|
||||
(hit-invuln-starting-time time-frame :offset-assert 784)
|
||||
(danger-time time-frame :offset-assert 792)
|
||||
(attacker-time time-frame :offset-assert 800)
|
||||
(started-warning-time time-frame :offset-assert 808)
|
||||
(waypoint-time0 uint64 :offset-assert 816)
|
||||
(next-too-far-warn-time time-frame :offset-assert 824)
|
||||
(spot bot-spot :inline :offset-assert 832)
|
||||
(follow-dir vector :inline :offset-assert 864)
|
||||
(focus-info bot-focus-info :inline :offset-assert 880)
|
||||
((bot-flags bot-flags :offset-assert 604)
|
||||
(min-speed float :offset-assert 608)
|
||||
(max-speed float :offset-assert 612)
|
||||
(follow-offset float :offset-assert 616)
|
||||
(too-far-warn-dist float :offset-assert 620)
|
||||
(too-far-fail-dist-delta float :offset-assert 624)
|
||||
(too-far-warn-dist-default float :offset-assert 628)
|
||||
(too-far-fail-dist-delta-default float :offset-assert 632)
|
||||
(travel-prev-ry float :offset-assert 636)
|
||||
(travel-prev-ry1 float :offset-assert 640)
|
||||
(player-blocking float :offset-assert 644)
|
||||
(ai-ctrl ai-task-control :offset-assert 648)
|
||||
(course bot-course :offset-assert 652)
|
||||
(waypoint bot-waypoint :offset-assert 656)
|
||||
(waypoint-bits uint32 :offset-assert 660)
|
||||
(waypoint-int32a int32 :offset-assert 664)
|
||||
(bot-task-bits uint32 :offset-assert 668)
|
||||
(hit-invuln-ignore-me-delay uint32 :offset-assert 672)
|
||||
(hit-invuln-focus-disable-delay uint32 :offset-assert 676)
|
||||
(warn-to-fail-timeout uint32 :offset-assert 680)
|
||||
(warn-min-delay uint32 :offset-assert 684)
|
||||
(warn-max-delay uint32 :offset-assert 688)
|
||||
(spot-color uint32 :offset-assert 692)
|
||||
(waypoint-request int16 :offset-assert 696)
|
||||
(hit-by-enemy-count uint16 :offset-assert 698)
|
||||
(hit-by-player-count uint16 :offset-assert 700)
|
||||
(notice-enemy-dist float :offset-assert 704)
|
||||
(channel uint8 :offset-assert 708)
|
||||
(focus-mode int8 :offset-assert 709)
|
||||
(nav-mesh-index int8 :offset-assert 710)
|
||||
(delay-too-far-check int8 :offset-assert 711)
|
||||
(slave-id int8 :offset-assert 712)
|
||||
(vehicle-seat-index int8 :offset-assert 713)
|
||||
(bot-health-index int8 :offset-assert 714)
|
||||
(task game-task-control :offset-assert 716)
|
||||
(swivel-joint-mod joint-mod :offset-assert 720)
|
||||
(health-handle handle :offset-assert 728)
|
||||
(poi-handle handle :offset-assert 736)
|
||||
(my-simple-focus (pointer simple-focus) :offset-assert 744)
|
||||
(attacker-handle handle :offset-assert 752)
|
||||
(scene-player-handle handle :offset-assert 760)
|
||||
(master-handle handle :offset-assert 768)
|
||||
(vehicle-handle handle :offset-assert 776)
|
||||
(hit-invuln-starting-time time-frame :offset-assert 784)
|
||||
(danger-time time-frame :offset-assert 792)
|
||||
(attacker-time time-frame :offset-assert 800)
|
||||
(started-warning-time time-frame :offset-assert 808)
|
||||
(waypoint-time0 time-frame :offset-assert 816)
|
||||
(next-too-far-warn-time time-frame :offset-assert 824)
|
||||
(spot bot-spot :inline :offset-assert 832)
|
||||
(follow-dir vector :inline :offset-assert 864)
|
||||
(focus-info bot-focus-info :inline :offset-assert 880)
|
||||
)
|
||||
:heap-base #x360
|
||||
:method-count-assert 225
|
||||
:size-assert #x3e0
|
||||
:flag-assert #xe1036003e0
|
||||
(:methods
|
||||
(bot-method-178 () none 178)
|
||||
(bot-method-179 () none 179)
|
||||
(bot-method-180 () none 180)
|
||||
(bot-method-181 () none 181)
|
||||
(bot-method-182 () none 182)
|
||||
(bot-method-183 () none 183)
|
||||
(bot-method-184 () none 184)
|
||||
(bot-method-185 () none 185)
|
||||
(bot-method-186 () none 186)
|
||||
(bot-method-187 () none 187)
|
||||
(bot-method-188 () none 188)
|
||||
(bot-method-189 () none 189)
|
||||
(bot-method-190 () none 190)
|
||||
(bot-method-191 () none 191)
|
||||
(bot-method-192 () none 192)
|
||||
(bot-method-193 () none 193)
|
||||
(bot-method-194 () none 194)
|
||||
(bot-method-195 () none 195)
|
||||
(bot-method-196 () none 196)
|
||||
(bot-method-197 () none 197)
|
||||
(bot-method-198 () none 198)
|
||||
(bot-method-199 () none 199)
|
||||
(bot-method-200 () none 200)
|
||||
(bot-method-201 () none 201)
|
||||
(bot-method-202 () none 202)
|
||||
(bot-method-203 () none 203)
|
||||
(bot-method-204 () none 204)
|
||||
(bot-method-205 () none 205)
|
||||
(bot-method-206 () none 206)
|
||||
(bot-method-207 () none 207)
|
||||
(bot-method-208 () none 208)
|
||||
(bot-method-209 () none 209)
|
||||
(bot-method-210 () none 210)
|
||||
(bot-method-211 () none 211)
|
||||
(bot-method-212 () none 212)
|
||||
(bot-method-213 () none 213)
|
||||
(bot-method-214 () none 214)
|
||||
(bot-method-215 () none 215)
|
||||
(bot-method-216 () none 216)
|
||||
(bot-method-217 () none 217)
|
||||
(bot-method-218 () none 218)
|
||||
(bot-method-219 () none 219)
|
||||
(bot-method-220 () none 220)
|
||||
(bot-method-221 () none 221)
|
||||
(bot-method-222 () none 222)
|
||||
(bot-method-223 () none 223)
|
||||
(bot-method-224 () none 224)
|
||||
(failed () _type_ :state 178)
|
||||
(hidden () _type_ :state 179)
|
||||
(clear-poi-and-focus! (_type_) none 180)
|
||||
(bot-method-181 (_type_ vector vector vector vector vector float) none 181)
|
||||
(turn-to-target (_type_ bot-turn-info process-focusable float) none 182)
|
||||
(alive? (_type_) symbol 183)
|
||||
(bot-debug-draw-spot-id (_type_) none 184)
|
||||
(bot-debug-draw-sphere (_type_ vector rgba) none 185)
|
||||
(bot-debug-draw-spot-sphere (_type_ int (pointer uint) int) none 186)
|
||||
(reset-attacker! (_type_) none 187)
|
||||
(scene-release? (_type_) symbol 188)
|
||||
(select-focus! (_type_) process 189)
|
||||
(bot-method-190 (_type_) symbol 190)
|
||||
(bot-method-191 (_type_) none 191)
|
||||
(bot-method-192 (_type_) none 192)
|
||||
(bot-method-193 (_type_) symbol 193)
|
||||
(outside-spot-radius? (_type_ bot-spot vector symbol) symbol 194)
|
||||
(attacked-by-player? (_type_ process-focusable) symbol 195)
|
||||
(bot-method-196 (_type_) none 196)
|
||||
(fail-mission! (_type_) none 197)
|
||||
(set-cam-height! (_type_ vector) meters 198)
|
||||
(cam-move-to-bot (_type_) none 199)
|
||||
(fail-falling (_type_) none 200)
|
||||
(set-next-focus! (_type_ enemy enemy-best-focus) none 201)
|
||||
(choose-spot (_type_ int (pointer uint)) int 202)
|
||||
(play-attacked-speech (_type_) none 203)
|
||||
(play-too-far-warn-speech (_type_) symbol 204)
|
||||
(scene-play (_type_ string symbol) symbol 205)
|
||||
(play-speech (_type_ int) none 206)
|
||||
(play-death-sound (_type_ string) none 207)
|
||||
(bot-method-208 (_type_) symbol 208)
|
||||
(channel-active? (_type_ uint) symbol 209)
|
||||
(init! (_type_) none 210)
|
||||
(clear-speech-flags! (_type_) none 211)
|
||||
(reset-warn-time! (_type_) none 212)
|
||||
(go-to-waypoint! (_type_ int symbol) object 213)
|
||||
(bot-method-214 (_type_) symbol 214)
|
||||
(skip-waypoint (_type_) none 215)
|
||||
(bot-method-216 (_type_) none 216)
|
||||
(speech-ended? (_type_ int) symbol 217)
|
||||
(speech-playing? (_type_ int) symbol 218)
|
||||
(player-blocking-spot? (_type_ bot-spot) symbol 219)
|
||||
(stop-speech (_type_ uint symbol) none 220)
|
||||
(bot-method-221 (_type_) quaternion 221)
|
||||
(bot-method-222 (_type_ vector) none 222)
|
||||
(bot-method-223 (_type_ symbol) none 223)
|
||||
(bot-check-too-far (_type_) symbol 224)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(define *bot-task-pool* (new 'static 'ai-task-pool
|
||||
:anchor #f
|
||||
:tasks (new 'static 'array uint32 240
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
)
|
||||
:tasks-length #x14
|
||||
)
|
||||
)
|
||||
|
||||
(ai-task-pool-method-11 *bot-task-pool*)
|
||||
|
||||
(deftype bot-speech-list (basic)
|
||||
((flags uint8 :offset-assert 4)
|
||||
(retry-cookie uint8 :offset-assert 5)
|
||||
(last-local-index int16 :offset-assert 6)
|
||||
(speech-indexes (array int16) :offset-assert 8)
|
||||
)
|
||||
:method-count-assert 11
|
||||
:size-assert #xc
|
||||
:flag-assert #xb0000000c
|
||||
(:methods
|
||||
(bot-speech-list-method-9 (_type_ bot (inline-array bot-speech-info) speech-flags) int 9)
|
||||
(reset-index (_type_ symbol) none 10)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defmethod reset-index bot-speech-list ((obj bot-speech-list) (arg0 symbol))
|
||||
(if arg0
|
||||
(set! (-> obj flags) (logand -2 (-> obj flags)))
|
||||
)
|
||||
(set! (-> obj last-local-index) -1)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: new jak 2 until loop case, check carefully
|
||||
(defmethod bot-speech-list-method-9 bot-speech-list ((sp-list bot-speech-list) (bot bot) (sp-info (inline-array bot-speech-info)) (arg3 speech-flags))
|
||||
(let ((v1-1 (-> bot course retry-cookie)))
|
||||
(when (!= v1-1 (-> sp-list retry-cookie))
|
||||
(set! (-> sp-list retry-cookie) (-> bot course retry-cookie))
|
||||
(reset-index sp-list #t)
|
||||
)
|
||||
)
|
||||
(let ((sp-indexes (-> sp-list speech-indexes))
|
||||
(last-idx (-> sp-list last-local-index))
|
||||
)
|
||||
(when (< last-idx 0)
|
||||
(when (not (logtest? (-> sp-list flags) 1))
|
||||
(logior! (-> sp-list flags) 1)
|
||||
(set! arg3 (logior arg3 (speech-flags sf02)))
|
||||
)
|
||||
(reset-index sp-list #f)
|
||||
(if (logtest? (-> sp-list flags) 4)
|
||||
(set! last-idx (+ (get-rand-int bot (-> sp-indexes length)) -1))
|
||||
(set! last-idx -1)
|
||||
)
|
||||
)
|
||||
(until #f
|
||||
(when (>= last-idx (+ (-> sp-indexes length) -1))
|
||||
(if (not (logtest? (-> sp-list flags) 2))
|
||||
(goto cfg-23)
|
||||
)
|
||||
(reset-index sp-list #f)
|
||||
(set! last-idx -1)
|
||||
)
|
||||
(+! last-idx 1)
|
||||
(let* ((idx (-> sp-indexes last-idx))
|
||||
(flags (-> sp-info idx flags))
|
||||
)
|
||||
(when (and (not (logtest? arg3 flags))
|
||||
(or (not (logtest? flags (speech-flags sf11))) (not (speech-playing? bot idx)))
|
||||
)
|
||||
(set! (-> sp-list last-local-index) last-idx)
|
||||
(return idx)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
(label cfg-23)
|
||||
-1
|
||||
)
|
||||
|
||||
(deftype bot-speech-list-shuffle (bot-speech-list)
|
||||
((history-mask uint64 :offset-assert 16)
|
||||
(history-mask-full uint64 :offset-assert 24)
|
||||
)
|
||||
:method-count-assert 11
|
||||
:size-assert #x20
|
||||
:flag-assert #xb00000020
|
||||
)
|
||||
|
||||
|
||||
(defmethod reset-index bot-speech-list-shuffle ((obj bot-speech-list-shuffle) (arg0 symbol))
|
||||
(let ((t9-0 (method-of-type bot-speech-list reset-index)))
|
||||
(t9-0 obj arg0)
|
||||
)
|
||||
(set! (-> obj history-mask) (the-as uint 0))
|
||||
(when (zero? (-> obj history-mask-full))
|
||||
(let ((v0-2 0))
|
||||
(let ((v1-2 1))
|
||||
(countdown (a0-3 (-> obj speech-indexes length))
|
||||
(set! v0-2 (logior v0-2 v1-2))
|
||||
(set! v1-2 (* v1-2 2))
|
||||
)
|
||||
)
|
||||
(set! (-> obj history-mask-full) (the-as uint v0-2))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: new jak 2 until loop case, check carefully
|
||||
(defmethod bot-speech-list-method-9 bot-speech-list-shuffle ((obj bot-speech-list-shuffle) (bot bot) (sp-info (inline-array bot-speech-info)) (sp-flags speech-flags))
|
||||
(local-vars (sv-16 int))
|
||||
(let ((course-cookie (-> bot course retry-cookie)))
|
||||
(when (!= course-cookie (-> obj retry-cookie))
|
||||
(set! (-> obj retry-cookie) (-> bot course retry-cookie))
|
||||
(reset-index obj #t)
|
||||
)
|
||||
)
|
||||
(set! sv-16 (-> obj last-local-index))
|
||||
(when (< sv-16 0)
|
||||
(when (not (logtest? (-> obj flags) 1))
|
||||
(logior! (-> obj flags) 1)
|
||||
(set! sp-flags (logior sp-flags (speech-flags sf02)))
|
||||
)
|
||||
(reset-index obj #f)
|
||||
)
|
||||
(let ((history-mask 0))
|
||||
(if (>= sv-16 0)
|
||||
(set! history-mask (ash 1 sv-16))
|
||||
)
|
||||
(if (logtest? (-> obj flags) 8)
|
||||
(set! history-mask (logior history-mask (-> obj history-mask)))
|
||||
)
|
||||
(until #f
|
||||
(when (and (= history-mask (-> obj history-mask-full)) (logtest? (-> obj flags) 8))
|
||||
(if (not (logtest? (-> obj flags) 2))
|
||||
(return -1)
|
||||
)
|
||||
(reset-index obj #f)
|
||||
(if (>= sv-16 0)
|
||||
(set! history-mask (ash 1 sv-16))
|
||||
(set! history-mask 0)
|
||||
)
|
||||
)
|
||||
(let* ((last-idx (enemy-method-120 bot (-> obj speech-indexes length) history-mask))
|
||||
(speech-idx (-> obj speech-indexes last-idx))
|
||||
(v1-47 (-> sp-info speech-idx flags))
|
||||
)
|
||||
(set! history-mask (logior history-mask (ash 1 last-idx)))
|
||||
(when (and (not (logtest? sp-flags v1-47))
|
||||
(or (not (logtest? v1-47 (speech-flags sf11))) (not (speech-playing? bot speech-idx)))
|
||||
)
|
||||
(set! (-> obj last-local-index) last-idx)
|
||||
(logior! (-> obj history-mask) (ash 1 last-idx))
|
||||
(return speech-idx)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
-1
|
||||
)
|
||||
|
||||
(deftype bot-course-table (basic)
|
||||
((course bot-course 18 :offset-assert 4)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x4c
|
||||
:flag-assert #x90000004c
|
||||
)
|
||||
|
||||
|
||||
(define *bot-course-table* (new 'static 'bot-course-table))
|
||||
|
||||
@@ -7,3 +7,286 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defstate hit (bot)
|
||||
:virtual #t
|
||||
:enter (behavior ()
|
||||
(let ((t9-0 (-> (method-of-type nav-enemy hit) enter)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(stop-speech self (the-as uint 0) #t)
|
||||
(bot-method-191 self)
|
||||
(logclear! (-> self bot-flags) (bot-flags bf11))
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(let ((t9-0 (-> (method-of-type nav-enemy hit) exit)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(logior! (-> self bot-flags) (bot-flags bf11))
|
||||
(none)
|
||||
)
|
||||
:code (behavior ()
|
||||
(local-vars (v1-37 enemy-flag) (v1-45 enemy-flag))
|
||||
(ja-channel-push! 1 (seconds 0.2))
|
||||
(let ((f30-0 (get-rand-float-range self 0.9 1.1)))
|
||||
(ja-no-eval :group! (-> self draw art-group data (-> self enemy-info-override hit-anim))
|
||||
:num! (seek!
|
||||
(the float
|
||||
(+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self enemy-info-override hit-anim)))
|
||||
frames
|
||||
num-frames
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
f30-0
|
||||
)
|
||||
:frame-num 0.0
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(ja :num! (seek! max f30-0))
|
||||
)
|
||||
)
|
||||
(if (logtest? (-> self enemy-flags) (enemy-flag check-water))
|
||||
(logior! (-> self focus-status) (focus-status dangerous))
|
||||
(logclear! (-> self focus-status) (focus-status dangerous))
|
||||
)
|
||||
(let ((v1-36 (-> self enemy-flags)))
|
||||
(if (logtest? v1-36 (enemy-flag checking-water))
|
||||
(set! v1-37 (logior v1-36 (enemy-flag enable-on-active)))
|
||||
(set! v1-37 (logclear v1-36 (enemy-flag enable-on-active)))
|
||||
)
|
||||
)
|
||||
(set! (-> self enemy-flags) v1-37)
|
||||
(if (logtest? (-> self enemy-flags) (enemy-flag look-at-move-dest))
|
||||
(set! (-> self mask) (logior (process-mask collectable) (-> self mask)))
|
||||
(logclear! (-> self mask) (process-mask collectable))
|
||||
)
|
||||
(let ((v1-44 (-> self enemy-flags)))
|
||||
(if (logtest? (enemy-flag no-initial-move-to-ground) v1-44)
|
||||
(set! v1-45 (logior (enemy-flag check-water-backup) v1-44))
|
||||
(set! v1-45 (logclear v1-44 (enemy-flag check-water-backup)))
|
||||
)
|
||||
)
|
||||
(set! (-> self enemy-flags) v1-45)
|
||||
(logclear! (-> self enemy-flags) (enemy-flag actor-pause-backup))
|
||||
(logclear! (-> self focus-status) (focus-status hit))
|
||||
(enemy-method-72 self)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate knocked (bot)
|
||||
:virtual #t
|
||||
:enter (behavior ()
|
||||
(logclear! (-> self enemy-flags) (enemy-flag look-at-focus))
|
||||
(stop-speech self (the-as uint 0) #t)
|
||||
(if (and (logtest? (-> self bot-flags) (bot-flags attacked))
|
||||
(nonzero? (-> self hit-points))
|
||||
(zero? (-> self fated-time))
|
||||
)
|
||||
(logior! (-> self bot-flags) (bot-flags bf12))
|
||||
)
|
||||
(bot-method-191 self)
|
||||
(when (zero? (-> self hit-points))
|
||||
(set! (-> self hit-points) 1)
|
||||
(set! (-> self fated-time) (the-as uint (-> self clock frame-counter)))
|
||||
)
|
||||
(logclear! (-> self bot-flags) (bot-flags bf11))
|
||||
(let ((t9-2 (-> (method-of-type nav-enemy knocked) enter)))
|
||||
(if t9-2
|
||||
(t9-2)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(let ((gp-0 (-> self incoming attack-id)))
|
||||
(let ((t9-0 (-> (method-of-type nav-enemy knocked) exit)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(set! (-> self incoming attack-id) gp-0)
|
||||
)
|
||||
(logior! (-> self bot-flags) (bot-flags bf11))
|
||||
(logclear! (-> self bot-flags) (bot-flags bf12))
|
||||
(none)
|
||||
)
|
||||
:trans (behavior ()
|
||||
(let ((t9-0 (-> (method-of-type nav-enemy knocked) trans)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(when (and (logtest? (-> self bot-flags) (bot-flags bf12)) (!= (-> self state-time) (-> self clock frame-counter)))
|
||||
(logclear! (-> self bot-flags) (bot-flags bf12))
|
||||
(play-attacked-speech self)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate die-falling (bot)
|
||||
:virtual #t
|
||||
:enter (behavior ()
|
||||
(let ((t9-0 (-> (method-of-type nav-enemy die-falling) enter)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(kill-nearby-enemies (-> self root-override2 trans) 61440.0)
|
||||
(stop-speech self (the-as uint 0) #f)
|
||||
(logclear! (-> self bot-flags) (bot-flags bf06 bf11))
|
||||
(set! (-> self delay-too-far-check) -1)
|
||||
(logior! (-> self root-override2 nav-flags) (nav-flags has-root-sphere))
|
||||
(fail-mission! self)
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(logior! (-> self bot-flags) (bot-flags bf11))
|
||||
(logclear! (-> self bot-flags) (bot-flags bf13 bf14))
|
||||
(let ((t9-0 (-> (method-of-type nav-enemy die-falling) exit)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:trans (behavior ()
|
||||
(fail-falling self)
|
||||
(none)
|
||||
)
|
||||
:code (behavior ()
|
||||
(ja-channel-push! 1 (seconds 0.1))
|
||||
(let ((gp-0 (-> self draw art-group data (if (enemy-method-133 self)
|
||||
(-> self enemy-info-override die-falling-anim)
|
||||
(-> self enemy-info-override die-anim)
|
||||
)
|
||||
)
|
||||
)
|
||||
(f30-0 (get-rand-float-range self 0.8 1.2))
|
||||
)
|
||||
(ja-no-eval :group! gp-0
|
||||
:num! (seek! (the float (+ (-> (the-as art-joint-anim gp-0) frames num-frames) -1)) f30-0)
|
||||
:frame-num 0.0
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(ja :num! (seek! max f30-0))
|
||||
)
|
||||
)
|
||||
(until (not (channel-active? self (the-as uint 0)))
|
||||
(suspend)
|
||||
)
|
||||
(until #f
|
||||
(if (and (logtest? (-> self bot-flags) (bot-flags failed)) (reset? *fail-mission-control*))
|
||||
(reset! *fail-mission-control*)
|
||||
)
|
||||
(suspend)
|
||||
)
|
||||
#f
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate failed (bot)
|
||||
:virtual #t
|
||||
:event (the-as (function process int symbol event-message-block object :behavior bot) enemy-event-handler)
|
||||
:enter (behavior ()
|
||||
((-> (method-of-type bot die-falling) enter))
|
||||
(logclear! (-> self bot-flags) (bot-flags bf11))
|
||||
(when (logtest? (-> self bot-flags) (bot-flags failed))
|
||||
(let ((a0-1 (-> self course too-far-fail-speeches)))
|
||||
(when (and (nonzero? a0-1) a0-1)
|
||||
(let ((a1-1 (bot-speech-list-method-9 a0-1 self (-> self course speeches) (speech-flags))))
|
||||
(if (>= a1-1 0)
|
||||
(play-speech self a1-1)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(logior! (-> self bot-flags) (bot-flags bf11))
|
||||
(none)
|
||||
)
|
||||
:trans (behavior ()
|
||||
((-> (method-of-type bot die-falling) trans))
|
||||
(if (channel-active? self (the-as uint 0))
|
||||
(set! (-> self state-time) (-> self clock frame-counter))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code (behavior ()
|
||||
(ja-channel-push! 1 (seconds 0.1))
|
||||
(let ((f30-0 (get-rand-float-range self 0.9 1.1))
|
||||
(gp-0 (-> self draw art-group data (-> self enemy-info-override idle-anim)))
|
||||
)
|
||||
(until #f
|
||||
(ja-no-eval :group! gp-0
|
||||
:num! (seek! (the float (+ (-> (the-as art-joint-anim gp-0) frames num-frames) -1)) f30-0)
|
||||
:frame-num 0.0
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(when (and (logtest? (-> self bot-flags) (bot-flags failed))
|
||||
(>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.5))
|
||||
(reset? *fail-mission-control*)
|
||||
)
|
||||
(cleanup-for-death self)
|
||||
(process-entity-status! self (entity-perm-status no-kill) #f)
|
||||
(reset! *fail-mission-control*)
|
||||
)
|
||||
(suspend)
|
||||
(ja :num! (seek! max f30-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
(none)
|
||||
)
|
||||
:post (the-as (function none :behavior bot) nav-enemy-die-falling-post)
|
||||
)
|
||||
|
||||
(defstate hidden (bot)
|
||||
:virtual #t
|
||||
:event (the-as (function process int symbol event-message-block object :behavior bot) enemy-event-handler)
|
||||
:enter (behavior ()
|
||||
(logior! (-> self focus-status) (focus-status disable))
|
||||
(let ((v1-3 (-> self root-override2 root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-3 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
0
|
||||
(logior! (-> self draw status) (draw-control-status no-draw))
|
||||
(set! (-> self notice-enemy-dist) 0.0)
|
||||
(logclear! (-> self enemy-flags) (enemy-flag trackable-backup))
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(local-vars (v0-0 enemy-flag))
|
||||
(logclear! (-> self draw status) (draw-control-status no-draw))
|
||||
(logclear! (-> self focus-status) (focus-status disable))
|
||||
(let ((v1-5 (-> self root-override2 root-prim)))
|
||||
(set! (-> v1-5 prim-core collide-as) (-> self root-override2 backup-collide-as))
|
||||
(set! (-> v1-5 prim-core collide-with) (-> self root-override2 backup-collide-with))
|
||||
)
|
||||
(let ((v1-6 (-> self enemy-flags)))
|
||||
(if (logtest? (enemy-flag enable-on-hostile) v1-6)
|
||||
(set! v0-0 (logior (enemy-flag trackable-backup) v1-6))
|
||||
(set! v0-0 (logclear v1-6 (enemy-flag trackable-backup)))
|
||||
)
|
||||
)
|
||||
(set! (-> self enemy-flags) v0-0)
|
||||
(none)
|
||||
)
|
||||
:code (the-as (function none :behavior bot) sleep-code)
|
||||
:post (the-as (function none :behavior bot) nav-enemy-simple-post)
|
||||
)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+168
@@ -0,0 +1,168 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type ashelin-course
|
||||
(deftype ashelin-course (bot-course)
|
||||
((ouch-speeches bot-speech-list-shuffle :offset-assert 48)
|
||||
(victory-speeches bot-speech-list-shuffle :offset-assert 52)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x38
|
||||
:flag-assert #x900000038
|
||||
)
|
||||
|
||||
;; definition for method 3 of type ashelin-course
|
||||
(defmethod inspect ashelin-course ((obj ashelin-course))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tcourse-id: ~D~%" (-> obj course-id))
|
||||
(format #t "~1Tspeech-count: ~D~%" (-> obj speech-count))
|
||||
(format #t "~1Tspot-count: ~D~%" (-> obj spot-count))
|
||||
(format #t "~1Tretry-cookie: ~D~%" (-> obj retry-cookie))
|
||||
(format #t "~1Ttoo-far-warn-speeches: ~A~%" (-> obj too-far-warn-speeches))
|
||||
(format #t "~1Ttoo-far-fail-speeches: ~A~%" (-> obj too-far-fail-speeches))
|
||||
(format #t "~1Tattack-player-speeches: ~A~%" (-> obj attack-player-speeches))
|
||||
(format #t "~1Tdefault-check-too-far: ~A~%" (-> obj default-check-too-far))
|
||||
(format #t "~1Twaypoints: ~A~%" (-> obj waypoints))
|
||||
(format #t "~1Tspeeches: #x~X~%" (-> obj speeches))
|
||||
(format #t "~1Tspeech-tunings: #x~X~%" (-> obj speech-tunings))
|
||||
(format #t "~1Tdirs: #x~X~%" (-> obj dirs))
|
||||
(format #t "~1Tspots: #x~X~%" (-> obj spots))
|
||||
(format #t "~1Touch-speeches: ~A~%" (-> obj ouch-speeches))
|
||||
(format #t "~1Tvictory-speeches: ~A~%" (-> obj victory-speeches))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type ashelin
|
||||
(deftype ashelin (bot)
|
||||
((ash-course ashelin-course :offset 652)
|
||||
(knocked-anim art-joint-anim :offset-assert 992)
|
||||
(travel-anim-interp float :offset-assert 996)
|
||||
(fired-gun-count uint32 :offset-assert 1000)
|
||||
(last-fire-time time-frame :offset-assert 1008)
|
||||
(victory-speech-time time-frame :offset-assert 1016)
|
||||
(frontline plane :inline :offset-assert 1024)
|
||||
)
|
||||
:heap-base #x390
|
||||
:method-count-assert 251
|
||||
:size-assert #x410
|
||||
:flag-assert #xfb03900410
|
||||
(:methods
|
||||
(back-spring () _type_ :state 225)
|
||||
(cartwheel-left () _type_ :state 226)
|
||||
(tumble-right () _type_ :state 227)
|
||||
(chase () _type_ :state 228)
|
||||
(traveling () _type_ :state 229)
|
||||
(traveling-blocked () _type_ :state 230)
|
||||
(waiting-idle () _type_ :state 231)
|
||||
(standing-idle () _type_ :state 232)
|
||||
(standing-turn () _type_ :state 233)
|
||||
(standing-blast () _type_ :state 234)
|
||||
(ashelin-method-235 (_type_ symbol) symbol 235)
|
||||
(ashelin-method-236 (_type_ vector float float float float) symbol 236)
|
||||
(fire-projectile (_type_ vector) none 237)
|
||||
(ashelin-method-238 (_type_ symbol symbol) symbol 238)
|
||||
(ashelin-method-239 (_type_) none 239)
|
||||
(ashelin-method-240 (_type_ int) none 240)
|
||||
(ashelin-method-241 (_type_) int 241)
|
||||
(ashelin-method-242 (_type_) int 242)
|
||||
(ashelin-method-243 (_type_ float) int 243)
|
||||
(ashelin-method-244 (_type_) none 244)
|
||||
(ashelin-method-245 (_type_) none 245)
|
||||
(ashelin-method-246 (_type_) int 246)
|
||||
(ashelin-method-247 (_type_) symbol 247)
|
||||
(ashelin-method-248 (_type_) symbol 248)
|
||||
(ashelin-method-249 (_type_) none 249)
|
||||
(ashelin-method-250 (_type_ symbol) none 250)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type ashelin
|
||||
(defmethod inspect ashelin ((obj ashelin))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(let ((t9-0 (method-of-type bot inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~2Tknocked-anim: ~A~%" (-> obj knocked-anim))
|
||||
(format #t "~2Ttravel-anim-interp: ~f~%" (-> obj travel-anim-interp))
|
||||
(format #t "~2Tfired-gun-count: ~D~%" (-> obj fired-gun-count))
|
||||
(format #t "~2Tlast-fire-time: ~D~%" (-> obj last-fire-time))
|
||||
(format #t "~2Tvictory-speech-time: ~D~%" (-> obj victory-speech-time))
|
||||
(format #t "~2Tfrontline: #<plane @ #x~X>~%" (-> obj frontline))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup skel-ashelin ashelin ashelin-lod0-jg ashelin-idle0-ja
|
||||
((ashelin-lod0-mg (meters 999999)))
|
||||
:bounds (static-spherem 0 0 0 2.7)
|
||||
:shadow ashelin-shadow-mg
|
||||
:origin-joint-index 13
|
||||
)
|
||||
|
||||
;; definition of type asht-wait-spot
|
||||
(deftype asht-wait-spot (ai-task)
|
||||
((check-done (function asht-wait-spot ashelin 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
|
||||
:flag-assert #xc00000030
|
||||
)
|
||||
|
||||
;; definition for method 3 of type asht-wait-spot
|
||||
(defmethod inspect asht-wait-spot ((obj asht-wait-spot))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tnext: ~A~%" (-> obj next))
|
||||
(format #t "~1Tprev: ~A~%" (-> obj prev))
|
||||
(format #t "~1Tpool: ~A~%" (-> obj pool))
|
||||
(format #t "~1Tunique-id: ~D~%" (-> obj unique-id))
|
||||
(format #t "~1Tbytes[16] @ #x~X~%" (-> obj bytes))
|
||||
(format #t "~1Tcheck-done: ~A~%" (-> obj check-done))
|
||||
(format #t "~1Twhich-spot: ~D~%" (-> obj which-spot))
|
||||
(format #t "~1Tnum-spots: ~D~%" (-> obj num-spots))
|
||||
(format #t "~1Tspot-indexes[6] @ #x~X~%" (-> obj spot-indexes))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type asht-fight-focus
|
||||
(deftype asht-fight-focus (ai-task)
|
||||
()
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
:flag-assert #xc00000030
|
||||
)
|
||||
|
||||
;; definition for method 3 of type asht-fight-focus
|
||||
(defmethod inspect asht-fight-focus ((obj asht-fight-focus))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tnext: ~A~%" (-> obj next))
|
||||
(format #t "~1Tprev: ~A~%" (-> obj prev))
|
||||
(format #t "~1Tpool: ~A~%" (-> obj pool))
|
||||
(format #t "~1Tunique-id: ~D~%" (-> obj unique-id))
|
||||
(format #t "~1Tbytes[16] @ #x~X~%" (-> obj bytes))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
0
|
||||
+1180
File diff suppressed because it is too large
Load Diff
+1443
File diff suppressed because it is too large
Load Diff
+507
@@ -0,0 +1,507 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type sig-plasma
|
||||
(deftype sig-plasma (structure)
|
||||
((flags uint8 :offset-assert 0)
|
||||
(level float :offset-assert 4)
|
||||
(min-level float :offset-assert 8)
|
||||
(charge-speed float :offset-assert 12)
|
||||
(powerup-sound-id sound-id :offset-assert 16)
|
||||
(plasma-sound-id sound-id :offset-assert 20)
|
||||
)
|
||||
:pack-me
|
||||
:method-count-assert 15
|
||||
:size-assert #x18
|
||||
:flag-assert #xf00000018
|
||||
(:methods
|
||||
(sig-plasma-method-9 (_type_) none 9)
|
||||
(sig-plasma-method-10 (_type_) symbol 10)
|
||||
(sig-plasma-method-11 (_type_ symbol) none 11)
|
||||
(sig-plasma-method-12 (_type_) none 12)
|
||||
(sig-plasma-method-13 (_type_) symbol 13)
|
||||
(sig-plasma-method-14 (_type_ process-focusable) none 14)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type sig-plasma
|
||||
(defmethod inspect sig-plasma ((obj sig-plasma))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj 'sig-plasma)
|
||||
(format #t "~1Tflags: ~D~%" (-> obj flags))
|
||||
(format #t "~1Tlevel: ~f~%" (-> obj level))
|
||||
(format #t "~1Tmin-level: ~f~%" (-> obj min-level))
|
||||
(format #t "~1Tcharge-speed: ~f~%" (-> obj charge-speed))
|
||||
(format #t "~1Tpowerup-sound-id: ~D~%" (-> obj powerup-sound-id))
|
||||
(format #t "~1Tplasma-sound-id: ~D~%" (-> obj plasma-sound-id))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type sig-path-sample
|
||||
(deftype sig-path-sample (structure)
|
||||
((bytes uint8 32 :offset-assert 0)
|
||||
(pos vector :inline :offset-assert 32)
|
||||
(quat quaternion :inline :offset-assert 48)
|
||||
(flags uint8 :offset 12)
|
||||
(pos-x float :offset 32)
|
||||
(pos-y float :offset 36)
|
||||
(pos-z float :offset 40)
|
||||
(quat-x float :offset 48)
|
||||
(quat-y float :offset 52)
|
||||
(quat-z float :offset 56)
|
||||
(quat-w float :offset 60)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x40
|
||||
:flag-assert #x900000040
|
||||
)
|
||||
|
||||
;; definition for method 3 of type sig-path-sample
|
||||
;; ERROR: failed type prop at 14: add failed: sig-path-sample <integer 0>
|
||||
|
||||
(defmethod inspect sig-path-sample ((a0-0 sig-path-sample))
|
||||
(local-vars
|
||||
(v0-0 object)
|
||||
(v0-1 none)
|
||||
(v0-2 none)
|
||||
(v0-3 none)
|
||||
(v0-4 none)
|
||||
(v0-5 none)
|
||||
(v0-6 none)
|
||||
(v0-7 none)
|
||||
(v0-8 none)
|
||||
(v0-9 none)
|
||||
(v0-10 none)
|
||||
(v0-11 none)
|
||||
(v0-12 sig-path-sample)
|
||||
(a0-1 symbol)
|
||||
(a0-2 symbol)
|
||||
(a0-3 none)
|
||||
(a0-4 none)
|
||||
(a0-5 none)
|
||||
(a0-6 none)
|
||||
(a0-7 none)
|
||||
(a0-8 none)
|
||||
(a0-9 none)
|
||||
(a0-10 none)
|
||||
(a0-11 none)
|
||||
(a0-12 none)
|
||||
(a1-0 string)
|
||||
(a1-1 string)
|
||||
(a1-2 none)
|
||||
(a1-3 none)
|
||||
(a1-4 none)
|
||||
(a1-5 none)
|
||||
(a1-6 none)
|
||||
(a1-7 none)
|
||||
(a1-8 none)
|
||||
(a1-9 none)
|
||||
(a1-10 none)
|
||||
(a1-11 none)
|
||||
(a2-0 sig-path-sample)
|
||||
(a2-1 none)
|
||||
(a2-2 none)
|
||||
(a2-3 none)
|
||||
(a2-4 none)
|
||||
(a3-0 symbol)
|
||||
(t9-0 (function _varargs_ object))
|
||||
(t9-1 (function _varargs_ object))
|
||||
(t9-2 none)
|
||||
(t9-3 none)
|
||||
(t9-4 none)
|
||||
(t9-5 none)
|
||||
(t9-6 none)
|
||||
(t9-7 none)
|
||||
(t9-8 none)
|
||||
(t9-9 none)
|
||||
(t9-10 none)
|
||||
(t9-11 none)
|
||||
(f0-0 none)
|
||||
(f0-1 none)
|
||||
(f0-2 none)
|
||||
(f0-3 none)
|
||||
(f0-4 none)
|
||||
(f0-5 none)
|
||||
(f0-6 none)
|
||||
)
|
||||
(if (begin (not a0-0))
|
||||
(begin (set! a0-0 a0-0) (goto cfg-4))
|
||||
)
|
||||
(set! t9-0 format)
|
||||
(set! a0-1 #t)
|
||||
(set! a1-0 L77)
|
||||
(set! a2-0 a0-0)
|
||||
(set! a3-0 'sig-path-sample)
|
||||
(call! a0-1 a1-0 a2-0 a3-0)
|
||||
(set! t9-1 format)
|
||||
(set! a0-2 #t)
|
||||
(set! a1-1 L70)
|
||||
(set! a2-1 (the-as none (+ a0-0 0)))
|
||||
(call!)
|
||||
(set! t9-2 (the-as none format))
|
||||
(set! a0-3 (the-as none #t))
|
||||
(set! a1-2 (the-as none L69))
|
||||
(set! a2-2 (the-as none (-> a0-0 pos)))
|
||||
(call!)
|
||||
(set! t9-3 (the-as none format))
|
||||
(set! a0-4 (the-as none #t))
|
||||
(set! a1-3 (the-as none L68))
|
||||
(set! a2-3 (the-as none (-> a0-0 quat)))
|
||||
(call!)
|
||||
(set! t9-4 (the-as none format))
|
||||
(set! a0-5 (the-as none #t))
|
||||
(set! a1-4 (the-as none L76))
|
||||
(set! a2-4 (the-as none (-> a0-0 flags)))
|
||||
(call!)
|
||||
(set! t9-5 (the-as none format))
|
||||
(set! a0-6 (the-as none #t))
|
||||
(set! a1-5 (the-as none L67))
|
||||
(set! f0-0 (the-as none (-> a0-0 pos x)))
|
||||
(set! a2-5 (the-as none (fpr->gpr f0-0)))
|
||||
(call!)
|
||||
(set! t9-6 (the-as none format))
|
||||
(set! a0-7 (the-as none #t))
|
||||
(set! a1-6 (the-as none L66))
|
||||
(set! f0-1 (the-as none (-> a0-0 pos y)))
|
||||
(set! a2-6 (the-as none (fpr->gpr f0-1)))
|
||||
(call!)
|
||||
(set! t9-7 (the-as none format))
|
||||
(set! a0-8 (the-as none #t))
|
||||
(set! a1-7 (the-as none L65))
|
||||
(set! f0-2 (the-as none (-> a0-0 pos z)))
|
||||
(set! a2-7 (the-as none (fpr->gpr f0-2)))
|
||||
(call!)
|
||||
(set! t9-8 (the-as none format))
|
||||
(set! a0-9 (the-as none #t))
|
||||
(set! a1-8 (the-as none L64))
|
||||
(set! f0-3 (the-as none (-> a0-0 quat x)))
|
||||
(set! a2-8 (the-as none (fpr->gpr f0-3)))
|
||||
(call!)
|
||||
(set! t9-9 (the-as none format))
|
||||
(set! a0-10 (the-as none #t))
|
||||
(set! a1-9 (the-as none L63))
|
||||
(set! f0-4 (the-as none (-> a0-0 quat y)))
|
||||
(set! a2-9 (the-as none (fpr->gpr f0-4)))
|
||||
(call!)
|
||||
(set! t9-10 (the-as none format))
|
||||
(set! a0-11 (the-as none #t))
|
||||
(set! a1-10 (the-as none L62))
|
||||
(set! f0-5 (the-as none (-> a0-0 quat z)))
|
||||
(set! a2-10 (the-as none (fpr->gpr f0-5)))
|
||||
(call!)
|
||||
(set! t9-11 (the-as none format))
|
||||
(set! a0-12 (the-as none #t))
|
||||
(set! a1-11 (the-as none L61))
|
||||
(set! f0-6 (the-as none (-> a0-0 quat w)))
|
||||
(set! a2-11 (the-as none (fpr->gpr f0-6)))
|
||||
(call!)
|
||||
(label cfg-4)
|
||||
(set! v0-12 a0-0)
|
||||
(ret-value v0-12)
|
||||
)
|
||||
|
||||
;; definition of type sig-path
|
||||
(deftype sig-path (basic)
|
||||
((sample-count int32 :offset-assert 4)
|
||||
(samples (inline-array sig-path-sample) :offset-assert 8)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #xc
|
||||
:flag-assert #x90000000c
|
||||
)
|
||||
|
||||
;; definition for method 3 of type sig-path
|
||||
(defmethod inspect sig-path ((obj sig-path))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tsample-count: ~D~%" (-> obj sample-count))
|
||||
(format #t "~1Tsamples: #x~X~%" (-> obj samples))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type sig
|
||||
(deftype sig (bot)
|
||||
((fired-gun-count uint32 :offset-assert 992)
|
||||
(sig-path sig-path :offset-assert 996)
|
||||
(sig-path-clock clock :offset-assert 1000)
|
||||
(travel-anim-interp float :offset-assert 1004)
|
||||
(platform-index uint8 :offset-assert 1008)
|
||||
(played-unjam-time time-frame :offset-assert 1016)
|
||||
(sig-path-start-time time-frame :offset-assert 1024)
|
||||
(sig-path-cur-time time-frame :offset-assert 1032)
|
||||
(sig-path-prev-time time-frame :offset-assert 1040)
|
||||
(plasma sig-plasma :inline :offset 1048)
|
||||
(sig-path-prev-pos vector :inline :offset 368)
|
||||
)
|
||||
:heap-base #x3b0
|
||||
:method-count-assert 259
|
||||
:size-assert #x430
|
||||
:flag-assert #x10303b00430
|
||||
(:methods
|
||||
(whip () _type_ :state 225)
|
||||
(blast () _type_ :state 226)
|
||||
(chase () _type_ :state 227)
|
||||
(chase-attack () _type_ :state 228)
|
||||
(traveling () _type_ :state 229)
|
||||
(traveling-blocked () _type_ :state 230)
|
||||
(waiting-far () _type_ :state 231)
|
||||
(waiting-close () _type_ :state 232)
|
||||
(waiting-turn () _type_ :state 233)
|
||||
(waiting-crouched () _type_ :state 234)
|
||||
(charge-plasma () _type_ :state 235)
|
||||
(gun-jam () _type_ :state 236)
|
||||
(repair-gun () _type_ :state 237)
|
||||
(clean-gun () _type_ :state 238)
|
||||
(sig-path-run () _type_ :state 239)
|
||||
(sig-path-jump () _type_ :state 240)
|
||||
(sig-path-jump-land () _type_ :state 241)
|
||||
(sig-path-shoot-jump () _type_ :state 242)
|
||||
(sig-path-shoot-jump-land () _type_ :state 243)
|
||||
(sig-path-idle () _type_ :state 244)
|
||||
(sig-method-245 (_type_) symbol 245)
|
||||
(sig-method-246 (_type_) symbol 246)
|
||||
(fire-gun (_type_ vector) (pointer process) 247)
|
||||
(sig-method-248 (_type_ sig-path-sample) none 248)
|
||||
(sig-method-249 (_type_ sig-path) none 249)
|
||||
(sig-method-250 (_type_) symbol 250)
|
||||
(sig-method-251 (_type_) symbol 251)
|
||||
(sig-method-252 (_type_) symbol 252)
|
||||
(sig-method-253 (_type_) none 253)
|
||||
(sig-method-254 (_type_) symbol 254)
|
||||
(sig-method-255 (_type_) symbol 255)
|
||||
(sig-method-256 (_type_) none 256)
|
||||
(sig-method-257 (_type_) symbol 257)
|
||||
(sig-method-258 (_type_) none 258)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type sig
|
||||
(defmethod inspect sig ((obj sig))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(let ((t9-0 (method-of-type bot inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~2Tfired-gun-count: ~D~%" (-> obj fired-gun-count))
|
||||
(format #t "~2Tsig-path: ~A~%" (-> obj sig-path))
|
||||
(format #t "~2Tsig-path-clock: ~A~%" (-> obj sig-path-clock))
|
||||
(format #t "~2Ttravel-anim-interp: ~f~%" (-> obj travel-anim-interp))
|
||||
(format #t "~2Tplatform-index: ~D~%" (-> obj platform-index))
|
||||
(format #t "~2Tplayed-unjam-time: ~D~%" (-> obj played-unjam-time))
|
||||
(format #t "~2Tsig-path-start-time: ~D~%" (-> obj sig-path-start-time))
|
||||
(format #t "~2Tsig-path-cur-time: ~D~%" (-> obj sig-path-cur-time))
|
||||
(format #t "~2Tsig-path-prev-time: ~D~%" (-> obj sig-path-prev-time))
|
||||
(format #t "~2Tplasma: #<sig-plasma @ #x~X>~%" (-> obj plasma))
|
||||
(format #t "~2Tsig-path-prev-pos: ~`vector`P~%" (-> obj event-param-point))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defskelgroup skel-sig sig sig-lod0-jg sig-ready0-ja
|
||||
((sig-lod0-mg (meters 999999)))
|
||||
:bounds (static-spherem 0 0 0 5)
|
||||
:shadow sig-shadow-mg
|
||||
:origin-joint-index 25
|
||||
)
|
||||
|
||||
;; definition of type sigt-wait-spot
|
||||
(deftype sigt-wait-spot (ai-task)
|
||||
((check-done (function sigt-wait-spot sig 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
|
||||
:flag-assert #xc00000030
|
||||
)
|
||||
|
||||
;; definition for method 3 of type sigt-wait-spot
|
||||
(defmethod inspect sigt-wait-spot ((obj sigt-wait-spot))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tnext: ~A~%" (-> obj next))
|
||||
(format #t "~1Tprev: ~A~%" (-> obj prev))
|
||||
(format #t "~1Tpool: ~A~%" (-> obj pool))
|
||||
(format #t "~1Tunique-id: ~D~%" (-> obj unique-id))
|
||||
(format #t "~1Tbytes[16] @ #x~X~%" (-> obj bytes))
|
||||
(format #t "~1Tcheck-done: ~A~%" (-> obj check-done))
|
||||
(format #t "~1Twhich-spot: ~D~%" (-> obj which-spot))
|
||||
(format #t "~1Tnum-spots: ~D~%" (-> obj num-spots))
|
||||
(format #t "~1Tspot-indexes[6] @ #x~X~%" (-> obj spot-indexes))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type sigt-choose-piston
|
||||
(deftype sigt-choose-piston (ai-task)
|
||||
((check-done (function sigt-choose-piston sig symbol) :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes uint8 4 :offset 38)
|
||||
(actor-indexes uint8 4 :offset 42)
|
||||
)
|
||||
:method-count-assert 15
|
||||
:size-assert #x30
|
||||
:flag-assert #xf00000030
|
||||
(:methods
|
||||
(sigt-choose-piston-method-12 (_type_ sig) symbol 12)
|
||||
(sigt-choose-piston-method-13 (_type_ sig) none 13)
|
||||
(sigt-choose-piston-method-14 (_type_ sig int) symbol 14)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type sigt-choose-piston
|
||||
(defmethod inspect sigt-choose-piston ((obj sigt-choose-piston))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tnext: ~A~%" (-> obj next))
|
||||
(format #t "~1Tprev: ~A~%" (-> obj prev))
|
||||
(format #t "~1Tpool: ~A~%" (-> obj pool))
|
||||
(format #t "~1Tunique-id: ~D~%" (-> obj unique-id))
|
||||
(format #t "~1Tbytes[16] @ #x~X~%" (-> obj bytes))
|
||||
(format #t "~1Tcheck-done: ~A~%" (-> obj check-done))
|
||||
(format #t "~1Twhich-spot: ~D~%" (-> obj which-spot))
|
||||
(format #t "~1Tnum-spots: ~D~%" (-> obj num-spots))
|
||||
(format #t "~1Tspot-indexes[4] @ #x~X~%" (-> obj spot-indexes))
|
||||
(format #t "~1Tactor-indexes[4] @ #x~X~%" (-> obj actor-indexes))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type sigt-riding-piston
|
||||
(deftype sigt-riding-piston (ai-task)
|
||||
((check-done (function sigt-riding-piston sig symbol) :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes uint8 4 :offset 38)
|
||||
)
|
||||
:method-count-assert 13
|
||||
:size-assert #x30
|
||||
:flag-assert #xd00000030
|
||||
(:methods
|
||||
(sigt-riding-piston-method-12 (_type_ sig) symbol 12)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type sigt-riding-piston
|
||||
(defmethod inspect sigt-riding-piston ((obj sigt-riding-piston))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tnext: ~A~%" (-> obj next))
|
||||
(format #t "~1Tprev: ~A~%" (-> obj prev))
|
||||
(format #t "~1Tpool: ~A~%" (-> obj pool))
|
||||
(format #t "~1Tunique-id: ~D~%" (-> obj unique-id))
|
||||
(format #t "~1Tbytes[16] @ #x~X~%" (-> obj bytes))
|
||||
(format #t "~1Tcheck-done: ~A~%" (-> obj check-done))
|
||||
(format #t "~1Twhich-spot: ~D~%" (-> obj which-spot))
|
||||
(format #t "~1Tnum-spots: ~D~%" (-> obj num-spots))
|
||||
(format #t "~1Tspot-indexes[4] @ #x~X~%" (-> obj spot-indexes))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type sigt-charge-plasma
|
||||
(deftype sigt-charge-plasma (ai-task)
|
||||
((check-done (function sigt-charge-plasma sig symbol) :offset 32)
|
||||
(which-spot int8 :offset 36)
|
||||
(num-spots uint8 :offset 37)
|
||||
(spot-indexes uint8 4 :offset 38)
|
||||
(actor-index uint8 :offset 42)
|
||||
)
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
:flag-assert #xc00000030
|
||||
)
|
||||
|
||||
;; definition for method 3 of type sigt-charge-plasma
|
||||
(defmethod inspect sigt-charge-plasma ((obj sigt-charge-plasma))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tnext: ~A~%" (-> obj next))
|
||||
(format #t "~1Tprev: ~A~%" (-> obj prev))
|
||||
(format #t "~1Tpool: ~A~%" (-> obj pool))
|
||||
(format #t "~1Tunique-id: ~D~%" (-> obj unique-id))
|
||||
(format #t "~1Tbytes[16] @ #x~X~%" (-> obj bytes))
|
||||
(format #t "~1Tcheck-done: ~A~%" (-> obj check-done))
|
||||
(format #t "~1Twhich-spot: ~D~%" (-> obj which-spot))
|
||||
(format #t "~1Tnum-spots: ~D~%" (-> obj num-spots))
|
||||
(format #t "~1Tspot-indexes[4] @ #x~X~%" (-> obj spot-indexes))
|
||||
(format #t "~1Tactor-index: ~D~%" (-> obj actor-index))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type sigt-fight-focus
|
||||
(deftype sigt-fight-focus (ai-task)
|
||||
()
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
:flag-assert #xc00000030
|
||||
)
|
||||
|
||||
;; definition for method 3 of type sigt-fight-focus
|
||||
(defmethod inspect sigt-fight-focus ((obj sigt-fight-focus))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tnext: ~A~%" (-> obj next))
|
||||
(format #t "~1Tprev: ~A~%" (-> obj prev))
|
||||
(format #t "~1Tpool: ~A~%" (-> obj pool))
|
||||
(format #t "~1Tunique-id: ~D~%" (-> obj unique-id))
|
||||
(format #t "~1Tbytes[16] @ #x~X~%" (-> obj bytes))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type sigt-repair-gun
|
||||
(deftype sigt-repair-gun (ai-task)
|
||||
()
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
:flag-assert #xc00000030
|
||||
)
|
||||
|
||||
;; definition for method 3 of type sigt-repair-gun
|
||||
(defmethod inspect sigt-repair-gun ((obj sigt-repair-gun))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tnext: ~A~%" (-> obj next))
|
||||
(format #t "~1Tprev: ~A~%" (-> obj prev))
|
||||
(format #t "~1Tpool: ~A~%" (-> obj pool))
|
||||
(format #t "~1Tunique-id: ~D~%" (-> obj unique-id))
|
||||
(format #t "~1Tbytes[16] @ #x~X~%" (-> obj bytes))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
0
|
||||
+285
@@ -0,0 +1,285 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition for function sparticle-sig-plasma-lightning
|
||||
(defun sparticle-sig-plasma-lightning ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector))
|
||||
(let* ((v1-1 (-> arg1 key proc))
|
||||
(a1-2 (cond
|
||||
((= (-> v1-1 type) sig-atoll)
|
||||
(-> v1-1 node-list data 24)
|
||||
)
|
||||
(else
|
||||
(let ((v1-3 (-> v1-1 parent)))
|
||||
(-> (the-as sig-atoll (if v1-3
|
||||
(the-as sig-atoll (-> v1-3 0 self))
|
||||
)
|
||||
)
|
||||
node-list
|
||||
data
|
||||
52
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(v1-6 (vector<-cspace! (new 'stack-no-clear 'vector) a1-2))
|
||||
)
|
||||
(set! (-> arg2 x) (-> v1-6 x))
|
||||
(set! (-> arg2 y) (-> v1-6 y))
|
||||
(set! (-> arg2 z) (-> v1-6 z))
|
||||
)
|
||||
(sparticle-texture-animate arg0 arg1 arg2)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpartgroup group-sig-plasma
|
||||
:id 147
|
||||
:bounds (static-bspherem 0 0 0 1)
|
||||
:parts ((sp-item 665) (sp-item 666 :flags (bit6)) (sp-item 667 :flags (bit6)) (sp-item 668 :flags (bit6)))
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 667
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 2.25) (meters 0.1) 1.0)
|
||||
(sp-flt spt-rot-x 409.6)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 32.0)
|
||||
(sp-int spt-timer 5)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow)
|
||||
(sp-flt spt-userdata 2048.0)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 668
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 8) (meters 0.1) 1.0)
|
||||
(sp-flt spt-rot-x 409.6)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 0.0)
|
||||
(sp-flt spt-g 128.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 16.0)
|
||||
(sp-int spt-timer 5)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow)
|
||||
(sp-flt spt-userdata 2048.0)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 666
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x1 :page #x43b))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 2))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-rnd-flt spt-r 0.0 32.0 1.0)
|
||||
(sp-copy-from-other spt-g -1)
|
||||
(sp-rnd-flt spt-b 128.0 128.0 1.0)
|
||||
(sp-rnd-flt spt-a 128.0 64.0 1.0)
|
||||
(sp-int spt-timer 5)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 665
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xcc :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 0.9))
|
||||
(sp-int spt-rot-x 4)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-flt spt-scale-y (meters 0))
|
||||
(sp-flt spt-r 0.0)
|
||||
(sp-flt spt-g 0.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 0.0)
|
||||
(sp-flt spt-scalevel-y (meters 0.0125))
|
||||
(sp-flt spt-fade-r 6.4)
|
||||
(sp-flt spt-fade-g 6.4)
|
||||
(sp-flt spt-fade-a 6.4)
|
||||
(sp-int spt-timer 200)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
(new 'static 'sp-field-init-spec
|
||||
:field (sp-field-id spt-userdata)
|
||||
:flags (sp-flag plain-v2)
|
||||
:object (new 'static 'boxed-array :type int32 15 1 0 #xc0cc00 #xc0cd00 #xc0ce00 #xc0cf00 #xc0d000 #xc0d100 #xc0d200)
|
||||
)
|
||||
(sp-func spt-func 'sparticle-sig-plasma-lightning)
|
||||
(sp-int-plain-rnd spt-next-time 15 4 1)
|
||||
(sp-launcher-by-id spt-next-launcher 669)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 669
|
||||
:init-specs ((sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 255.0)
|
||||
(sp-flt spt-scalevel-x (meters 0))
|
||||
(sp-flt spt-scalevel-y (meters 0))
|
||||
(sp-flt spt-fade-r -8.533334)
|
||||
(sp-flt spt-fade-g -8.533334)
|
||||
(sp-flt spt-fade-a -8.533334)
|
||||
(sp-int-plain-rnd spt-next-time 15 4 1)
|
||||
(sp-launcher-by-id spt-next-launcher 670)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 670
|
||||
:init-specs ((sp-rnd-flt spt-scalevel-x (meters -0.00093750004) (meters -0.00093750004) 1.0)
|
||||
(sp-rnd-flt spt-scalevel-y (meters -0.00078125) (meters -0.00078125) 1.0)
|
||||
(sp-flt spt-fade-r -0.8)
|
||||
(sp-flt spt-fade-g -0.8)
|
||||
(sp-flt spt-fade-a -0.8)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 14 of type sig-plasma
|
||||
(defmethod sig-plasma-method-14 sig-plasma ((obj sig-plasma) (arg0 process-focusable))
|
||||
(with-pp
|
||||
(let* ((f0-0 (-> obj level))
|
||||
(f30-0 (cond
|
||||
((logtest? (-> obj flags) 2)
|
||||
(seek f0-0 1.0 (* (-> obj charge-speed) (-> pp clock seconds-per-frame)))
|
||||
)
|
||||
(else
|
||||
(let ((f1-1 (-> obj min-level)))
|
||||
(when (< f0-0 f1-1)
|
||||
(set! f1-1 f0-0)
|
||||
(set! (-> obj min-level) f1-1)
|
||||
)
|
||||
(seek f0-0 f1-1 (* 0.25 (-> pp clock seconds-per-frame)))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> obj level) f30-0)
|
||||
(cond
|
||||
((= f30-0 0.0)
|
||||
(let ((v1-9 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
||||
(set! (-> v1-9 command) (sound-command set-param))
|
||||
(set! (-> v1-9 id) (-> obj powerup-sound-id))
|
||||
(set! (-> v1-9 params volume) -4)
|
||||
(set! (-> v1-9 auto-time) 24)
|
||||
(set! (-> v1-9 auto-from) 2)
|
||||
(set! (-> v1-9 params mask) (the-as uint 17))
|
||||
(-> v1-9 id)
|
||||
)
|
||||
(let ((v1-11 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
||||
(set! (-> v1-11 command) (sound-command set-param))
|
||||
(set! (-> v1-11 id) (-> obj plasma-sound-id))
|
||||
(set! (-> v1-11 params volume) -4)
|
||||
(set! (-> v1-11 auto-time) 24)
|
||||
(set! (-> v1-11 auto-from) 2)
|
||||
(set! (-> v1-11 params mask) (the-as uint 17))
|
||||
(-> v1-11 id)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let ((s4-0 (-> arg0 root-override trans)))
|
||||
(if (movie?)
|
||||
(set! s4-0 (camera-pos))
|
||||
)
|
||||
(let ((f28-0 (+ 0.25 (* 0.75 f30-0))))
|
||||
(sound-play-by-name
|
||||
(static-sound-name "sig-gun-powerup")
|
||||
(-> obj powerup-sound-id)
|
||||
(the int (* 1024.0 f28-0))
|
||||
(the int (* 1524.0 (+ 0.5 (* 0.5 f30-0))))
|
||||
0
|
||||
(sound-group sfx)
|
||||
s4-0
|
||||
)
|
||||
(sound-play-by-name
|
||||
(static-sound-name "sig-gun-plasma")
|
||||
(-> obj plasma-sound-id)
|
||||
(the int (* 1024.0 f28-0))
|
||||
(the int (* 1524.0 (rand-vu-float-range -1.0 1.0)))
|
||||
0
|
||||
(sound-group sfx)
|
||||
s4-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (not (logtest? (-> arg0 draw status) (draw-control-status no-draw)))
|
||||
(let ((s5-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> arg0 node-list data 24))))
|
||||
(set! (-> *part-id-table* 667 init-specs 2 initial-valuef) (lerp 409.6 9216.0 f30-0))
|
||||
(set! (-> *part-id-table* 667 init-specs 8 initial-valuef) (lerp 0.0 32.0 f30-0))
|
||||
(set! (-> *part-id-table* 668 init-specs 2 initial-valuef) (lerp 409.6 32768.0 f30-0))
|
||||
(set! (-> *part-id-table* 668 init-specs 8 initial-valuef) (lerp 0.0 16.0 f30-0))
|
||||
(set! (-> *part-id-table* 666 init-specs 2 initial-valuef) (lerp 409.6 8192.0 f30-0))
|
||||
(set! (-> *part-id-table* 665 init-specs 1 initial-valuef) (lerp 0.1 1.0 f30-0))
|
||||
(set! (-> *part-id-table* 665 init-specs 2 initial-valuef) (lerp 409.6 3686.4 f30-0))
|
||||
(spawn (-> arg0 part) s5-2)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 12 of type sig-plasma
|
||||
;; WARN: Return type mismatch uint vs none.
|
||||
(defmethod sig-plasma-method-12 sig-plasma ((obj sig-plasma))
|
||||
(let ((f0-0 (-> obj level)))
|
||||
(-> obj min-level)
|
||||
(when (>= f0-0 1.0)
|
||||
(set! f0-0 0.99)
|
||||
(set! (-> obj level) f0-0)
|
||||
)
|
||||
(set! (-> obj min-level) (fmax 0.0 (+ -0.5 f0-0)))
|
||||
)
|
||||
(set! (-> obj flags) (logand -23 (-> obj flags)))
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type sig-plasma
|
||||
;; WARN: Return type mismatch uint vs none.
|
||||
(defmethod sig-plasma-method-11 sig-plasma ((obj sig-plasma) (arg0 symbol))
|
||||
(set! (-> obj min-level) 0.0)
|
||||
(cond
|
||||
(arg0
|
||||
(set! (-> obj level) 0.0)
|
||||
)
|
||||
(else
|
||||
(if (>= (-> obj level) 1.0)
|
||||
(set! (-> obj level) 0.99)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> obj flags) (logand -24 (-> obj flags)))
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 9 of type sig-plasma
|
||||
;; WARN: Return type mismatch uint vs none.
|
||||
(defmethod sig-plasma-method-9 sig-plasma ((obj sig-plasma))
|
||||
(logior! (-> obj flags) 8)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 10 of type sig-plasma
|
||||
(defmethod sig-plasma-method-10 sig-plasma ((obj sig-plasma))
|
||||
(logtest? (-> obj flags) 4)
|
||||
)
|
||||
|
||||
;; definition for method 13 of type sig-plasma
|
||||
(defmethod sig-plasma-method-13 sig-plasma ((obj sig-plasma))
|
||||
(and (logtest? (-> obj flags) 8) (logtest? (-> obj flags) 16))
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
+560
@@ -0,0 +1,560 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 652
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x45 :page #xc))
|
||||
(sp-func spt-birth-func 'birth-func-set-quat)
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 0.75))
|
||||
(sp-flt spt-scale-y (meters 10))
|
||||
(sp-flt spt-r 128.0)
|
||||
(sp-flt spt-g 0.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-rnd-flt spt-a 32.0 64.0 1.0)
|
||||
(sp-int spt-timer 5)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-14 left-multiply-quat)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 653
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 1) (meters 3) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 128.0)
|
||||
(sp-flt spt-g 0.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-rnd-flt spt-a 64.0 32.0 1.0)
|
||||
(sp-int spt-timer 5)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 654
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x34 :page #xc))
|
||||
(sp-flt spt-num 1.5)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 128.0)
|
||||
(sp-flt spt-b 128.0)
|
||||
(sp-rnd-flt spt-a 16.0 32.0 1.0)
|
||||
(sp-rnd-flt spt-scalevel-x (meters 0.013333334) (meters 0.006666667) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -1.28)
|
||||
(sp-flt spt-fade-b -1.28)
|
||||
(sp-flt spt-fade-a -0.48)
|
||||
(sp-int spt-timer 100)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 655
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x46 :page #xc))
|
||||
(sp-func spt-birth-func 'birth-func-set-quat)
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 2))
|
||||
(sp-flt spt-scale-y (meters 4.5))
|
||||
(sp-flt spt-r 128.0)
|
||||
(sp-flt spt-g 0.0)
|
||||
(sp-flt spt-b 0.0)
|
||||
(sp-flt spt-a 128.0)
|
||||
(sp-flt spt-fade-a -3.6571429)
|
||||
(sp-int spt-timer 35)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 left-multiply-quat)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpartgroup group-sig-shot-hit
|
||||
:id 146
|
||||
:duration (seconds 1)
|
||||
:flags (use-local-clock)
|
||||
:bounds (static-bspherem 0 0 0 8)
|
||||
:parts ((sp-item 656 :period 600 :length 5)
|
||||
(sp-item 657 :fade-after (meters 100) :period 600 :length 5)
|
||||
(sp-item 658 :period 600 :length 5)
|
||||
(sp-item 659 :fade-after (meters 50) :falloff-to (meters 50) :period 600 :length 200)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 200)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 150)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 125)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 100)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 75)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 65)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 50)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 40)
|
||||
(sp-item 660 :fade-after (meters 100) :falloff-to (meters 100) :period 600 :length 25)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 659
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
|
||||
(sp-rnd-flt spt-num 0.0 0.2 1.0)
|
||||
(sp-flt spt-y (meters 0.25))
|
||||
(sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0)
|
||||
(sp-int spt-rot-x 4)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-a 32.0 64.0 1.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.06666667) (meters 0.013333334) 1.0)
|
||||
(sp-rnd-flt spt-scalevel-x (meters -0.001) (meters -0.00033333333) 1.0)
|
||||
(sp-rnd-int-flt spt-rotvel-z (degrees -2.4) 1 873.81335)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.10666667)
|
||||
(sp-flt spt-fade-b -0.10666667)
|
||||
(sp-rnd-flt spt-accel-y -1.3653333 -5.4613333 1.0)
|
||||
(sp-flt spt-friction 0.9)
|
||||
(sp-int spt-timer 300)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
(sp-int spt-next-time 200)
|
||||
(sp-launcher-by-id spt-next-launcher 661)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 660
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
|
||||
(sp-flt spt-num 0.5)
|
||||
(sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.3) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-flt spt-a 96.0)
|
||||
(sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0)
|
||||
(sp-rnd-flt spt-scalevel-x (meters -0.0005) (meters -0.0005) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.10666667)
|
||||
(sp-flt spt-fade-b -0.10666667)
|
||||
(sp-rnd-flt spt-accel-y -1.3653333 -5.4613333 1.0)
|
||||
(sp-flt spt-friction 0.8)
|
||||
(sp-int spt-timer 300)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
(sp-int spt-next-time 200)
|
||||
(sp-launcher-by-id spt-next-launcher 661)
|
||||
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
|
||||
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 661
|
||||
:init-specs ((sp-flt spt-fade-a -0.96))
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 657
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x47 :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-rnd-flt spt-scale-x (meters 5) (meters 0.1) 1.0)
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-flt spt-a 128.0)
|
||||
(sp-flt spt-rotvel-z (degrees -0.1))
|
||||
(sp-flt spt-fade-a -0.32)
|
||||
(sp-int spt-timer 400)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
||||
(sp-int spt-next-time 10)
|
||||
(sp-launcher-by-id spt-next-launcher 662)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 662
|
||||
:init-specs ((sp-rnd-flt spt-scale-x (meters 2) (meters 0.5) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-int spt-next-time 5)
|
||||
(sp-launcher-by-id spt-next-launcher 662)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 658
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x47 :page #xc))
|
||||
(sp-flt spt-num 2.0)
|
||||
(sp-flt spt-scale-x (meters 1))
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-rnd-flt spt-g 32.0 8.0 1.0)
|
||||
(sp-rnd-flt spt-b 32.0 8.0 1.0)
|
||||
(sp-flt spt-a 48.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.12857144))
|
||||
(sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0)
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.9142857)
|
||||
(sp-flt spt-fade-b -0.9142857)
|
||||
(sp-int spt-timer 400)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2)
|
||||
(sp-int spt-next-time 35)
|
||||
(sp-launcher-by-id spt-next-launcher 663)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 663
|
||||
:init-specs ((sp-flt spt-scale-x (meters 4.5))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-scalevel-x (meters -0.010958904))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-g -0.38356164)
|
||||
(sp-flt spt-fade-b 0.0)
|
||||
(sp-flt spt-fade-a -0.13150685)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 656
|
||||
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x47 :page #xc))
|
||||
(sp-flt spt-num 1.0)
|
||||
(sp-flt spt-scale-x (meters 1))
|
||||
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-r 255.0)
|
||||
(sp-flt spt-g 255.0)
|
||||
(sp-flt spt-b 255.0)
|
||||
(sp-flt spt-a 96.0)
|
||||
(sp-flt spt-scalevel-x (meters 0.16666667))
|
||||
(sp-flt spt-rotvel-z (degrees 0.3))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-int spt-timer 55)
|
||||
(sp-cpuinfo-flags sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)
|
||||
(sp-int spt-next-time 15)
|
||||
(sp-launcher-by-id spt-next-launcher 664)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defpart 664
|
||||
:init-specs ((sp-flt spt-scale-x (meters 3.5))
|
||||
(sp-copy-from-other spt-scale-y -4)
|
||||
(sp-flt spt-scalevel-x (meters -0.0875))
|
||||
(sp-copy-from-other spt-scalevel-y -4)
|
||||
(sp-flt spt-fade-b -6.4)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition of type sig-shot
|
||||
(deftype sig-shot (projectile)
|
||||
((tail-pos vector :inline :offset-assert 480)
|
||||
(hit-pos vector :inline :offset-assert 496)
|
||||
)
|
||||
:heap-base #x180
|
||||
:method-count-assert 40
|
||||
:size-assert #x200
|
||||
:flag-assert #x2801800200
|
||||
)
|
||||
|
||||
;; definition for method 3 of type sig-shot
|
||||
(defmethod inspect sig-shot ((obj sig-shot))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(let ((t9-0 (method-of-type projectile inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~2Ttail-pos: #<vector @ #x~X>~%" (-> obj tail-pos))
|
||||
(format #t "~2Thit-pos: #<vector @ #x~X>~%" (-> obj hit-pos))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition for method 24 of type sig-shot
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod draw-laser-sight sig-shot ((obj sig-shot))
|
||||
"TODO - confirm If applicable, draw the laser sight particles
|
||||
:virtual"
|
||||
(draw-beam (-> *part-id-table* 655) (-> obj tail-pos) (-> obj starting-dir) #f #t)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 25 of type sig-shot
|
||||
;; INFO: Used lq/sq
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod spawn-impact-particles sig-shot ((obj sig-shot))
|
||||
"Spawns associated particles with the projectile if applicable"
|
||||
(rlet ((acc :class vf)
|
||||
(vf0 :class vf)
|
||||
(vf4 :class vf)
|
||||
(vf5 :class vf)
|
||||
(vf6 :class vf)
|
||||
(vf7 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let* ((v1-1 (-> obj root-override trans))
|
||||
(a1-0 (-> obj tail-pos))
|
||||
(s5-1 (vector-! (new 'stack-no-clear 'vector) v1-1 a1-0))
|
||||
(gp-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(let ((v1-2 a1-0))
|
||||
(let ((a0-2 s5-1))
|
||||
(let ((a2-1 0.8))
|
||||
(.mov vf7 a2-1)
|
||||
)
|
||||
(.lvf vf5 (&-> a0-2 quad))
|
||||
)
|
||||
(.lvf vf4 (&-> v1-2 quad))
|
||||
)
|
||||
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
|
||||
(.mul.x.vf acc vf5 vf7 :mask #b111)
|
||||
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
|
||||
(.svf (&-> gp-0 quad) vf6)
|
||||
(let ((f30-0 (-> *part-id-table* 652 init-specs 4 initial-valuef)))
|
||||
(set! (-> *part-id-table* 652 init-specs 4 initial-valuef) (fmin f30-0 (vector-length s5-1)))
|
||||
(draw-beam (-> *part-id-table* 652) a1-0 s5-1 #f #t)
|
||||
(set! (-> *part-id-table* 652 init-specs 4 initial-valuef) f30-0)
|
||||
)
|
||||
(vector-normalize! s5-1 1.0)
|
||||
(let ((t9-2 sp-launch-particles-var)
|
||||
(a0-5 *sp-particle-system-2d*)
|
||||
(a1-2 (-> *part-id-table* 653))
|
||||
(a2-3 *launch-matrix*)
|
||||
)
|
||||
(set! (-> a2-3 trans quad) (-> gp-0 quad))
|
||||
(t9-2 a0-5 a1-2 a2-3 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
||||
)
|
||||
(let ((f0-4 (vector-dot s5-1 (-> (camera-matrix) vector 2))))
|
||||
(when (< 0.0 f0-4)
|
||||
(let ((f0-5 (* f0-4 f0-4))
|
||||
(f30-1 (-> *part-id-table* 654 init-specs 8 initial-valuef))
|
||||
(f28-0 (-> *part-id-table* 654 init-specs 8 random-rangef))
|
||||
)
|
||||
(set! (-> *part-id-table* 654 init-specs 8 initial-valuef) (* f30-1 f0-5))
|
||||
(set! (-> *part-id-table* 654 init-specs 8 random-rangef) (* f28-0 f0-5))
|
||||
(let ((t9-4 sp-launch-particles-var)
|
||||
(a0-6 *sp-particle-system-2d*)
|
||||
(a1-3 (-> *part-id-table* 654))
|
||||
(a2-4 *launch-matrix*)
|
||||
)
|
||||
(set! (-> a2-4 trans quad) (-> gp-0 quad))
|
||||
(t9-4 a0-6 a1-3 a2-4 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
||||
)
|
||||
(set! (-> *part-id-table* 654 init-specs 8 initial-valuef) f30-1)
|
||||
(set! (-> *part-id-table* 654 init-specs 8 random-rangef) f28-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 26 of type sig-shot
|
||||
;; INFO: Used lq/sq
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod spawn-shell-particles sig-shot ((obj sig-shot))
|
||||
"TODO - confirm"
|
||||
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
|
||||
(when gp-0
|
||||
(let ((t9-1 (method-of-type part-tracker activate)))
|
||||
(t9-1
|
||||
(the-as part-tracker gp-0)
|
||||
*entity-pool*
|
||||
(symbol->string (-> part-tracker symbol))
|
||||
(the-as pointer #x70004000)
|
||||
)
|
||||
)
|
||||
(let ((t9-2 run-function-in-process)
|
||||
(a0-3 gp-0)
|
||||
(a1-2 part-tracker-init)
|
||||
(a2-4 (-> *part-group-id-table* 146))
|
||||
(a3-1 0)
|
||||
(t0-0 #f)
|
||||
(t1-0 #f)
|
||||
(t2-0 #f)
|
||||
(t3-0 *launch-matrix*)
|
||||
)
|
||||
(set! (-> t3-0 trans quad) (-> obj root-override trans quad))
|
||||
((the-as (function object object object object object object object object none) t9-2)
|
||||
a0-3
|
||||
a1-2
|
||||
a2-4
|
||||
a3-1
|
||||
t0-0
|
||||
t1-0
|
||||
t2-0
|
||||
t3-0
|
||||
)
|
||||
)
|
||||
(-> gp-0 ppointer)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 28 of type sig-shot
|
||||
;; WARN: Return type mismatch int vs sound-id.
|
||||
(defmethod play-impact-sound sig-shot ((obj sig-shot) (arg0 projectile-options))
|
||||
(let ((v1-0 arg0))
|
||||
(cond
|
||||
((zero? v1-0)
|
||||
(sound-play "sig-shot-fire")
|
||||
)
|
||||
((= v1-0 (projectile-options lose-altitude))
|
||||
(sound-play "sig-shot-hit")
|
||||
)
|
||||
)
|
||||
)
|
||||
(the-as sound-id 0)
|
||||
)
|
||||
|
||||
;; definition for method 38 of type sig-shot
|
||||
(defmethod made-impact? sig-shot ((obj sig-shot))
|
||||
"TODO - queries the collision cache, return true/false"
|
||||
(let ((v1-0 (-> obj root-override))
|
||||
(t1-0 (new 'stack-no-clear 'collide-query))
|
||||
)
|
||||
(let ((a1-0 t1-0))
|
||||
(set! (-> a1-0 radius) (-> v1-0 root-prim prim-core world-sphere w))
|
||||
(set! (-> a1-0 collide-with) (-> v1-0 root-prim prim-core collide-with))
|
||||
(set! (-> a1-0 ignore-process0) obj)
|
||||
(set! (-> a1-0 ignore-process1) (ppointer->process (-> obj parent)))
|
||||
(set! (-> a1-0 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1))
|
||||
(set! (-> a1-0 action-mask) (collide-action solid))
|
||||
)
|
||||
(fill-and-try-snap-to-surface v1-0 (-> v1-0 transv) -10240.0 12697.6 -4096.0 t1-0)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function sig-shot-move
|
||||
;; INFO: Used lq/sq
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defun sig-shot-move ((arg0 sig-shot))
|
||||
(projectile-move-fill-line-sphere arg0)
|
||||
(let ((s5-0 (-> arg0 root-override)))
|
||||
(let ((s4-0 (new 'stack-no-clear 'vector)))
|
||||
(vector-! s4-0 (-> arg0 tail-pos) (-> s5-0 trans))
|
||||
(let ((f0-0 (vector-length s4-0)))
|
||||
(when (< 40960.0 f0-0)
|
||||
(vector-normalize! s4-0 40960.0)
|
||||
(vector+! (-> arg0 tail-pos) (-> s5-0 trans) s4-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (logtest? (-> s5-0 status) (collide-status touch-surface))
|
||||
(let ((v1-9 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> arg0 tail-pos) (-> s5-0 trans)) 2048.0))
|
||||
(a1-5 (-> arg0 hit-pos))
|
||||
)
|
||||
(set! (-> a1-5 quad) (-> s5-0 trans quad))
|
||||
(vector+! a1-5 a1-5 v1-9)
|
||||
(move-to-point! (-> arg0 root-override) a1-5)
|
||||
)
|
||||
(go (method-of-object arg0 impact))
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 30 of type sig-shot
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod init-collision! sig-shot ((obj sig-shot))
|
||||
"Init the [[projectile]]'s [[collide-shape]]"
|
||||
(let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player))))
|
||||
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
||||
(set! (-> s5-0 reaction)
|
||||
(the-as (function control-info collide-query vector vector collide-status) cshape-reaction-just-move)
|
||||
)
|
||||
(set! (-> s5-0 no-reaction)
|
||||
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
||||
)
|
||||
(set! (-> s5-0 penetrate-using) (penetrate enemy-yellow-shot))
|
||||
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0)))
|
||||
(set! (-> s5-0 total-prims) (the-as uint 3))
|
||||
(set! (-> s4-0 prim-core collide-as) (collide-spec projectile))
|
||||
(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))
|
||||
(set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4096.0)
|
||||
(set! (-> s5-0 root-prim) s4-0)
|
||||
)
|
||||
(let ((v1-13 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
|
||||
(set! (-> v1-13 prim-core collide-as) (collide-spec projectile))
|
||||
(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))
|
||||
(set-vector! (-> v1-13 local-sphere) 0.0 0.0 0.0 819.2)
|
||||
)
|
||||
(let ((v1-15 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
|
||||
(set! (-> v1-15 prim-core collide-as) (collide-spec projectile))
|
||||
(set! (-> v1-15 prim-core collide-with)
|
||||
(collide-spec jak crate civilian enemy obstacle vehicle-sphere hit-by-others-list player-list pusher)
|
||||
)
|
||||
(set-vector! (-> v1-15 local-sphere) 0.0 0.0 0.0 4096.0)
|
||||
)
|
||||
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
||||
(let ((v1-18 (-> s5-0 root-prim)))
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-18 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-18 prim-core collide-with))
|
||||
)
|
||||
(set! (-> s5-0 max-iteration-count) (the-as uint 1))
|
||||
(set! (-> s5-0 event-self) 'touched)
|
||||
(set! (-> obj root-override) s5-0)
|
||||
)
|
||||
(let ((v1-22 (-> obj parent)))
|
||||
(when (not (logtest? (-> (the-as sig (if v1-22
|
||||
(the-as sig (-> v1-22 0 self))
|
||||
)
|
||||
)
|
||||
bot-flags
|
||||
)
|
||||
(bot-flags attacked)
|
||||
)
|
||||
)
|
||||
(let* ((a0-16 (-> obj root-override))
|
||||
(v1-27 (-> a0-16 root-prim))
|
||||
)
|
||||
(countdown (a0-17 (-> a0-16 total-prims))
|
||||
(logclear! (-> v1-27 prim-core collide-with) (collide-spec jak))
|
||||
(&+! v1-27 80)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> obj root-override pat-ignore-mask)
|
||||
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noproj #x1 :noendlessfall #x1)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 31 of type sig-shot
|
||||
;; INFO: Used lq/sq
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod init-proj-settings! sig-shot ((obj sig-shot))
|
||||
"Init relevant settings for the [[projectile]] such as gravity, speed, timeout, etc
|
||||
:virtual"
|
||||
(set! (-> obj tail-pos quad) (-> obj root-override trans quad))
|
||||
(set! (-> obj attack-mode) 'eco-yellow)
|
||||
(set! (-> obj max-speed) 307200.0)
|
||||
(set! (-> obj move) sig-shot-move)
|
||||
(set! (-> obj timeout) (seconds 1.335))
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
+2057
File diff suppressed because it is too large
Load Diff
+459
@@ -0,0 +1,459 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition for method 9 of type sigt-wait-spot
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod reset-task! sigt-wait-spot ((obj sigt-wait-spot))
|
||||
"Virtual"
|
||||
(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 sigt-wait-spot
|
||||
(defmethod ai-task-method-11 sigt-wait-spot ((obj sigt-wait-spot) (arg0 bot))
|
||||
"Virtual"
|
||||
(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))
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (not ((-> obj check-done) obj (the-as sig arg0)))
|
||||
(let ((a1-10 (handle->process (-> arg0 focus handle))))
|
||||
(cond
|
||||
((and a1-10
|
||||
(attacked-by-player? arg0 (the-as process-focusable a1-10))
|
||||
(zero? (logand (-> arg0 focus-status) (focus-status grabbed)))
|
||||
)
|
||||
(get-task-by-type (-> arg0 ai-ctrl) sigt-fight-focus arg0)
|
||||
(ai-task-control-method-10 (-> arg0 ai-ctrl) arg0)
|
||||
)
|
||||
((logtest? (bot-flags bf19) (-> arg0 bot-flags))
|
||||
(get-task-by-type (-> arg0 ai-ctrl) sigt-repair-gun arg0)
|
||||
(ai-task-control-method-10 (-> arg0 ai-ctrl) arg0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type sigt-fight-focus
|
||||
(defmethod ai-task-method-11 sigt-fight-focus ((obj sigt-fight-focus) (arg0 bot))
|
||||
"Virtual"
|
||||
(let ((a1-1 (handle->process (-> arg0 focus handle))))
|
||||
(if (and a1-1
|
||||
(attacked-by-player? arg0 (the-as process-focusable a1-1))
|
||||
(zero? (logand (-> arg0 focus-status) (focus-status grabbed)))
|
||||
)
|
||||
(logior! (-> arg0 bot-flags) (bot-flags bf00))
|
||||
(ai-task-control-method-14 (-> arg0 ai-ctrl) obj arg0)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 10 of type sigt-fight-focus
|
||||
;; WARN: Return type mismatch bot-flags vs none.
|
||||
(defmethod ai-task-method-10 sigt-fight-focus ((obj sigt-fight-focus) (arg0 bot))
|
||||
"Virtual"
|
||||
(logclear! (-> arg0 bot-flags) (bot-flags bf00))
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type sigt-repair-gun
|
||||
(defmethod ai-task-method-11 sigt-repair-gun ((obj sigt-repair-gun) (arg0 bot))
|
||||
"Virtual"
|
||||
(cond
|
||||
((not (logtest? (bot-flags bf19) (-> arg0 bot-flags)))
|
||||
(ai-task-control-method-14 (-> arg0 ai-ctrl) obj arg0)
|
||||
)
|
||||
(else
|
||||
(let ((a1-4 (handle->process (-> arg0 focus handle))))
|
||||
(when (and a1-4
|
||||
(attacked-by-player? arg0 (the-as process-focusable a1-4))
|
||||
(zero? (logand (-> arg0 focus-status) (focus-status grabbed)))
|
||||
)
|
||||
(get-task-by-type (-> arg0 ai-ctrl) sigt-fight-focus arg0)
|
||||
(ai-task-control-method-10 (-> arg0 ai-ctrl) arg0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 14 of type sigt-choose-piston
|
||||
(defmethod sigt-choose-piston-method-14 sigt-choose-piston ((obj sigt-choose-piston) (arg0 sig) (arg1 int))
|
||||
(let* ((v1-2 (-> arg0 course spots (-> obj spot-indexes arg1)))
|
||||
(a0-6 (-> arg0 actor-group 0 data (-> obj actor-indexes arg1) actor))
|
||||
(gp-0 (if a0-6
|
||||
(-> a0-6 extra process)
|
||||
)
|
||||
)
|
||||
)
|
||||
(or (player-blocking-spot? arg0 v1-2)
|
||||
(or (not gp-0)
|
||||
(>= 14336.0
|
||||
(vector-vector-xz-distance (target-pos 0) (-> (the-as process-focusable gp-0) root-override trans))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 13 of type sigt-choose-piston
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod sigt-choose-piston-method-13 sigt-choose-piston ((obj sigt-choose-piston) (arg0 sig))
|
||||
(let ((s4-0 0))
|
||||
(let ((f30-0 -1.0)
|
||||
(s3-0 (-> arg0 root-override2 trans))
|
||||
)
|
||||
(countdown (s2-0 (-> obj num-spots))
|
||||
(let* ((v1-3 (-> obj spot-indexes s2-0))
|
||||
(f28-0 (vector-vector-xz-distance s3-0 (the-as vector (-> arg0 course spots v1-3))))
|
||||
)
|
||||
(when (and (or (< f30-0 0.0) (< f28-0 f30-0)) (not (sigt-choose-piston-method-14 obj arg0 (the-as int s2-0))))
|
||||
(set! f30-0 f28-0)
|
||||
(set! s4-0 (the-as int s2-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(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
|
||||
)
|
||||
(let* ((v1-22 (-> arg0 actor-group 0 data (-> obj actor-indexes s4-0) actor))
|
||||
(a0-6 (if v1-22
|
||||
(-> v1-22 extra process)
|
||||
)
|
||||
)
|
||||
)
|
||||
(if a0-6
|
||||
(set! (-> arg0 poi-handle) (process->handle a0-6))
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 12 of type sigt-choose-piston
|
||||
;; INFO: Used lq/sq
|
||||
(defmethod sigt-choose-piston-method-12 sigt-choose-piston ((obj sigt-choose-piston) (arg0 sig))
|
||||
(with-pp
|
||||
(when (and (outside-spot-radius? arg0 (the-as bot-spot #f) (the-as vector #f) #f)
|
||||
(not (sigt-choose-piston-method-14 obj arg0 (-> obj which-spot)))
|
||||
)
|
||||
(let* ((v1-12 (-> arg0 actor-group 0 data (-> obj actor-indexes (-> obj which-spot)) actor))
|
||||
(s5-1 (if v1-12
|
||||
(-> v1-12 extra process)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when s5-1
|
||||
(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) 'sync)
|
||||
(let ((v1-19
|
||||
(- ((method-of-type sync-info get-timeframe-offset!) (the-as sync-info (send-event-function s5-1 a1-3)) 0)
|
||||
(-> pp clock frame-counter)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and (< v1-19 (seconds 0.5)) (< (seconds 0.2) v1-19))
|
||||
(let ((v1-22 (-> (the-as process-focusable s5-1) root-override))
|
||||
(s4-0 (-> arg0 root-override2))
|
||||
)
|
||||
(when (>= 10012.445
|
||||
(fabs (deg-
|
||||
(atan (- (-> v1-22 trans x) (-> s4-0 trans x)) (- (-> v1-22 trans z) (-> s4-0 trans z)))
|
||||
(quaternion-y-angle (-> s4-0 quat))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> arg0 enemy-flags) (the-as enemy-flag (logclear (-> arg0 enemy-flags) (enemy-flag vulnerable))))
|
||||
(when (send-event arg0 'jump 4 (-> (the-as process-focusable s5-1) root-override trans))
|
||||
(set! (-> arg0 spot center quad) (-> (the-as process-focusable s5-1) root-override trans quad))
|
||||
(set! (-> arg0 spot center w) 10240.0)
|
||||
(return #t)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 9 of type sigt-choose-piston
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod reset-task! sigt-choose-piston ((obj sigt-choose-piston))
|
||||
"Virtual"
|
||||
(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 sigt-choose-piston
|
||||
(defmethod ai-task-method-11 sigt-choose-piston ((obj sigt-choose-piston) (arg0 bot))
|
||||
"Virtual"
|
||||
(let ((s4-0 (-> obj which-spot)))
|
||||
(cond
|
||||
((< s4-0 0)
|
||||
(sigt-choose-piston-method-13 obj (the-as sig arg0))
|
||||
)
|
||||
((sigt-choose-piston-method-14 obj (the-as sig arg0) s4-0)
|
||||
(sigt-choose-piston-method-13 obj (the-as sig arg0))
|
||||
)
|
||||
)
|
||||
(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))
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (not ((-> obj check-done) obj (the-as sig arg0)))
|
||||
(let ((a1-6 (handle->process (-> arg0 focus handle))))
|
||||
(when (and a1-6
|
||||
(attacked-by-player? arg0 (the-as process-focusable a1-6))
|
||||
(zero? (logand (-> arg0 focus-status) (focus-status grabbed)))
|
||||
)
|
||||
(get-task-by-type (-> arg0 ai-ctrl) sigt-fight-focus arg0)
|
||||
(ai-task-control-method-10 (-> arg0 ai-ctrl) arg0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 10 of type sigt-choose-piston
|
||||
(defmethod ai-task-method-10 sigt-choose-piston ((obj sigt-choose-piston) (arg0 bot))
|
||||
"Virtual"
|
||||
(clear-poi-and-focus! arg0)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 12 of type sigt-riding-piston
|
||||
(defmethod sigt-riding-piston-method-12 sigt-riding-piston ((obj sigt-riding-piston) (arg0 sig))
|
||||
(with-pp
|
||||
(when (not (player-blocking-spot? arg0 (-> arg0 course spots (-> obj spot-indexes (-> obj which-spot)))))
|
||||
(let* ((v1-9 (-> arg0 actor-group 0 data (-> arg0 platform-index) actor))
|
||||
(a0-4 (if v1-9
|
||||
(-> v1-9 extra process)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when a0-4
|
||||
(let ((a1-6 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-6 from) (process->ppointer pp))
|
||||
(set! (-> a1-6 num-params) 0)
|
||||
(set! (-> a1-6 message) 'sync)
|
||||
(let ((v1-16
|
||||
(- ((method-of-type sync-info get-timeframe-offset!) (the-as sync-info (send-event-function a0-4 a1-6)) 0)
|
||||
(-> pp clock frame-counter)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and (< v1-16 (seconds 2.8)) (< (seconds 1.8) v1-16))
|
||||
(let ((v1-19 (-> arg0 nav)))
|
||||
(set! (-> v1-19 target-speed) 0.0)
|
||||
)
|
||||
0
|
||||
(let ((s5-1 (-> arg0 course spots (-> obj spot-indexes (-> obj which-spot)))))
|
||||
(set! (-> arg0 enemy-flags) (the-as enemy-flag (logclear (-> arg0 enemy-flags) (enemy-flag vulnerable))))
|
||||
(when (send-event arg0 'jump 0 (-> s5-1 center))
|
||||
(mem-copy! (the-as pointer (-> arg0 spot)) (the-as pointer s5-1) 20)
|
||||
(return #t)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 9 of type sigt-riding-piston
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod reset-task! sigt-riding-piston ((obj sigt-riding-piston))
|
||||
"Virtual"
|
||||
(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 sigt-riding-piston
|
||||
;; WARN: Return type mismatch symbol vs none.
|
||||
(defmethod ai-task-method-11 sigt-riding-piston ((obj sigt-riding-piston) (arg0 bot))
|
||||
"Virtual"
|
||||
(let ((s4-0 (-> obj which-spot)))
|
||||
(when (or (< s4-0 0) (player-blocking-spot? arg0 (-> arg0 course spots (-> obj spot-indexes s4-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)
|
||||
(send-event
|
||||
(ppointer->process (-> arg0 my-simple-focus))
|
||||
'move-trans
|
||||
(-> arg0 course spots (-> obj spot-indexes s4-0))
|
||||
)
|
||||
(set! (-> arg0 poi-handle) (ppointer->handle (-> arg0 my-simple-focus)))
|
||||
)
|
||||
(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 sig arg0))
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 10 of type sigt-riding-piston
|
||||
(defmethod ai-task-method-10 sigt-riding-piston ((obj sigt-riding-piston) (arg0 bot))
|
||||
"Virtual"
|
||||
(clear-poi-and-focus! arg0)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 9 of type sigt-charge-plasma
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod reset-task! sigt-charge-plasma ((obj sigt-charge-plasma))
|
||||
"Virtual"
|
||||
(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 sigt-charge-plasma
|
||||
(defmethod ai-task-method-11 sigt-charge-plasma ((obj sigt-charge-plasma) (arg0 bot))
|
||||
"Virtual"
|
||||
(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))
|
||||
)
|
||||
)
|
||||
(let* ((v1-24 (-> arg0 actor-group 0 data (-> obj actor-index) actor))
|
||||
(s3-1 (when v1-24
|
||||
(let ((s2-0 (-> v1-24 extra process)))
|
||||
(if (type? s2-0 process-focusable)
|
||||
s2-0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
(s3-1
|
||||
(set! (-> arg0 poi-handle) (process->handle s3-1))
|
||||
(set! (-> arg0 focus-mode) 1)
|
||||
(let ((a1-10 (-> arg0 course spots (-> obj spot-indexes s4-0))))
|
||||
(if (and (outside-spot-radius? arg0 a1-10 (the-as vector #f) #f)
|
||||
(enemy-method-95 arg0 (get-trans (the-as process-focusable s3-1) 3) 10012.445)
|
||||
)
|
||||
(logior! (-> arg0 stack 920) 1)
|
||||
(set! (-> arg0 stack 920) (logand -2 (-> arg0 stack 920)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(clear-poi-and-focus! arg0)
|
||||
(set! (-> arg0 stack 920) (logand -2 (-> arg0 stack 920)))
|
||||
(set! (-> arg0 focus-mode) 0)
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (not ((-> obj check-done) obj (the-as sig arg0)))
|
||||
(let ((a1-14 (handle->process (-> arg0 focus handle))))
|
||||
(when (and a1-14
|
||||
(attacked-by-player? arg0 (the-as process-focusable a1-14))
|
||||
(zero? (logand (-> arg0 focus-status) (focus-status grabbed)))
|
||||
)
|
||||
(get-task-by-type (-> arg0 ai-ctrl) sigt-fight-focus arg0)
|
||||
(ai-task-control-method-10 (-> arg0 ai-ctrl) arg0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 10 of type sigt-charge-plasma
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod ai-task-method-10 sigt-charge-plasma ((obj sigt-charge-plasma) (arg0 bot))
|
||||
"Virtual"
|
||||
(clear-poi-and-focus! arg0)
|
||||
(set! (-> arg0 stack 920) (logand -2 (-> arg0 stack 920)))
|
||||
(set! (-> arg0 focus-mode) 0)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
+1467
File diff suppressed because it is too large
Load Diff
+483
@@ -0,0 +1,483 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type ashelin-battle
|
||||
(deftype ashelin-battle (ashelin)
|
||||
((player-in-bounds-time time-frame :offset-assert 1040)
|
||||
)
|
||||
:heap-base #x3a0
|
||||
:method-count-assert 252
|
||||
:size-assert #x418
|
||||
:flag-assert #xfc03a00418
|
||||
(:methods
|
||||
(set-frontline-dist! (_type_) none 251)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type ashelin-battle
|
||||
(defmethod inspect ashelin-battle ((obj ashelin-battle))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(let ((t9-0 (method-of-type ashelin inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~2Tplayer-in-bounds-time: ~D~%" (-> obj player-in-bounds-time))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition for method 251 of type ashelin-battle
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod set-frontline-dist! ashelin-battle ((obj ashelin-battle))
|
||||
(let ((a0-1 *target*))
|
||||
(when a0-1
|
||||
(set! (-> obj frontline w) (- (+ 40960.0 (vector-dot (the-as vector (-> obj frontline)) (get-trans a0-1 0)))))
|
||||
0
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for symbol *ash1-course*, type ashelin-course
|
||||
(define *ash1-course*
|
||||
(new 'static 'ashelin-course
|
||||
:course-id #x1
|
||||
:speech-count #x30
|
||||
:spot-count #x8
|
||||
: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-battle))
|
||||
(clear-speech-flags! arg0)
|
||||
(move-to-point! (-> arg0 root-override2) (the-as vector (-> arg0 ash-course spots 0)))
|
||||
(let ((v1-7 (game-task-control-method-9 (-> arg0 task))))
|
||||
(if (= (-> v1-7 action) (game-task-action say))
|
||||
(add-process
|
||||
*gui-control*
|
||||
arg0
|
||||
(gui-channel art-load)
|
||||
(gui-action queue)
|
||||
(the-as string (-> v1-7 scene))
|
||||
-99.0
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((a0-8 15))
|
||||
(set! (-> arg0 hit-points) a0-8)
|
||||
(set! (-> arg0 enemy-info-override default-hit-points) a0-8)
|
||||
)
|
||||
(set! (-> arg0 waypoint-time0) 0)
|
||||
(let ((v1-10 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
(set! (-> v1-10 bytes 5) (the-as uint 1))
|
||||
(set! (-> v1-10 bytes 6) (the-as uint 0))
|
||||
(set! (-> v1-10 bytes 4) (the-as uint -1))
|
||||
(set! (-> (the-as asht-wait-spot v1-10) check-done)
|
||||
(lambda ((arg0 asht-wait-spot) (arg1 ashelin-battle))
|
||||
(with-pp
|
||||
(if (and (zero? (-> arg1 waypoint-time0)) (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-9 (-> arg1 actor-group 0 data 0 actor))
|
||||
)
|
||||
(t9-0
|
||||
(if v1-9
|
||||
(-> v1-9 extra process)
|
||||
)
|
||||
a1-1
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> arg1 waypoint-time0) (-> pp clock frame-counter))
|
||||
)
|
||||
(let ((s5-0 (game-task-control-method-9 (-> arg1 task))))
|
||||
(cond
|
||||
((and (nonzero? (-> arg1 waypoint-time0))
|
||||
(and (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 1))
|
||||
(let ((f0-0 143360.0))
|
||||
(and (>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (target-pos 0) (-> arg1 root-override2 trans)))
|
||||
(= (-> s5-0 action) (game-task-action say))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(process-entity-status! arg1 (entity-perm-status no-kill) #t)
|
||||
(when (scene-play arg1 (the-as string (-> s5-0 scene)) #f)
|
||||
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
|
||||
(go-to-waypoint! arg1 2 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
(return #t)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(process-entity-status! arg1 (entity-perm-status no-kill) #f)
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update #f
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 2
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-battle))
|
||||
(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! (-> (the-as asht-wait-spot v1-1) check-done)
|
||||
(lambda ((arg0 asht-wait-spot) (arg1 ashelin-battle))
|
||||
(when (scene-release? arg1)
|
||||
(set! (-> arg1 bot-flags) (logior (bot-flags bf20) (-> arg1 bot-flags)))
|
||||
(let ((s5-0 (-> arg1 ash-course spots)))
|
||||
(vector-! (the-as vector (-> arg1 frontline)) (the-as vector (-> s5-0 2)) (the-as vector (-> s5-0 1)))
|
||||
(vector-normalize! (-> arg1 frontline) 1.0)
|
||||
(set! (-> arg1 frontline w) (- (vector-dot (the-as vector (-> arg1 frontline)) (the-as vector (-> s5-0 1)))))
|
||||
)
|
||||
(set-frontline-dist! arg1)
|
||||
(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
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-battle))
|
||||
(with-pp
|
||||
(send-event arg0 'hide #f)
|
||||
(ashelin-method-250 arg0 #t)
|
||||
(set! (-> arg0 notice-enemy-dist) 245760.0)
|
||||
(set-setting! 'sound-mode #f 0 1)
|
||||
(logior! (-> arg0 bot-flags) (bot-flags bf06))
|
||||
(set-setting! 'airlock #f 0 0)
|
||||
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-4 from) (process->ppointer pp))
|
||||
(set! (-> a1-4 num-params) 0)
|
||||
(set! (-> a1-4 message) 'trigger)
|
||||
(let ((t9-4 send-event-function)
|
||||
(v1-18 (-> arg0 actor-group 0 data 1 actor))
|
||||
)
|
||||
(t9-4
|
||||
(if v1-18
|
||||
(-> v1-18 extra process)
|
||||
)
|
||||
a1-4
|
||||
)
|
||||
)
|
||||
)
|
||||
(add-process *gui-control* arg0 (gui-channel art-load) (gui-action queue) "atoll-save-ashelin-res-b" -99.0 0)
|
||||
(let ((v1-24 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
(set! (-> v1-24 bytes 5) (the-as uint 2))
|
||||
(set! (-> v1-24 bytes 6) (the-as uint 3))
|
||||
(set! (-> v1-24 bytes 7) (the-as uint 4))
|
||||
(set! (-> (the-as asht-wait-spot v1-24) check-done)
|
||||
(lambda ((arg0 asht-wait-spot) (arg1 ashelin-battle))
|
||||
(with-pp
|
||||
(when (not (channel-active? arg1 (the-as uint 0)))
|
||||
(cond
|
||||
((and (not (speech-playing? arg1 45))
|
||||
(>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 2.5))
|
||||
)
|
||||
(play-speech arg1 45)
|
||||
)
|
||||
((and (not (speech-playing? arg1 46))
|
||||
(>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 7))
|
||||
)
|
||||
(play-speech arg1 46)
|
||||
)
|
||||
((and (not (speech-playing? arg1 47))
|
||||
(>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 14))
|
||||
)
|
||||
(play-speech arg1 47)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((a1-8 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-8 from) (process->ppointer pp))
|
||||
(set! (-> a1-8 num-params) 1)
|
||||
(set! (-> a1-8 message) 'query)
|
||||
(set! (-> a1-8 param 0) (the-as uint 'beaten))
|
||||
(let ((t9-7 send-event-function)
|
||||
(v1-37 (-> arg1 actor-group 0 data 1 actor))
|
||||
)
|
||||
(when (t9-7
|
||||
(if v1-37
|
||||
(-> v1-37 extra process)
|
||||
)
|
||||
a1-8
|
||||
)
|
||||
(logclear! (-> arg1 bot-flags) (bot-flags bf20))
|
||||
(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 (lambda ((arg0 ashelin-battle))
|
||||
(with-pp
|
||||
(set-frontline-dist! arg0)
|
||||
(let ((s5-0 (target-pos 0)))
|
||||
(if (>= (-> s5-0 y) 176128.0)
|
||||
(set! (-> arg0 player-in-bounds-time) (-> pp clock frame-counter))
|
||||
)
|
||||
(if (>= (- (-> pp clock frame-counter) (-> arg0 player-in-bounds-time)) (seconds 4))
|
||||
(send-event arg0 'instant-death)
|
||||
)
|
||||
(if (< (-> s5-0 y) 192512.0)
|
||||
(logior! (-> arg0 bot-flags) (bot-flags bf10))
|
||||
(logclear! (-> arg0 bot-flags) (bot-flags bf10))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 4
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-battle))
|
||||
(task-node-close! (game-task-node atoll-battle-battle))
|
||||
(remove-setting! 'sound-mode)
|
||||
(ashelin-method-250 arg0 #f)
|
||||
(remove-setting! 'airlock)
|
||||
(logclear! (-> arg0 bot-flags) (bot-flags bf10))
|
||||
(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 (game-task-control-method-9 (-> arg0 task))))
|
||||
(if (= (-> v1-20 action) (game-task-action say))
|
||||
(add-process
|
||||
*gui-control*
|
||||
arg0
|
||||
(gui-channel art-load)
|
||||
(gui-action queue)
|
||||
(the-as string (-> v1-20 scene))
|
||||
-99.0
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-22 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
(set! (-> v1-22 bytes 5) (the-as uint 3))
|
||||
(set! (-> v1-22 bytes 6) (the-as uint 5))
|
||||
(set! (-> v1-22 bytes 7) (the-as uint 6))
|
||||
(set! (-> v1-22 bytes 8) (the-as uint 7))
|
||||
(let ((v0-12
|
||||
(lambda ((arg0 asht-wait-spot) (arg1 ashelin-battle))
|
||||
(with-pp
|
||||
(when (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 1.5))
|
||||
(let ((s5-0 (game-task-control-method-9 (-> 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 5 #f)
|
||||
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> (the-as asht-wait-spot v1-22) check-done) v0-12)
|
||||
(the-as symbol v0-12)
|
||||
)
|
||||
)
|
||||
)
|
||||
:on-update #f
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 5
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-battle))
|
||||
(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 3))
|
||||
(set! (-> v1-15 bytes 6) (the-as uint 5))
|
||||
(set! (-> v1-15 bytes 7) (the-as uint 6))
|
||||
(set! (-> v1-15 bytes 8) (the-as uint 7))
|
||||
(set! (-> (the-as asht-wait-spot v1-15) check-done)
|
||||
(lambda ((arg0 asht-wait-spot) (arg1 ashelin-battle)) (when (scene-release? arg1)
|
||||
(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 #f
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
(new 'static 'bot-waypoint
|
||||
:waypoint-id 6
|
||||
:skip-to -1
|
||||
:on-set (lambda ((arg0 ashelin-battle))
|
||||
(process-entity-status! arg0 (entity-perm-status bit-4) #f)
|
||||
(process-entity-status! arg0 (entity-perm-status no-kill) #f)
|
||||
(logclear! (-> arg0 enemy-flags) (enemy-flag use-notice-distance))
|
||||
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) asht-wait-spot arg0)))
|
||||
(set! (-> v1-3 bytes 5) (the-as uint 3))
|
||||
(set! (-> v1-3 bytes 6) (the-as uint 5))
|
||||
(set! (-> v1-3 bytes 7) (the-as uint 6))
|
||||
(set! (-> v1-3 bytes 8) (the-as uint 7))
|
||||
(set! (-> (the-as asht-wait-spot v1-3) check-done) (lambda ((arg0 asht-wait-spot) (arg1 ashelin-battle)) #f))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:on-update #f
|
||||
:on-skipping-here #f
|
||||
:check-too-far #f
|
||||
)
|
||||
)
|
||||
:speeches (new 'static 'inline-array bot-speech-info 48
|
||||
(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")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha037")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha047")
|
||||
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "asha042")
|
||||
)
|
||||
:speech-tunings (new 'static 'inline-array bot-speech-tuning 1
|
||||
(new 'static 'bot-speech-tuning :fo-min 30 :fo-max 100 :fo-curve #xb :trans? #t)
|
||||
)
|
||||
:spots (new 'static 'inline-array bot-spot 8
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2263285.8 :y 213319.69 :z -4552335.5 :w 16384.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2293555.2 :z -4570276.0 :w 4096.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2235105.2 :z -4669890.5 :w 4096.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2224291.8 :y 222167.05 :z -4707533.0 :w 16384.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2164695.0 :y 221593.6 :z -4725145.5 :w 16384.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2305392.8 :y 214671.36 :z -4561797.0 :w 8192.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2245959.8 :y 214425.6 :z -4561961.0 :w 8192.0))
|
||||
(new 'static 'bot-spot :center (new 'static 'vector :x 2269757.5 :y 216965.12 :z -4560404.5 :w 8192.0))
|
||||
)
|
||||
:ouch-speeches (new 'static 'bot-speech-list-shuffle
|
||||
:flags #x6
|
||||
: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 1) *ash1-course*)
|
||||
|
||||
|
||||
|
||||
|
||||
+3233
File diff suppressed because it is too large
Load Diff
+323
@@ -0,0 +1,323 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type ai-task
|
||||
(deftype ai-task (basic)
|
||||
((next ai-task :offset-assert 4)
|
||||
(prev ai-task :offset-assert 8)
|
||||
(pool ai-task-pool :offset-assert 12)
|
||||
(unique-id uint32 :offset-assert 16)
|
||||
(bytes uint8 16 :offset 32)
|
||||
)
|
||||
:method-count-assert 12
|
||||
:size-assert #x30
|
||||
:flag-assert #xc00000030
|
||||
(:methods
|
||||
(reset-task! (_type_) none 9)
|
||||
(ai-task-method-10 (_type_ bot) none 10)
|
||||
(ai-task-method-11 (_type_ bot) none 11)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type ai-task
|
||||
(defmethod inspect ai-task ((obj ai-task))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tnext: ~A~%" (-> obj next))
|
||||
(format #t "~1Tprev: ~A~%" (-> obj prev))
|
||||
(format #t "~1Tpool: ~A~%" (-> obj pool))
|
||||
(format #t "~1Tunique-id: ~D~%" (-> obj unique-id))
|
||||
(format #t "~1Tbytes[16] @ #x~X~%" (-> obj bytes))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type ai-task-pool
|
||||
(deftype ai-task-pool (basic)
|
||||
((anchor ai-task :offset-assert 4)
|
||||
(tasks (pointer uint32) :offset-assert 8)
|
||||
(tasks-length uint32 :offset-assert 12)
|
||||
(unique-id uint32 :offset-assert 16)
|
||||
)
|
||||
:method-count-assert 12
|
||||
:size-assert #x14
|
||||
:flag-assert #xc00000014
|
||||
(:methods
|
||||
(assign-ids! (_type_ type) ai-task 9)
|
||||
(set-next-task! (_type_ ai-task) none 10)
|
||||
(ai-task-pool-method-11 (_type_) ai-task 11)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type ai-task-pool
|
||||
(defmethod inspect ai-task-pool ((obj ai-task-pool))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tanchor: ~A~%" (-> obj anchor))
|
||||
(format #t "~1Ttasks: #x~X~%" (-> obj tasks))
|
||||
(format #t "~1Ttasks-length: ~D~%" (-> obj tasks-length))
|
||||
(format #t "~1Tunique-id: ~D~%" (-> obj unique-id))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type ai-task-control
|
||||
(deftype ai-task-control (basic)
|
||||
((anchor ai-task :offset-assert 4)
|
||||
(pool ai-task-pool :offset-assert 8)
|
||||
)
|
||||
:method-count-assert 18
|
||||
:size-assert #xc
|
||||
:flag-assert #x120000000c
|
||||
(:methods
|
||||
(new (symbol type ai-task-pool) _type_ 0)
|
||||
(ai-task-control-method-9 (_type_) none 9)
|
||||
(ai-task-control-method-10 (_type_ bot) none 10)
|
||||
(get-task-by-type (_type_ type bot) ai-task 11)
|
||||
(ai-task-control-method-12 (_type_ bot) symbol 12)
|
||||
(ai-task-control-method-13 (_type_ ai-task bot) ai-task 13)
|
||||
(ai-task-control-method-14 (_type_ ai-task bot) none 14)
|
||||
(init-task! (_type_ type bot) ai-task 15)
|
||||
(set-next-task-for-pool! (_type_ ai-task) none 16)
|
||||
(set-next-task! (_type_ ai-task) none 17)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type ai-task-control
|
||||
(defmethod inspect ai-task-control ((obj ai-task-control))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tanchor: ~A~%" (-> obj anchor))
|
||||
(format #t "~1Tpool: ~A~%" (-> obj pool))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition for method 11 of type ai-task
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod ai-task-method-11 ai-task ((obj ai-task) (arg0 bot))
|
||||
"Virtual"
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 10 of type ai-task
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod ai-task-method-10 ai-task ((obj ai-task) (arg0 bot))
|
||||
"Virtual"
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 9 of type ai-task
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod reset-task! ai-task ((obj ai-task))
|
||||
"Virtual"
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type ai-task-pool
|
||||
;; WARN: Return type mismatch (pointer uint32) vs ai-task.
|
||||
(defmethod ai-task-pool-method-11 ai-task-pool ((obj ai-task-pool))
|
||||
(set! (-> obj unique-id) (the-as uint 0))
|
||||
(let ((t0-0 (the-as (pointer uint32) #f))
|
||||
(a1-0 (the-as (pointer uint32) #f))
|
||||
(v1-0 (-> obj tasks))
|
||||
)
|
||||
(let ((a2-0 (-> obj tasks-length)))
|
||||
(dotimes (a3-0 (the-as int a2-0))
|
||||
(set! a1-0 (&+ v1-0 (* 48 a3-0)))
|
||||
(set! (-> a1-0 2) (the-as uint obj))
|
||||
(set! (-> a1-0 3) (the-as uint 0))
|
||||
(set! (-> a1-0 1) (the-as uint t0-0))
|
||||
(if t0-0
|
||||
(set! (-> t0-0 0) (the-as uint a1-0))
|
||||
)
|
||||
(set! t0-0 a1-0)
|
||||
)
|
||||
)
|
||||
(set! (-> a1-0 0) (the-as uint #f))
|
||||
(let ((v0-0 (&-> v1-0 0)))
|
||||
(set! (-> obj anchor) (the-as ai-task v0-0))
|
||||
(the-as ai-task v0-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 9 of type ai-task-pool
|
||||
(defmethod assign-ids! ai-task-pool ((obj ai-task-pool) (arg0 type))
|
||||
"Assign unique IDs to the [[ai-task-pool]] and its `anchor`s `next`"
|
||||
(let ((v1-1 (-> obj anchor next)))
|
||||
(when v1-1
|
||||
(let ((a2-0 (-> v1-1 prev))
|
||||
(a3-0 (-> v1-1 next))
|
||||
)
|
||||
(set! (-> v1-1 prev) #f)
|
||||
(set! (-> v1-1 next) #f)
|
||||
(let ((t0-1 (the-as int (+ (-> obj unique-id) 1))))
|
||||
(if (zero? (the-as uint t0-1))
|
||||
(set! t0-1 1)
|
||||
)
|
||||
(set! (-> obj unique-id) (the-as uint t0-1))
|
||||
(set! (-> v1-1 unique-id) (the-as uint t0-1))
|
||||
)
|
||||
(set! (-> a2-0 next) a3-0)
|
||||
(if a3-0
|
||||
(set! (-> a3-0 prev) a2-0)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-1 type) arg0)
|
||||
v1-1
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 10 of type ai-task-pool
|
||||
;; WARN: Return type mismatch ai-task vs none.
|
||||
(defmethod set-next-task! ai-task-pool ((obj ai-task-pool) (arg0 ai-task))
|
||||
"Set the next task in the [[ai-task-pool]] to the specified [[ai-task]]."
|
||||
(let* ((v1-0 (-> obj anchor))
|
||||
(v0-0 (-> v1-0 next))
|
||||
)
|
||||
(set! (-> v1-0 next) arg0)
|
||||
(set! (-> arg0 prev) v1-0)
|
||||
(set! (-> arg0 next) v0-0)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 0 of type ai-task-control
|
||||
(defmethod new ai-task-control ((allocation symbol) (type-to-make type) (arg0 ai-task-pool))
|
||||
(let ((s5-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
|
||||
(set! (-> s5-0 pool) arg0)
|
||||
(set! (-> s5-0 anchor) (assign-ids! arg0 ai-task))
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 12 of type ai-task-control
|
||||
(defmethod ai-task-control-method-12 ai-task-control ((obj ai-task-control) (arg0 bot))
|
||||
(let ((gp-0 (-> obj anchor)))
|
||||
(let ((s3-0 (-> obj anchor next)))
|
||||
(while s3-0
|
||||
(let ((s4-0 (-> s3-0 next)))
|
||||
(if arg0
|
||||
(ai-task-method-10 s3-0 arg0)
|
||||
)
|
||||
(set-next-task! (-> s3-0 pool) s3-0)
|
||||
(set! s3-0 s4-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> gp-0 prev) #f)
|
||||
(set! (-> gp-0 next) #f)
|
||||
)
|
||||
#f
|
||||
)
|
||||
|
||||
;; definition for method 9 of type ai-task-control
|
||||
;; WARN: Return type mismatch symbol vs none.
|
||||
(defmethod ai-task-control-method-9 ai-task-control ((obj ai-task-control))
|
||||
(ai-task-control-method-12 obj (the-as bot #f))
|
||||
(let ((a1-1 (-> obj anchor)))
|
||||
(when a1-1
|
||||
(set-next-task! (-> a1-1 pool) a1-1)
|
||||
(set! (-> obj anchor) #f)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 15 of type ai-task-control
|
||||
(defmethod init-task! ai-task-control ((obj ai-task-control) (arg0 type) (arg1 bot))
|
||||
"Initialize a task of the given type in the [[ai-task-control]]'s pool."
|
||||
(let ((s5-0 (assign-ids! (-> obj pool) arg0)))
|
||||
(if s5-0
|
||||
(reset-task! s5-0)
|
||||
)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 17 of type ai-task-control
|
||||
;; WARN: Return type mismatch ai-task vs none.
|
||||
(defmethod set-next-task! ai-task-control ((obj ai-task-control) (arg0 ai-task))
|
||||
"Set `next` of this [[ai-task-control]]'s `anchor` to the given [[ai-task]]."
|
||||
(let* ((v1-0 (-> obj anchor))
|
||||
(a0-1 (-> v1-0 next))
|
||||
)
|
||||
(set! (-> v1-0 next) arg0)
|
||||
(set! (-> arg0 prev) v1-0)
|
||||
(set! (-> arg0 next) a0-1)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 16 of type ai-task-control
|
||||
(defmethod set-next-task-for-pool! ai-task-control ((obj ai-task-control) (arg0 ai-task))
|
||||
(set-next-task! (-> obj pool) arg0)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type ai-task-control
|
||||
(defmethod get-task-by-type ai-task-control ((obj ai-task-control) (arg0 type) (arg1 bot))
|
||||
(let ((s5-0 (init-task! obj arg0 arg1)))
|
||||
(if s5-0
|
||||
(set-next-task! obj s5-0)
|
||||
)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 13 of type ai-task-control
|
||||
(defmethod ai-task-control-method-13 ai-task-control ((obj ai-task-control) (arg0 ai-task) (arg1 bot))
|
||||
(let ((gp-0 (-> arg0 prev))
|
||||
(s5-0 (-> arg0 next))
|
||||
)
|
||||
(if arg1
|
||||
(ai-task-method-10 arg0 arg1)
|
||||
)
|
||||
(set-next-task! (-> obj pool) arg0)
|
||||
(if gp-0
|
||||
(set! (-> gp-0 next) s5-0)
|
||||
)
|
||||
(if s5-0
|
||||
(set! (-> s5-0 prev) gp-0)
|
||||
)
|
||||
s5-0
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 10 of type ai-task-control
|
||||
(defmethod ai-task-control-method-10 ai-task-control ((obj ai-task-control) (arg0 bot))
|
||||
(let ((a0-1 (-> obj anchor next)))
|
||||
(if a0-1
|
||||
(ai-task-method-11 a0-1 arg0)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 14 of type ai-task-control
|
||||
(defmethod ai-task-control-method-14 ai-task-control ((obj ai-task-control) (arg0 ai-task) (arg1 bot))
|
||||
(let ((a0-1 (ai-task-control-method-13 obj arg0 arg1)))
|
||||
(if a0-1
|
||||
(ai-task-method-11 a0-1 arg1)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
+916
@@ -0,0 +1,916 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type bot-focus-info
|
||||
(deftype bot-focus-info (structure)
|
||||
((max-los-dist float :offset-assert 0)
|
||||
(fproc process-focusable :offset-assert 4)
|
||||
(bullseye-xz-dist float :offset-assert 8)
|
||||
(ry-diff float :offset-assert 12)
|
||||
(my-facing-ry float :offset-assert 16)
|
||||
(bullseye-ry float :offset-assert 20)
|
||||
(los int8 :offset-assert 24)
|
||||
(update-time time-frame :offset-assert 32)
|
||||
(bullseye vector :inline :offset-assert 48)
|
||||
(pos vector :inline :offset-assert 64)
|
||||
(my-facing-xz-dir vector :inline :offset-assert 80)
|
||||
(bullseye-xz-dir vector :inline :offset-assert 96)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x70
|
||||
:flag-assert #x900000070
|
||||
)
|
||||
|
||||
;; definition for method 3 of type bot-focus-info
|
||||
(defmethod inspect bot-focus-info ((obj bot-focus-info))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj 'bot-focus-info)
|
||||
(format #t "~1Tmax-los-dist: ~f~%" (-> obj max-los-dist))
|
||||
(format #t "~1Tfproc: ~A~%" (-> obj fproc))
|
||||
(format #t "~1Tbullseye-xz-dist: ~f~%" (-> obj bullseye-xz-dist))
|
||||
(format #t "~1Try-diff: ~f~%" (-> obj ry-diff))
|
||||
(format #t "~1Tmy-facing-ry: ~f~%" (-> obj my-facing-ry))
|
||||
(format #t "~1Tbullseye-ry: ~f~%" (-> obj bullseye-ry))
|
||||
(format #t "~1Tlos: ~D~%" (-> obj los))
|
||||
(format #t "~1Tupdate-time: ~D~%" (-> obj update-time))
|
||||
(format #t "~1Tbullseye: #<vector @ #x~X>~%" (-> obj bullseye))
|
||||
(format #t "~1Tpos: #<vector @ #x~X>~%" (-> obj pos))
|
||||
(format #t "~1Tmy-facing-xz-dir: #<vector @ #x~X>~%" (-> obj my-facing-xz-dir))
|
||||
(format #t "~1Tbullseye-xz-dir: #<vector @ #x~X>~%" (-> obj bullseye-xz-dir))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type bot-turn-info
|
||||
(deftype bot-turn-info (structure)
|
||||
((facing-ry float :offset-assert 0)
|
||||
(targ-ry float :offset-assert 4)
|
||||
(ry-diff float :offset-assert 8)
|
||||
(predicted-ry-diff float :offset-assert 12)
|
||||
(predicted-targ-ry float :offset-assert 16)
|
||||
(facing-dir vector :inline :offset-assert 32)
|
||||
(targ-pos vector :inline :offset-assert 48)
|
||||
(predicted-targ-pos vector :inline :offset-assert 64)
|
||||
(src-quat quaternion :inline :offset-assert 80)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x60
|
||||
:flag-assert #x900000060
|
||||
)
|
||||
|
||||
;; definition for method 3 of type bot-turn-info
|
||||
(defmethod inspect bot-turn-info ((obj bot-turn-info))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj 'bot-turn-info)
|
||||
(format #t "~1Tfacing-ry: ~f~%" (-> obj facing-ry))
|
||||
(format #t "~1Ttarg-ry: ~f~%" (-> obj targ-ry))
|
||||
(format #t "~1Try-diff: ~f~%" (-> obj ry-diff))
|
||||
(format #t "~1Tpredicted-ry-diff: ~f~%" (-> obj predicted-ry-diff))
|
||||
(format #t "~1Tpredicted-targ-ry: ~f~%" (-> obj predicted-targ-ry))
|
||||
(format #t "~1Tfacing-dir: #<vector @ #x~X>~%" (-> obj facing-dir))
|
||||
(format #t "~1Ttarg-pos: #<vector @ #x~X>~%" (-> obj targ-pos))
|
||||
(format #t "~1Tpredicted-targ-pos: #<vector @ #x~X>~%" (-> obj predicted-targ-pos))
|
||||
(format #t "~1Tsrc-quat: #<quaternion @ #x~X>~%" (-> obj src-quat))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type bot-speech-tuning
|
||||
(deftype bot-speech-tuning (structure)
|
||||
((fo-min int32 :offset-assert 0)
|
||||
(fo-max int32 :offset-assert 4)
|
||||
(fo-curve int8 :offset-assert 8)
|
||||
(trans? symbol :offset-assert 12)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x10
|
||||
:flag-assert #x900000010
|
||||
)
|
||||
|
||||
;; definition for method 3 of type bot-speech-tuning
|
||||
(defmethod inspect bot-speech-tuning ((obj bot-speech-tuning))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj 'bot-speech-tuning)
|
||||
(format #t "~1Tfo-min: ~D~%" (-> obj fo-min))
|
||||
(format #t "~1Tfo-max: ~D~%" (-> obj fo-max))
|
||||
(format #t "~1Tfo-curve: ~D~%" (-> obj fo-curve))
|
||||
(format #t "~1Ttrans?: ~A~%" (-> obj trans?))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type bot-speech-info
|
||||
(deftype bot-speech-info (structure)
|
||||
((flags speech-flags :offset-assert 0)
|
||||
(hold-time uint16 :offset-assert 2)
|
||||
(slave-id int8 :offset-assert 4)
|
||||
(tuning-id int8 :offset-assert 5)
|
||||
(name string :offset-assert 8)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #xc
|
||||
:flag-assert #x90000000c
|
||||
)
|
||||
|
||||
;; definition for method 3 of type bot-speech-info
|
||||
(defmethod inspect bot-speech-info ((obj bot-speech-info))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj 'bot-speech-info)
|
||||
(format #t "~1Tflags: ~D~%" (-> obj flags))
|
||||
(format #t "~1Thold-time: ~D~%" (-> obj hold-time))
|
||||
(format #t "~1Tslave-id: ~D~%" (-> obj slave-id))
|
||||
(format #t "~1Ttuning-id: ~D~%" (-> obj tuning-id))
|
||||
(format #t "~1Tname: ~A~%" (-> obj name))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type bot-spot
|
||||
(deftype bot-spot (structure)
|
||||
((center vector :inline :offset-assert 0)
|
||||
(center-x float :offset 0)
|
||||
(center-y float :offset 4)
|
||||
(center-z float :offset 8)
|
||||
(inside-xz-dist float :offset 12)
|
||||
(blocked-xz-dist float :offset-assert 16)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x14
|
||||
:flag-assert #x900000014
|
||||
)
|
||||
|
||||
;; definition for method 3 of type bot-spot
|
||||
(defmethod inspect bot-spot ((obj bot-spot))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj 'bot-spot)
|
||||
(format #t "~1Tcenter: #<vector @ #x~X>~%" (-> obj center))
|
||||
(format #t "~1Tcenter-x: ~f~%" (-> obj center x))
|
||||
(format #t "~1Tcenter-y: ~f~%" (-> obj center y))
|
||||
(format #t "~1Tcenter-z: ~f~%" (-> obj center z))
|
||||
(format #t "~1Tinside-xz-dist: ~f~%" (-> obj center w))
|
||||
(format #t "~1Tblocked-xz-dist: ~f~%" (-> obj blocked-xz-dist))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type bot-waypoint
|
||||
(deftype bot-waypoint (basic)
|
||||
((waypoint-id int16 :offset-assert 4)
|
||||
(nav-mesh-index int8 :offset-assert 6)
|
||||
(skip-to int8 :offset-assert 7)
|
||||
(on-set (function bot none) :offset-assert 8)
|
||||
(on-update (function bot none) :offset-assert 12)
|
||||
(on-skipping-here (function bot none) :offset-assert 16)
|
||||
(check-too-far symbol :offset-assert 20)
|
||||
(warn-dist float :offset-assert 24)
|
||||
(fail-dist-delta float :offset-assert 28)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x20
|
||||
:flag-assert #x900000020
|
||||
)
|
||||
|
||||
;; definition for method 3 of type bot-waypoint
|
||||
(defmethod inspect bot-waypoint ((obj bot-waypoint))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Twaypoint-id: ~D~%" (-> obj waypoint-id))
|
||||
(format #t "~1Tnav-mesh-index: ~D~%" (-> obj nav-mesh-index))
|
||||
(format #t "~1Tskip-to: ~D~%" (-> obj skip-to))
|
||||
(format #t "~1Ton-set: ~A~%" (-> obj on-set))
|
||||
(format #t "~1Ton-update: ~A~%" (-> obj on-update))
|
||||
(format #t "~1Ton-skipping-here: ~A~%" (-> obj on-skipping-here))
|
||||
(format #t "~1Tcheck-too-far: ~A~%" (-> obj check-too-far))
|
||||
(format #t "~1Twarn-dist: ~f~%" (-> obj warn-dist))
|
||||
(format #t "~1Tfail-dist-delta: ~f~%" (-> obj fail-dist-delta))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type bot-course
|
||||
(deftype bot-course (basic)
|
||||
((course-id uint8 :offset-assert 4)
|
||||
(speech-count uint16 :offset-assert 6)
|
||||
(spot-count uint16 :offset-assert 8)
|
||||
(retry-cookie uint8 :offset-assert 10)
|
||||
(too-far-warn-speeches bot-speech-list-shuffle :offset-assert 12)
|
||||
(too-far-fail-speeches bot-speech-list-shuffle :offset-assert 16)
|
||||
(attack-player-speeches bot-speech-list :offset-assert 20)
|
||||
(default-check-too-far symbol :offset-assert 24)
|
||||
(waypoints (array bot-waypoint) :offset-assert 28)
|
||||
(speeches (inline-array bot-speech-info) :offset-assert 32)
|
||||
(speech-tunings (inline-array bot-speech-tuning) :offset-assert 36)
|
||||
(dirs (inline-array vector) :offset-assert 40)
|
||||
(spots (inline-array bot-spot) :offset-assert 44)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x30
|
||||
:flag-assert #x900000030
|
||||
)
|
||||
|
||||
;; definition for method 3 of type bot-course
|
||||
(defmethod inspect bot-course ((obj bot-course))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tcourse-id: ~D~%" (-> obj course-id))
|
||||
(format #t "~1Tspeech-count: ~D~%" (-> obj speech-count))
|
||||
(format #t "~1Tspot-count: ~D~%" (-> obj spot-count))
|
||||
(format #t "~1Tretry-cookie: ~D~%" (-> obj retry-cookie))
|
||||
(format #t "~1Ttoo-far-warn-speeches: ~A~%" (-> obj too-far-warn-speeches))
|
||||
(format #t "~1Ttoo-far-fail-speeches: ~A~%" (-> obj too-far-fail-speeches))
|
||||
(format #t "~1Tattack-player-speeches: ~A~%" (-> obj attack-player-speeches))
|
||||
(format #t "~1Tdefault-check-too-far: ~A~%" (-> obj default-check-too-far))
|
||||
(format #t "~1Twaypoints: ~A~%" (-> obj waypoints))
|
||||
(format #t "~1Tspeeches: #x~X~%" (-> obj speeches))
|
||||
(format #t "~1Tspeech-tunings: #x~X~%" (-> obj speech-tunings))
|
||||
(format #t "~1Tdirs: #x~X~%" (-> obj dirs))
|
||||
(format #t "~1Tspots: #x~X~%" (-> obj spots))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition of type bot
|
||||
(deftype bot (nav-enemy)
|
||||
((bot-flags bot-flags :offset-assert 604)
|
||||
(min-speed float :offset-assert 608)
|
||||
(max-speed float :offset-assert 612)
|
||||
(follow-offset float :offset-assert 616)
|
||||
(too-far-warn-dist float :offset-assert 620)
|
||||
(too-far-fail-dist-delta float :offset-assert 624)
|
||||
(too-far-warn-dist-default float :offset-assert 628)
|
||||
(too-far-fail-dist-delta-default float :offset-assert 632)
|
||||
(travel-prev-ry float :offset-assert 636)
|
||||
(travel-prev-ry1 float :offset-assert 640)
|
||||
(player-blocking float :offset-assert 644)
|
||||
(ai-ctrl ai-task-control :offset-assert 648)
|
||||
(course bot-course :offset-assert 652)
|
||||
(waypoint bot-waypoint :offset-assert 656)
|
||||
(waypoint-bits uint32 :offset-assert 660)
|
||||
(waypoint-int32a int32 :offset-assert 664)
|
||||
(bot-task-bits uint32 :offset-assert 668)
|
||||
(hit-invuln-ignore-me-delay uint32 :offset-assert 672)
|
||||
(hit-invuln-focus-disable-delay uint32 :offset-assert 676)
|
||||
(warn-to-fail-timeout uint32 :offset-assert 680)
|
||||
(warn-min-delay uint32 :offset-assert 684)
|
||||
(warn-max-delay uint32 :offset-assert 688)
|
||||
(spot-color uint32 :offset-assert 692)
|
||||
(waypoint-request int16 :offset-assert 696)
|
||||
(hit-by-enemy-count uint16 :offset-assert 698)
|
||||
(hit-by-player-count uint16 :offset-assert 700)
|
||||
(notice-enemy-dist float :offset-assert 704)
|
||||
(channel uint8 :offset-assert 708)
|
||||
(focus-mode int8 :offset-assert 709)
|
||||
(nav-mesh-index int8 :offset-assert 710)
|
||||
(delay-too-far-check int8 :offset-assert 711)
|
||||
(slave-id int8 :offset-assert 712)
|
||||
(vehicle-seat-index int8 :offset-assert 713)
|
||||
(bot-health-index int8 :offset-assert 714)
|
||||
(task game-task-control :offset-assert 716)
|
||||
(swivel-joint-mod joint-mod :offset-assert 720)
|
||||
(health-handle handle :offset-assert 728)
|
||||
(poi-handle handle :offset-assert 736)
|
||||
(my-simple-focus (pointer simple-focus) :offset-assert 744)
|
||||
(attacker-handle handle :offset-assert 752)
|
||||
(scene-player-handle handle :offset-assert 760)
|
||||
(master-handle handle :offset-assert 768)
|
||||
(vehicle-handle handle :offset-assert 776)
|
||||
(hit-invuln-starting-time time-frame :offset-assert 784)
|
||||
(danger-time time-frame :offset-assert 792)
|
||||
(attacker-time time-frame :offset-assert 800)
|
||||
(started-warning-time time-frame :offset-assert 808)
|
||||
(waypoint-time0 time-frame :offset-assert 816)
|
||||
(next-too-far-warn-time time-frame :offset-assert 824)
|
||||
(spot bot-spot :inline :offset-assert 832)
|
||||
(follow-dir vector :inline :offset-assert 864)
|
||||
(focus-info bot-focus-info :inline :offset-assert 880)
|
||||
)
|
||||
:heap-base #x360
|
||||
:method-count-assert 225
|
||||
:size-assert #x3e0
|
||||
:flag-assert #xe1036003e0
|
||||
(:methods
|
||||
(failed () _type_ :state 178)
|
||||
(hidden () _type_ :state 179)
|
||||
(clear-poi-and-focus! (_type_) none 180)
|
||||
(bot-method-181 (_type_ vector vector vector vector vector float) none 181)
|
||||
(turn-to-target (_type_ bot-turn-info process-focusable float) none 182)
|
||||
(alive? (_type_) symbol 183)
|
||||
(bot-debug-draw-spot-id (_type_) none 184)
|
||||
(bot-debug-draw-sphere (_type_ vector rgba) none 185)
|
||||
(bot-debug-draw-spot-sphere (_type_ int (pointer uint) int) none 186)
|
||||
(reset-attacker! (_type_) none 187)
|
||||
(scene-release? (_type_) symbol 188)
|
||||
(select-focus! (_type_) process 189)
|
||||
(bot-method-190 (_type_) symbol 190)
|
||||
(bot-method-191 (_type_) none 191)
|
||||
(bot-method-192 (_type_) none 192)
|
||||
(bot-method-193 (_type_) symbol 193)
|
||||
(outside-spot-radius? (_type_ bot-spot vector symbol) symbol 194)
|
||||
(attacked-by-player? (_type_ process-focusable) symbol 195)
|
||||
(bot-method-196 (_type_) none 196)
|
||||
(fail-mission! (_type_) none 197)
|
||||
(set-cam-height! (_type_ vector) meters 198)
|
||||
(cam-move-to-bot (_type_) none 199)
|
||||
(fail-falling (_type_) none 200)
|
||||
(set-next-focus! (_type_ enemy enemy-best-focus) none 201)
|
||||
(choose-spot (_type_ int (pointer uint)) int 202)
|
||||
(play-attacked-speech (_type_) none 203)
|
||||
(play-too-far-warn-speech (_type_) symbol 204)
|
||||
(scene-play (_type_ string symbol) symbol 205)
|
||||
(play-speech (_type_ int) none 206)
|
||||
(play-death-sound (_type_ string) none 207)
|
||||
(bot-method-208 (_type_) symbol 208)
|
||||
(channel-active? (_type_ uint) symbol 209)
|
||||
(init! (_type_) none 210)
|
||||
(clear-speech-flags! (_type_) none 211)
|
||||
(reset-warn-time! (_type_) none 212)
|
||||
(go-to-waypoint! (_type_ int symbol) object 213)
|
||||
(bot-method-214 (_type_) symbol 214)
|
||||
(skip-waypoint (_type_) none 215)
|
||||
(bot-method-216 (_type_) none 216)
|
||||
(speech-ended? (_type_ int) symbol 217)
|
||||
(speech-playing? (_type_ int) symbol 218)
|
||||
(player-blocking-spot? (_type_ bot-spot) symbol 219)
|
||||
(stop-speech (_type_ uint symbol) none 220)
|
||||
(bot-method-221 (_type_) quaternion 221)
|
||||
(bot-method-222 (_type_ vector) none 222)
|
||||
(bot-method-223 (_type_ symbol) none 223)
|
||||
(bot-check-too-far (_type_) symbol 224)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type bot
|
||||
(defmethod inspect bot ((obj bot))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(let ((t9-0 (method-of-type nav-enemy inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~2Tbot-flags: ~D~%" (-> obj bot-flags))
|
||||
(format #t "~2Tmin-speed: ~f~%" (-> obj min-speed))
|
||||
(format #t "~2Tmax-speed: ~f~%" (-> obj max-speed))
|
||||
(format #t "~2Tfollow-offset: ~f~%" (-> obj follow-offset))
|
||||
(format #t "~2Ttoo-far-warn-dist: ~f~%" (-> obj too-far-warn-dist))
|
||||
(format #t "~2Ttoo-far-fail-dist-delta: ~f~%" (-> obj too-far-fail-dist-delta))
|
||||
(format #t "~2Ttoo-far-warn-dist-default: ~f~%" (-> obj too-far-warn-dist-default))
|
||||
(format #t "~2Ttoo-far-fail-dist-delta-default: ~f~%" (-> obj too-far-fail-dist-delta-default))
|
||||
(format #t "~2Ttravel-prev-ry: ~f~%" (-> obj travel-prev-ry))
|
||||
(format #t "~2Ttravel-prev-ry1: ~f~%" (-> obj travel-prev-ry1))
|
||||
(format #t "~2Tplayer-blocking: ~f~%" (-> obj player-blocking))
|
||||
(format #t "~2Tai-ctrl: ~A~%" (-> obj ai-ctrl))
|
||||
(format #t "~2Tcourse: ~A~%" (-> obj course))
|
||||
(format #t "~2Twaypoint: ~A~%" (-> obj waypoint))
|
||||
(format #t "~2Twaypoint-bits: ~D~%" (-> obj waypoint-bits))
|
||||
(format #t "~2Twaypoint-int32a: ~D~%" (-> obj waypoint-int32a))
|
||||
(format #t "~2Tbot-task-bits: ~D~%" (-> obj bot-task-bits))
|
||||
(format #t "~2Thit-invuln-ignore-me-delay: ~D~%" (-> obj hit-invuln-ignore-me-delay))
|
||||
(format #t "~2Thit-invuln-focus-disable-delay: ~D~%" (-> obj hit-invuln-focus-disable-delay))
|
||||
(format #t "~2Twarn-to-fail-timeout: ~D~%" (-> obj warn-to-fail-timeout))
|
||||
(format #t "~2Twarn-min-delay: ~D~%" (-> obj warn-min-delay))
|
||||
(format #t "~2Twarn-max-delay: ~D~%" (-> obj warn-max-delay))
|
||||
(format #t "~2Tspot-color: ~D~%" (-> obj spot-color))
|
||||
(format #t "~2Twaypoint-request: ~D~%" (-> obj waypoint-request))
|
||||
(format #t "~2Thit-by-enemy-count: ~D~%" (-> obj hit-by-enemy-count))
|
||||
(format #t "~2Thit-by-player-count: ~D~%" (-> obj hit-by-player-count))
|
||||
(format #t "~2Tnotice-enemy-dist: ~f~%" (-> obj notice-enemy-dist))
|
||||
(format #t "~2Tchannel: ~D~%" (-> obj channel))
|
||||
(format #t "~2Tfocus-mode: ~D~%" (-> obj focus-mode))
|
||||
(format #t "~2Tnav-mesh-index: ~D~%" (-> obj nav-mesh-index))
|
||||
(format #t "~2Tdelay-too-far-check: ~D~%" (-> obj delay-too-far-check))
|
||||
(format #t "~2Tslave-id: ~D~%" (-> obj slave-id))
|
||||
(format #t "~2Tvehicle-seat-index: ~D~%" (-> obj vehicle-seat-index))
|
||||
(format #t "~2Tbot-health-index: ~D~%" (-> obj bot-health-index))
|
||||
(format #t "~2Ttask: ~A~%" (-> obj task))
|
||||
(format #t "~2Tswivel-joint-mod: ~A~%" (-> obj swivel-joint-mod))
|
||||
(format #t "~2Thealth-handle: ~D~%" (-> obj health-handle))
|
||||
(format #t "~2Tpoi-handle: ~D~%" (-> obj poi-handle))
|
||||
(format #t "~2Tmy-simple-focus: #x~X~%" (-> obj my-simple-focus))
|
||||
(format #t "~2Tattacker-handle: ~D~%" (-> obj attacker-handle))
|
||||
(format #t "~2Tscene-player-handle: ~D~%" (-> obj scene-player-handle))
|
||||
(format #t "~2Tmaster-handle: ~D~%" (-> obj master-handle))
|
||||
(format #t "~2Tvehicle-handle: ~D~%" (-> obj vehicle-handle))
|
||||
(format #t "~2Thit-invuln-starting-time: ~D~%" (-> obj hit-invuln-starting-time))
|
||||
(format #t "~2Tdanger-time: ~D~%" (-> obj danger-time))
|
||||
(format #t "~2Tattacker-time: ~D~%" (-> obj attacker-time))
|
||||
(format #t "~2Tstarted-warning-time: ~D~%" (-> obj started-warning-time))
|
||||
(format #t "~2Twaypoint-time0: ~D~%" (-> obj waypoint-time0))
|
||||
(format #t "~2Tnext-too-far-warn-time: ~D~%" (-> obj next-too-far-warn-time))
|
||||
(format #t "~2Tspot: #<bot-spot @ #x~X>~%" (-> obj spot))
|
||||
(format #t "~2Tfollow-dir: #<vector @ #x~X>~%" (-> obj follow-dir))
|
||||
(format #t "~2Tfocus-info: #<bot-focus-info @ #x~X>~%" (-> obj focus-info))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition for symbol *bot-task-pool*, type ai-task-pool
|
||||
(define *bot-task-pool* (new 'static 'ai-task-pool
|
||||
:anchor #f
|
||||
:tasks (new 'static 'array uint32 240
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
)
|
||||
:tasks-length #x14
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(ai-task-pool-method-11 *bot-task-pool*)
|
||||
|
||||
;; definition of type bot-speech-list
|
||||
(deftype bot-speech-list (basic)
|
||||
((flags uint8 :offset-assert 4)
|
||||
(retry-cookie uint8 :offset-assert 5)
|
||||
(last-local-index int16 :offset-assert 6)
|
||||
(speech-indexes (array int16) :offset-assert 8)
|
||||
)
|
||||
:method-count-assert 11
|
||||
:size-assert #xc
|
||||
:flag-assert #xb0000000c
|
||||
(:methods
|
||||
(bot-speech-list-method-9 (_type_ bot (inline-array bot-speech-info) speech-flags) int 9)
|
||||
(reset-index (_type_ symbol) none 10)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type bot-speech-list
|
||||
(defmethod inspect bot-speech-list ((obj bot-speech-list))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tflags: ~D~%" (-> obj flags))
|
||||
(format #t "~1Tretry-cookie: ~D~%" (-> obj retry-cookie))
|
||||
(format #t "~1Tlast-local-index: ~D~%" (-> obj last-local-index))
|
||||
(format #t "~1Tspeech-indexes: ~A~%" (-> obj speech-indexes))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition for method 10 of type bot-speech-list
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod reset-index bot-speech-list ((obj bot-speech-list) (arg0 symbol))
|
||||
(if arg0
|
||||
(set! (-> obj flags) (logand -2 (-> obj flags)))
|
||||
)
|
||||
(set! (-> obj last-local-index) -1)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 9 of type bot-speech-list
|
||||
;; WARN: new jak 2 until loop case, check carefully
|
||||
(defmethod bot-speech-list-method-9 bot-speech-list ((sp-list bot-speech-list) (bot bot) (sp-info (inline-array bot-speech-info)) (arg3 speech-flags))
|
||||
(let ((v1-1 (-> bot course retry-cookie)))
|
||||
(when (!= v1-1 (-> sp-list retry-cookie))
|
||||
(set! (-> sp-list retry-cookie) (-> bot course retry-cookie))
|
||||
(reset-index sp-list #t)
|
||||
)
|
||||
)
|
||||
(let ((sp-indexes (-> sp-list speech-indexes))
|
||||
(last-idx (-> sp-list last-local-index))
|
||||
)
|
||||
(when (< last-idx 0)
|
||||
(when (not (logtest? (-> sp-list flags) 1))
|
||||
(logior! (-> sp-list flags) 1)
|
||||
(set! arg3 (logior arg3 (speech-flags sf02)))
|
||||
)
|
||||
(reset-index sp-list #f)
|
||||
(if (logtest? (-> sp-list flags) 4)
|
||||
(set! last-idx (+ (get-rand-int bot (-> sp-indexes length)) -1))
|
||||
(set! last-idx -1)
|
||||
)
|
||||
)
|
||||
(until #f
|
||||
(when (>= last-idx (+ (-> sp-indexes length) -1))
|
||||
(if (not (logtest? (-> sp-list flags) 2))
|
||||
(goto cfg-23)
|
||||
)
|
||||
(reset-index sp-list #f)
|
||||
(set! last-idx -1)
|
||||
)
|
||||
(+! last-idx 1)
|
||||
(let* ((idx (-> sp-indexes last-idx))
|
||||
(flags (-> sp-info idx flags))
|
||||
)
|
||||
(when (and (not (logtest? arg3 flags))
|
||||
(or (not (logtest? flags (speech-flags sf11))) (not (speech-playing? bot idx)))
|
||||
)
|
||||
(set! (-> sp-list last-local-index) last-idx)
|
||||
(return idx)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
(label cfg-23)
|
||||
-1
|
||||
)
|
||||
|
||||
;; definition of type bot-speech-list-shuffle
|
||||
(deftype bot-speech-list-shuffle (bot-speech-list)
|
||||
((history-mask uint64 :offset-assert 16)
|
||||
(history-mask-full uint64 :offset-assert 24)
|
||||
)
|
||||
:method-count-assert 11
|
||||
:size-assert #x20
|
||||
:flag-assert #xb00000020
|
||||
)
|
||||
|
||||
;; definition for method 3 of type bot-speech-list-shuffle
|
||||
(defmethod inspect bot-speech-list-shuffle ((obj bot-speech-list-shuffle))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tflags: ~D~%" (-> obj flags))
|
||||
(format #t "~1Tretry-cookie: ~D~%" (-> obj retry-cookie))
|
||||
(format #t "~1Tlast-local-index: ~D~%" (-> obj last-local-index))
|
||||
(format #t "~1Tspeech-indexes: ~A~%" (-> obj speech-indexes))
|
||||
(format #t "~1Thistory-mask: ~D~%" (-> obj history-mask))
|
||||
(format #t "~1Thistory-mask-full: ~D~%" (-> obj history-mask-full))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition for method 10 of type bot-speech-list-shuffle
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod reset-index bot-speech-list-shuffle ((obj bot-speech-list-shuffle) (arg0 symbol))
|
||||
(let ((t9-0 (method-of-type bot-speech-list reset-index)))
|
||||
(t9-0 obj arg0)
|
||||
)
|
||||
(set! (-> obj history-mask) (the-as uint 0))
|
||||
(when (zero? (-> obj history-mask-full))
|
||||
(let ((v0-2 0))
|
||||
(let ((v1-2 1))
|
||||
(countdown (a0-3 (-> obj speech-indexes length))
|
||||
(set! v0-2 (logior v0-2 v1-2))
|
||||
(set! v1-2 (* v1-2 2))
|
||||
)
|
||||
)
|
||||
(set! (-> obj history-mask-full) (the-as uint v0-2))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 9 of type bot-speech-list-shuffle
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: Stack slot offset 16 signed mismatch
|
||||
;; WARN: new jak 2 until loop case, check carefully
|
||||
(defmethod bot-speech-list-method-9 bot-speech-list-shuffle ((obj bot-speech-list-shuffle) (bot bot) (sp-info (inline-array bot-speech-info)) (sp-flags speech-flags))
|
||||
(local-vars (sv-16 int))
|
||||
(let ((course-cookie (-> bot course retry-cookie)))
|
||||
(when (!= course-cookie (-> obj retry-cookie))
|
||||
(set! (-> obj retry-cookie) (-> bot course retry-cookie))
|
||||
(reset-index obj #t)
|
||||
)
|
||||
)
|
||||
(set! sv-16 (-> obj last-local-index))
|
||||
(when (< sv-16 0)
|
||||
(when (not (logtest? (-> obj flags) 1))
|
||||
(logior! (-> obj flags) 1)
|
||||
(set! sp-flags (logior sp-flags (speech-flags sf02)))
|
||||
)
|
||||
(reset-index obj #f)
|
||||
)
|
||||
(let ((history-mask 0))
|
||||
(if (>= sv-16 0)
|
||||
(set! history-mask (ash 1 sv-16))
|
||||
)
|
||||
(if (logtest? (-> obj flags) 8)
|
||||
(set! history-mask (logior history-mask (-> obj history-mask)))
|
||||
)
|
||||
(until #f
|
||||
(when (and (= history-mask (-> obj history-mask-full)) (logtest? (-> obj flags) 8))
|
||||
(if (not (logtest? (-> obj flags) 2))
|
||||
(return -1)
|
||||
)
|
||||
(reset-index obj #f)
|
||||
(if (>= sv-16 0)
|
||||
(set! history-mask (ash 1 sv-16))
|
||||
(set! history-mask 0)
|
||||
)
|
||||
)
|
||||
(let* ((last-idx (enemy-method-120 bot (-> obj speech-indexes length) history-mask))
|
||||
(speech-idx (-> obj speech-indexes last-idx))
|
||||
(v1-47 (-> sp-info speech-idx flags))
|
||||
)
|
||||
(set! history-mask (logior history-mask (ash 1 last-idx)))
|
||||
(when (and (not (logtest? sp-flags v1-47))
|
||||
(or (not (logtest? v1-47 (speech-flags sf11))) (not (speech-playing? bot speech-idx)))
|
||||
)
|
||||
(set! (-> obj last-local-index) last-idx)
|
||||
(logior! (-> obj history-mask) (ash 1 last-idx))
|
||||
(return speech-idx)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
-1
|
||||
)
|
||||
|
||||
;; definition of type bot-course-table
|
||||
(deftype bot-course-table (basic)
|
||||
((course bot-course 18 :offset-assert 4)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x4c
|
||||
:flag-assert #x90000004c
|
||||
)
|
||||
|
||||
;; definition for method 3 of type bot-course-table
|
||||
(defmethod inspect bot-course-table ((obj bot-course-table))
|
||||
(when (not obj)
|
||||
(set! obj obj)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" obj (-> obj type))
|
||||
(format #t "~1Tcourse[18] @ #x~X~%" (-> obj course))
|
||||
(label cfg-4)
|
||||
obj
|
||||
)
|
||||
|
||||
;; definition for symbol *bot-course-table*, type bot-course-table
|
||||
(define *bot-course-table* (new 'static 'bot-course-table))
|
||||
|
||||
|
||||
|
||||
|
||||
+295
@@ -0,0 +1,295 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate hit (bot)
|
||||
:virtual #t
|
||||
:enter (behavior ()
|
||||
(let ((t9-0 (-> (method-of-type nav-enemy hit) enter)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(stop-speech self (the-as uint 0) #t)
|
||||
(bot-method-191 self)
|
||||
(logclear! (-> self bot-flags) (bot-flags bf11))
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(let ((t9-0 (-> (method-of-type nav-enemy hit) exit)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(logior! (-> self bot-flags) (bot-flags bf11))
|
||||
(none)
|
||||
)
|
||||
:code (behavior ()
|
||||
(local-vars (v1-37 enemy-flag) (v1-45 enemy-flag))
|
||||
(ja-channel-push! 1 (seconds 0.2))
|
||||
(let ((f30-0 (get-rand-float-range self 0.9 1.1)))
|
||||
(ja-no-eval :group! (-> self draw art-group data (-> self enemy-info-override hit-anim))
|
||||
:num! (seek!
|
||||
(the float
|
||||
(+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self enemy-info-override hit-anim)))
|
||||
frames
|
||||
num-frames
|
||||
)
|
||||
-1
|
||||
)
|
||||
)
|
||||
f30-0
|
||||
)
|
||||
:frame-num 0.0
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(ja :num! (seek! max f30-0))
|
||||
)
|
||||
)
|
||||
(if (logtest? (-> self enemy-flags) (enemy-flag check-water))
|
||||
(logior! (-> self focus-status) (focus-status dangerous))
|
||||
(logclear! (-> self focus-status) (focus-status dangerous))
|
||||
)
|
||||
(let ((v1-36 (-> self enemy-flags)))
|
||||
(if (logtest? v1-36 (enemy-flag checking-water))
|
||||
(set! v1-37 (logior v1-36 (enemy-flag enable-on-active)))
|
||||
(set! v1-37 (logclear v1-36 (enemy-flag enable-on-active)))
|
||||
)
|
||||
)
|
||||
(set! (-> self enemy-flags) v1-37)
|
||||
(if (logtest? (-> self enemy-flags) (enemy-flag look-at-move-dest))
|
||||
(set! (-> self mask) (logior (process-mask collectable) (-> self mask)))
|
||||
(logclear! (-> self mask) (process-mask collectable))
|
||||
)
|
||||
(let ((v1-44 (-> self enemy-flags)))
|
||||
(if (logtest? (enemy-flag no-initial-move-to-ground) v1-44)
|
||||
(set! v1-45 (logior (enemy-flag check-water-backup) v1-44))
|
||||
(set! v1-45 (logclear v1-44 (enemy-flag check-water-backup)))
|
||||
)
|
||||
)
|
||||
(set! (-> self enemy-flags) v1-45)
|
||||
(logclear! (-> self enemy-flags) (enemy-flag actor-pause-backup))
|
||||
(logclear! (-> self focus-status) (focus-status hit))
|
||||
(enemy-method-72 self)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate knocked (bot)
|
||||
:virtual #t
|
||||
:enter (behavior ()
|
||||
(logclear! (-> self enemy-flags) (enemy-flag look-at-focus))
|
||||
(stop-speech self (the-as uint 0) #t)
|
||||
(if (and (logtest? (-> self bot-flags) (bot-flags attacked))
|
||||
(nonzero? (-> self hit-points))
|
||||
(zero? (-> self fated-time))
|
||||
)
|
||||
(logior! (-> self bot-flags) (bot-flags bf12))
|
||||
)
|
||||
(bot-method-191 self)
|
||||
(when (zero? (-> self hit-points))
|
||||
(set! (-> self hit-points) 1)
|
||||
(set! (-> self fated-time) (the-as uint (-> self clock frame-counter)))
|
||||
)
|
||||
(logclear! (-> self bot-flags) (bot-flags bf11))
|
||||
(let ((t9-2 (-> (method-of-type nav-enemy knocked) enter)))
|
||||
(if t9-2
|
||||
(t9-2)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(let ((gp-0 (-> self incoming attack-id)))
|
||||
(let ((t9-0 (-> (method-of-type nav-enemy knocked) exit)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(set! (-> self incoming attack-id) gp-0)
|
||||
)
|
||||
(logior! (-> self bot-flags) (bot-flags bf11))
|
||||
(logclear! (-> self bot-flags) (bot-flags bf12))
|
||||
(none)
|
||||
)
|
||||
:trans (behavior ()
|
||||
(let ((t9-0 (-> (method-of-type nav-enemy knocked) trans)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(when (and (logtest? (-> self bot-flags) (bot-flags bf12)) (!= (-> self state-time) (-> self clock frame-counter)))
|
||||
(logclear! (-> self bot-flags) (bot-flags bf12))
|
||||
(play-attacked-speech self)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate die-falling (bot)
|
||||
:virtual #t
|
||||
:enter (behavior ()
|
||||
(let ((t9-0 (-> (method-of-type nav-enemy die-falling) enter)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(kill-nearby-enemies (-> self root-override2 trans) 61440.0)
|
||||
(stop-speech self (the-as uint 0) #f)
|
||||
(logclear! (-> self bot-flags) (bot-flags bf06 bf11))
|
||||
(set! (-> self delay-too-far-check) -1)
|
||||
(logior! (-> self root-override2 nav-flags) (nav-flags has-root-sphere))
|
||||
(fail-mission! self)
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(logior! (-> self bot-flags) (bot-flags bf11))
|
||||
(logclear! (-> self bot-flags) (bot-flags bf13 bf14))
|
||||
(let ((t9-0 (-> (method-of-type nav-enemy die-falling) exit)))
|
||||
(if t9-0
|
||||
(t9-0)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:trans (behavior ()
|
||||
(fail-falling self)
|
||||
(none)
|
||||
)
|
||||
:code (behavior ()
|
||||
(ja-channel-push! 1 (seconds 0.1))
|
||||
(let ((gp-0 (-> self draw art-group data (if (enemy-method-133 self)
|
||||
(-> self enemy-info-override die-falling-anim)
|
||||
(-> self enemy-info-override die-anim)
|
||||
)
|
||||
)
|
||||
)
|
||||
(f30-0 (get-rand-float-range self 0.8 1.2))
|
||||
)
|
||||
(ja-no-eval :group! gp-0
|
||||
:num! (seek! (the float (+ (-> (the-as art-joint-anim gp-0) frames num-frames) -1)) f30-0)
|
||||
:frame-num 0.0
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(suspend)
|
||||
(ja :num! (seek! max f30-0))
|
||||
)
|
||||
)
|
||||
(until (not (channel-active? self (the-as uint 0)))
|
||||
(suspend)
|
||||
)
|
||||
(until #f
|
||||
(if (and (logtest? (-> self bot-flags) (bot-flags failed)) (reset? *fail-mission-control*))
|
||||
(reset! *fail-mission-control*)
|
||||
)
|
||||
(suspend)
|
||||
)
|
||||
#f
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate failed (bot)
|
||||
:virtual #t
|
||||
:event (the-as (function process int symbol event-message-block object :behavior bot) enemy-event-handler)
|
||||
:enter (behavior ()
|
||||
((-> (method-of-type bot die-falling) enter))
|
||||
(logclear! (-> self bot-flags) (bot-flags bf11))
|
||||
(when (logtest? (-> self bot-flags) (bot-flags failed))
|
||||
(let ((a0-1 (-> self course too-far-fail-speeches)))
|
||||
(when (and (nonzero? a0-1) a0-1)
|
||||
(let ((a1-1 (bot-speech-list-method-9 a0-1 self (-> self course speeches) (speech-flags))))
|
||||
(if (>= a1-1 0)
|
||||
(play-speech self a1-1)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(logior! (-> self bot-flags) (bot-flags bf11))
|
||||
(none)
|
||||
)
|
||||
:trans (behavior ()
|
||||
((-> (method-of-type bot die-falling) trans))
|
||||
(if (channel-active? self (the-as uint 0))
|
||||
(set! (-> self state-time) (-> self clock frame-counter))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:code (behavior ()
|
||||
(ja-channel-push! 1 (seconds 0.1))
|
||||
(let ((f30-0 (get-rand-float-range self 0.9 1.1))
|
||||
(gp-0 (-> self draw art-group data (-> self enemy-info-override idle-anim)))
|
||||
)
|
||||
(until #f
|
||||
(ja-no-eval :group! gp-0
|
||||
:num! (seek! (the float (+ (-> (the-as art-joint-anim gp-0) frames num-frames) -1)) f30-0)
|
||||
:frame-num 0.0
|
||||
)
|
||||
(until (ja-done? 0)
|
||||
(when (and (logtest? (-> self bot-flags) (bot-flags failed))
|
||||
(>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.5))
|
||||
(reset? *fail-mission-control*)
|
||||
)
|
||||
(cleanup-for-death self)
|
||||
(process-entity-status! self (entity-perm-status no-kill) #f)
|
||||
(reset! *fail-mission-control*)
|
||||
)
|
||||
(suspend)
|
||||
(ja :num! (seek! max f30-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
#f
|
||||
(none)
|
||||
)
|
||||
:post (the-as (function none :behavior bot) nav-enemy-die-falling-post)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate hidden (bot)
|
||||
:virtual #t
|
||||
:event (the-as (function process int symbol event-message-block object :behavior bot) enemy-event-handler)
|
||||
:enter (behavior ()
|
||||
(logior! (-> self focus-status) (focus-status disable))
|
||||
(let ((v1-3 (-> self root-override2 root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-3 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
0
|
||||
(logior! (-> self draw status) (draw-control-status no-draw))
|
||||
(set! (-> self notice-enemy-dist) 0.0)
|
||||
(logclear! (-> self enemy-flags) (enemy-flag trackable-backup))
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(local-vars (v0-0 enemy-flag))
|
||||
(logclear! (-> self draw status) (draw-control-status no-draw))
|
||||
(logclear! (-> self focus-status) (focus-status disable))
|
||||
(let ((v1-5 (-> self root-override2 root-prim)))
|
||||
(set! (-> v1-5 prim-core collide-as) (-> self root-override2 backup-collide-as))
|
||||
(set! (-> v1-5 prim-core collide-with) (-> self root-override2 backup-collide-with))
|
||||
)
|
||||
(let ((v1-6 (-> self enemy-flags)))
|
||||
(if (logtest? (enemy-flag enable-on-hostile) v1-6)
|
||||
(set! v0-0 (logior (enemy-flag trackable-backup) v1-6))
|
||||
(set! v0-0 (logclear v1-6 (enemy-flag trackable-backup)))
|
||||
)
|
||||
)
|
||||
(set! (-> self enemy-flags) v0-0)
|
||||
(none)
|
||||
)
|
||||
:code (the-as (function none :behavior bot) sleep-code)
|
||||
:post (the-as (function none :behavior bot) nav-enemy-simple-post)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
+2094
File diff suppressed because it is too large
Load Diff
@@ -279,7 +279,8 @@
|
||||
"(method 23 dig-tether)", // working around annoying decomp array output
|
||||
"(method 16 sew-light-control)", // skipped for now, looking for a caller
|
||||
"(method 3 rhino)",
|
||||
"(method 193 grunt-mech)" // .mula.s
|
||||
"(method 193 grunt-mech)", // .mula.s
|
||||
"(method 3 sig-path-sample)"
|
||||
],
|
||||
|
||||
"skip_compile_states": {
|
||||
|
||||
Reference in New Issue
Block a user