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:
Hat Kid
2023-01-14 22:12:03 +01:00
committed by GitHub
parent 459d83f755
commit 8a82c2225e
45 changed files with 34215 additions and 628 deletions
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)"]
]
}
+2 -5
View File
@@ -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,
+2 -3
View File
@@ -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",
+28
View File
@@ -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]
]
}
+56 -7
View File
@@ -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"]
]
}
+303 -12
View File
@@ -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"]]
}
+178 -4
View File
@@ -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"]
}
}
}
+1 -1
View File
@@ -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
+15 -1
View File
@@ -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,
+79
View File
@@ -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
+176 -13
View File
@@ -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
)
+266
View File
@@ -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))
)
+506
View File
@@ -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
+427
View File
@@ -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
+14 -1
View File
@@ -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
+458
View File
@@ -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
+248 -9
View File
@@ -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)
)
+675 -131
View File
@@ -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
View File
@@ -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
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+507
View File
@@ -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
View File
@@ -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
View File
@@ -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)
)
File diff suppressed because it is too large Load Diff
+459
View File
@@ -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)
)
File diff suppressed because it is too large Load Diff
+483
View File
@@ -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*)
File diff suppressed because it is too large Load Diff
+323
View File
@@ -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
View File
@@ -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
View File
@@ -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)
)
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -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": {