d/jak2: cleaning up the remainder of unblocked / unclaimed files (#2171)

Co-authored-by: water <awaterford111445@gmail.com>
This commit is contained in:
Tyler Wilding
2023-01-31 18:32:50 -05:00
committed by GitHub
parent 71cb1aef6f
commit b72383964f
70 changed files with 41672 additions and 830 deletions
+2 -2
View File
@@ -541,8 +541,8 @@ void Env::add_stack_structure_hint(const StackStructureHint& hint) {
if (!type_info->is_reference()) {
throw std::runtime_error(
fmt::format("Stack variable type {} is not a reference and cannot be stored directly "
"on the stack. Use an array instead.",
base_typespec.print()));
"on the stack at offset {}. Use an array instead.",
base_typespec.print(), hint.stack_offset));
}
entry.ref_type = base_typespec;
entry.size = type_info->get_size_in_memory();
File diff suppressed because it is too large Load Diff
@@ -1095,5 +1095,74 @@
[4, "(function none :behavior task-manager)"],
[5, "(function none :behavior task-manager)"],
[6, "(function none :behavior task-manager)"]
],
"oracle-training": [
[0, "(function none :behavior task-manager)"],
[
1,
"(function process int symbol event-message-block object :behavior task-manager)"
],
[2, "(function none :behavior task-manager)"],
[3, "(function none :behavior task-manager)"],
[4, "(function none :behavior task-manager)"],
[5, "(function none :behavior task-manager)"],
[6, "(function none :behavior task-manager)"],
[7, "(function none :behavior task-manager)"],
[
8,
"(function process int symbol event-message-block object :behavior task-manager)"
],
[9, "(function none :behavior task-manager)"],
[10, "(function none :behavior task-manager)"],
[11, "(function none :behavior task-manager)"],
[
12,
"(function process int symbol event-message-block object :behavior task-manager)"
],
[13, "(function none :behavior task-manager)"],
[14, "(function none :behavior task-manager)"]
],
"demo-obs": [
[3, "(function external-art-buffer none)"],
[10, "(function process-drawable vector cspace object)"],
[11, "(function process-drawable none)"],
[12, "(function none)"]
],
"delivery-task": [
[0, "(function none :behavior task-manager)"],
[1, "(function none :behavior task-manager)"],
[2, "(function none :behavior task-manager)"],
[5, "(function none :behavior task-manager)"],
[6, "(function none :behavior task-manager)"]
],
"stadium-obs": [
[3, "(function none :behavior task-manager)"],
[4, "(function none :behavior task-manager)"],
[5, "(function none :behavior task-manager)"],
[6, "(function none :behavior task-manager)"],
[7, "(function none :behavior task-manager)"],
[24, "(function none)"],
[61, "(function object nav-control none)"],
[62, "(function object nav-control none)"],
[63, "(function object nav-control none)"],
[64, "(function object nav-control none)"],
[65, "(function object nav-control none)"]
],
"forrescb-obs": [
[0, "(function none :behavior task-manager)"],
[1, "(function none :behavior task-manager)"]
],
"bombbot": [
[0, "(function none :behavior task-manager)"],
[1, "(function none :behavior task-manager)"],
[2, "(function none :behavior task-manager)"],
[3, "(function none :behavior task-manager)"],
[4, "(function none :behavior task-manager)"],
[5, "(function none :behavior task-manager)"],
[6, "(function none :behavior task-manager)"],
[7, "(function none :behavior task-manager)"],
[8, "(function none :behavior task-manager)"],
[9, "(function none :behavior task-manager)"],
[10, "(function none :behavior task-manager)"]
]
}
+19 -4
View File
@@ -210,7 +210,8 @@
"(method 22 fort-floor-spike-b)",
"(method 22 fort-floor-spike-c)",
"(method 11 sew-catwalk)",
"(method 11 mtn-aval-rocks)"
"(method 11 mtn-aval-rocks)",
"(method 11 gar-curtain)"
],
// If format is used with the wrong number of arguments,
@@ -328,7 +329,10 @@
45 // goto 6
],
"(method 27 conveyor)": [5, 14, 22],
"(method 44 nav-graph)": [1, 3, 6, 13, 17],
"(method 44 nav-graph)": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 14, 15, 16, 17, 18, 22, 24, 25, 26, 27, 30, 31,
32, 33, 34, 35, 36
],
"(method 11 sparticle-launch-control)": [
18, 24, 25, 28, 29, 32, 33, 34, 36, 41, 55, 58, 93, 95
],
@@ -517,7 +521,13 @@
"(anon-function 16 kid-states)": [4, 5],
"(anon-function 23 kid-states)": [4, 5],
"(anon-function 16 kor-states)": [4, 5],
"(anon-function 23 kor-states)": [4, 5]
"(anon-function 23 kor-states)": [4, 5],
"(method 18 mysql-nav-graph)": [0, 1, 2, 3, 4, 7, 8, 9, 14, 16],
"(anon-function 2 rigid-body-queue)": [0, 1, 2, 3],
"(method 15 rigid-body-queue)": [5, 6, 7, 8, 9, 10, 11],
"(method 13 rigid-body-queue)": [5, 6, 7, 8, 9, 10, 11],
"(method 11 rigid-body-queue)": [0, 5, 6, 7, 8, 9, 10, 11, 17, 18, 25],
"(method 10 rigid-body-queue)": [0, 9, 10, 16, 24, 25, 26, 35, 36, 48]
},
// Sometimes the game might use format strings that are fetched dynamically,
@@ -593,7 +603,12 @@
[518, 0],
[350, 0]
],
"(trans idle burning-bush)": [[171, 0]]
"(trans idle burning-bush)": [[171, 0]],
"(anon-function 11 oracle-training)": [[79, 0]],
"(anon-function 4 oracle-training)": [[79, 0]],
"(anon-function 0 oracle-training)": [[79, 0]],
"(anon-function 7 oracle-training)": [[79, 0]],
"(method 27 sig-recorder)": [[93, 0]]
},
"mips2c_functions_by_name": [
+6
View File
@@ -187,7 +187,9 @@
"levels_to_extract": [
"ATE.DGO",
"ATO.DGO",
"CAB.DGO",
"CAP.DGO",
"CAS.DGO",
"CFA.DGO",
"CFB.DGO",
"CGA.DGO",
@@ -208,6 +210,7 @@
"CWI.DGO",
"D3A.DGO",
"D3B.DGO",
"DEMO.DGO",
"DG1.DGO",
"DMI.DGO",
"DRB.DGO",
@@ -223,6 +226,7 @@
"FORDUMPD.DGO",
"FRA.DGO",
"FRB.DGO",
"LBOMBBOT.DGO",
"GGA.DGO",
"HIDEOUT.DGO",
"HIPHOG.DGO",
@@ -237,6 +241,7 @@
"LHIPOUT.DGO",
"LINTCSTB.DGO",
"LOUTCSTB.DGO",
"LPACKAGE.DGO",
"LPORTRUN.DGO",
"LPOWER.DGO",
"LPROTECT.DGO",
@@ -249,6 +254,7 @@
"LWIDEC.DGO",
"MTN.DGO",
"MTX.DGO",
"LYSAMSAM.DGO",
"NEB.DGO",
"NES.DGO",
"ONINTENT.DGO",
+84 -1
View File
@@ -1297,5 +1297,88 @@
["L274", "attack-info"],
["L220", "vector"]
],
"ctypower": [["L71", "vector"]]
"ctypower": [["L71", "vector"]],
"delivery-task": [
["L141", "vector"],
["L140", "vector"]
],
"stadium-obs": [
["L683", "uint64", true],
["L677", "uint64", true],
["L678", "uint64", true],
["L681", "uint64", true],
["L682", "uint64", true],
["L684", "uint64", true],
["L679", "uint64", true],
["L680", "uint64", true],
["L575", "uint64", true],
["L574", "uint64", true],
["L573", "uint64", true],
["L572", "uint64", true],
["L576", "uint64", true],
["L571", "uint64", true],
["L459", "attack-info"],
["L457", "attack-info"]
],
"forrescb-obs": [["L146", "attack-info"]],
"castle-obs": [
["L589", "uint64", true],
["L582", "uint64", true],
["L587", "uint64", true],
["L588", "uint64", true],
["L586", "uint64", true],
["L590", "uint64", true],
["L592", "uint64", true],
["L593", "uint64", true],
["L591", "uint64", true],
["L584", "uint64", true],
["L581", "uint64", true],
["L585", "uint64", true],
["L583", "uint64", true],
["L478", "uint64", true],
["L476", "uint64", true],
["L481", "uint64", true],
["L466", "uint64", true],
["L430", "attack-info"],
["L487", "uint64", true],
["L477", "uint64", true],
["L483", "uint64", true],
["L470", "uint64", true],
["L475", "uint64", true],
["L479", "uint64", true],
["L473", "uint64", true],
["L485", "uint64", true],
["L469", "uint64", true],
["L472", "uint64", true],
["L467", "uint64", true],
["L484", "uint64", true],
["L474", "uint64", true],
["L366", "attack-info"],
["L488", "uint64", true],
["L486", "uint64", true],
["L489", "uint64", true],
["L468", "uint64", true],
["L480", "uint64", true],
["L482", "uint64", true],
["L471", "uint64", true]
],
"roboguard-level": [
["L196", "uint64", true],
["L177", "uint64", true],
["L179", "uint64", true],
["L176", "uint64", true],
["L175", "uint64", true],
["L178", "uint64", true],
["L180", "uint64", true],
["L181", "uint64", true]
],
"bombbot": [
["L289", "attack-info"],
["L266", "quaternion"],
["L260", "quaternion"]
],
"vortex-data": [
["L25", "(inline-array vortex-vertex)", 1216],
["L24", "(pointer float)", 20]
]
}
+75 -3
View File
@@ -1766,7 +1766,6 @@
"(trans drill-laser-idle drill-laser)": [[16, "vector"]],
"(code die drill-metalhead-eggs)": [[16, "vector"]],
"drill-falling-door-handler": [[16, "attack-info"]],
"(method 12 city-level-info)": [[16, ["inline-array", "vector", 7]]],
"(method 25 under-shoot-block)": [[16, "matrix"]],
"(code victory under-block)": [[16, "matrix"]],
"(code sink-partially under-block)": [[16, "matrix"]],
@@ -1817,7 +1816,6 @@
[560, "bounding-box"]
],
"squid-grenade-move": [[48, "matrix"]],
"(method 12 city-level-info)": [[16, ["inline-array", "vector", 7]]],
"(method 24 security-wall)": [[16, ["inline-array", "vector", 1]]],
"(method 35 cty-guard-turret)": [
[144, "vector"],
@@ -1841,5 +1839,79 @@
"(method 23 ctyport-mine)": [
[32, "vector"],
[48, "vector"]
]
],
"(post idle intro-flamer)": [
[160, "vector"],
[176, "vector"]
],
"demo-plug-lightning": [[16, "vector"]],
"(code idle demo-control)": [
[16, ["array", "symbol", 6]],
[48, ["array", "symbol", 6]]
],
"(anon-function 2 delivery-task)": [[96, ["inline-array", "vector", 1]]],
"(post move-rift-rider stad-samos)": [
[96, "vector"],
[128, "vector"]
],
"(trans idle palent-turret)": [[32, "vector"]],
"(post idle fort-elec-belt-inst)": [[96, "event-message-block"]],
"(post running fort-elec-belt-inst)": [
[1120, "collide-query"],
[144, "vector"],
[1680, "vector"],
[96, "event-message-block"],
[816, "bounding-box"],
[848, ["inline-array", "sphere", 17]]
],
"(post idle cas-conveyor-switch)": [[592, "vector"]],
"(post idle cas-electric-fence)": [[688, "vector"]],
"(method 11 cas-switch)": [[32, "vector"]],
"(trans roll-hostile roboguard-level)": [[80, "vector"]],
"(code roll-hostile roboguard-level)": [[16, "vector"]],
"(method 74 roboguard-level)": [
[16, "vector"],
[32, "vector"]
],
"(method 76 roboguard-level)": [[32, "vector"]],
"(code spawning cas-robot-door)": [[16, "enemy-init-by-other-params"]],
"(method 179 bombbot)": [
[592, "vector"],
[624, "vector"],
[672, "vector"],
[720, "vector"]
],
"(method 182 bombbot)": [
[144, "collide-query"],
[16, "matrix"],
[80, "matrix"],
[752, "quaternion"]
],
"(trans hostile bombbot)": [[48, "vector"]],
"(enter explode bombbot)": [
[112, "vector"],
[128, "vector"],
[144, "vector"],
[224, "vector"],
[240, "vector"]
],
"(method 183 bombbot)": [
[48, "vector"],
[64, "vector"],
[144, "vector"]
],
"bombbot-spread-lightning-lazer": [
[96, "vector"],
[64, "vector"]
],
"bombbot-callback": [[64, "vector"]],
"bombbot-gun-swivel-callback": [
[16, "vector"],
[80, "vector"]
],
"bombbot-gun-callback": [
[32, "vector"],
[80, "vector"]
],
"(method 181 bombbot)": [[16, ["array", "collide-shape", 64]]]
}
+267 -1
View File
@@ -8690,5 +8690,271 @@
"(anon-function 0 ctypower)": [
[19, "a0", "vector"],
[81, "v1", "basebutton"]
]
],
"(anon-function 3 oracle-training)": [[15, "v1", "float"]],
"(anon-function 6 oracle-training)": [[15, "v1", "float"]],
"(anon-function 10 oracle-training)": [[15, "v1", "float"]],
"(anon-function 14 oracle-training)": [[15, "v1", "float"]],
"(method 33 fort-elec-button)": [[31, "v1", "art-joint-anim"]],
"(enter shutdown elec-lock-gate)": [
[4, "v0", "state"],
[6, "t9", "(function none)"]
],
"(code idle intro-flamer)": [[18, "v1", "art-joint-anim"]],
"(method 7 metalhead-spawner)": [
[26, "t9", "(function process int process)"]
],
"(event idle farm-marrow)": [[[8, 11], "a1", "attack-info"]],
"(event idle farm-beetree)": [[[8, 11], "a1", "attack-info"]],
"(event idle farm-cabbage)": [[[8, 11], "a1", "attack-info"]],
"(event idle farm-small-cabbage)": [[[8, 11], "a1", "attack-info"]],
"(event idle farm-chilirots)": [[[8, 11], "a1", "attack-info"]],
"(code idle farm-sprinkler-barrels)": [[10, "v1", "art-joint-anim"]],
"farm-chilirots-callback": [
[[2, 39], "s4", "farm-chilirots"],
[[3, 38], "s3", "int"]
],
"farm-small-cabbage-callback": [
[[2, 39], "s4", "farm-small-cabbage"],
[[3, 38], "s3", "int"]
],
"farm-cabbage-callback": [
[[2, 39], "s4", "farm-cabbage"],
[[3, 38], "s3", "int"]
],
"farm-beetree-callback": [
[[2, 39], "s4", "farm-beetree"],
[[3, 38], "s3", "int"]
],
"farm-marrow-callback": [
[[2, 39], "s4", "farm-marrow"],
[[3, 38], "s3", "int"]
],
"demo-plug-lightning": [[95, "v1", "demo-control"]],
"(code idle demo-control)": [
[[119, 123], "v1", "handle"],
[115, "gp", "handle"],
[[739, 743], "v1", "handle"],
[735, "gp", "handle"],
[[861, 865], "v1", "handle"],
[857, "gp", "handle"]
],
"(post idle demo-control)": [
[4, "v0", "process-drawable"],
[206, "v1", "external-art-buffer"],
[210, "v1", "external-art-buffer"],
[[307, 310], "v1", "dma-packet"]
],
"pal-prong-small-collision": [[2, "v1", "collide-shape-prim-group"]],
"(post idle krew-package)": [[[12, 53], "gp", "process-focusable"]],
"(anon-function 6 delivery-task)": [[88, "v1", "vehicle"]],
"(method 25 elec-lock-gate)": [["_stack_", 16, "res-tag"]],
"birth-func-race-poster": [[27, "s4", "(array int32)"]],
"(anon-function 1 delivery-task)": [
[178, "v1", "process-drawable"],
[16, "v1", "process-drawable"]
],
"(anon-function 2 delivery-task)": [
[14, "gp", "process-focusable"],
[71, "gp", "process-drawable"],
[292, "gp", "process-drawable"],
[187, "gp", "process-drawable"],
[199, "gp", "process-drawable"]
],
"(code idle gar-curtain)": [[10, "v1", "art-joint-anim"]],
"(method 11 gar-curtain)": [
[112, "v1", "collide-shape-prim-group"],
[118, "v1", "collide-shape-prim-group"]
],
"(event defend-stadium-land rift-rider)": [
[8, "v1", "vector"],
[20, "v1", "vector"]
],
"(post defend-stadium-land rift-rider)": [[107, "v1", "process-drawable"]],
"(code idle stad-samos)": [[66, "v1", "art-joint-anim"]],
"(code raise-rift-rider stad-samos)": [[42, "v1", "art-joint-anim"]],
"(post move-rift-rider stad-samos)": [[43, "v0", "vector"]],
"spawn-energy": [[77, "gp", "process-drawable"]],
"stad-samos-handler": [
[[38, 80], "s5", "attack-info"],
[52, "a0", "process-drawable"]
],
"(code hit stad-samos)": [
[20, "v1", "art-joint-anim"],
[92, "v1", "art-joint-anim"]
],
"(code die stad-samos)": [
[63, "v1", "art-joint-anim"],
[134, "v1", "art-joint-anim"]
],
"(method 10 stad-samos)": [[42, "t9", "(function process-focusable none)"]],
"(method 29 stad-force-field)": [
[155, "v1", "process-drawable"],
[418, "v1", "process-drawable"],
[423, "v1", "process-drawable"],
[190, "v1", "process-drawable"],
[272, "v1", "process-drawable"],
[291, "v1", "process-drawable"],
[310, "v1", "process-drawable"],
[328, "v1", "process-drawable"],
[349, "v1", "process-drawable"],
[356, "v1", "process-drawable"],
[365, "v1", "process-drawable"],
[385, "v1", "process-drawable"],
[388, "v1", "process-drawable"]
],
"(event idle stad-force-field)": [[[9, 12], "v1", "attack-info"]],
"(post idle stad-keira)": [[14, "v0", "vector"]],
"(post idle stad-brutter)": [[14, "v0", "vector"]],
"(method 10 rift-rider)": [[10, "t9", "(function rigid-body-object none)"]],
"(method 45 rift-rider)": [
[30, "t9", "(function rigid-body-object rigid-body-impact none)"]
],
"(code fall pal-falling-plat)": [
[10, "v1", "art-joint-anim"],
[70, "v1", "art-joint-anim"]
],
"(post idle fort-elec-belt-inst)": [[20, "v0", "vector"]],
"(post running fort-elec-belt-inst)": [
[20, "v0", "vector"],
[263, "s2", "collide-shape-prim-sphere"]
],
"(method 10 fort-elec-belt-inst)": [
[10, "t9", "(function process-drawable none)"]
],
"(method 11 fort-elec-belt)": [[20, "v0", "(pointer float)"]],
"(method 10 rigid-body-queue)": [
[[124, 134], "a0", "rigid-body-object"],
[[49, 65], "s4", "rigid-body-object"],
[20, "a0", "rigid-body-object"]
],
"(method 15 hud)": [[[125, 128], "v1", "dma-packet"]],
"(method 10 cas-conveyor)": [[10, "t9", "(function conveyor none)"]],
"(post idle cas-conveyor)": [
[58, "t9", "(function none)"],
[45, "v1", "float"]
],
"(event idle cas-conveyor-switch)": [[[5, 8], "v1", "attack-info"]],
"(event up-idle cas-button)": [[[4, 13], "v1", "attack-info"]],
"(method 33 cas-button)": [[35, "v1", "art-joint-anim"]],
"(post waiting cas-elevator)": [[11, "t9", "(function none)"]],
"(post running cas-elevator)": [
[9, "t9", "(function none)"],
[15, "v0", "sound-rpc-set-param"]
],
"(post arrived cas-elevator)": [[11, "t9", "(function none)"]],
"(method 10 cas-elevator)": [[10, "t9", "(function elevator none)"]],
"(code idle cas-rot-bridge)": [
[40, "v1", "art-joint-anim"],
[98, "v1", "art-joint-anim"],
[178, "v1", "art-joint-anim"],
[236, "v1", "art-joint-anim"],
[310, "v1", "art-joint-anim"],
[368, "v1", "art-joint-anim"],
[417, "v1", "art-joint-anim"],
[475, "v1", "art-joint-anim"]
],
"(event idle cas-switch)": [
[[4, 32], "gp", "attack-info"],
[15, "s5", "touching-shapes-entry"]
],
"(code idle cas-switch)": [[21, "v1", "float"]],
"(event idle cas-trapdoor)": [[10, "gp", "attack-info"]],
"(code drop cas-chain-plat)": [[10, "v1", "art-joint-anim"]],
"(event idle cas-rot-blade)": [[7, "s4", "touching-shapes-entry"]],
"(method 10 cas-rot-blade)": [[10, "t9", "(function process-drawable none)"]],
"(code spawning cas-robot-door)": [
[27, "v1", "art-joint-anim"],
[417, "v1", "art-joint-anim"]
],
"(enter ambush roboguard-level)": [
[4, "v0", "state"],
[6, "t9", "(function none)"],
[[72, 76], "a0", "process-focusable"]
],
"(enter idle roboguard-level)": [
[4, "v0", "state"],
[6, "t9", "(function none)"]
],
"(enter stare roboguard-level)": [
[4, "v0", "state"],
[6, "t9", "(function none)"]
],
"(code roll-enter roboguard-level)": [[10, "v1", "art-joint-anim"]],
"(trans roll-hostile roboguard-level)": [
[120, "gp", "process-focusable"],
[130, "gp", "process-focusable"],
[[157, 161], "gp", "process-focusable"]
],
"(code roll-to-walk roboguard-level)": [[10, "v1", "art-joint-anim"]],
"(code idle-dizzy roboguard-level)": [[14, "v1", "art-joint-anim"]],
"(enter die roboguard-level)": [
[4, "v0", "state"],
[6, "t9", "(function none)"]
],
"(method 185 roboguard-level)": [
[[5, 28], "v1", "collide-shape-prim-group"],
[[42, 65], "v1", "collide-shape-prim-group"],
[[81, 108], "v1", "collide-shape-prim-group"]
],
"(method 77 roboguard-level)": [
[30, "v1", "art-joint-anim"],
[58, "v1", "art-joint-anim"]
],
"(method 78 roboguard-level)": [
[24, "a2", "art-joint-anim"],
[53, "a2", "art-joint-anim"]
],
"(method 74 roboguard-level)": [[[10, 13], "v1", "attack-info"]],
"(method 76 roboguard-level)": [
[42, "s1", "process-drawable"],
[58, "s1", "process-drawable"]
],
"(method 10 roboguard-level)": [[10, "t9", "(function nav-enemy none)"]],
"(method 7 roboguard-level)": [
[9, "t9", "(function nav-enemy int nav-enemy)"]
],
"(code castle-wait-end cas-robot-door)": [[32, "v1", "art-joint-anim"]],
"(method 11 cas-robot-door)": [
["_stack_", 16, "res-tag"],
["_stack_", 32, "res-tag"],
[105, "v0", "(pointer int32)"]
],
"(method 181 bombbot)": [
[26, "a0", "collide-shape"],
[68, "s1", "process-focusable"],
[110, "gp", "process-focusable"]
],
"(method 182 bombbot)": [
[137, "v1", "collide-shape-prim"],
[177, "v1", "lightning-tracker"],
[192, "a0", "lightning-tracker"],
[197, "v1", "lightning-tracker"],
[204, "v1", "lightning-tracker"],
[209, "a0", "lightning-tracker"],
[216, "a0", "lightning-tracker"],
[223, "a1", "lightning-tracker"],
[263, "s2", "process-focusable"],
[229, "v1", "collide-shape-prim"],
[233, "v1", "collide-shape-prim"],
[252, "v1", "collide-shape-prim"],
[185, "v1", "lightning-tracker"],
[213, "v1", "lightning-tracker"]
],
"(code hostile bombbot)": [[11, "v1", "art-joint-anim"]],
"(code die bombbot)": [[11, "v1", "art-joint-anim"]],
"(method 7 bombbot)": [[31, "t9", "(function nav-enemy int nav-enemy)"]],
"(anon-function 8 bombbot)": [[17, "s2", "bombbot"]],
"(anon-function 1 bombbot)": [[15, "s4", "bombbot"]],
"bombbot-callback": [[[2, 190], "s4", "bombbot"]],
"bombbot-head-callback": [[[2, 49], "s4", "bombbot"]],
"bombbot-gun-swivel-callback": [[[4, 87], "s3", "bombbot"]],
"bombbot-gun-callback": [[[6, 76], "s4", "bombbot"]],
"(method 179 bombbot)": [
["_stack_", 896, "float"],
["_stack_", 912, "float"]
],
"(method 11 cas-switch)": [["_stack_", 16, "res-tag"]],
"(method 11 cas-conveyor)": [["_stack_", 16, "res-tag"]],
"(method 11 cas-conveyor-switch)": [["_stack_", 16, "res-tag"]]
}
+14 -2
View File
@@ -383,7 +383,18 @@ goos::Object decomp_ref_to_integer_array_guess_size(
// the input is the location of the data field.
// we expect that to be a label:
ASSERT((field_location % 4) == 0);
auto pointer_to_data = words.at(field_location / 4);
auto& pointer_to_data = words.at(field_location / 4);
// pointer-arrays can also be initialized as #f
if (pointer_to_data.kind() == LinkedWord::SYM_PTR) {
ASSERT_MSG(
pointer_to_data.symbol_name() == "#f",
fmt::format(
"attempted to decompile a pointer array of '{}', but encounted a non `#f` symbol",
array_elt_type.base_type()));
return pretty_print::to_symbol("#f");
}
ASSERT(pointer_to_data.kind() == LinkedWord::PTR);
// the data shouldn't have any labels in the middle of it, so we can find the end of the array
@@ -467,7 +478,7 @@ goos::Object decomp_ref_to_inline_array_guess_size(
// the input is the location of the data field.
// we expect that to be a label:
ASSERT((field_location % 4) == 0);
auto pointer_to_data = words.at(field_location / 4);
auto& pointer_to_data = words.at(field_location / 4);
// inline-arrays can also be initialized as #f
if (pointer_to_data.kind() == LinkedWord::SYM_PTR) {
@@ -740,6 +751,7 @@ const std::unordered_map<
{{"color-option-array", ArrayFieldDecompMeta(TypeSpec("vector"), 16)},
{"grab-rail-array", ArrayFieldDecompMeta(TypeSpec("vehicle-grab-rail-info"), 48)}}},
{"city-ambush-info", {{"array", ArrayFieldDecompMeta(TypeSpec("city-ambush-spot"), 32)}}},
{"bombbot-path", {{"node", ArrayFieldDecompMeta(TypeSpec("bombbot-node"), 32)}}},
{"fort-robotank-segment",
{{"event-tbl", ArrayFieldDecompMeta(TypeSpec("fort-robotank-segment-event"), 32)}}},
{"race-info",
@@ -247,6 +247,9 @@ void OpenGLRenderer::init_bucket_renderers_jak2() {
init_bucket_renderer<TextureUploadHandler>("tex-l4-pris2", BucketCategory::TEX,
BucketId::TEX_L4_PRIS2);
init_bucket_renderer<Merc2>("merc-l4-pris2", BucketCategory::MERC, BucketId::MERC_L4_PRIS2);
init_bucket_renderer<TextureUploadHandler>("tex-l5-pris2", BucketCategory::TEX,
BucketId::TEX_L5_PRIS2);
init_bucket_renderer<Merc2>("merc-l5-pris2", BucketCategory::MERC, BucketId::MERC_L5_PRIS2);
// 250
init_bucket_renderer<TextureUploadHandler>("tex-l0-water", BucketCategory::TEX,
BucketId::TEX_L0_WATER);
+2
View File
@@ -164,6 +164,8 @@ enum class BucketId {
MERC_L3_PRIS2 = 237,
TEX_L4_PRIS2 = 240,
MERC_L4_PRIS2 = 241,
TEX_L5_PRIS2 = 244,
MERC_L5_PRIS2 = 245,
TEX_L0_WATER = 252,
MERC_L0_WATER = 253,
TFRAG_W_L0_WATER = 255,
+1 -1
View File
@@ -353,7 +353,7 @@
(go-hostile (_type_) none 70)
(go-flee (_type_) none 71)
(react-to-focus (_type_) none 72)
(kill-prefer-falling (_type_) none 73)
(kill-prefer-falling (_type_) object 73)
(general-event-handler (_type_ process int symbol event-message-block) object 74)
(enemy-method-75 (_type_ process touching-shapes-entry) none 75)
(enemy-method-76 (_type_ process event-message-block) symbol 76)
+4 -3
View File
@@ -567,14 +567,12 @@
(none)
)
;; WARN: Return type mismatch object vs none.
(defmethod kill-prefer-falling enemy ((obj enemy))
"If available in `enemy-info`, [[go]] to the [[die-falling]] state, if not, [[die]]"
(if (-> obj enemy-info use-die-falling)
(go (method-of-object obj die-falling))
(go (method-of-object obj die))
)
(none)
)
(defmethod enemy-method-135 enemy ((obj enemy) (arg0 int))
@@ -1145,7 +1143,7 @@
)
(set! (-> obj penetrated-flinch) (-> arg0 penetrate-flinch))
(set! (-> obj penetrated-knocked) (-> arg0 penetrate-knocked))
(set! (-> obj reaction-time) (get-rand-int-range obj 30 180))
(set! (-> obj reaction-time) (the-as time-frame (get-rand-int-range obj 30 180)))
(let* ((v1-79 (-> obj enemy-flags))
(a0-28 (-> obj fact-info-override enemy-options))
(v1-80 (logior (enemy-flag
@@ -1624,9 +1622,11 @@ This commonly includes things such as:
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 17]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 28]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 89]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 105]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 202]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 274]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 346]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 407]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 413]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 490]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 493]
@@ -1634,6 +1634,7 @@ This commonly includes things such as:
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 560]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 610]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 641]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 720]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 774]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 807]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 814]
+7 -7
View File
@@ -60,14 +60,14 @@
(set! (-> skeleton heap-base) (the-as uint 80))
(deftype cspace (structure)
((parent cspace :offset-assert 0)
(joint joint :offset-assert 4)
(joint-num int16 :offset-assert 8)
(geo drawable :offset-assert 12)
(bone bone :offset-assert 16)
((parent cspace :offset-assert 0)
(joint joint :offset-assert 4)
(joint-num int16 :offset-assert 8)
(geo drawable :offset-assert 12)
(bone bone :offset-assert 16)
(param0 (function cspace transformq none) :offset-assert 20)
(param1 basic :offset-assert 24)
(param2 basic :offset-assert 28)
(param1 basic :offset-assert 24)
(param2 basic :offset-assert 28)
)
:method-count-assert 10
:size-assert #x20
@@ -191,7 +191,7 @@
(set! (-> mysql-nav-visnode-array heap-base) (the-as uint 32))
(deftype mysql-nav-graph-level-info (structure)
((level basic :offset-assert 0)
((level string :offset-assert 0)
(level-id uint32 :offset-assert 4)
(node-count int32 :offset-assert 8)
(branch-count int32 :offset-assert 12)
@@ -1129,7 +1129,72 @@ returns `-1` if none is found"
(none)
)
;; ERROR: function was not converted to expressions. Cannot decompile.
(defmethod lookup-level-info2 mysql-nav-graph ((obj mysql-nav-graph) (arg0 mysql-nav-node) (arg1 symbol))
"TODO - this was originally called `lookup-level-info` but it clashes with the function defined in `level`"
(let ((s5-0 (the-as mysql-nav-graph-level-info #f)))
(b! (>= (-> obj level-info-last-lookup) (-> obj level-info-array-length)) cfg-3 :delay #f)
(let ((v1-5 (-> obj level-info-array (-> obj level-info-last-lookup))))
(let ((a0-2 (-> v1-5 level)))
(b! (!= (-> arg0 level_name) a0-2) cfg-3 :delay (empty-form))
)
(set! s5-0 v1-5)
)
(b! #t cfg-18 :delay (nop!))
(label cfg-3)
(let ((v1-6 0))
(b! #t cfg-9 :delay (nop!))
(label cfg-4)
(let ((a0-6 (-> obj level-info-array v1-6)))
(let ((a3-1 (-> a0-6 level)))
(b! (!= (-> arg0 level_name) a3-1) cfg-8 :delay (empty-form))
)
(if arg1
(set! (-> obj level-info-last-lookup) v1-6)
)
(set! s5-0 a0-6)
)
(b! #t cfg-18 :delay (nop!))
(label cfg-8)
(+! v1-6 1)
(label cfg-9)
(b! (< v1-6 (-> obj level-info-array-length)) cfg-4)
)
(let ((v1-9 (-> obj level-info-array-length)))
(cond
((< v1-9 32)
(if arg1
(set! (-> obj level-info-last-lookup) v1-9)
)
(set! s5-0 (-> obj level-info-array v1-9))
(set! (-> s5-0 level) (the-as string (-> arg0 level_name)))
(set! (-> s5-0 node-count) 0)
(+! (-> obj level-info-array-length) 1)
)
(else
(format
0
"mysql-nav-graph::lookup-level-info: Error, too many unique level names in nav-graph. May need to increase the max (currently ~d)~%"
32
)
(let ((s4-0 0))
(b! #t cfg-16 :delay (nop!))
(label cfg-15)
(let ((v1-17 (-> obj level-info-array s4-0)))
(format 0 "~d ~s~%" s4-0 (-> v1-17 level))
)
(+! s4-0 1)
(label cfg-16)
(b! (< s4-0 (-> obj level-info-array-length)) cfg-15)
)
(break!)
0
)
)
)
(label cfg-18)
s5-0
)
)
(defmethod mysql-nav-graph-method-20 mysql-nav-graph ((obj mysql-nav-graph))
@@ -56,7 +56,7 @@
((num-layers uint32 :offset-assert 0)
(func symbol :offset-assert 4)
(func-id basic :offset 4)
(init-func basic :offset-assert 8)
(init-func symbol :offset-assert 8)
(init-func-id basic :offset 8)
(tex texture :offset-assert 12)
(tex-name string :offset-assert 16)
+7 -25
View File
@@ -158,7 +158,7 @@
(info rigid-body-info :offset-assert 4)
(flags rigid-body-flag :offset-assert 8)
(force-callback (function object float none) :offset-assert 12)
(blocked-by basic :offset-assert 16)
(blocked-by rigid-body-object :offset-assert 16)
(time-remaining float :offset-assert 20)
(step-count int16 :offset-assert 24)
(position vector :inline :offset-assert 32)
@@ -205,26 +205,8 @@
(deftype rigid-body-control (basic)
((process process :offset-assert 4)
(state rigid-body :inline :offset-assert 16)
(work basic :offset 16)
(info rigid-body-info :offset 20)
(flags rigid-body-flag :offset 24)
(force-callback basic :offset 28)
(blocked-by basic :offset 32)
(time-remaining float :offset 36)
(step-count int16 :offset 40)
(position vector :inline :offset 48)
(rot vector :inline :offset 64)
(rotation quaternion :inline :offset 64)
(lin-momentum vector :inline :offset 80)
(ang-momentum vector :inline :offset 96)
(force vector :inline :offset 112)
(torque vector :inline :offset 128)
(lin-velocity vector :inline :offset 144)
(ang-velocity vector :inline :offset 160)
(matrix matrix :inline :offset 176)
(inv-i-world matrix :inline :offset 240)
((process process :offset-assert 4)
(state rigid-body :inline :offset-assert 16)
)
:method-count-assert 26
:size-assert #x130
@@ -383,7 +365,7 @@
(deftype rigid-body-queue (structure)
((count int8 :offset-assert 0)
(array uint64 128 :offset 8)
(array handle 128 :offset 8)
)
:method-count-assert 17
:size-assert #x408
@@ -391,11 +373,11 @@
(:methods
(rigid-body-queue-method-9 (_type_) none 9)
(rigid-body-queue-method-10 (_type_) none 10)
(rigid-body-queue-method-11 (_type_) none 11)
(rigid-body-queue-method-11 (_type_ rigid-body-object) none 11)
(rigid-body-queue-method-12 (_type_ int int) none 12)
(rigid-body-queue-method-13 (_type_) none 13)
(rigid-body-queue-method-13 (_type_ int rigid-body-object) none 13)
(rigid-body-queue-method-14 (_type_ int) none 14)
(rigid-body-queue-method-15 (_type_) none 15)
(rigid-body-queue-method-15 (_type_ rigid-body-object) none 15)
(validate (_type_) symbol 16)
)
)
@@ -7,3 +7,288 @@
;; DECOMP BEGINS
(defmethod rigid-body-queue-method-9 rigid-body-queue ((obj rigid-body-queue))
(set! (-> obj count) 0)
(dotimes (v1-0 128)
(set! (-> obj array v1-0) (the-as handle #f))
)
0
(none)
)
(defmethod validate rigid-body-queue ((obj rigid-body-queue))
(let ((gp-0 0))
(dotimes (v1-0 (-> obj count))
(let ((a1-2 (-> obj array v1-0))
(a2-0 (+ v1-0 1))
)
(while (< a2-0 (-> obj count))
(if (= a1-2 (-> obj array a2-0))
(+! gp-0 1)
)
(+! a2-0 1)
)
)
)
(if (> gp-0 0)
(format 0 "rigid-body-queue::validate: duplicate count ~d~%" gp-0)
)
(zero? gp-0)
)
)
(defmethod rigid-body-queue-method-10 rigid-body-queue ((obj rigid-body-queue))
(local-vars (s4-0 process))
(with-pp
(let ((f0-0 (-> pp clock seconds-per-frame))
(v1-1 (-> obj count))
)
(b! #t cfg-9 :delay (nop!))
(label cfg-1)
(+! v1-1 -1)
(let ((a0-4 (handle->process (-> obj array v1-1))))
(cond
(a0-4
(let ((a0-6 (-> (the-as rigid-body-object a0-4) rbody)))
(set! (-> a0-6 state time-remaining) f0-0)
(set! (-> a0-6 state blocked-by) #f)
(set! (-> a0-6 state step-count) 0)
(logclear! (-> a0-6 state flags) (rigid-body-flag blocker))
)
)
(else
)
)
)
(label cfg-9)
(b! (nonzero? v1-1) cfg-1 :delay (nop!))
)
(let ((s5-0 0))
(b! #t cfg-35 :delay (nop!))
(until (= (-> obj array s5-0) (process->handle s4-0))
(label cfg-11)
(set! s4-0 (handle->process (-> obj array s5-0)))
(b! (not s4-0) cfg-34 :delay (empty-form))
(let ((s3-0 (-> (the-as rigid-body-object s4-0) rbody)))
(b!
(not (and (logtest? (-> s3-0 state flags) (rigid-body-flag enable-physics))
(and (< 0.001 (-> s3-0 state time-remaining)) (< (-> s3-0 state step-count) 4))
)
)
cfg-34
:delay (empty-form)
)
(rigid-body-object-method-51 (the-as rigid-body-object s4-0))
(+! (-> s3-0 state step-count) 1)
(let ((a2-2 (-> s3-0 state blocked-by)))
(b! (not a2-2) cfg-34 :delay (empty-form))
(b! (not #t) cfg-34 :delay (empty-form))
(logior! (-> a2-2 rbody state flags) (rigid-body-flag blocker))
(rigid-body-queue-method-13 obj s5-0 a2-2)
)
)
)
(label cfg-34)
(+! s5-0 1)
(label cfg-35)
(b! (< s5-0 (-> obj count)) cfg-11)
)
(let ((s5-1 0))
(b! #t cfg-48 :delay (nop!))
(label cfg-37)
(let ((a0-20 (handle->process (-> obj array s5-1))))
(when (and a0-20
(logtest? (-> (the-as rigid-body-object a0-20) rbody state flags) (rigid-body-flag enable-physics))
)
(let ((s4-1 pp))
(set! pp (the-as rigid-body-object a0-20))
(rigid-body-object-method-52 (the-as rigid-body-object a0-20))
(set! pp s4-1)
)
)
)
(+! s5-1 1)
(label cfg-48)
(b! (< s5-1 (-> obj count)) cfg-37)
)
0
(none)
)
)
(defmethod rigid-body-queue-method-11 rigid-body-queue ((obj rigid-body-queue) (arg0 rigid-body-object))
(let ((v1-0 -1))
(let ((a2-0 0))
(b! #t cfg-9 :delay (nop!))
(label cfg-1)
(b! (handle->process (-> obj array a2-0)) cfg-8 :delay (empty-form))
(set! v1-0 a2-0)
(b! #t cfg-11 :delay (nop!))
(label cfg-8)
(+! a2-0 1)
(label cfg-9)
(b! (< a2-0 (-> obj count)) cfg-1)
)
(label cfg-11)
(b! (= v1-0 -1) cfg-18 :delay (nop!))
(set! (-> obj array v1-0) (process->handle arg0))
)
(b! #t cfg-25 :delay (nop!))
(label cfg-18)
(b! (>= (-> obj count) 128) cfg-25 :delay #f)
(set! (-> obj array (-> obj count)) (process->handle arg0))
(+! (-> obj count) 1)
(label cfg-25)
0
0
(none)
)
(defmethod rigid-body-queue-method-12 rigid-body-queue ((obj rigid-body-queue) (arg0 int) (arg1 int))
(when (< arg0 arg1)
(let ((v1-1 arg1)
(a3-0 (+ arg1 -1))
(a2-3 (-> obj array arg1))
)
(while (>= a3-0 arg0)
(set! (-> obj array v1-1) (-> obj array a3-0))
(+! a3-0 -1)
(+! v1-1 -1)
)
(set! (-> obj array arg0) a2-3)
)
)
0
(none)
)
(defmethod rigid-body-queue-method-13 rigid-body-queue ((obj rigid-body-queue) (arg0 int) (arg1 rigid-body-object))
(let ((v1-2 (process->handle arg1))
(a2-4 (+ arg0 1))
)
(b! #t cfg-9 :delay (nop!))
(label cfg-6)
(b! (!= (-> obj array a2-4) v1-2) cfg-8 :delay (empty-form))
(rigid-body-queue-method-12 obj arg0 a2-4)
(b! #t cfg-11 :delay (nop!))
(label cfg-8)
(+! a2-4 1)
(label cfg-9)
(b! (< a2-4 (-> obj count)) cfg-6)
)
(label cfg-11)
0
0
(none)
)
(defmethod rigid-body-queue-method-14 rigid-body-queue ((obj rigid-body-queue) (arg0 int))
(let ((v1-0 arg0)
(a1-1 (+ arg0 1))
)
(while (< a1-1 (-> obj count))
(set! (-> obj array v1-0) (-> obj array a1-1))
(+! a1-1 1)
(+! v1-0 1)
)
)
(+! (-> obj count) -1)
0
(none)
)
(defmethod rigid-body-queue-method-15 rigid-body-queue ((obj rigid-body-queue) (arg0 rigid-body-object))
(let ((v1-2 (process->handle arg0))
(a1-4 0)
)
(b! #t cfg-9 :delay (nop!))
(label cfg-6)
(b! (!= (-> obj array a1-4) v1-2) cfg-8 :delay (empty-form))
(rigid-body-queue-method-14 obj a1-4)
(b! #t cfg-11 :delay (nop!))
(label cfg-8)
(+! a1-4 1)
(label cfg-9)
(b! (< a1-4 (-> obj count)) cfg-6)
)
(label cfg-11)
0
0
(none)
)
(deftype rigid-body-queue-manager (process)
((queue rigid-body-queue :offset-assert 128)
)
:heap-base #x10
:method-count-assert 15
:size-assert #x84
:flag-assert #xf00100084
(:methods
(idle () _type_ :state 14)
)
)
(defstate idle (rigid-body-queue-manager)
:virtual #t
:exit (behavior ()
(set! (-> self queue count) 0)
0
(none)
)
:code (the-as (function none :behavior rigid-body-queue-manager) sleep-code)
:post (behavior ()
(local-vars (a0-3 int) (a0-5 int))
(let* ((v1-1 (-> *perf-stats* data 17))
(a0-0 (-> v1-1 ctrl))
)
(+! (-> v1-1 count) 1)
(b! (zero? a0-0) cfg-2 :delay (nop!))
(.mtc0 Perf 0)
(.sync.l)
(.sync.p)
(.mtpc pcr0 0)
(.mtpc pcr1 0)
(.sync.l)
(.sync.p)
(.mtc0 Perf a0-0)
)
(.sync.l)
(.sync.p)
(label cfg-2)
0
(rigid-body-queue-method-10 (-> self queue))
(let ((v1-6 (-> *perf-stats* data 17)))
(b! (zero? (-> v1-6 ctrl)) cfg-4 :delay (nop!))
(.mtc0 Perf 0)
(.sync.l)
(.sync.p)
(.mfpc a0-3 pcr0)
(+! (-> v1-6 accum0) a0-3)
(.mfpc a0-5 pcr1)
(+! (-> v1-6 accum1) a0-5)
)
(label cfg-4)
0
(none)
)
)
(defbehavior rigid-body-queue-manager-init-by-other rigid-body-queue-manager ((arg0 rigid-body-queue))
(stack-size-set! (-> self main-thread) 128)
(set! (-> self queue) arg0)
(rigid-body-queue-method-9 (-> self queue))
(go-virtual idle)
)
(defun rigid-body-queue-manager-spawn ((arg0 rigid-body-queue) (arg1 process-tree))
(let ((gp-0 (the-as process #f)))
(let ((v1-1 (process-spawn rigid-body-queue-manager arg0 :to arg1)))
(if v1-1
(set! gp-0 (-> v1-1 0))
)
)
gp-0
)
)
+15 -10
View File
@@ -539,10 +539,11 @@
(vector-rotate*! (-> s5-0 vec-7) (-> s5-0 vec-7) (-> s3-0 inv-i-world))
(vector-cross! (-> s5-0 vec-7) (-> s5-0 vec-7) (-> s5-0 vec-6))
(+! (-> s5-0 float-3) (+ (-> s3-0 info inv-mass) (vector-dot (-> s5-0 vec-5) (-> s5-0 vec-7))))
(set! f30-1 (fmax
(fmax f30-1 (-> s3-0 info bounce-factor))
(* (-> arg0 info bounce-mult-factor) (-> s3-0 info bounce-mult-factor))
)
(set! f30-1
(fmax
(fmax f30-1 (-> s3-0 info bounce-factor))
(* (-> arg0 info bounce-mult-factor) (-> s3-0 info bounce-mult-factor))
)
)
)
(else
@@ -557,12 +558,14 @@
)
(vector+float*! (-> s5-0 vec-9) (-> s5-0 vec-3) (-> s5-0 vec-5) (- (-> s5-0 float-2)))
(vector-normalize! (-> s5-0 vec-9) 1.0)
(let ((f0-31 (* -1.0 (fmin
(* (vector-dot (-> s5-0 vec-9) (-> s5-0 vec-3)) f30-2)
(* (-> arg0 info friction-factor) (-> s5-0 float-4))
)
)
(let ((f0-31
(* -1.0
(fmin
(* (vector-dot (-> s5-0 vec-9) (-> s5-0 vec-3)) f30-2)
(* (-> arg0 info friction-factor) (-> s5-0 float-4))
)
)
)
)
(vector+float*! (-> s5-0 vec-8) (-> s5-0 vec-8) (-> s5-0 vec-9) f0-31)
)
@@ -607,7 +610,9 @@
(b! #t cfg-42 :delay (nop!))
(label cfg-39)
(b! (not s3-0) cfg-41 :delay (empty-form))
(set! (-> arg0 blocked-by) (-> (the-as collide-shape-prim-mesh (-> s5-0 cquery num-spheres)) cshape process))
(set! (-> arg0 blocked-by)
(the-as rigid-body-object (-> (the-as collide-shape-prim-mesh (-> s5-0 cquery num-spheres)) cshape process))
)
0
(label cfg-41)
(vector+float*! (-> arg0 position) (-> arg0 position) (-> s5-0 vec-5) 40.96)
+4
View File
@@ -372,6 +372,10 @@
(text-x24d #x024d)
(text-x24e #x024e)
(text-x24f #x024f)
(oracle-tutorial-dark-bomb #x0273)
(oracle-tutorial-dark-blast #x0274)
(oracle-tutorial-dark-invincible #x0275)
(oracle-tutorial-dark-giant #x0276)
(text-x277 #x0277)
(text-x278 #x0278)
(text-x27a #x027a)
File diff suppressed because it is too large Load Diff
@@ -222,7 +222,7 @@
(node-at-idx (_type_ int) nav-node 41)
(nav-graph-method-42 (_type_) none 42)
(nav-graph-method-43 (_type_ nav-graph-link string) none 43)
(from-editor () none 44)
(from-editor (_type_ nav-node symbol) none 44)
)
)
+7 -5
View File
@@ -1482,11 +1482,13 @@
(if (zero? (-> obj draw light-index))
(set! (-> obj draw light-index) (the-as uint 10))
)
(rigid-body-queue-method-11 (if (logtest? (-> obj info-override flags) 1024)
*race-rigid-body-queue*
*traffic-rigid-body-queue*
)
)
(rigid-body-queue-method-11
(if (logtest? (-> obj info-override flags) 1024)
*race-rigid-body-queue*
*traffic-rigid-body-queue*
)
obj
)
0
(none)
)
File diff suppressed because it is too large Load Diff
@@ -7,3 +7,536 @@
;; DECOMP BEGINS
(defskelgroup skel-krew-package krew-package krew-package-lod0-jg krew-package-idle-ja
((krew-package-lod0-mg (meters 20)) (krew-package-lod1-mg (meters 40)) (krew-package-lod2-mg (meters 999999)))
:bounds (static-spherem 0 0 0 3.6)
)
(deftype krew-package (process-drawable)
((attach-object handle :offset-assert 200)
(scale float :offset-assert 208)
)
:heap-base #x60
:method-count-assert 24
:size-assert #xd4
:flag-assert #x18006000d4
(:methods
(idle () _type_ :state 20)
(die () _type_ :state 21)
(krew-package-method-22 (_type_) none 22)
(krew-package-method-23 (_type_) none 23)
)
)
(defmethod krew-package-method-22 krew-package ((obj krew-package))
(set! (-> obj root) (new 'process 'trsqv))
0
(none)
)
(defmethod krew-package-method-23 krew-package ((obj krew-package))
(with-pp
(set! (-> pp level) (level-get *level* 'lpackage))
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-krew-package" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(set! (-> obj scale) 1.0)
(set! (-> obj draw lod-set lod 0 dist) 81920.0)
(set! (-> obj draw lod-set lod 1 dist) 204800.0)
(set! (-> obj draw lod-set lod 1 dist) 327680.0)
(logior! (-> obj skel status) (joint-control-status sync-math))
0
(none)
)
)
(defstate idle (krew-package)
:virtual #t
:code (the-as (function none :behavior krew-package) sleep-code)
:post (behavior ()
(let ((gp-0 (handle->process (-> self attach-object))))
(cond
(gp-0
(when (logtest? (-> (the-as process-focusable gp-0) focus-status) (focus-status dead))
(seek! (-> self scale) 0.0 (* 0.5 (-> self clock seconds-per-frame)))
(if (= (-> self scale) 0.0)
(go-virtual die)
)
)
(set! (-> self draw color-mult quad) (-> (the-as process-focusable gp-0) draw color-mult quad))
(set! (-> self root trans quad) (-> (the-as process-focusable gp-0) root-override trans quad))
(quaternion-copy! (-> self root quat) (-> (the-as process-focusable gp-0) root-override quat))
)
(else
)
)
)
(let ((f0-5 (-> self scale)))
(set-vector! (-> self root scale) f0-5 f0-5 f0-5 1.0)
)
(ja-post)
(none)
)
)
(defstate die (krew-package)
:virtual #t
:code (behavior ()
(cleanup-for-death self)
(none)
)
)
;; WARN: Return type mismatch entity-perm-status vs none.
(defmethod init-from-entity! krew-package ((obj krew-package) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(process-entity-status! obj (entity-perm-status dead) #t)
(none)
)
;; WARN: Return type mismatch object vs none.
(defbehavior krew-package-init-by-other krew-package ((arg0 process-drawable))
(stack-size-set! (-> self main-thread) 16)
(set! (-> self mask) (logior (process-mask platform) (-> self mask)))
(logclear! (-> self mask) (process-mask actor-pause movie))
(krew-package-method-22 self)
(set! (-> self attach-object) (process->handle arg0))
(set! (-> self root trans quad) (-> arg0 root trans quad))
(quaternion-copy! (-> self root quat) (-> arg0 root quat))
(krew-package-method-23 self)
(go-virtual idle)
(none)
)
(defun krew-package-spawn ((arg0 process) (arg1 process))
(process-spawn krew-package arg1 :to arg0)
)
(set-subtask-hook!
*game-info*
24
0
(the-as
(function object)
(lambda :behavior task-manager
()
(while (!= (level-status *level* 'ctysluma) 'active)
(suspend)
)
(let ((v1-3 (entity-by-name "parking-spot-8")))
(if v1-3
(logior! (-> v1-3 extra perm status) (entity-perm-status bit-9))
)
)
(set! (-> self end-pos quad) (-> (new 'static 'vector :x -282624.0 :y 45056.0 :z 5464064.0 :w 1.0) quad))
(set-setting! 'minimap 'clear 0 32)
(let ((gp-1 *traffic-manager*))
(let ((s5-0 (new 'stack 'traffic-object-spawn-params)))
(set! (-> s5-0 position quad) (-> (new 'static 'vector :x 4698112.0 :y 45875.2 :z 81920.0 :w 1.0) quad))
(quaternion-axis-angle! (-> s5-0 rotation) 0.0 1.0 0.0 32768.0)
(set! (-> s5-0 object-type) (the-as uint 11))
(set! (-> s5-0 behavior) (the-as uint 0))
(set! (-> s5-0 id) (the-as uint 0))
(set! (-> s5-0 proc) #f)
(send-event gp-1 'spawn-object s5-0)
(when (-> s5-0 proc)
(set! (-> self slave 0) (process->handle (-> s5-0 proc)))
(let ((v1-20 (-> s5-0 proc)))
(set! (-> (the-as vehicle v1-20) damage-factor) 2.0)
)
(let ((v1-22 (krew-package-spawn (-> s5-0 proc) (-> s5-0 proc))))
(if v1-22
(set! (-> self slave 1) (process->handle (-> v1-22 0)))
)
)
)
(let ((s4-0 (new 'stack-no-clear 'task-arrow-params)))
(set! (-> s4-0 pos quad) (-> s5-0 position quad))
(quaternion-identity! (-> s4-0 quat))
(set! (-> s4-0 flags) (task-arrow-flags task-arrow-flag-03))
(set! (-> s4-0 map-icon) (the-as uint 15))
(label cfg-21)
(let ((a0-30 (task-arrow-spawn s4-0 (the-as task-arrow self))))
(when (not a0-30)
(format #t "waiting for task-arrow~%")
(suspend)
(goto cfg-21)
)
(set! (-> self arrow) (process->handle a0-30))
)
)
)
(send-event gp-1 'set-target-level #x3f800000)
(send-event gp-1 'set-guard-target-count-range 4 0 1)
(send-event gp-1 'set-guard-target-count-range 5 0 0)
)
(set! (-> self sub-state) (the-as uint -1))
(set! (-> self data-int8 0) 0)
(set! (-> self data-int8 1) 0)
0
(none)
)
)
)
(set-subtask-hook!
*game-info*
24
1
(the-as
(function object)
(lambda :behavior task-manager () (send-event *traffic-manager* 'restore-default-settings) (none))
)
)
(defun delivery-task-setup-ambush-1 ()
(format #t "delivery-task-setup-ambush-1~%")
(let ((gp-0
(new 'static 'city-ambush-info
:count 10
:array (new 'static 'inline-array city-ambush-spot 10
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4501504.0 :y 32768.0 :z 2297856.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4501504.0 :y 32768.0 :z 2322432.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4501504.0 :y 32768.0 :z 2347008.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4501504.0 :y 32768.0 :z 2371584.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4501504.0 :y 32768.0 :z 2396160.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4513792.0 :y 69632.0 :z 2306048.0 :w 1.0)
:obj-type #x13
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4513792.0 :y 69632.0 :z 2387968.0 :w 1.0)
:obj-type #x13
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4464640.0 :y 69632.0 :z 2285568.0 :w 1.0)
:obj-type #x12
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4464640.0 :y 69632.0 :z 2347008.0 :w 1.0)
:obj-type #x12
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4464640.0 :y 69632.0 :z 2408448.0 :w 1.0)
:obj-type #x12
)
)
)
)
(s5-0 (new 'stack-no-clear 'traffic-object-spawn-params))
)
(set! (-> s5-0 object-type) (the-as uint 6))
(set! (-> s5-0 behavior) (the-as uint 9))
(set! (-> s5-0 id) (the-as uint 0))
(set! (-> s5-0 nav-mesh) #f)
(set! (-> s5-0 nav-branch) #f)
(set! (-> s5-0 proc) #f)
(set! (-> s5-0 handle) (the-as uint (process->handle *target*)))
(set! (-> s5-0 user-data) (the-as uint 0))
(set! (-> s5-0 flags) (the-as uint 2))
(set! (-> s5-0 guard-type) (the-as uint 1))
(vector-reset! (-> s5-0 velocity))
(forward-up-nopitch->quaternion
(-> s5-0 rotation)
(new 'static 'vector :x -1.0 :w 1.0)
(new 'static 'vector :y 1.0 :w 1.0)
)
(city-ambush-info-method-9 gp-0 s5-0)
)
(none)
)
(defun delivery-task-setup-ambush-2 ()
(format #t "delivery-task-setup-ambush-2~%")
(let ((gp-0
(new 'static 'city-ambush-info
:count 10
:array (new 'static 'inline-array city-ambush-spot 10
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3325952.0 :y 32768.0 :z 4689920.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3342336.0 :y 32768.0 :z 4689920.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3358720.0 :y 32768.0 :z 4689920.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3375104.0 :y 32768.0 :z 4689920.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3391488.0 :y 32768.0 :z 4689920.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3338240.0 :y 69632.0 :z 4689920.0 :w 1.0)
:obj-type #x13
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3383296.0 :y 69632.0 :z 4689920.0 :w 1.0)
:obj-type #x13
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3338240.0 :y 45056.0 :z 4722688.0 :w 1.0)
:obj-type #x12
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3358720.0 :y 45056.0 :z 4722688.0 :w 1.0)
:obj-type #x12
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3379200.0 :y 45056.0 :z 4722688.0 :w 1.0)
:obj-type #x12
)
)
)
)
(s5-0 (new 'stack-no-clear 'traffic-object-spawn-params))
)
(set! (-> s5-0 object-type) (the-as uint 6))
(set! (-> s5-0 behavior) (the-as uint 9))
(set! (-> s5-0 id) (the-as uint 0))
(set! (-> s5-0 nav-mesh) #f)
(set! (-> s5-0 nav-branch) #f)
(set! (-> s5-0 proc) #f)
(set! (-> s5-0 handle) (the-as uint (process->handle *target*)))
(set! (-> s5-0 user-data) (the-as uint 0))
(set! (-> s5-0 flags) (the-as uint 2))
(set! (-> s5-0 guard-type) (the-as uint 1))
(vector-reset! (-> s5-0 velocity))
(forward-up-nopitch->quaternion
(-> s5-0 rotation)
(new 'static 'vector :x -1.0 :w 1.0)
(new 'static 'vector :y 1.0 :w 1.0)
)
(city-ambush-info-method-9 gp-0 s5-0)
)
(none)
)
(set-subtask-hook!
*game-info*
24
2
(the-as
(function object)
(lambda :behavior task-manager
()
(local-vars (a0-32 float))
(rlet ((acc :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
)
(init-vf0-vector)
(let ((gp-0 (handle->process (-> self slave 0))))
(cond
((and gp-0 (zero? (logand (-> (the-as process-focusable gp-0) focus-status) (focus-status dead))))
(cond
((zero? (-> self data-int8 0))
(when (= (level-status *level* 'ctyindb) 'active)
(set! (-> self data-int8 0) 1)
(delivery-task-setup-ambush-1)
)
)
(else
(when (!= (level-status *level* 'ctyindb) 'active)
(set! (-> self data-int8 0) 0)
0
)
)
)
(cond
((zero? (-> self data-int8 1))
(when (= (level-status *level* 'ctyinda) 'active)
(set! (-> self data-int8 1) 1)
(delivery-task-setup-ambush-2)
)
)
(else
(when (!= (level-status *level* 'ctyinda) 'active)
(set! (-> self data-int8 1) 0)
0
)
)
)
(let ((f0-0 (vector-vector-distance-squared (-> (the-as process-drawable gp-0) root trans) (target-pos 0)))
(f1-0 12288.0)
)
(cond
((and (< f0-0 (* f1-0 f1-0)) *target* (logtest? (focus-status pilot) (-> *target* focus-status)))
(when (nonzero? (-> self sub-state))
(send-event (handle->process (-> self arrow)) 'set-position (-> self end-pos))
(send-event (handle->process (-> self arrow)) 'modify-flags 1 0)
(send-event (handle->process (-> self arrow)) 'map-icon 8)
(set! (-> self sub-state) (the-as uint 0))
0
)
)
(else
(let* ((v1-59 (new 'stack-no-clear 'inline-array 'vector 1))
(f0-1 409.6)
(f0-3 (* f0-1 f0-1))
)
(.lvf vf1 (&-> (-> (the-as process-drawable gp-0) root transv) quad))
(.add.w.vf vf2 vf0 vf0 :mask #b1)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf2 vf1 :mask #b1)
(.add.mul.y.vf acc vf2 vf1 acc :mask #b1)
(.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1)
(.mov a0-32 vf1)
(when (>= f0-3 a0-32)
(set! (-> v1-59 0 quad) (-> (the-as process-drawable gp-0) root trans quad))
(set! (-> v1-59 0 y) (+ -14336.0 (-> v1-59 0 y)))
(send-event (handle->process (-> self arrow)) 'set-position (-> v1-59 0))
)
)
(when (!= (-> self sub-state) 1)
(send-event (handle->process (-> self arrow)) 'modify-flags 0 1)
(send-event (handle->process (-> self arrow)) 'map-icon 15)
(set! (-> self sub-state) (the-as uint 1))
)
)
)
)
(let ((f30-0 49152.0)
(f0-6 (vector-vector-distance-squared (-> (the-as process-drawable gp-0) root trans) (-> self end-pos)))
)
(if (>= (* f30-0 f30-0) f0-6)
(go-virtual complete)
)
)
)
(else
(go-virtual fail)
)
)
)
(none)
)
)
)
)
(set-subtask-hook!
*game-info*
24
3
(the-as
(function object)
(lambda :behavior task-manager
()
(let ((gp-0 (new 'static 'vector :x 4501504.0 :y 73728.0 :z 2338816.0 :w 204800.0))
(s5-0 #f)
)
(while (not s5-0)
(let ((v1-1 (handle->process (-> self slave 0))))
(when v1-1
(let ((f0-0 (vector-vector-distance-squared (-> (the-as process-drawable v1-1) root trans) gp-0))
(f1-0 (-> gp-0 w))
)
(set! s5-0 (< f0-0 (* f1-0 f1-0)))
)
)
)
(suspend)
)
)
(send-event *traffic-manager* 'set-guard-target-count-range 0 0 0)
(send-event *traffic-manager* 'set-guard-target-count-range 1 4 4)
(send-event *traffic-manager* 'set-guard-target-count-range 2 0 0)
(send-event *traffic-manager* 'set-guard-target-count-range 4 0 10)
(send-event *traffic-manager* 'set-guard-target-count-range 5 0 10)
(send-event *traffic-manager* 'set-alert-level 3)
(send-event *traffic-manager* 'set-alert-duration #xa4cb80)
(speech-control-method-10 *speech-control* 7 (new 'static 'speech-type-info
:channel #x1
:priority -2
:min-delay #x258
:max-delay #x4b0
:list (new 'static 'boxed-array :type string
"kg243a"
"kg241a"
"kg242a"
"kg244a"
"kg245a"
"kg246a"
"kg247a"
"kg248a"
"kg249a"
"kg250a"
"kg251a"
"kg252a"
)
)
)
(talker-spawn-func (-> *talker-speech* 49) *entity-pool* (target-pos 0) (the-as region #f))
(let ((gp-2 (new 'static 'vector :x 3358720.0 :y 32768.0 :z 4689920.0 :w 204800.0))
(s5-2 #f)
)
(while (not s5-2)
(let ((v1-48 (handle->process (-> self slave 0))))
(when v1-48
(let ((f0-1 (vector-vector-distance-squared (-> (the-as process-drawable v1-48) root trans) gp-2))
(f1-3 (-> gp-2 w))
)
(set! s5-2 (< f0-1 (* f1-3 f1-3)))
)
)
)
(suspend)
)
)
(talker-spawn-func (-> *talker-speech* 50) *entity-pool* (target-pos 0) (the-as region #f))
(none)
)
)
)
(set-subtask-hook!
*game-info*
24
4
(the-as (function object) (lambda :behavior task-manager
()
(send-event *traffic-manager* 'decrease-alert-level 0)
(send-event *traffic-manager* 'set-alert-duration 9000)
(if (and *target* (logtest? (focus-status pilot) (-> *target* focus-status)))
(send-event *target* 'change-mode 'normal)
)
(set-setting! 'pilot #f 0 0)
(set! (-> self state-time) (-> self clock frame-counter))
(while (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 2))
(suspend)
)
(none)
)
)
)
@@ -7,3 +7,423 @@
;; DECOMP BEGINS
(set-subtask-hook!
*game-info*
251
0
(the-as
(function object)
(lambda :behavior task-manager
()
(set! (-> self data-float 0) (the-as float (send-event *target* 'test-pickup 7)))
(send-event *target* 'change-mode 'darkjak #f 65)
(set! (-> self sound-id 0)
(add-process *gui-control* self (gui-channel message) (gui-action play) (-> self name) 81920.0 0)
)
(send-event *target* 'get-notify self)
(none)
)
)
)
(set-subtask-hook!
*game-info*
251
1
(the-as (function object) (lambda :behavior task-manager
()
(send-event *target* 'get-pickup 7 (-> self data-float 0))
(send-event *target* 'change-mode 'darkjak #f 128)
(send-event *target* 'get-notify #f)
(set-action!
*gui-control*
(gui-action stop)
(-> self sound-id 0)
(gui-channel none)
(gui-action none)
(the-as string #f)
(the-as (function gui-connection symbol) #f)
(the-as process #f)
)
(close! (-> self node-info) 'event)
(none)
)
)
)
(set-subtask-hook!
*game-info*
251
6
(the-as (function object) (lambda :behavior task-manager
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('notify)
(case (-> arg3 param 0)
(('attack)
(if (= (-> arg3 param 1) 16)
(go-virtual complete)
)
)
)
)
)
)
)
)
(set-subtask-hook!
*game-info*
251
2
(the-as
(function object)
(lambda :behavior task-manager
()
(if (and *target* (zero? (logand (focus-status dark) (-> *target* focus-status))))
(send-event *target* 'change-mode 'darkjak #f 65)
)
(when (= (get-status *gui-control* (-> self sound-id 0)) (gui-status active))
(let ((gp-1 (new
'stack
'font-context
*font-default-matrix*
32
280
0.0
(font-color default-#cddbcd)
(font-flags shadow kerning)
)
)
)
(set! (-> gp-1 flags) (font-flags shadow kerning large))
(let ((v1-14 gp-1))
(set! (-> v1-14 width) (the float 440))
)
(let ((v1-15 gp-1))
(set! (-> v1-15 height) (the float 80))
)
(let ((v1-16 gp-1))
(set! (-> v1-16 scale) 0.7)
)
(let ((s5-0 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (game-text-id oracle-tutorial-dark-bomb) #f))
(s5-0 *temp-string* gp-1 #f 44 (bucket-id progress))
)
)
)
(none)
)
)
)
(set-subtask-hook!
*game-info*
253
0
(the-as
(function object)
(lambda :behavior task-manager
()
(set! (-> self data-float 0) (the-as float (send-event *target* 'test-pickup 7)))
(send-event *target* 'change-mode 'darkjak #f 65)
(set! (-> self sound-id 0)
(add-process *gui-control* self (gui-channel message) (gui-action play) (-> self name) 81920.0 0)
)
(send-event *target* 'get-notify self)
(none)
)
)
)
(set-subtask-hook!
*game-info*
253
1
(the-as (function object) (lambda :behavior task-manager
()
(send-event *target* 'get-pickup 7 (-> self data-float 0))
(send-event *target* 'change-mode 'darkjak #f 128)
(send-event *target* 'get-notify #f)
(set-action!
*gui-control*
(gui-action stop)
(-> self sound-id 0)
(gui-channel none)
(gui-action none)
(the-as string #f)
(the-as (function gui-connection symbol) #f)
(the-as process #f)
)
(close! (-> self node-info) 'event)
(none)
)
)
)
(set-subtask-hook!
*game-info*
253
6
(the-as (function object) (lambda :behavior task-manager
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('notify)
(case (-> arg3 param 0)
(('attack)
(if (= (-> arg3 param 1) 17)
(go-virtual complete)
)
)
)
)
)
)
)
)
(set-subtask-hook!
*game-info*
253
2
(the-as
(function object)
(lambda :behavior task-manager
()
(if (and *target* (zero? (logand (focus-status dark) (-> *target* focus-status))))
(send-event *target* 'change-mode 'darkjak #f 65)
)
(when (= (get-status *gui-control* (-> self sound-id 0)) (gui-status active))
(let ((gp-1 (new
'stack
'font-context
*font-default-matrix*
32
280
0.0
(font-color default-#cddbcd)
(font-flags shadow kerning)
)
)
)
(set! (-> gp-1 flags) (font-flags shadow kerning large))
(let ((v1-14 gp-1))
(set! (-> v1-14 width) (the float 440))
)
(let ((v1-15 gp-1))
(set! (-> v1-15 height) (the float 80))
)
(let ((v1-16 gp-1))
(set! (-> v1-16 scale) 0.7)
)
(let ((s5-0 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (game-text-id oracle-tutorial-dark-blast) #f))
(s5-0 *temp-string* gp-1 #f 44 (bucket-id progress))
)
)
)
(none)
)
)
)
(set-subtask-hook!
*game-info*
255
0
(the-as
(function object)
(lambda :behavior task-manager
()
(set! (-> self data-float 0) (the-as float (send-event *target* 'test-pickup 7)))
(send-event *target* 'change-mode 'darkjak #f 65)
(set! (-> self sound-id 0)
(add-process *gui-control* self (gui-channel message) (gui-action play) (-> self name) 81920.0 0)
)
(send-event *target* 'get-notify self)
(set! (-> self start-time) (-> self clock frame-counter))
(none)
)
)
)
(set-subtask-hook!
*game-info*
255
1
(the-as (function object) (lambda :behavior task-manager
()
(send-event *target* 'get-pickup 7 (-> self data-float 0))
(send-event *target* 'change-mode 'darkjak #f 128)
(send-event *target* 'get-notify #f)
(set-action!
*gui-control*
(gui-action stop)
(-> self sound-id 0)
(gui-channel none)
(gui-action none)
(the-as string #f)
(the-as (function gui-connection symbol) #f)
(the-as process #f)
)
(close! (-> self node-info) 'event)
(none)
)
)
)
(set-subtask-hook!
*game-info*
255
2
(the-as
(function object)
(lambda :behavior task-manager
()
(if (and *target* (zero? (logand (focus-status dark) (-> *target* focus-status))))
(send-event *target* 'change-mode 'darkjak #f 65)
)
(when (= (get-status *gui-control* (-> self sound-id 0)) (gui-status active))
(let ((gp-1 (new
'stack
'font-context
*font-default-matrix*
32
280
0.0
(font-color default-#cddbcd)
(font-flags shadow kerning)
)
)
)
(set! (-> gp-1 flags) (font-flags shadow kerning large))
(let ((v1-14 gp-1))
(set! (-> v1-14 width) (the float 440))
)
(let ((v1-15 gp-1))
(set! (-> v1-15 height) (the float 80))
)
(let ((v1-16 gp-1))
(set! (-> v1-16 scale) 0.7)
)
(let ((s5-0 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (game-text-id oracle-tutorial-dark-invincible) #f))
(s5-0 *temp-string* gp-1 #f 44 (bucket-id progress))
)
)
)
(none)
)
)
)
(set-subtask-hook!
*game-info*
257
0
(the-as
(function object)
(lambda :behavior task-manager
()
(set! (-> self data-float 0) (the-as float (send-event *target* 'test-pickup 7)))
(send-event *target* 'change-mode 'darkjak #f 65)
(set! (-> self sound-id 0)
(add-process *gui-control* self (gui-channel message) (gui-action play) (-> self name) 81920.0 0)
)
(send-event *target* 'get-notify self)
(none)
)
)
)
(set-subtask-hook!
*game-info*
257
1
(the-as (function object) (lambda :behavior task-manager
()
(send-event *target* 'get-pickup 7 (-> self data-float 0))
(send-event *target* 'change-mode 'darkjak #f 128)
(send-event *target* 'get-notify #f)
(set-action!
*gui-control*
(gui-action stop)
(-> self sound-id 0)
(gui-channel none)
(gui-action none)
(the-as string #f)
(the-as (function gui-connection symbol) #f)
(the-as process #f)
)
(close! (-> self node-info) 'event)
(none)
)
)
)
(set-subtask-hook!
*game-info*
257
6
(the-as (function object) (lambda :behavior task-manager
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(the-as object (case arg2
(('notify)
(case (-> arg3 param 0)
(('attack)
(if (= (-> arg3 param 1) 18)
#f
)
)
)
)
)
)
)
)
)
(set-subtask-hook!
*game-info*
257
2
(the-as
(function object)
(lambda :behavior task-manager
()
(if (and *target* (zero? (logand (focus-status dark) (-> *target* focus-status))))
(send-event *target* 'change-mode 'darkjak #f 65)
)
(when (= (get-status *gui-control* (-> self sound-id 0)) (gui-status active))
(let ((gp-1 (new
'stack
'font-context
*font-default-matrix*
32
280
0.0
(font-color default-#cddbcd)
(font-flags shadow kerning)
)
)
)
(set! (-> gp-1 flags) (font-flags shadow kerning large))
(let ((v1-14 gp-1))
(set! (-> v1-14 width) (the float 440))
)
(let ((v1-15 gp-1))
(set! (-> v1-15 height) (the float 80))
)
(let ((v1-16 gp-1))
(set! (-> v1-16 scale) 0.7)
)
(let ((s5-0 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (game-text-id oracle-tutorial-dark-giant) #f))
(s5-0 *temp-string* gp-1 #f 44 (bucket-id progress))
)
)
)
(none)
)
)
)
@@ -21,8 +21,8 @@
(deftype bombbot-path (structure)
((node-count uint16 :offset-assert 0)
(node uint32 :offset-assert 4)
((node-count uint16 :offset-assert 0)
(node (inline-array bombbot-node) :offset-assert 4)
)
:method-count-assert 9
:size-assert #x8
@@ -7,3 +7,812 @@
;; DECOMP BEGINS
(define *bombbot-path-1* (new 'static 'bombbot-path
:node-count #x1c
:node (new 'static 'inline-array bombbot-node 28
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3258277.5 :y 36837.375 :z 2919952.0)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3527335.0 :y 36837.375 :z 2643463.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3614297.8 :y 36837.375 :z 2580864.5)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4291214.0 :y 38298.008 :z 2591629.0)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4390092.0 :y 36837.375 :z 2643881.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4455013.0 :y 36837.375 :z 2753605.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4538736.0 :y 36837.375 :z 2739244.8)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4589772.0 :y 36837.375 :z 2653011.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4602265.0 :y 38390.58 :z 2465177.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4529397.0 :y 36837.375 :z 2365566.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4405943.0 :y 36837.375 :z 2328894.8)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4000464.5 :y 36837.375 :z 2104958.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4013141.5 :y 36837.375 :z 1832038.0)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4521655.0 :y 36837.375 :z 1745903.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4506131.5 :y 33105.92 :z 1321582.1)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4644699.5 :y 37455.055 :z 1207492.2)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4667923.5 :y 37455.055 :z 1168281.2)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4659813.0 :y 41026.766 :z 977706.6)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4733418.5 :y 37455.055 :z 871554.7)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4753079.0 :y 37459.56 :z 775511.6)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4692417.5 :y 37457.51 :z 759676.5)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4495687.0 :y 37457.51 :z 765365.9)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4472339.5 :y 37457.51 :z 496651.88)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4383906.5 :y 37457.51 :z 276074.1)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4582235.5 :y 37446.043 :z 83403.57)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4677671.5 :y 37446.043 :z 70415.56)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4685986.5 :y 37446.043 :z 217373.9)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4718386.5 :y 37446.043 :z 233280.72)
:nav-mesh-id #x2578
)
)
)
)
(define *bombbot-path-2* (new 'static 'bombbot-path
:node-count #x21
:node (new 'static 'inline-array bombbot-node 33
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1677880.9 :y 32856.473 :z -190588.11)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1826967.1 :y 36825.906 :z -179154.53)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1879178.9 :y 36858.266 :z -70936.164)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2041179.8 :y 36852.12 :z -62959.617)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2200935.8 :y 37035.62 :z -327732.44)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2238988.0 :y 36855.81 :z -502779.5)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2280828.0 :y 36862.363 :z -594517.6)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2382253.8 :y 36858.266 :z -654388.8)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2463849.8 :y 36852.53 :z -811904.6)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2693455.5 :y 32287.129 :z -782532.2)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2787884.8 :y 36854.168 :z -1143430.8)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2870263.5 :y 36964.76 :z -1137082.0)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3010809.5 :y 35717.53 :z -1025650.25)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3058421.2 :y 36852.53 :z -689659.5)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3038600.5 :y 37395.66 :z -597171.8)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2939293.0 :y 45748.223 :z -549240.44)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2885557.8 :y 43587.586 :z -452988.53)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3289734.2 :y 37456.28 :z -52194.508)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3266022.5 :y 37448.09 :z 309003.88)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3520949.8 :y 38775.6 :z 423140.97)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3753070.2 :y 37448.09 :z 611843.7)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3987242.5 :y 37458.74 :z 642600.56)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4035505.2 :y 37454.234 :z 575893.1)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4232519.0 :y 37457.51 :z 589045.4)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4315381.0 :y 37457.51 :z 524410.5)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4324351.0 :y 37457.51 :z 385351.7)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4224859.5 :y 37457.51 :z 381204.47)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4227849.5 :y 37457.51 :z 289628.56)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4357856.5 :y 37457.51 :z 260807.06)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4588256.5 :y 37446.043 :z 68193.89)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4668702.0 :y 37446.043 :z 85842.74)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4679515.5 :y 37446.043 :z 238454.38)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4716789.0 :y 37446.043 :z 252433.2)
:nav-mesh-id #x2578
)
)
)
)
(define *bombbot-path-3* (new 'static 'bombbot-path
:node-count #x1b
:node (new 'static 'inline-array bombbot-node 27
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3349143.2 :y 36837.375 :z 1716903.5)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3350859.2 :y 36837.375 :z 2284261.0)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3585396.0 :y 38390.58 :z 2270354.8)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3678752.2 :y 36837.375 :z 2124566.0)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3780005.5 :y 37188.402 :z 1886043.8)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3988593.8 :y 38456.523 :z 1788928.0)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4476435.5 :y 36837.375 :z 1664429.6)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4459273.5 :y 30950.605 :z 1375608.4)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4297235.5 :y 37457.92 :z 1336405.6)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4267007.0 :y 37444.402 :z 1361804.9)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4239564.0 :y 37457.92 :z 1410236.0)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4136713.5 :y 42312.09 :z 1466470.0)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3730288.2 :y 37457.92 :z 1464053.4)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3679088.2 :y 37457.51 :z 1307471.5)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3718180.5 :y 37457.51 :z 1220591.2)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3999309.5 :y 40812.543 :z 1229811.2)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4089249.5 :y 37457.51 :z 1150664.2)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4044267.0 :y 37457.51 :z 856497.75)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4036837.0 :y 37457.51 :z 757390.94)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4235918.0 :y 37457.51 :z 741895.8)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4270160.5 :y 37457.51 :z 614477.44)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4392795.5 :y 37457.51 :z 371413.8)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4414668.0 :y 41926.246 :z 210297.23)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4583751.0 :y 37446.043 :z 98254.85)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4685045.0 :y 37446.043 :z 85629.336)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4691557.0 :y 37446.043 :z 193381.17)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4719328.5 :y 37446.043 :z 209884.78)
:nav-mesh-id #x2578
)
)
)
)
(define *bombbot-path-4* (new 'static 'bombbot-path
:node-count #x1b
:node (new 'static 'inline-array bombbot-node 27
(new 'static 'bombbot-node
:position (new 'static 'vector :x 882802.25 :y 36859.902 :z 3621834.2)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 872205.94 :y 36854.168 :z 3192081.5)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1050914.4 :y 69632.0 :z 3175034.5)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1498271.4 :y 69626.266 :z 3185827.5)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1481735.8 :y 69642.24 :z 2830061.2)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1456881.2 :y 69642.24 :z 2057588.4)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1502514.8 :y 69642.24 :z 1884434.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1484082.8 :y 69632.0 :z 1743306.4)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1115516.5 :y 69642.24 :z 1752252.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 639340.1 :y 69639.78 :z 1770094.1)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 128253.54 :y 69642.24 :z 1734078.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 73947.95 :y 69642.24 :z 1844170.4)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 109042.07 :y 69642.24 :z 2066944.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 122852.555 :y 69642.24 :z 2758323.5)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 79918.28 :y 69626.266 :z 3150474.8)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 517484.12 :y 69632.0 :z 3181182.2)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 602791.5 :y 36854.168 :z 3181075.8)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 699465.3 :y 36854.168 :z 3194715.2)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 674786.94 :y 36864.0 :z 3605937.2)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 421895.78 :y 36864.0 :z 3631988.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 369729.12 :y 36859.902 :z 3813134.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 397331.66 :y 36861.953 :z 4427570.5)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 731725.44 :y 36864.0 :z 4451286.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1126035.0 :y 36864.0 :z 4429454.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1190809.2 :y 36859.902 :z 4295065.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1190031.0 :y 36861.953 :z 3726978.8)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1073888.9 :y 36859.902 :z 3629100.8)
:nav-mesh-id #x5881
)
)
)
)
(define *bombbot-path-5* (new 'static 'bombbot-path
:node-count #x33
:node (new 'static 'inline-array bombbot-node 51
(new 'static 'bombbot-node
:position (new 'static 'vector :x 388330.7 :y 35735.55 :z 5592473.0)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 235137.44 :y 35738.418 :z 5335571.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 74786.0 :y 35725.312 :z 5357485.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -245602.72 :y 35892.43 :z 5523168.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -478199.4 :y 35809.28 :z 5729811.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -633699.94 :y 39457.586 :z 5876857.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -667004.5 :y 59325.234 :z 5924289.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -696929.9 :y 58614.58 :z 5964103.0)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -732503.6 :y 22183.527 :z 6010224.0)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -856731.25 :y 21815.297 :z 6198476.0)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -870399.56 :y 35786.344 :z 6224935.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -976211.56 :y 35637.656 :z 6564699.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -719711.9 :y 38689.176 :z 6634986.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -531132.0 :y 38689.176 :z 6696467.5)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -354006.62 :y 38696.14 :z 6784162.5)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -180439.86 :y 38695.32 :z 6879559.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 20982.58 :y 35575.81 :z 7042620.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 195429.98 :y 35792.895 :z 6968032.5)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 312721.8 :y 35971.89 :z 6998506.5)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 453852.78 :y 37415.73 :z 7159356.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 678702.7 :y 75903.38 :z 7154687.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 891694.7 :y 75898.06 :z 7155056.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1123581.5 :y 37389.105 :z 7159807.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1262735.0 :y 36363.06 :z 7003381.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1435963.0 :y 35584.82 :z 6967623.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1585966.8 :y 37874.895 :z 7002643.5)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1763491.4 :y 38840.32 :z 6884228.5)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1928056.4 :y 38840.32 :z 6786702.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2107686.0 :y 38849.332 :z 6696098.5)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2293435.5 :y 38841.547 :z 6626262.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2510294.8 :y 35697.46 :z 6572563.5)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2539388.0 :y 36340.53 :z 6489415.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2446294.8 :y 35794.535 :z 6219815.5)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2430483.8 :y 23202.611 :z 6190160.5)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2307473.0 :y 22759.834 :z 5994905.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2275430.0 :y 56630.066 :z 5951815.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2247085.8 :y 59249.05 :z 5913271.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2208775.2 :y 40428.34 :z 5866126.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2049703.5 :y 35709.746 :z 5719040.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1805794.9 :y 35787.98 :z 5533326.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1550716.5 :y 35767.91 :z 5390949.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1386327.6 :y 35697.05 :z 5346631.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1270820.5 :y 35735.14 :z 5479013.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1179094.6 :y 35735.55 :z 5589237.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1153597.0 :y 23880.09 :z 5588172.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1028533.9 :y 21655.96 :z 5589810.5)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1001635.44 :y 37785.19 :z 5586247.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 782425.7 :y 35723.67 :z 5569207.0)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 574987.9 :y 35949.363 :z 5584567.0)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 546176.6 :y 21655.553 :z 5588704.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 417185.38 :y 24605.082 :z 5599353.5)
:nav-mesh-id #x48cc
)
)
)
)
(define *bombbot-path-6* (new 'static 'bombbot-path
:node-count #x1a
:node (new 'static 'inline-array bombbot-node 26
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4673330.5 :y 103528.04 :z 4155801.2)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4680252.0 :y 103531.31 :z 3704430.2)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4259757.5 :y 103531.31 :z 3700010.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3996306.8 :y 103531.31 :z 3698474.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3866263.2 :y 103531.31 :z 3698322.8)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3350626.0 :y 103528.04 :z 3702615.8)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3346918.5 :y 103528.04 :z 4084702.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3694755.5 :y 103528.04 :z 4096572.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3703221.8 :y 103528.04 :z 4352286.0)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3958894.2 :y 103528.04 :z 4364409.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3958861.5 :y 103528.04 :z 4683570.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3573743.2 :y 103528.04 :z 4682791.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3563831.0 :y 103528.04 :z 4222893.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3185090.2 :y 103528.04 :z 4217609.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3184090.8 :y 103443.25 :z 3811204.8)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3179494.5 :y 36837.375 :z 3575176.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3264048.8 :y 36837.375 :z 3525590.8)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3247177.0 :y 36837.375 :z 4148510.0)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3650235.5 :y 36837.375 :z 4178902.8)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3655273.8 :y 36837.375 :z 4465417.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3942530.8 :y 36837.375 :z 4631551.0)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4158422.8 :y 36837.375 :z 4682956.0)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4413520.5 :y 103528.04 :z 4686642.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4432117.0 :y 103528.04 :z 4430192.0)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4616723.5 :y 103528.04 :z 4419378.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4627783.0 :y 103531.31 :z 4174642.5)
:nav-mesh-id #x34ad
)
)
)
)
File diff suppressed because it is too large Load Diff
+66 -2
View File
@@ -202,7 +202,72 @@
:default-hit-points 1
:gnd-collide-with (collide-spec backgnd)
:overlaps-others-collide-with-filter (collide-spec jak bot player-list)
:penetrate-knocked #xffffffffffffffff
:penetrate-knocked (penetrate
touch
generic-attack
lunge
flop
punch
spin
roll
uppercut
bonk
tube
vehicle
flut-attack
board
mech
mech-punch
mech-bonk
dark-skin
dark-punch
dark-bomb
dark-giant
shield
explode
jak-yellow-shot
jak-red-shot
jak-blue-shot
jak-dark-shot
enemy-yellow-shot
enemy-dark-shot
eco-yellow
eco-red
eco-blue
eco-green
knocked
penetrate-33
penetrate-34
penetrate-35
penetrate-36
penetrate-37
penetrate-38
penetrate-39
penetrate-40
penetrate-41
penetrate-42
penetrate-43
penetrate-44
penetrate-45
penetrate-46
penetrate-47
penetrate-48
penetrate-49
penetrate-50
penetrate-51
penetrate-52
penetrate-53
penetrate-54
penetrate-55
penetrate-56
penetrate-57
penetrate-58
penetrate-59
penetrate-60
penetrate-61
penetrate-62
penetrate-63
)
:movement-gravity (meters -100)
:friction 0.8
:attack-shove-back (meters 3)
@@ -289,7 +354,6 @@
((method-of-type nav-enemy kill-prefer-falling) obj)
)
)
(none)
)
(defmethod enemy-method-90 hopper ((obj hopper) (arg0 int) (arg1 enemy-jump-info))
File diff suppressed because it is too large Load Diff
@@ -7,3 +7,412 @@
;; DECOMP BEGINS
(defun fortress-login ()
(set! *nav-network* (new 'loading-level 'nav-network))
(nav-network-method-9 *nav-network*)
0
(none)
)
(defun fortress-deactivate ()
(set! *nav-network* (the-as nav-network 0))
0
(none)
)
(defun fortress-activate ((arg0 level))
(nav-network-method-10 *nav-network* arg0 *fortress-adjacency*)
(none)
)
(deftype fort-elec-button (cty-guard-turret-button)
((start-up? symbol :offset-assert 288)
)
:heap-base #xb0
:method-count-assert 41
:size-assert #x124
:flag-assert #x2900b00124
(:methods
(waiting () _type_ :state 40)
)
)
(defskelgroup skel-fort-elec-button cty-guard-turret-button cty-guard-turret-button-lod0-jg cty-guard-turret-button-idle-ja
((cty-guard-turret-button-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 3)
)
(defstate waiting (fort-elec-button)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('trigger)
(go-virtual pop-up)
)
)
)
:code (the-as (function none :behavior fort-elec-button) sleep-code)
)
(defmethod basebutton-method-33 fort-elec-button ((obj fort-elec-button))
"TODO - joint stuff"
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-fort-elec-button" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(ja-channel-set! 1)
(cond
((-> obj start-up?)
(let ((a0-4 (-> obj skel root-channel 0)))
(set! (-> a0-4 frame-group) (the-as art-joint-anim (-> obj draw art-group data 3)))
(set! (-> a0-4 frame-num)
(the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 3)) frames num-frames) -1))
)
(joint-control-channel-group! a0-4 (the-as art-joint-anim (-> obj draw art-group data 3)) num-func-identity)
)
)
(else
(let ((a0-5 (-> obj skel root-channel 0)))
(set! (-> a0-5 frame-group) (the-as art-joint-anim (-> obj draw art-group data 3)))
(set! (-> a0-5 frame-num) 0.0)
(joint-control-channel-group! a0-5 (the-as art-joint-anim (-> obj draw art-group data 3)) num-func-identity)
)
)
)
(transform-post)
(none)
)
;; WARN: Return type mismatch process-mask vs none.
(defmethod prepare-trigger-event! fort-elec-button ((obj fort-elec-button))
"Sets `event-going-down` to `'trigger`"
(set! (-> obj start-up?) (= 1 (res-lump-value (-> obj entity) 'extra-id uint :time -1000000000.0)))
(set! (-> obj event-going-down) 'trigger)
(process-entity-status! obj (entity-perm-status no-kill) #t)
(logclear! (-> obj mask) (process-mask actor-pause))
(none)
)
(defmethod idle-state-transition fort-elec-button ((obj fort-elec-button))
"If `button-status` has [[button-status:0]] set, transition to [[basebutton::27]] otherwise, [[basebutton::30]]"
(cond
((-> obj start-up?)
(let ((s5-0 (-> obj skel root-channel 0)))
(joint-control-channel-group-eval!
s5-0
(the-as art-joint-anim (-> obj draw art-group data 2))
num-func-identity
)
(set! (-> s5-0 frame-num) 0.0)
)
(go (method-of-object obj up-idle))
)
(else
(go (method-of-object obj waiting))
)
)
)
(deftype fort-led (process-drawable)
((button-actor entity-actor :offset-assert 200)
)
:heap-base #x50
:method-count-assert 22
:size-assert #xcc
:flag-assert #x16005000cc
(:methods
(red () _type_ :state 20)
(green () _type_ :state 21)
)
)
(defskelgroup skel-fort-led fort-led fort-led-lod0-jg fort-led-idle-ja
((fort-led-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
(defstate red (fort-led)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('trigger)
(go-virtual green)
)
)
)
:code (behavior ()
(setup-masks (-> self draw) 4 2)
(ja-post)
(sleep-code)
(none)
)
)
(defstate green (fort-led)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('untrigger)
(go-virtual red)
)
)
)
:code (behavior ()
(setup-masks (-> self draw) 2 4)
(ja-post)
(sleep-code)
(none)
)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! fort-led ((obj fort-led) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-fort-led" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(set! (-> obj button-actor) (entity-actor-lookup arg0 'alt-actor 0))
(if (and (-> obj button-actor)
(logtest? (-> obj button-actor extra perm status) (entity-perm-status subtask-complete))
)
(go (method-of-object obj green))
(go (method-of-object obj red))
)
(none)
)
(deftype elec-lock-gate (fort-elec-gate)
((actor-group (pointer actor-group) :offset-assert 516)
(actor-group-count int32 :offset-assert 520)
(all-gone? symbol :offset-assert 524)
)
:heap-base #x190
:method-count-assert 32
:size-assert #x210
:flag-assert #x2001900210
(:methods
(pre-shutdown () _type_ :state 30)
(elec-lock-gate-method-31 (_type_ symbol) symbol 31)
)
)
(defstate active (elec-lock-gate)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('trigger)
(if (elec-lock-gate-method-31 self (the-as symbol proc))
(go-virtual pre-shutdown)
)
)
(else
((-> (method-of-type elec-gate active) event) proc arg1 event-type event)
)
)
)
)
(defstate pre-shutdown (elec-lock-gate)
:virtual #t
:trans (-> (method-of-type elec-lock-gate active) trans)
:code (behavior ()
(let ((a0-0 *target*))
(when (and a0-0 (< 81920.0 (vector-vector-distance (get-trans a0-0 0) (-> self root trans))))
(set! (-> self quality-enabled?) #f)
(let ((gp-1 (-> self clock frame-counter)))
(until (>= (- (-> self clock frame-counter) gp-1) (seconds 0.5))
(suspend)
)
)
(hide-hud-quick #f)
(set-setting! 'entity-name "camera-243" 0 0)
(set-setting! 'process-mask 'set 0 (process-mask movie enemy))
(process-grab? *target* #f)
(let ((gp-2 (-> self clock frame-counter)))
(until (>= (- (-> self clock frame-counter) gp-2) (seconds 2))
(suspend)
)
)
)
)
(go-virtual shutdown)
(none)
)
:post (-> (method-of-type elec-lock-gate active) post)
)
(defstate shutdown (elec-lock-gate)
:virtual #t
:enter (behavior ()
(let ((t9-1 (-> (the-as state (find-parent-method elec-lock-gate 22)) enter)))
(if t9-1
((the-as (function none) t9-1))
)
)
(set! (-> self all-gone?) #f)
(none)
)
:trans (behavior ()
(let ((gp-0 #t))
(dotimes (s5-0 5)
(let ((s4-0 (-> self l-bolt s5-0)))
(seek! (-> s4-0 pos) 0.0 (* (- 1.14 (-> s4-0 pos)) (-> self clock seconds-per-frame)))
(set! gp-0 (cond
((or (< 1.0 (-> s4-0 pos)) (>= 0.0 (-> s4-0 pos)))
(let ((v1-9 (-> self l-bolt s5-0 bolt))
(a0-1 3)
)
(let ((a1-2 (!= a0-1 (-> v1-9 state mode))))
(case a0-1
((3)
(if a1-2
(set! (-> v1-9 state counter) 0.0)
)
)
((1)
(set! (-> v1-9 state start-color) (-> v1-9 spec start-color))
(set! (-> v1-9 state end-color) (-> v1-9 spec end-color))
)
)
)
(set! (-> v1-9 state mode) (the-as lightning-mode a0-1))
)
(let ((v1-12 (-> self l-bolt s5-0 ring 0))
(a0-2 3)
)
(let ((a1-12 (!= a0-2 (-> v1-12 state mode))))
(case a0-2
((3)
(if a1-12
(set! (-> v1-12 state counter) 0.0)
)
)
((1)
(set! (-> v1-12 state start-color) (-> v1-12 spec start-color))
(set! (-> v1-12 state end-color) (-> v1-12 spec end-color))
)
)
)
(set! (-> v1-12 state mode) (the-as lightning-mode a0-2))
)
(let ((v1-15 (-> self l-bolt s5-0 ring 1))
(a0-3 3)
)
(let ((a1-22 (!= a0-3 (-> v1-15 state mode))))
(case a0-3
((3)
(if a1-22
(set! (-> v1-15 state counter) 0.0)
)
)
((1)
(set! (-> v1-15 state start-color) (-> v1-15 spec start-color))
(set! (-> v1-15 state end-color) (-> v1-15 spec end-color))
)
)
)
(set! (-> v1-15 state mode) (the-as lightning-mode a0-3))
)
gp-0
)
(else
#f
)
)
)
)
)
(set! (-> self all-gone?) gp-0)
)
(none)
)
:code (behavior ()
(until (-> self all-gone?)
(let ((gp-0 (-> self clock frame-counter)))
(until (>= (- (-> self clock frame-counter) gp-0) (seconds 0.5))
(suspend)
)
)
)
(set-setting! 'interp-time 'abs 0 0)
(remove-setting! 'entity-name)
(remove-setting! 'process-mask)
(dotimes (gp-1 2)
(suspend)
)
(remove-setting! 'interp-time)
(process-release? *target*)
(go-virtual idle)
(none)
)
)
(defmethod elec-lock-gate-method-31 elec-lock-gate ((obj elec-lock-gate) (arg0 symbol))
(dotimes (v1-0 (-> obj actor-group-count))
(dotimes (a2-0 (-> obj actor-group v1-0 length))
(when (or (not arg0) (let ((a3-5 (-> obj actor-group v1-0 data a2-0 actor)))
(!= (if a3-5
(-> a3-5 extra process)
)
arg0
)
)
)
(if (not (logtest? (-> obj actor-group v1-0 data a2-0 actor extra perm status) (entity-perm-status subtask-complete))
)
(return #f)
)
)
)
)
#t
)
(defmethod set-state! elec-lock-gate ((obj elec-lock-gate))
"If either [[actor-option::17]] is set on the [[elec-gate]] or the related subtask is completed
make the gate `idle`.
Otherwise, the gate will be `active`."
(if (elec-lock-gate-method-31 obj #f)
(go (method-of-object obj shutdown))
((method-of-type fort-elec-gate set-state!) obj)
)
(none)
)
(defmethod set-palette! elec-lock-gate ((obj elec-lock-gate))
"Sets the [[elec-gate]]'s `palette-id` appropriately"
(local-vars (sv-16 res-tag))
(let ((t9-0 (method-of-type fort-elec-gate set-palette!)))
(t9-0 obj)
)
(logclear! (-> obj mask) (process-mask actor-pause))
(set! sv-16 (new 'static 'res-tag))
(let ((v1-4 (res-lump-data (-> obj entity) 'actor-groups pointer :tag-ptr (& sv-16))))
(cond
((and v1-4 (nonzero? (-> sv-16 elt-count)))
(set! (-> obj actor-group) (the-as (pointer actor-group) v1-4))
(set! (-> obj actor-group-count) (the-as int (-> sv-16 elt-count)))
)
(else
(set! (-> obj actor-group) (the-as (pointer actor-group) #f))
(set! (-> obj actor-group-count) 0)
0
)
)
)
(none)
)
@@ -7,3 +7,808 @@
;; DECOMP BEGINS
(deftype fort-twist-rail (process-drawable)
((sync sync-eased :inline :offset-assert 200)
(init-quat quaternion :inline :offset-assert 256)
)
:heap-base #x90
:method-count-assert 21
:size-assert #x110
:flag-assert #x1500900110
(:methods
(idle () _type_ :state 20)
)
)
(defskelgroup skel-fort-twist-rail fort-twist-rail 0 3
((1 (meters 999999)))
:bounds (static-spherem 0 0 10 14)
)
(defstate idle (fort-twist-rail)
:virtual #t
:trans (the-as (function none :behavior fort-twist-rail) rider-trans)
:code (the-as (function none :behavior fort-twist-rail) sleep-code)
:post (behavior ()
(let ((f0-0 (get-norm! (-> self sync) 0)))
(quaternion-rotate-y! (-> self root quat) (-> self init-quat) (+ -2730.6667 (* 5461.3335 f0-0)))
)
(rider-post)
(none)
)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! fort-twist-rail ((obj fort-twist-rail) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player))))
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s4-0 reaction) cshape-reaction-default)
(set! (-> s4-0 no-reaction)
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
)
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0)))
(set! (-> s4-0 total-prims) (the-as uint 3))
(set! (-> s3-0 prim-core collide-as) (collide-spec obstacle pusher))
(set! (-> s3-0 prim-core collide-with) (collide-spec jak bot player-list))
(set! (-> s3-0 prim-core action) (collide-action solid rideable))
(set! (-> s3-0 transform-index) 3)
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 40960.0 57344.0)
(set! (-> s4-0 root-prim) s3-0)
)
(pusher-init s4-0)
(let ((v1-15 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0))))
(set! (-> v1-15 prim-core collide-as) (collide-spec pusher))
(set! (-> v1-15 prim-core collide-with) (collide-spec jak bot player-list))
(set! (-> v1-15 prim-core action) (collide-action solid rideable))
(set! (-> v1-15 transform-index) 3)
(set-vector! (-> v1-15 local-sphere) 0.0 -19660.8 0.0 24576.0)
)
(let ((v1-17 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
(set! (-> v1-17 prim-core collide-as) (collide-spec pusher))
(set! (-> v1-17 prim-core collide-with) (collide-spec jak bot player-list))
(set! (-> v1-17 prim-core action) (collide-action solid rideable))
(set! (-> v1-17 transform-index) 3)
(set-vector! (-> v1-17 local-sphere) 0.0 0.0 45056.0 45056.0)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(let ((v1-20 (-> s4-0 root-prim)))
(set! (-> s4-0 backup-collide-as) (-> v1-20 prim-core collide-as))
(set! (-> s4-0 backup-collide-with) (-> v1-20 prim-core collide-with))
)
(set! (-> obj root) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-fort-twist-rail" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(quaternion-copy! (-> obj init-quat) (-> obj root quat))
(let ((a1-14 (new 'stack-no-clear 'sync-info-params)))
(let ((v1-26 0))
(if #t
(set! v1-26 (logior v1-26 1))
)
(set! (-> a1-14 sync-type) 'sync-eased)
(set! (-> a1-14 sync-flags) (the-as sync-flags v1-26))
)
(set! (-> a1-14 period) (the-as uint 900))
(set! (-> a1-14 entity) (-> obj entity))
(set! (-> a1-14 percent) 0.0)
(set! (-> a1-14 ease-in) 0.15)
(set! (-> a1-14 ease-out) 0.15)
(set! (-> a1-14 pause-in) 0.0)
(set! (-> a1-14 pause-out) 0.0)
(initialize! (-> obj sync) a1-14)
)
(let ((a0-29 (-> obj skel root-channel 0)))
(set! (-> a0-29 frame-group) (the-as art-joint-anim (-> obj draw art-group data 3)))
(set! (-> a0-29 frame-num) 0.0)
(joint-control-channel-group! a0-29 (the-as art-joint-anim (-> obj draw art-group data 3)) num-func-identity)
)
(transform-post)
(go (method-of-object obj idle))
(none)
)
(deftype fort-elec-belt-inst (process-drawable)
((l-spec lightning-spec :offset-assert 200)
(l-bolt lightning-control :offset-assert 204)
(points vector 17 :inline :offset-assert 208)
(path-u float :offset-assert 480)
(path-du float :offset-assert 484)
(attack-id uint32 :offset-assert 488)
(sound-id uint32 :offset-assert 492)
)
:heap-base #x170
:method-count-assert 23
:size-assert #x1f0
:flag-assert #x17017001f0
(:methods
(idle () _type_ :state 20)
(running () _type_ :state 21)
(die () _type_ :state 22)
)
)
(defskelgroup skel-fort-elec-belt-inst fort-elec-belt fort-elec-belt-lod0-jg fort-elec-belt-idle-ja
((fort-elec-belt-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 -19 20)
)
(defstate idle (fort-elec-belt-inst)
:virtual #t
:code (behavior ()
(suspend)
(let ((v1-0 (-> self l-bolt))
(a0-0 1)
)
(let ((a1-1 (!= a0-0 (-> v1-0 state mode))))
(case a0-0
((3)
(if a1-1
(set! (-> v1-0 state counter) 0.0)
)
)
((1)
(set! (-> v1-0 state start-color) (-> v1-0 spec start-color))
(set! (-> v1-0 state end-color) (-> v1-0 spec end-color))
)
)
)
(set! (-> v1-0 state mode) (the-as lightning-mode a0-0))
)
(go-virtual running)
(none)
)
:post (behavior ()
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer self))
(set! (-> a1-0 num-params) 2)
(set! (-> a1-0 message) 'get-point-norm)
(set! (-> a1-0 param 0) (the-as uint (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 param 1) (the-as uint (-> self path-u)))
(let ((v1-7 (the-as vector (send-event-function (ppointer->process (-> self parent)) a1-0))))
(set! (-> self root trans quad) (-> v1-7 quad))
)
)
(+! (-> self path-u) (* (-> self path-du) (-> self clock seconds-per-frame)))
(ja-post)
(none)
)
)
(defstate running (fort-elec-belt-inst)
:virtual #t
:exit (behavior ()
(sound-stop (the-as sound-id (-> self sound-id)))
(none)
)
:trans (behavior ()
(if (>= (-> self path-u) 1.0)
(go-virtual die)
)
(none)
)
:code (the-as (function none :behavior fort-elec-belt-inst) sleep-code)
:post (behavior ()
(local-vars
(sv-1696
(function lightning-spec time-frame symbol process-drawable vector vector none :behavior lightning-tracker)
)
(sv-1712 lightning-spec)
)
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer self))
(set! (-> a1-0 num-params) 2)
(set! (-> a1-0 message) 'get-point-norm)
(set! (-> a1-0 param 0) (the-as uint (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 param 1) (the-as uint (-> self path-u)))
(let ((v1-7 (the-as vector (send-event-function (ppointer->process (-> self parent)) a1-0))))
(set! (-> self root trans quad) (-> v1-7 quad))
)
)
(+! (-> self path-u) (* (-> self path-du) (-> self clock seconds-per-frame)))
(let ((s3-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4)))
(s2-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 5)))
)
(let ((t2-0 (new 'stack-no-clear 'vector)))
(vector+! t2-0 s3-0 s2-0)
(vector-float*! t2-0 t2-0 0.5)
(set! (-> t2-0 y) (+ -20480.0 (-> t2-0 y)))
(sound-play "sliding-laser" :id (the-as sound-id (-> self sound-id)) :position t2-0)
)
(let* ((v0-4 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) s2-0 s3-0) 1.0))
(gp-1 (vector-cross! (new 'stack-no-clear 'vector) v0-4 *up-vector*))
(s5-0 (-> self l-bolt))
(f30-0 90112.0)
(f0-6 (* f30-0 f30-0))
(s4-1 (vector-! (new 'stack-no-clear 'vector) s2-0 s3-0))
(f1-4 (* 0.5 (vector-length s4-1)))
)
(let ((f2-2 (* f1-4 f1-4)))
(vector-float*! s4-1 s4-1 0.5)
(vector+! s4-1 s3-0 s4-1)
(+! (-> s4-1 y) (sqrtf (- f0-6 f2-2)))
)
(let* ((f0-12 (* 2.0 (asin (/ f1-4 f30-0))))
(f28-1 (* 0.0625 f0-12))
(s3-1 (new 'stack-no-clear 'vector))
)
(set! (-> s3-1 x) 0.0)
(set! (-> s3-1 y) (- f30-0))
(set! (-> s3-1 z) 0.0)
(set! (-> s3-1 w) 0.0)
(let ((a2-2 (quaternion-vector-angle! (new 'stack-no-clear 'quaternion) gp-1 (* -0.5 f0-12))))
(vector-orient-by-quat! s3-1 s3-1 a2-2)
)
(dotimes (s2-1 17)
(let ((s1-1 (vector+! (new 'stack-no-clear 'vector) s4-1 s3-1)))
(set-point! s5-0 s2-1 s1-1)
(set! (-> self points s2-1 quad) (-> s1-1 quad))
)
(let ((a2-5 (quaternion-vector-angle! (new 'stack-no-clear 'quaternion) gp-1 f28-1)))
(vector-orient-by-quat! s3-1 s3-1 a2-5)
)
)
)
)
)
(let ((gp-2 (new 'stack-no-clear 'collide-query)))
(let ((s5-1 (new 'stack-no-clear 'bounding-box)))
(let ((a1-15 (new 'stack-no-clear 'inline-array 'sphere 17)))
(dotimes (v1-37 17)
(set! (-> a1-15 v1-37 quad) (-> self points v1-37 quad))
(set! (-> a1-15 v1-37 r) 4096.0)
)
(set-from-spheres! s5-1 a1-15 17)
)
(set! (-> gp-2 collide-with) (collide-spec jak bot player-list))
(set! (-> gp-2 ignore-process0) self)
(set! (-> gp-2 ignore-process1) #f)
(set! (-> gp-2 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1))
(set! (-> gp-2 action-mask) (collide-action solid))
(mem-copy! (the-as pointer (-> gp-2 bbox)) (the-as pointer s5-1) 32)
)
(fill-using-bounding-box *collide-cache* gp-2)
)
(let ((gp-3 1))
(while (< gp-3 17)
(let ((s3-2 (new 'stack-no-clear 'collide-query))
(s5-2 (-> self points (+ gp-3 -1)))
(s4-2 (-> self points gp-3))
)
(let ((v1-52 (vector-! (new 'stack-no-clear 'vector) s4-2 s5-2)))
(set! (-> s3-2 start-pos quad) (-> s5-2 quad))
(set! (-> s3-2 move-dist quad) (-> v1-52 quad))
)
(let ((v1-54 s3-2))
(set! (-> v1-54 radius) 4096.0)
(set! (-> v1-54 collide-with) (collide-spec jak bot player-list))
(set! (-> v1-54 ignore-process0) self)
(set! (-> v1-54 ignore-process1) #f)
(set! (-> v1-54 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1))
(set! (-> v1-54 action-mask) (collide-action solid semi-solid))
)
(when (>= (probe-using-line-sphere *collide-cache* s3-2) 0.0)
(let* ((s2-2 (-> s3-2 best-other-tri collide-ptr))
(s3-3 (if (type? s2-2 collide-shape-prim-sphere)
(the-as collide-shape-prim-sphere s2-2)
)
)
)
(when s3-3
(sound-play "laser-hit")
(let ((s2-4 (get-process *default-dead-pool* lightning-tracker #x4000)))
(when s2-4
(let ((t9-19 (method-of-type lightning-tracker activate)))
(t9-19
(the-as lightning-tracker s2-4)
*entity-pool*
(symbol->string (-> lightning-tracker symbol))
(the-as pointer #x70004000)
)
)
(let ((s1-3 run-function-in-process)
(s0-0 s2-4)
)
(set! sv-1696 lightning-tracker-init)
(set! sv-1712 (-> self l-spec))
(let ((a3-3 (the int (* 3.0 (rand-vu-float-range 5.0 11.0))))
(t0-2 #f)
(t1-2 #f)
)
((the-as (function object object object object object object object object none) s1-3)
s0-0
sv-1696
sv-1712
a3-3
t0-2
t1-2
s5-2
s4-2
)
)
)
(-> s2-4 ppointer)
)
)
(let ((v1-68 (vector-reset! (new 'stack-no-clear 'vector)))
(a1-28 (new 'stack-no-clear 'event-message-block))
)
(set! (-> a1-28 from) (process->ppointer self))
(set! (-> a1-28 num-params) 2)
(set! (-> a1-28 message) 'attack)
(set! (-> a1-28 param 0) (the-as uint #f))
(let ((a0-50 (new 'static 'attack-info :mask (attack-info-mask vector invinc-time shove-up id))))
(set! (-> a0-50 id) (-> self attack-id))
(set! (-> a0-50 invinc-time) (seconds 3))
(set! (-> a0-50 vector quad) (-> v1-68 quad))
(set! (-> a0-50 shove-up) 12288.0)
(set! (-> a1-28 param 1) (the-as uint a0-50))
)
(send-event-function (-> s3-3 cshape process) a1-28)
)
)
)
)
)
(+! gp-3 1)
)
)
(ja-post)
(none)
)
)
(defstate die (fort-elec-belt-inst)
:virtual #t
:code (behavior ()
(let ((v1-0 (-> self l-bolt))
(a0-0 3)
)
(let ((a1-1 (!= a0-0 (-> v1-0 state mode))))
(case a0-0
((3)
(if a1-1
(set! (-> v1-0 state counter) 0.0)
)
)
((1)
(set! (-> v1-0 state start-color) (-> v1-0 spec start-color))
(set! (-> v1-0 state end-color) (-> v1-0 spec end-color))
)
)
)
(set! (-> v1-0 state mode) (the-as lightning-mode a0-0))
)
(suspend)
(cleanup-for-death self)
(none)
)
)
;; WARN: Return type mismatch process-drawable vs fort-elec-belt-inst.
(defmethod relocate fort-elec-belt-inst ((obj fort-elec-belt-inst) (arg0 int))
(if (nonzero? (-> obj l-bolt))
(&+! (-> obj l-bolt) arg0)
)
(the-as fort-elec-belt-inst ((method-of-type process-drawable relocate) obj arg0))
)
(defmethod deactivate fort-elec-belt-inst ((obj fort-elec-belt-inst))
(sound-stop (the-as sound-id (-> obj sound-id)))
((the-as (function process-drawable none) (find-parent-method fort-elec-belt-inst 10)) obj)
(none)
)
;; WARN: Return type mismatch object vs none.
(defbehavior fort-elec-belt-inst-init-by-other fort-elec-belt-inst ((arg0 quaternion) (arg1 float) (arg2 float) (arg3 lightning-spec) (arg4 uint))
(set! (-> self root) (new 'process 'trsqv))
(initialize-skeleton
self
(the-as
skeleton-group
(art-group-get-by-name *level* "skel-fort-elec-belt-inst" (the-as (pointer uint32) #f))
)
(the-as pair 0)
)
(quaternion-copy! (-> self root quat) arg0)
(set! (-> self path-u) arg1)
(set! (-> self path-du) arg2)
(logclear! (-> self mask) (process-mask actor-pause))
(set! (-> self l-bolt) (new 'process 'lightning-control arg3 self 0.0))
(let ((v1-8 (-> self l-bolt))
(a0-7 0)
)
(let ((a1-7 (!= a0-7 (-> v1-8 state mode))))
(case a0-7
((3)
(if a1-7
(set! (-> v1-8 state counter) 0.0)
)
)
((1)
(set! (-> v1-8 state start-color) (-> v1-8 spec start-color))
(set! (-> v1-8 state end-color) (-> v1-8 spec end-color))
)
)
)
(set! (-> v1-8 state mode) (the-as lightning-mode a0-7))
)
(set! (-> self l-spec) arg3)
(set! (-> self attack-id) arg4)
(set! (-> self sound-id) (the-as uint (new-sound-id)))
(ja-no-eval :group! (-> self draw art-group data 2) :num! zero)
(ja-post)
(go-virtual idle)
(none)
)
(deftype fort-elec-belt (process)
((l-spec lightning-spec :offset-assert 128)
(next-spawn-time time-frame :offset-assert 136)
(path path-control :offset-assert 144)
(init-quat quaternion :inline :offset-assert 160)
(sync sync-linear :inline :offset-assert 176)
(attack-id uint32 :offset-assert 192)
(path-du float :offset-assert 196)
)
:heap-base #x50
:method-count-assert 16
:size-assert #xc8
:flag-assert #x10005000c8
(:methods
(idle () _type_ :state 14)
(fort-elec-belt-method-15 (_type_) none 15)
)
)
(defstate idle (fort-elec-belt)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(the-as object (case event-type
(('get-point-norm)
(get-point-at-percent-along-path!
(-> self path)
(the-as vector (-> event param 0))
(the-as float (-> event param 1))
'interp
)
)
)
)
)
:trans (behavior ()
(set-forrescb-electricity-scale! 1.0 0)
(when (>= (-> self clock frame-counter) (-> self next-spawn-time))
(process-spawn
fort-elec-belt-inst
(-> self init-quat)
0
(-> self path-du)
(-> self l-spec)
(-> self attack-id)
:to self
)
(set! (-> self next-spawn-time) (get-timeframe-offset! (-> self sync) 0))
)
(none)
)
:code (the-as (function none :behavior fort-elec-belt) sleep-code)
)
;; WARN: Return type mismatch symbol vs none.
(defmethod fort-elec-belt-method-15 fort-elec-belt ((obj fort-elec-belt))
(with-pp
(let* ((f28-0 (total-distance (-> obj path)))
(s5-0 (-> obj sync))
(f26-0 81.92)
(a0-3 (- (-> pp clock frame-counter) (get-timeframe-offset! s5-0 0)))
(v1-6 (-> s5-0 period))
(f30-0 (/ (* f26-0 (the float a0-3)) f28-0))
(f28-1 (/ (* f26-0 (the float v1-6)) f28-0))
)
(while (>= 1.0 f30-0)
(if (>= f30-0 0.0)
(process-spawn
fort-elec-belt-inst
(-> obj init-quat)
f30-0
(-> obj path-du)
(-> obj l-spec)
(-> obj attack-id)
:to obj
)
)
(+! f30-0 f28-1)
)
)
(none)
)
)
;; WARN: Return type mismatch process vs fort-elec-belt.
(defmethod relocate fort-elec-belt ((obj fort-elec-belt) (arg0 int))
(if (nonzero? (-> obj path))
(&+! (-> obj path) arg0)
)
(the-as fort-elec-belt ((method-of-type process relocate) obj arg0))
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! fort-elec-belt ((obj fort-elec-belt) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(local-vars (sv-64 int))
(quaternion-copy! (-> obj init-quat) (-> arg0 quat))
(let ((s5-0 (new 'stack-no-clear 'sync-info-params)))
(let ((s3-0 1200))
0.0
(set! sv-64 0)
(let ((v1-1 (res-lump-data arg0 'sync (pointer float) :tag-ptr (the-as (pointer res-tag) (& sv-64)))))
(when v1-1
(set! s3-0 (the int (* 300.0 (-> v1-1 0))))
(-> v1-1 1)
)
)
(let ((v1-2 0))
(if #t
(set! v1-2 (logior v1-2 1))
)
(set! (-> s5-0 sync-type) 'sync-linear)
(set! (-> s5-0 sync-flags) (the-as sync-flags v1-2))
)
(set! (-> s5-0 entity) arg0)
(set! (-> s5-0 period) (the-as uint s3-0))
)
(set! (-> s5-0 percent) 0.0)
(initialize! (-> obj sync) s5-0)
)
(set! (-> obj l-spec) (new 'static 'lightning-spec
:name #f
:flags (lightning-spec-flags lsf2)
:rand-func #x2
:start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
:end-color (new 'static 'rgba :a #x80)
:fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5)
:fade-start-factor 0.2
:fade-time 120.0
:texture (new 'static 'texture-id :index #x83 :page #xc)
:reduction 0.72
:num-points 17
:box-size 4997.12
:merge-factor 0.32
:merge-count 2
:radius 7372.8
:duration -1.0
:sound #f
)
)
(set! (-> obj path) (new 'process 'path-control obj 'path 0.0 (the-as entity #f) #f))
(logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text))
(set! (-> obj path-du) (/ 24576.0 (total-distance (-> obj path))))
(let* ((v1-14 *game-info*)
(a0-15 (+ (-> v1-14 attack-id) 1))
)
(set! (-> v1-14 attack-id) a0-15)
(set! (-> obj attack-id) a0-15)
)
(fort-elec-belt-method-15 obj)
(set! (-> obj next-spawn-time) (get-timeframe-offset! (-> obj sync) 0))
(logclear! (-> obj mask) (process-mask actor-pause))
(go (method-of-object obj idle))
(none)
)
(deftype fort-conveyor (conveyor)
()
:heap-base #x80
:method-count-assert 28
:size-assert #x100
:flag-assert #x1c00800100
)
(defskelgroup skel-fort-conveyor fort-conveyor fort-conveyor-lod0-jg fort-conveyor-idle-ja
((fort-conveyor-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 16 16.5)
)
(defmethod get-art-group fort-conveyor ((obj fort-conveyor))
"@returns The respective [[art-group]] for the [[conveyor]]"
(art-group-get-by-name *level* "skel-fort-conveyor" (the-as (pointer uint32) #f))
)
;; WARN: Return type mismatch collide-shape-moving vs none.
(defmethod reset-root! fort-conveyor ((obj fort-conveyor))
"Re-initializes the `root` [[trsqv]]"
(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) cshape-reaction-default)
(set! (-> s5-0 no-reaction)
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
)
(let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
(set! (-> s4-0 prim-core collide-as) (collide-spec pusher))
(set! (-> s4-0 prim-core collide-with) (collide-spec jak player-list))
(set! (-> s4-0 prim-core action) (collide-action solid rideable))
(set! (-> s4-0 transform-index) 0)
(set-vector! (-> s4-0 local-sphere) 0.0 0.0 65536.0 67584.0)
(set! (-> s5-0 total-prims) (the-as uint 1))
(set! (-> s5-0 root-prim) s4-0)
)
(pusher-init s5-0)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
(let ((v1-15 (-> s5-0 root-prim)))
(set! (-> s5-0 backup-collide-as) (-> v1-15 prim-core collide-as))
(set! (-> s5-0 backup-collide-with) (-> v1-15 prim-core collide-with))
)
(set! (-> obj root) s5-0)
)
(none)
)
;; WARN: Return type mismatch vector vs none.
(defmethod init! fort-conveyor ((obj fort-conveyor))
"Initializes defaults for things like the `speed` and `belt-radius`"
(set! (-> obj speed) -47104.0)
(set! (-> obj belt-radius) 24576.0)
(set! (-> obj pull-y-threshold) 4096.0)
(if (name= (-> obj name) "fort-conveyor-4")
(set-vector! (-> obj root scale) 0.8 0.0 0.657 1.0)
)
(none)
)
(defmethod set-and-get-ambient-sound! fort-conveyor ((obj fort-conveyor))
"So long as [[actor-option::16]] is not set, fetch the [[ambient-sound]] for the [[conveyor]]
and return it as well. Otherwise, set it to `0`"
(let* ((s5-0 (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) 0.0 'interp))
(v1-2 (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) 1.0 'interp))
(a3-3 (vector+! (new 'stack-no-clear 'vector) s5-0 v1-2))
)
(vector-float*! a3-3 a3-3 0.5)
(let ((v0-2 (new 'process 'ambient-sound (static-sound-spec "fort-conveyor" :fo-max 50) a3-3)))
(set! (-> obj sound) v0-2)
v0-2
)
)
)
(set-subtask-hook!
*game-info*
172
0
(the-as
(function object)
(lambda :behavior task-manager
()
(set-setting! 'sound-mode #f 0 1)
(set-setting! 'sound-excitement 'abs #x3f4ccccd 0)
(speech-control-method-10
*speech-control*
6
(new 'static 'speech-type-info
:min-delay #x4b0
:max-delay #x960
:list (new 'static 'boxed-array :type string
"kg001"
"kg002"
"kg004"
"kg006"
"kg001a"
"kg013"
"kg016"
"kg018"
"kg019"
"kg023"
"kg024"
"kg002a"
"kg004a"
"kg078a"
"kg079a"
"kg080a"
"kg081a"
"kg004a"
"kg082a"
"kg083a"
"kg084a"
"kg085a"
"kg086a"
"kg087a"
"kg088a"
"kg091a"
"kg023a"
"kg006a"
"kg092a"
"kg020a"
"kg093a"
"kg094a"
"kg095a"
"kg103a"
"kg104a"
"kg112a"
"kg024a"
"kg134"
"kg136"
"kg137"
"kg138"
"kg139"
"kg140"
"kg141"
)
)
)
(speech-control-method-10
*speech-control*
9
(new 'static 'speech-type-info
:priority 1
:min-delay #x12c
:max-delay #x258
:list (new 'static 'boxed-array :type string
"kg133"
"kg142"
"kg144"
"kg145"
"kg146"
"kg147"
"kg148"
"kg149"
"kg150"
"kg138"
"kg151"
"kg152"
"kg153"
"kg154"
"kg155"
"kg159"
"kg163"
"kg164"
)
)
)
(speech-control-method-10
*speech-control*
10
(new 'static 'speech-type-info :priority #xa :max-delay #x12c :list (new 'static 'boxed-array :type string
"kg166"
"kg167"
"kg168"
"kg169"
"kg171"
"kg172"
"kg173"
"kg174"
"kg175"
)
)
)
(none)
)
)
)
(set-subtask-hook!
*game-info*
172
1
(the-as
(function object)
(lambda :behavior task-manager () (speech-control-method-9 *speech-control*) (none))
)
)
+375
View File
@@ -7,3 +7,378 @@
;; DECOMP BEGINS
(deftype hip-trophy-a (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
(defskelgroup skel-hip-trophy-a hip-trophy-a hip-trophy-a-lod0-jg hip-trophy-a-idle-ja
((hip-trophy-a-lod0-mg (meters 999999)))
:bounds (static-spherem 1 -1 0 1.6)
)
(defstate idle (hip-trophy-a)
:virtual #t
:code (the-as (function none :behavior hip-trophy-a) sleep-code)
:post (the-as (function none :behavior hip-trophy-a) ja-post)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-a ((obj hip-trophy-a) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-a" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
(deftype hip-trophy-d (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
(defskelgroup skel-hip-trophy-d hip-trophy-d hip-trophy-d-lod0-jg hip-trophy-d-idle-ja
((hip-trophy-d-lod0-mg (meters 999999)))
:bounds (static-spherem -0.2 -0.5 0 2)
)
(defstate idle (hip-trophy-d)
:virtual #t
:code (the-as (function none :behavior hip-trophy-d) sleep-code)
:post (the-as (function none :behavior hip-trophy-d) ja-post)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-d ((obj hip-trophy-d) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-d" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
(deftype hip-trophy-f (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
(defskelgroup skel-hip-trophy-f hip-trophy-f hip-trophy-f-lod0-jg hip-trophy-f-idle-ja
((hip-trophy-f-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 2)
)
(defstate idle (hip-trophy-f)
:virtual #t
:code (the-as (function none :behavior hip-trophy-f) sleep-code)
:post (the-as (function none :behavior hip-trophy-f) ja-post)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-f ((obj hip-trophy-f) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-f" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
(deftype hip-trophy-g (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
(defskelgroup skel-hip-trophy-g hip-trophy-g hip-trophy-g-lod0-jg hip-trophy-g-idle-ja
((hip-trophy-g-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
(defstate idle (hip-trophy-g)
:virtual #t
:code (the-as (function none :behavior hip-trophy-g) sleep-code)
:post (the-as (function none :behavior hip-trophy-g) ja-post)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-g ((obj hip-trophy-g) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-g" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
(deftype hip-trophy-i (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
(defskelgroup skel-hip-trophy-i hip-trophy-i hip-trophy-i-lod0-jg hip-trophy-i-idle-ja
((hip-trophy-i-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
(defstate idle (hip-trophy-i)
:virtual #t
:code (the-as (function none :behavior hip-trophy-i) sleep-code)
:post (the-as (function none :behavior hip-trophy-i) ja-post)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-i ((obj hip-trophy-i) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-i" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
(deftype hip-trophy-j (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
(defskelgroup skel-hip-trophy-j hip-trophy-j hip-trophy-j-lod0-jg hip-trophy-j-idle-ja
((hip-trophy-j-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
(defstate idle (hip-trophy-j)
:virtual #t
:code (the-as (function none :behavior hip-trophy-j) sleep-code)
:post (the-as (function none :behavior hip-trophy-j) ja-post)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-j ((obj hip-trophy-j) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-j" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
(deftype hip-trophy-n (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
(defskelgroup skel-hip-trophy-n hip-trophy-n hip-trophy-n-lod0-jg hip-trophy-n-idle-ja
((hip-trophy-n-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
(defstate idle (hip-trophy-n)
:virtual #t
:code (the-as (function none :behavior hip-trophy-n) sleep-code)
:post (the-as (function none :behavior hip-trophy-n) ja-post)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-n ((obj hip-trophy-n) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-n" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
(deftype hip-trophy-m (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
(defskelgroup skel-hip-trophy-m hip-trophy-m hip-trophy-m-lod0-jg hip-trophy-m-idle-ja
((hip-trophy-m-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
(defstate idle (hip-trophy-m)
:virtual #t
:code (the-as (function none :behavior hip-trophy-m) sleep-code)
:post (the-as (function none :behavior hip-trophy-m) ja-post)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-m ((obj hip-trophy-m) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-m" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
+451
View File
@@ -7,3 +7,454 @@
;; DECOMP BEGINS
(deftype intro-flamer (process-drawable)
((up-dir vector :inline :offset-assert 208)
(average-dir vector :inline :offset-assert 224)
(id int32 :offset-assert 240)
(path-u float :offset-assert 244)
(path-du float :offset-assert 248)
(z-rot float :offset-assert 252)
(flit-prev-offset vector :inline :offset-assert 256)
(flit-next-offset vector :inline :offset-assert 272)
(flit-factor float :offset-assert 288)
(flit-timer uint64 :offset-assert 296)
(flit-interval uint64 :offset-assert 304)
)
:heap-base #xc0
:method-count-assert 23
:size-assert #x138
:flag-assert #x1700c00138
(:methods
(idle () _type_ :state 20)
(die () _type_ :state 21)
(intro-flamer-method-22 (_type_) path-control 22)
)
)
(defskelgroup skel-intro-flamer intro-flamer intro-flamer-lod0-jg intro-flamer-fly-straight-ja
((intro-flamer-lod0-mg (meters 20)) (intro-flamer-lod1-mg (meters 40)) (intro-flamer-lod2-mg (meters 999999)))
:bounds (static-spherem 0 0 0 7.5)
:shadow intro-flamer-shadow-mg
:origin-joint-index 3
)
(defstate idle (intro-flamer)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('die)
(go-virtual die)
)
)
)
:trans (behavior ()
(if (= (-> self path-u) 1.0)
(go-virtual die)
)
(when (>= (- (-> self clock frame-counter) (the-as int (-> self flit-timer)))
(the-as time-frame (-> self flit-interval))
)
(let ((f28-0 (rand-vu-float-range -1.0 1.0))
(f30-0 (rand-vu-float-range -1.0 1.0))
(f0-1 (rand-vu-float-range 0.2 0.6))
)
(set! (-> self flit-prev-offset quad) (-> self flit-next-offset quad))
(set-vector! (-> self flit-next-offset) (* 4096.0 f28-0) (* 4096.0 f30-0) 0.0 0.0)
(set! (-> self flit-factor) 0.0)
(set! (-> self flit-interval) (the-as uint (the int (* 300.0 f0-1))))
)
(set! (-> self flit-timer) (the-as uint (-> self clock frame-counter)))
)
(none)
)
:code (behavior ()
(ja-channel-set! 1)
(let ((f30-0 (rand-vu-float-range 0.8 1.2)))
(until #f
(ja-no-eval :group! (-> self draw art-group data 5)
:num! (seek!
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) frames num-frames) -1))
f30-0
)
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max f30-0))
)
)
)
#f
(none)
)
:post (behavior ()
(seek! (-> self path-u) 1.0 (* (-> self path-du) (-> self clock seconds-per-frame)))
(let ((s3-0 (intro-flamer-method-22 self))
(s4-0 (new 'stack-no-clear 'vector))
(s5-0 (new 'stack-no-clear 'quaternion))
(f30-0 (-> self path-u))
(gp-0 (new 'stack-no-clear 'vector))
)
(get-point-at-percent-along-path! s3-0 gp-0 f30-0 'interp)
(displacement-between-points-at-percent-normalized! s3-0 s4-0 (fmin 1.0 (+ 0.05 f30-0)))
(let ((t9-4 vector-normalize!)
(a0-4 (new 'stack-no-clear 'vector))
)
(set! (-> a0-4 x) (-> s4-0 x))
(set! (-> a0-4 y) 0.0)
(set! (-> a0-4 z) (-> s4-0 z))
(set! (-> a0-4 w) 1.0)
(let ((s3-1 (t9-4 a0-4 1.0))
(t9-5 vector-normalize!)
(a0-5 (new 'stack-no-clear 'vector))
)
(set! (-> a0-5 x) (-> self average-dir x))
(set! (-> a0-5 y) 0.0)
(set! (-> a0-5 z) (-> self average-dir z))
(set! (-> a0-5 w) 1.0)
(let* ((v1-10 (t9-5 a0-5 1.0))
(f0-15 (vector-dot (vector-cross! (new 'stack-no-clear 'vector) s3-1 v1-10) *up-vector*))
(f0-16 (* 49152.0 f0-15))
)
(set! (-> self z-rot) (deg-seek
(-> self z-rot)
(fmax -15473.777 (fmin 15473.777 f0-16))
(* 21845.334 (-> self clock seconds-per-frame))
)
)
)
)
)
(let ((a2-5 (vector-rotate-z! (new 'stack-no-clear 'vector) *up-vector* (-> self z-rot))))
(forward-up->quaternion s5-0 s4-0 a2-5)
)
(quaternion-slerp! (-> self root quat) (-> self root quat) s5-0 (* 8.0 (-> self clock seconds-per-frame)))
(seek! (-> self flit-factor) 1.0 (* 8.0 (-> self clock seconds-per-frame)))
(let* ((v1-25 (-> self flit-prev-offset))
(a1-10 (-> self flit-next-offset))
(a0-14 (vector-! (new 'stack-no-clear 'vector) a1-10 v1-25))
(s5-1 (new 'stack-no-clear 'vector))
)
(vector+float*! s5-1 v1-25 a0-14 (-> self flit-factor))
(vector-orient-by-quat! s5-1 s5-1 (-> self root quat))
(vector+! (-> self root trans) gp-0 s5-1)
)
)
(cond
((logtest? (-> self draw status) (draw-control-status on-screen))
(new 'stack-no-clear 'vector)
(new 'stack-no-clear 'vector)
(let ((gp-1 (new 'stack-no-clear 'collide-query)))
(set! (-> gp-1 start-pos quad) (-> self root trans quad))
(set-vector! (-> gp-1 move-dist) 0.0 -81920.0 0.0 1.0)
(let ((v1-37 gp-1))
(set! (-> v1-37 radius) 2048.0)
(set! (-> v1-37 collide-with) (collide-spec backgnd))
(set! (-> v1-37 ignore-process0) self)
(set! (-> v1-37 ignore-process1) #f)
(set! (-> v1-37 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1))
(set! (-> v1-37 action-mask) (collide-action solid))
)
(cond
((>= (fill-and-probe-using-line-sphere *collide-cache* gp-1) 0.0)
(let ((v1-41 (-> self draw shadow-ctrl)))
(logclear! (-> v1-41 settings flags) (shadow-flags disable-draw))
)
0
(let ((a0-28 (-> gp-1 best-other-tri intersect)))
(let ((f0-36 (-> self root trans y)))
(let ((v1-45 (-> self draw shadow-ctrl)))
(set! (-> v1-45 settings bot-plane w) (- (+ (- -12288.0 f0-36) (-> a0-28 y))))
)
0
(let ((v1-48 (-> self draw shadow-ctrl)))
(set! (-> v1-48 settings top-plane w) (- (+ (- 12288.0 f0-36) (-> a0-28 y))))
)
)
0
(let* ((f2-2 (vector-vector-distance a0-28 (-> self root trans)))
(f0-41 (* 0.000030517578 (fmax 0.0 (fmin 32768.0 (+ -57344.0 f2-2)))))
)
(set! (-> self draw shadow-ctrl settings shadow-dir w) (lerp 409600.0 40960.0 f0-41))
)
)
)
(else
(let ((v1-58 (-> self draw shadow-ctrl)))
(logior! (-> v1-58 settings flags) (shadow-flags disable-draw))
)
0
)
)
)
)
(else
(let ((v1-61 (-> self draw shadow-ctrl)))
(logior! (-> v1-61 settings flags) (shadow-flags disable-draw))
)
0
)
)
(ja-post)
(none)
)
)
(defstate die (intro-flamer)
:virtual #t
:code (behavior ()
(suspend)
(cleanup-for-death self)
(none)
)
)
;; WARN: Return type mismatch object vs path-control.
(defmethod intro-flamer-method-22 intro-flamer ((obj intro-flamer))
(the-as path-control (send-event (ppointer->process (-> obj parent)) 'path (-> obj id)))
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! intro-flamer ((obj intro-flamer) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-intro-flamer" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(go (method-of-object obj idle))
(none)
)
;; WARN: Return type mismatch object vs none.
(defbehavior intro-flamer-init-by-other intro-flamer ((arg0 int) (arg1 path-control) (arg2 vector))
(set! (-> self root) (new 'process 'trsqv))
(initialize-skeleton
self
(the-as skeleton-group (art-group-get-by-name *level* "skel-intro-flamer" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(set! (-> self draw force-lod) 2)
(set! (-> self id) arg0)
(set! (-> self path-u) 0.0)
(set! (-> self path-du) (rand-vu-float-range 0.15 0.32))
(set! (-> self z-rot) 0.0)
(set! (-> self flit-timer) (the-as uint (-> self clock frame-counter)))
(set! (-> self flit-interval) (the-as uint 0))
(vector-reset! (-> self flit-prev-offset))
(vector-reset! (-> self flit-next-offset))
(set! (-> self flit-factor) 0.0)
(get-point-in-path! arg1 (-> self root trans) 0.0 'interp)
(let ((s4-1 (new 'stack-no-clear 'vector)))
(displacement-between-points-at-percent-normalized! arg1 s4-1 0.0)
(forward-up-nopitch->quaternion (-> self root quat) s4-1 *up-vector*)
)
(set! (-> self draw shadow-ctrl)
(new 'process 'shadow-control 0.0 0.0 614400.0 (shadow-flags shdf03) 491520.0)
)
(set! (-> self draw light-index) (the-as uint 30))
(set! (-> self average-dir quad) (-> arg2 quad))
(go-virtual idle)
(none)
)
(deftype metalhead-spawner (process)
((path-tbl path-control 19 :offset-assert 128)
(init-pos vector :inline :offset-assert 208)
(average-dir vector :inline :offset-assert 224)
)
:heap-base #x70
:method-count-assert 17
:size-assert #xf0
:flag-assert #x11007000f0
(:methods
(idle () _type_ :state 14)
(active () _type_ :state 15)
(die () _type_ :state 16)
)
)
(defstate idle (metalhead-spawner)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('trigger)
(go-virtual active)
)
(('path)
(-> self path-tbl (-> event param 0))
)
)
)
:code (the-as (function none :behavior metalhead-spawner) sleep-code)
)
(defstate active (metalhead-spawner)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('untrigger)
(go-virtual idle)
)
(('die)
(go-virtual die)
)
(('path)
(-> self path-tbl (-> event param 0))
)
)
)
:code (behavior ()
(let ((gp-0 0))
(until #f
(set! gp-0 (mod (+ gp-0 (rand-vu-int-range 1 6)) 19))
(let ((s5-0 (get-process *default-dead-pool* intro-flamer #x4000)))
(when s5-0
(let ((t9-2 (method-of-type process activate)))
(t9-2 s5-0 self (symbol->string (-> intro-flamer symbol)) (the-as pointer #x70004000))
)
(run-now-in-process s5-0 intro-flamer-init-by-other gp-0 (-> self path-tbl gp-0) (-> self average-dir))
(-> s5-0 ppointer)
)
)
(let ((s5-1 (the int (* 300.0 (rand-vu-float-range 0.03 0.08))))
(s4-0 (-> self clock frame-counter))
)
(until (>= (- (-> self clock frame-counter) s4-0) s5-1)
(suspend)
)
)
)
)
#f
(none)
)
:post (behavior ()
(dotimes (gp-0 19)
(debug-draw (-> self path-tbl gp-0))
)
(none)
)
)
(defstate die (metalhead-spawner)
:virtual #t
:code (behavior ()
(let ((gp-0 (-> self child)))
(while gp-0
(send-event (ppointer->process gp-0) 'die)
(set! gp-0 (-> gp-0 0 brother))
)
)
(while (-> self child)
(suspend)
)
(process-entity-status! self (entity-perm-status dead) #t)
(none)
)
)
;; WARN: Return type mismatch process vs metalhead-spawner.
(defmethod relocate metalhead-spawner ((obj metalhead-spawner) (arg0 int))
(dotimes (v1-0 19)
(if (nonzero? (-> obj path-tbl v1-0))
(&+! (-> obj path-tbl v1-0) arg0)
)
)
(the-as
metalhead-spawner
((the-as (function process int process) (find-parent-method metalhead-spawner 7)) obj arg0)
)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! metalhead-spawner ((obj metalhead-spawner) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj init-pos quad) (-> arg0 extra trans quad))
(vector-reset! (-> obj average-dir))
(dotimes (s5-0 19)
(let ((s4-0 (new 'process 'curve-control obj 'path (the float (+ s5-0 1)))))
(set! (-> obj path-tbl s5-0) s4-0)
(logior! (-> s4-0 flags) (path-control-flag display draw-line draw-point draw-text))
(let* ((s3-0 (get-point-at-percent-along-path! s4-0 (new 'stack-no-clear 'vector) 0.0 'interp))
(v1-10 (get-point-at-percent-along-path! s4-0 (new 'stack-no-clear 'vector) 1.0 'interp))
(s4-2 (vector-! (new 'stack-no-clear 'vector) v1-10 s3-0))
)
(vector-normalize! s4-2 1.0)
(vector+! (-> obj average-dir) (-> obj average-dir) s4-2)
)
)
)
(vector-normalize! (-> obj average-dir) 1.0)
(go (method-of-object obj idle))
(none)
)
(deftype vil-windmill-sail (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
(defskelgroup skel-vil-windmill-sail vil-windmill-sail vil-windmill-sail-lod0-jg vil-windmill-sail-idle-ja
((vil-windmill-sail-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 25)
)
(defstate idle (vil-windmill-sail)
:virtual #t
:code (behavior ()
(until #f
(ja-no-eval :group! (ja-group)
:num! (seek! (the float (+ (-> (ja-group) frames num-frames) -1)))
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
)
)
#f
(none)
)
:post (the-as (function none :behavior vil-windmill-sail) ja-post)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! vil-windmill-sail ((obj vil-windmill-sail) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-vil-windmill-sail" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(go (method-of-object obj idle))
(none)
)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -7,3 +7,484 @@
;; DECOMP BEGINS
(define *slime-clut* (new 'static 'clut16x16 :clut (new 'static 'array rgba 256
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x53 :g #x55 :b #x13 :a #x80)
(new 'static 'rgba :r #x55 :g #x58 :b #x13 :a #x80)
(new 'static 'rgba :r #x57 :g #x5c :b #x13 :a #x80)
(new 'static 'rgba :r #x59 :g #x5f :b #x13 :a #x80)
(new 'static 'rgba :r #x5b :g #x63 :b #x13 :a #x80)
(new 'static 'rgba :r #x5c :g #x66 :b #x13 :a #x80)
(new 'static 'rgba :r #x5e :g #x69 :b #x13 :a #x80)
(new 'static 'rgba :r #x60 :g #x6d :b #x13 :a #x80)
(new 'static 'rgba :r #x60 :g #x6d :b #x14 :a #x80)
(new 'static 'rgba :r #x5e :g #x69 :b #x13 :a #x80)
(new 'static 'rgba :r #x5c :g #x66 :b #x13 :a #x80)
(new 'static 'rgba :r #x5a :g #x62 :b #x13 :a #x80)
(new 'static 'rgba :r #x59 :g #x5f :b #x13 :a #x80)
(new 'static 'rgba :r #x57 :g #x5c :b #x13 :a #x80)
(new 'static 'rgba :r #x55 :g #x58 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x53 :b #x12 :a #x80)
(new 'static 'rgba :r #x53 :g #x54 :b #x12 :a #x80)
(new 'static 'rgba :r #x54 :g #x55 :b #x12 :a #x80)
(new 'static 'rgba :r #x55 :g #x56 :b #x12 :a #x80)
(new 'static 'rgba :r #x55 :g #x58 :b #x12 :a #x80)
(new 'static 'rgba :r #x56 :g #x59 :b #x12 :a #x80)
(new 'static 'rgba :r #x57 :g #x5a :b #x12 :a #x80)
(new 'static 'rgba :r #x58 :g #x5b :b #x12 :a #x80)
(new 'static 'rgba :r #x58 :g #x5c :b #x12 :a #x80)
(new 'static 'rgba :r #x59 :g #x5e :b #x12 :a #x80)
(new 'static 'rgba :r #x5a :g #x5f :b #x12 :a #x80)
(new 'static 'rgba :r #x5b :g #x60 :b #x12 :a #x80)
(new 'static 'rgba :r #x5c :g #x61 :b #x12 :a #x80)
(new 'static 'rgba :r #x5c :g #x62 :b #x12 :a #x80)
(new 'static 'rgba :r #x5d :g #x64 :b #x12 :a #x80)
(new 'static 'rgba :r #x5e :g #x65 :b #x12 :a #x80)
(new 'static 'rgba :r #x5f :g #x66 :b #x12 :a #x80)
(new 'static 'rgba :r #x5f :g #x67 :b #x12 :a #x80)
(new 'static 'rgba :r #x60 :g #x68 :b #x12 :a #x80)
(new 'static 'rgba :r #x61 :g #x6a :b #x12 :a #x80)
(new 'static 'rgba :r #x62 :g #x6b :b #x12 :a #x80)
(new 'static 'rgba :r #x63 :g #x6c :b #x12 :a #x80)
(new 'static 'rgba :r #x63 :g #x6d :b #x12 :a #x80)
(new 'static 'rgba :r #x64 :g #x6e :b #x12 :a #x80)
(new 'static 'rgba :r #x65 :g #x70 :b #x12 :a #x80)
(new 'static 'rgba :r #x66 :g #x71 :b #x12 :a #x80)
(new 'static 'rgba :r #x66 :g #x72 :b #x12 :a #x80)
(new 'static 'rgba :r #x67 :g #x73 :b #x12 :a #x80)
(new 'static 'rgba :r #x68 :g #x74 :b #x12 :a #x80)
(new 'static 'rgba :r #x69 :g #x76 :b #x12 :a #x80)
(new 'static 'rgba :r #x69 :g #x77 :b #x12 :a #x80)
(new 'static 'rgba :r #x6c :g #x7c :b #x12 :a #x80)
(new 'static 'rgba :r #x73 :g #x86 :b #x12 :a #x80)
(new 'static 'rgba :r #x7a :g #x91 :b #x12 :a #x80)
(new 'static 'rgba :r #x81 :g #x9c :b #x11 :a #x80)
(new 'static 'rgba :r #x88 :g #xa6 :b #x11 :a #x80)
(new 'static 'rgba :r #x8f :g #xb1 :b #x11 :a #x80)
(new 'static 'rgba :r #x96 :g #xbc :b #x11 :a #x80)
(new 'static 'rgba :r #x9e :g #xc7 :b #x11 :a #x80)
(new 'static 'rgba :r #x9e :g #xc7 :b #x11 :a #x80)
(new 'static 'rgba :r #x99 :g #xc0 :b #x11 :a #x80)
(new 'static 'rgba :r #x94 :g #xb9 :b #x11 :a #x80)
(new 'static 'rgba :r #x90 :g #xb2 :b #x11 :a #x80)
(new 'static 'rgba :r #x8b :g #xab :b #x11 :a #x80)
(new 'static 'rgba :r #x87 :g #xa4 :b #x11 :a #x80)
(new 'static 'rgba :r #x82 :g #x9d :b #x12 :a #x80)
(new 'static 'rgba :r #x79 :g #x8f :b #x12 :a #x80)
(new 'static 'rgba :r #x77 :g #x8b :b #x12 :a #x80)
(new 'static 'rgba :r #x77 :g #x8d :b #x12 :a #x80)
(new 'static 'rgba :r #x78 :g #x8e :b #x12 :a #x80)
(new 'static 'rgba :r #x79 :g #x8f :b #x12 :a #x80)
(new 'static 'rgba :r #x7a :g #x90 :b #x12 :a #x80)
(new 'static 'rgba :r #x7a :g #x91 :b #x12 :a #x80)
(new 'static 'rgba :r #x7b :g #x93 :b #x12 :a #x80)
(new 'static 'rgba :r #x7c :g #x94 :b #x12 :a #x80)
(new 'static 'rgba :r #x7d :g #x95 :b #x12 :a #x80)
(new 'static 'rgba :r #x7e :g #x96 :b #x12 :a #x80)
(new 'static 'rgba :r #x7e :g #x97 :b #x12 :a #x80)
(new 'static 'rgba :r #x7f :g #x99 :b #x12 :a #x80)
(new 'static 'rgba :r #x80 :g #x9a :b #x12 :a #x80)
(new 'static 'rgba :r #x81 :g #x9b :b #x12 :a #x80)
(new 'static 'rgba :r #x81 :g #x9c :b #x12 :a #x80)
(new 'static 'rgba :r #x82 :g #x9d :b #x12 :a #x80)
(new 'static 'rgba :r #x83 :g #x9f :b #x12 :a #x80)
(new 'static 'rgba :r #x84 :g #xa0 :b #x12 :a #x80)
(new 'static 'rgba :r #x85 :g #xa1 :b #x12 :a #x80)
(new 'static 'rgba :r #x85 :g #xa2 :b #x12 :a #x80)
(new 'static 'rgba :r #x86 :g #xa3 :b #x12 :a #x80)
(new 'static 'rgba :r #x87 :g #xa5 :b #x12 :a #x80)
(new 'static 'rgba :r #x88 :g #xa6 :b #x12 :a #x80)
(new 'static 'rgba :r #x88 :g #xa7 :b #x12 :a #x80)
(new 'static 'rgba :r #x89 :g #xa8 :b #x12 :a #x80)
(new 'static 'rgba :r #x8a :g #xa9 :b #x12 :a #x80)
(new 'static 'rgba :r #x8b :g #xab :b #x12 :a #x80)
(new 'static 'rgba :r #x8b :g #xac :b #x12 :a #x80)
(new 'static 'rgba :r #x8c :g #xad :b #x12 :a #x80)
(new 'static 'rgba :r #x8d :g #xae :b #x12 :a #x80)
(new 'static 'rgba :r #x8e :g #xaf :b #x12 :a #x80)
(new 'static 'rgba :r #x8f :g #xb1 :b #x12 :a #x80)
(new 'static 'rgba :r #x8f :g #xb2 :b #x12 :a #x80)
(new 'static 'rgba :r #x92 :g #xb5 :b #x11 :a #x80)
(new 'static 'rgba :r #x94 :g #xb9 :b #x11 :a #x80)
(new 'static 'rgba :r #x96 :g #xbc :b #x11 :a #x80)
(new 'static 'rgba :r #x99 :g #xbf :b #x11 :a #x80)
(new 'static 'rgba :r #x9b :g #xc3 :b #x11 :a #x80)
(new 'static 'rgba :r #x9d :g #xc6 :b #x11 :a #x80)
(new 'static 'rgba :r #xa0 :g #xca :b #x11 :a #x80)
(new 'static 'rgba :r #xa0 :g #xca :b #x11 :a #x80)
(new 'static 'rgba :r #x9e :g #xc7 :b #x11 :a #x80)
(new 'static 'rgba :r #x9c :g #xc4 :b #x11 :a #x80)
(new 'static 'rgba :r #x9a :g #xc2 :b #x11 :a #x80)
(new 'static 'rgba :r #x98 :g #xbf :b #x11 :a #x80)
(new 'static 'rgba :r #x96 :g #xbd :b #x12 :a #x80)
(new 'static 'rgba :r #x94 :g #xba :b #x12 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x12 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x12 :a #x80)
(new 'static 'rgba :r #x8f :g #xb4 :b #x12 :a #x80)
(new 'static 'rgba :r #x8e :g #xb3 :b #x12 :a #x80)
(new 'static 'rgba :r #x8d :g #xb2 :b #x12 :a #x80)
(new 'static 'rgba :r #x8d :g #xb1 :b #x12 :a #x80)
(new 'static 'rgba :r #x8c :g #xb0 :b #x13 :a #x80)
(new 'static 'rgba :r #x8b :g #xaf :b #x13 :a #x80)
(new 'static 'rgba :r #x8a :g #xae :b #x13 :a #x80)
(new 'static 'rgba :r #x8a :g #xae :b #x13 :a #x80)
(new 'static 'rgba :r #x89 :g #xad :b #x13 :a #x80)
(new 'static 'rgba :r #x88 :g #xac :b #x13 :a #x80)
(new 'static 'rgba :r #x87 :g #xab :b #x13 :a #x80)
(new 'static 'rgba :r #x87 :g #xaa :b #x13 :a #x80)
(new 'static 'rgba :r #x86 :g #xa9 :b #x13 :a #x80)
(new 'static 'rgba :r #x85 :g #xa8 :b #x13 :a #x80)
(new 'static 'rgba :r #x84 :g #xa7 :b #x13 :a #x80)
(new 'static 'rgba :r #x84 :g #xa7 :b #x13 :a #x80)
(new 'static 'rgba :r #x83 :g #xa6 :b #x13 :a #x80)
(new 'static 'rgba :r #x82 :g #xa5 :b #x14 :a #x80)
(new 'static 'rgba :r #x81 :g #xa4 :b #x14 :a #x80)
(new 'static 'rgba :r #x81 :g #xa3 :b #x14 :a #x80)
(new 'static 'rgba :r #x80 :g #xa2 :b #x14 :a #x80)
(new 'static 'rgba :r #x7f :g #xa1 :b #x14 :a #x80)
(new 'static 'rgba :r #x7e :g #xa0 :b #x14 :a #x80)
(new 'static 'rgba :r #x7e :g #xa0 :b #x14 :a #x80)
(new 'static 'rgba :r #x7d :g #x9f :b #x14 :a #x80)
(new 'static 'rgba :r #x7c :g #x9e :b #x14 :a #x80)
(new 'static 'rgba :r #x7b :g #x9d :b #x14 :a #x80)
(new 'static 'rgba :r #x7b :g #x9c :b #x14 :a #x80)
(new 'static 'rgba :r #x7a :g #x9b :b #x14 :a #x80)
(new 'static 'rgba :r #x79 :g #x9a :b #x14 :a #x80)
(new 'static 'rgba :r #x79 :g #x9a :b #x15 :a #x80)
(new 'static 'rgba :r #x79 :g #x9a :b #x15 :a #x80)
(new 'static 'rgba :r #x7c :g #x9d :b #x14 :a #x80)
(new 'static 'rgba :r #x7f :g #xa1 :b #x14 :a #x80)
(new 'static 'rgba :r #x82 :g #xa5 :b #x14 :a #x80)
(new 'static 'rgba :r #x85 :g #xa8 :b #x13 :a #x80)
(new 'static 'rgba :r #x88 :g #xac :b #x13 :a #x80)
(new 'static 'rgba :r #x8b :g #xb0 :b #x13 :a #x80)
(new 'static 'rgba :r #x8e :g #xb3 :b #x12 :a #x80)
(new 'static 'rgba :r #x91 :g #xb7 :b #x12 :a #x80)
(new 'static 'rgba :r #x94 :g #xbb :b #x12 :a #x80)
(new 'static 'rgba :r #x97 :g #xbf :b #x12 :a #x80)
(new 'static 'rgba :r #x9a :g #xc2 :b #x11 :a #x80)
(new 'static 'rgba :r #x9d :g #xc6 :b #x11 :a #x80)
(new 'static 'rgba :r #xa0 :g #xca :b #x11 :a #x80)
(new 'static 'rgba :r #xa3 :g #xcd :b #x10 :a #x80)
(new 'static 'rgba :r #xa6 :g #xd1 :b #x10 :a #x80)
(new 'static 'rgba :r #xac :g #xd9 :b #x10 :a #x80)
(new 'static 'rgba :r #xab :g #xd8 :b #x10 :a #x80)
(new 'static 'rgba :r #xaa :g #xd7 :b #x10 :a #x80)
(new 'static 'rgba :r #xa9 :g #xd6 :b #x10 :a #x80)
(new 'static 'rgba :r #xa8 :g #xd5 :b #x10 :a #x80)
(new 'static 'rgba :r #xa8 :g #xd4 :b #x10 :a #x80)
(new 'static 'rgba :r #xa7 :g #xd3 :b #x10 :a #x80)
(new 'static 'rgba :r #xa6 :g #xd2 :b #x10 :a #x80)
(new 'static 'rgba :r #xa5 :g #xd1 :b #x10 :a #x80)
(new 'static 'rgba :r #xa4 :g #xd0 :b #x10 :a #x80)
(new 'static 'rgba :r #xa4 :g #xcf :b #x10 :a #x80)
(new 'static 'rgba :r #xa3 :g #xce :b #x10 :a #x80)
(new 'static 'rgba :r #xa2 :g #xcd :b #x11 :a #x80)
(new 'static 'rgba :r #xa1 :g #xcc :b #x11 :a #x80)
(new 'static 'rgba :r #xa0 :g #xcb :b #x11 :a #x80)
(new 'static 'rgba :r #xa0 :g #xca :b #x11 :a #x80)
(new 'static 'rgba :r #x9f :g #xc9 :b #x11 :a #x80)
(new 'static 'rgba :r #x9e :g #xc8 :b #x11 :a #x80)
(new 'static 'rgba :r #x9d :g #xc7 :b #x11 :a #x80)
(new 'static 'rgba :r #x9d :g #xc6 :b #x11 :a #x80)
(new 'static 'rgba :r #x9c :g #xc5 :b #x11 :a #x80)
(new 'static 'rgba :r #x9b :g #xc4 :b #x11 :a #x80)
(new 'static 'rgba :r #x9a :g #xc3 :b #x11 :a #x80)
(new 'static 'rgba :r #x99 :g #xc2 :b #x11 :a #x80)
(new 'static 'rgba :r #x99 :g #xc1 :b #x11 :a #x80)
(new 'static 'rgba :r #x98 :g #xc0 :b #x12 :a #x80)
(new 'static 'rgba :r #x97 :g #xbf :b #x12 :a #x80)
(new 'static 'rgba :r #x96 :g #xbe :b #x12 :a #x80)
(new 'static 'rgba :r #x95 :g #xbd :b #x12 :a #x80)
(new 'static 'rgba :r #x95 :g #xbc :b #x12 :a #x80)
(new 'static 'rgba :r #x94 :g #xbb :b #x12 :a #x80)
(new 'static 'rgba :r #x93 :g #xba :b #x12 :a #x80)
(new 'static 'rgba :r #x92 :g #xb9 :b #x12 :a #x80)
(new 'static 'rgba :r #x91 :g #xb8 :b #x12 :a #x80)
(new 'static 'rgba :r #x91 :g #xb7 :b #x12 :a #x80)
(new 'static 'rgba :r #x90 :g #xb6 :b #x12 :a #x80)
(new 'static 'rgba :r #x8f :g #xb5 :b #x12 :a #x80)
(new 'static 'rgba :r #x8e :g #xb4 :b #x12 :a #x80)
(new 'static 'rgba :r #x8e :g #xb3 :b #x13 :a #x80)
(new 'static 'rgba :r #x8c :g #xb1 :b #x13 :a #x80)
(new 'static 'rgba :r #x8c :g #xb1 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb6 :b #x12 :a #x80)
(new 'static 'rgba :r #x94 :g #xba :b #x12 :a #x80)
(new 'static 'rgba :r #x97 :g #xbf :b #x12 :a #x80)
(new 'static 'rgba :r #x9b :g #xc3 :b #x11 :a #x80)
(new 'static 'rgba :r #x9e :g #xc8 :b #x11 :a #x80)
(new 'static 'rgba :r #xa2 :g #xcc :b #x11 :a #x80)
(new 'static 'rgba :r #xa6 :g #xd1 :b #x11 :a #x80)
(new 'static 'rgba :r #xa6 :g #xd1 :b #x11 :a #x80)
(new 'static 'rgba :r #xa3 :g #xcd :b #x11 :a #x80)
(new 'static 'rgba :r #xa0 :g #xca :b #x11 :a #x80)
(new 'static 'rgba :r #x9d :g #xc6 :b #x11 :a #x80)
(new 'static 'rgba :r #x9b :g #xc3 :b #x12 :a #x80)
(new 'static 'rgba :r #x98 :g #xbf :b #x12 :a #x80)
(new 'static 'rgba :r #x95 :g #xbc :b #x12 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
)
)
)
(define *toxic-slime-texture-anim-array*
(the-as (texture-anim-array texture-anim)
(new 'static 'texture-anim-array :type texture-anim
(new 'static 'texture-anim
:func 'texture-anim-alpha-ramp-clut-upload
:init-func 'texture-anim-alpha-ramp-clut-init
:tex #f
:tex-name #f
:extra (new 'static 'vector :x 28.0)
:color (new 'static 'rgba :a #x80)
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:num-layers #x2
:func 'cloud-texture-anim-func
:init-func 'dest-texture-init
:tex #f
:tex-name #f
:extra (new 'static 'vector :x 16.0 :y 8.0)
:color (new 'static 'rgba :a #x80)
:frame-delta 300.0
:frame-mod 600.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:num-layers #x2
:func 'cloud-texture-anim-func
:init-func 'dest-texture-init
:tex #f
:tex-name #f
:extra (new 'static 'vector :x 32.0 :y 9.0)
:color (new 'static 'rgba :a #x80)
:frame-delta 300.0
:frame-mod 300.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:num-layers #x2
:func 'cloud-texture-anim-func
:init-func 'dest-texture-init
:tex #f
:tex-name #f
:extra (new 'static 'vector :x 64.0 :y 10.0)
:color (new 'static 'rgba :a #x80)
:frame-time 99.0
:frame-delta 300.0
:frame-mod 150.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:num-layers #x2
:func 'cloud-texture-anim-func
:init-func 'dest-texture-init
:tex #f
:tex-name #f
:extra (new 'static 'vector :x 128.0 :y 12.0)
:color (new 'static 'rgba :a #x80)
:frame-time 199.0
:frame-delta 300.0
:frame-mod 75.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:num-layers #x4
:func #f
:init-func 'dest-texture-init
:tex #f
:tex-name #f
:extra (new 'static 'vector :x 128.0 :y 20.0)
:color (new 'static 'rgba :a #x80)
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:num-layers #x1
:func #f
:init-func 'texture-anim-change-mt8h-init
:tex #f
:tex-name "cas-toxic-slime-dest"
:extra (new 'static 'vector :x 28.0 :y 12.0 :z 128.0 :w 128.0)
:color (new 'static 'rgba :a #x80)
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:func 'texture-anim-slime-clut-upload
:init-func 'texture-anim-slime-clut-init
:tex #f
:tex-name #f
:extra (new 'static 'vector :x 28.0)
:color (new 'static 'rgba :a #x80)
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:num-layers #x1
:func #f
:init-func 'texture-anim-overide-size-init
:tex #f
:tex-name "cas-toxic-slime-scroll-dest"
:extra (new 'static 'vector :x 64.0 :y 64.0)
:color (new 'static 'rgba :a #x80)
:frame-delta 300.0
:frame-mod 1200.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
)
)
)
(defun set-slime-alphas ((arg0 float) (arg1 float) (arg2 float) (arg3 float))
(set! (-> *toxic-slime-texture-anim-array* array-data 5 data 0 start-color w) arg0)
(set! (-> *toxic-slime-texture-anim-array* array-data 5 data 1 start-color w) arg1)
(set! (-> *toxic-slime-texture-anim-array* array-data 5 data 2 start-color w) arg2)
(set! (-> *toxic-slime-texture-anim-array* array-data 5 data 3 start-color w) arg3)
)
;; WARN: Return type mismatch object vs none.
(defun get-slime-alphas ()
(format
0
"~f ~f ~f ~f~%"
(-> *toxic-slime-texture-anim-array* array-data 5 data 0 start-color w)
(-> *toxic-slime-texture-anim-array* array-data 5 data 1 start-color w)
(-> *toxic-slime-texture-anim-array* array-data 5 data 2 start-color w)
(-> *toxic-slime-texture-anim-array* array-data 5 data 3 start-color w)
)
(none)
)
(defun set-slime-speed ((arg0 float))
(let ((v1-0 *toxic-slime-texture-anim-array*)
(f0-3 (the float (the int (* 300.0 arg0))))
)
(dotimes (a0-1 4)
(let ((a1-4 (-> v1-0 array-data (+ a0-1 1))))
(set! (-> a1-4 frame-mod) f0-3)
(set! (-> a1-4 data 0 end-time) f0-3)
(set! (-> a1-4 data 1 end-time) f0-3)
)
(set! f0-3 (* 0.5 f0-3))
)
)
#f
)
(define *cas-conveyor-texture-anim-array*
(the-as (texture-anim-array texture-anim)
(new 'static 'texture-anim-array :type texture-anim
(new 'static 'texture-anim
:num-layers #x1
:func #f
:init-func 'texture-anim-overide-size-init
:tex #f
:tex-name "cas-conveyor-dest"
:extra (new 'static 'vector :x 64.0 :y 32.0)
:color (new 'static 'rgba :a #x80)
:frame-delta 555.0
:frame-mod 300.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
:clamp (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(new 'static 'texture-anim
:num-layers #x1
:func #f
:init-func 'texture-anim-overide-size-init
:tex #f
:tex-name "cas-conveyor-dest-01"
:extra (new 'static 'vector :x 64.0 :y 32.0)
:color (new 'static 'rgba :a #x80)
:frame-delta 555.0
:frame-mod 300.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
:clamp (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(new 'static 'texture-anim
:num-layers #x1
:func #f
:init-func 'texture-anim-overide-size-init
:tex #f
:tex-name "cas-conveyor-dest-02"
:extra (new 'static 'vector :x 64.0 :y 32.0)
:color (new 'static 'rgba :a #x80)
:frame-delta 555.0
:frame-mod 300.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
:clamp (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(new 'static 'texture-anim
:num-layers #x1
:func #f
:init-func 'texture-anim-overide-size-init
:tex #f
:tex-name "cas-conveyor-dest-03"
:extra (new 'static 'vector :x 64.0 :y 32.0)
:color (new 'static 'rgba :a #x80)
:frame-delta 555.0
:frame-mod 300.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
:clamp (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
)
)
)
(defun set-conveyor-speed! ((arg0 int) (arg1 float))
(set! (-> *cas-conveyor-texture-anim-array* array-data arg0 frame-delta) (* 0.018066408 arg1))
0
(none)
)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -7,3 +7,235 @@
;; DECOMP BEGINS
(deftype pal-lowrez-throne (med-res-level)
()
:heap-base #x60
:method-count-assert 21
:size-assert #xd4
:flag-assert #x15006000d4
)
(defskelgroup skel-pal-lowrez-throne pal-lowrez-throne pal-lowrez-throne-lod0-jg pal-lowrez-throne-idle-ja
((pal-lowrez-throne-lod0-mg (meters 999999)))
:bounds (static-spherem -5 40 -10 75)
)
(defpartgroup group-pal-prong-energy
:id 1111
:bounds (static-bspherem 0 0 0 160)
:parts ((sp-item 4762 :fade-after (meters 80) :falloff-to (meters 80))
(sp-item 4763 :fade-after (meters 220) :flags (bit6))
)
)
(defpart 4762
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
(sp-flt spt-num 2.0)
(sp-flt spt-scale-x (meters 0))
(sp-flt spt-rot-z (degrees 90.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 32.0)
(sp-flt spt-vel-y (meters -0.03))
(sp-rnd-flt spt-scalevel-x (meters 0.005) (meters 0.005) 1.0)
(sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-r -0.98)
(sp-flt spt-fade-g -0.98)
(sp-flt spt-fade-a 0.19393939)
(sp-int spt-timer 250)
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)
(sp-int spt-next-time 165)
(sp-launcher-by-id spt-next-launcher 4764)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 3600.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0)
(sp-flt spt-conerot-radius (meters 6))
)
)
(defpart 4764
:init-specs ((sp-flt spt-fade-a -0.7529412) (sp-flt spt-friction 0.1))
)
(defpart 4763
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 8))
(sp-flt spt-rot-x 1228.8)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 0.0 64.0 1.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 64.0)
(sp-flt spt-omega 822476.8)
(sp-int spt-timer 5)
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow)
(sp-flt spt-userdata 8192.0)
)
)
(deftype pal-prong (process-drawable)
((root-override collide-shape :offset 128)
)
:heap-base #x50
:method-count-assert 23
:size-assert #xc8
:flag-assert #x17005000c8
(:methods
(idle () _type_ :state 20)
(break-it () _type_ :state 21)
(broken () _type_ :state 22)
)
)
(defskelgroup skel-pal-prong pal-prong pal-prong-lod0-jg pal-prong-idle-ja
((pal-prong-lod0-mg (meters 999999)))
:bounds (static-spherem 0 5 0 5.5)
:origin-joint-index 3
)
(defskelgroup skel-pal-prong-explode pal-prong pal-prong-explode-lod0-jg pal-prong-explode-idle-ja
((pal-prong-explode-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 15)
)
(define *pal-prong-exploder-params*
(new 'static 'joint-exploder-static-params
:joints (new 'static 'boxed-array :type joint-exploder-static-joint-params
(new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1)
)
)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! pal-prong ((obj pal-prong) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player))))
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0)))
(set! (-> s4-0 total-prims) (the-as uint 3))
(set! (-> s3-0 prim-core collide-as) (collide-spec obstacle))
(set! (-> s3-0 prim-core action) (collide-action solid))
(set! (-> s3-0 transform-index) 3)
(set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 22528.0)
(set! (-> s4-0 root-prim) s3-0)
)
(let ((v1-8 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
(set! (-> v1-8 prim-core collide-as) (collide-spec obstacle))
(set! (-> v1-8 prim-core action) (collide-action solid))
(set! (-> v1-8 transform-index) 3)
(set-vector! (-> v1-8 local-sphere) 0.0 20480.0 0.0 22528.0)
)
(let ((v1-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0))))
(set! (-> v1-10 prim-core collide-as) (collide-spec obstacle))
(set! (-> v1-10 prim-core action) (collide-action solid))
(set! (-> v1-10 transform-index) 3)
(set-vector! (-> v1-10 local-sphere) 0.0 0.0 0.0 8192.0)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(let ((v1-13 (-> s4-0 root-prim)))
(set! (-> s4-0 backup-collide-as) (-> v1-13 prim-core collide-as))
(set! (-> s4-0 backup-collide-with) (-> v1-13 prim-core collide-with))
)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-pal-prong" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(set! (-> obj part) (create-launch-control (-> *part-group-id-table* 1111) obj))
(if (task-node-closed? (game-task-node palace-boss-resolution))
(go (method-of-object obj broken))
(go (method-of-object obj idle))
)
(none)
)
(defbehavior pal-prong-small-collision pal-prong ()
(let ((v1-3 (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) child 0)))
(set! (-> v1-3 prim-core collide-as) (collide-spec))
(set! (-> v1-3 prim-core collide-with) (collide-spec))
)
0
(none)
)
(defstate broken (pal-prong)
:virtual #t
:enter (behavior ()
(setup-masks (-> self draw) 0 1)
(pal-prong-small-collision)
(transform-post)
(none)
)
:code (the-as (function none :behavior pal-prong) sleep-code)
)
(defstate break-it (pal-prong)
:virtual #t
:enter (behavior ()
(setup-masks (-> self draw) 0 1)
(pal-prong-small-collision)
(transform-post)
(sound-play "sqd-post-break")
(let ((gp-1 (new 'stack 'joint-exploder-tuning (the-as uint 0))))
(process-spawn
joint-exploder
(art-group-get-by-name *level* "skel-pal-prong-explode" (the-as (pointer uint32) #f))
5
gp-1
*pal-prong-exploder-params*
:to self
)
)
(none)
)
:trans (behavior ()
(go-virtual broken)
(none)
)
:code (the-as (function none :behavior pal-prong) sleep-code)
)
(defstate idle (pal-prong)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('trigger)
(go-virtual break-it)
)
)
)
:enter (behavior ()
(transform-post)
(none)
)
:trans (behavior ()
(let ((a1-0 (new 'stack-no-clear 'vector)))
(set! (-> a1-0 quad) (-> self root-override trans quad))
(set! (-> a1-0 y) (+ 36864.0 (-> a1-0 y)))
(spawn (-> self part) a1-0)
)
(none)
)
:code (the-as (function none :behavior pal-prong) sleep-code)
)
+1 -1
View File
@@ -453,7 +453,7 @@
(go-hostile (_type_) none 70)
(go-flee (_type_) none 71)
(react-to-focus (_type_) none 72)
(kill-prefer-falling (_type_) none 73)
(kill-prefer-falling (_type_) object 73)
(general-event-handler (_type_ process int symbol event-message-block) object 74)
(enemy-method-75 (_type_ process touching-shapes-entry) none 75)
(enemy-method-76 (_type_ process event-message-block) symbol 76)
+3 -2
View File
@@ -601,14 +601,12 @@
)
;; definition for method 73 of type enemy
;; WARN: Return type mismatch object vs none.
(defmethod kill-prefer-falling enemy ((obj enemy))
"If available in `enemy-info`, [[go]] to the [[die-falling]] state, if not, [[die]]"
(if (-> obj enemy-info use-die-falling)
(go (method-of-object obj die-falling))
(go (method-of-object obj die))
)
(none)
)
;; definition for method 135 of type enemy
@@ -1710,9 +1708,11 @@ This commonly includes things such as:
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 17]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 28]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 89]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 105]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 202]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 274]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 346]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 407]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 413]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 490]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 493]
@@ -1720,6 +1720,7 @@ This commonly includes things such as:
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 560]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 610]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 641]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 720]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 774]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 807]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 814]
+70 -2
View File
@@ -229,7 +229,7 @@
;; definition of type mysql-nav-graph-level-info
(deftype mysql-nav-graph-level-info (structure)
((level basic :offset-assert 0)
((level string :offset-assert 0)
(level-id uint32 :offset-assert 4)
(node-count int32 :offset-assert 8)
(branch-count int32 :offset-assert 12)
@@ -1216,7 +1216,72 @@ returns `-1` if none is found"
)
;; definition for method 18 of type mysql-nav-graph
;; ERROR: function was not converted to expressions. Cannot decompile.
(defmethod lookup-level-info2 mysql-nav-graph ((obj mysql-nav-graph) (arg0 mysql-nav-node) (arg1 symbol))
"TODO - this was originally called `lookup-level-info` but it clashes with the function defined in `level`"
(let ((s5-0 (the-as mysql-nav-graph-level-info #f)))
(b! (>= (-> obj level-info-last-lookup) (-> obj level-info-array-length)) cfg-3 :delay #f)
(let ((v1-5 (-> obj level-info-array (-> obj level-info-last-lookup))))
(let ((a0-2 (-> v1-5 level)))
(b! (!= (-> arg0 level_name) a0-2) cfg-3 :delay (empty-form))
)
(set! s5-0 v1-5)
)
(b! #t cfg-18 :delay (nop!))
(label cfg-3)
(let ((v1-6 0))
(b! #t cfg-9 :delay (nop!))
(label cfg-4)
(let ((a0-6 (-> obj level-info-array v1-6)))
(let ((a3-1 (-> a0-6 level)))
(b! (!= (-> arg0 level_name) a3-1) cfg-8 :delay (empty-form))
)
(if arg1
(set! (-> obj level-info-last-lookup) v1-6)
)
(set! s5-0 a0-6)
)
(b! #t cfg-18 :delay (nop!))
(label cfg-8)
(+! v1-6 1)
(label cfg-9)
(b! (< v1-6 (-> obj level-info-array-length)) cfg-4)
)
(let ((v1-9 (-> obj level-info-array-length)))
(cond
((< v1-9 32)
(if arg1
(set! (-> obj level-info-last-lookup) v1-9)
)
(set! s5-0 (-> obj level-info-array v1-9))
(set! (-> s5-0 level) (the-as string (-> arg0 level_name)))
(set! (-> s5-0 node-count) 0)
(+! (-> obj level-info-array-length) 1)
)
(else
(format
0
"mysql-nav-graph::lookup-level-info: Error, too many unique level names in nav-graph. May need to increase the max (currently ~d)~%"
32
)
(let ((s4-0 0))
(b! #t cfg-16 :delay (nop!))
(label cfg-15)
(let ((v1-17 (-> obj level-info-array s4-0)))
(format 0 "~d ~s~%" s4-0 (-> v1-17 level))
)
(+! s4-0 1)
(label cfg-16)
(b! (< s4-0 (-> obj level-info-array-length)) cfg-15)
)
(break!)
0
)
)
)
(label cfg-18)
s5-0
)
)
;; definition for method 19 of type mysql-nav-graph
;; WARN: Return type mismatch int vs none.
@@ -1309,3 +1374,6 @@ returns `-1` if none is found"
)
)
+1 -1
View File
@@ -85,7 +85,7 @@
((num-layers uint32 :offset-assert 0)
(func symbol :offset-assert 4)
(func-id basic :offset 4)
(init-func basic :offset-assert 8)
(init-func symbol :offset-assert 8)
(init-func-id basic :offset 8)
(tex texture :offset-assert 12)
(tex-name string :offset-assert 16)
+7 -25
View File
@@ -171,7 +171,7 @@
(info rigid-body-info :offset-assert 4)
(flags rigid-body-flag :offset-assert 8)
(force-callback (function object float none) :offset-assert 12)
(blocked-by basic :offset-assert 16)
(blocked-by rigid-body-object :offset-assert 16)
(time-remaining float :offset-assert 20)
(step-count int16 :offset-assert 24)
(position vector :inline :offset-assert 32)
@@ -268,26 +268,8 @@
;; definition of type rigid-body-control
(deftype rigid-body-control (basic)
((process process :offset-assert 4)
(state rigid-body :inline :offset-assert 16)
(work basic :offset 16)
(info rigid-body-info :offset 20)
(flags rigid-body-flag :offset 24)
(force-callback basic :offset 28)
(blocked-by basic :offset 32)
(time-remaining float :offset 36)
(step-count int16 :offset 40)
(position vector :inline :offset 48)
(rot vector :inline :offset 64)
(rotation quaternion :inline :offset 64)
(lin-momentum vector :inline :offset 80)
(ang-momentum vector :inline :offset 96)
(force vector :inline :offset 112)
(torque vector :inline :offset 128)
(lin-velocity vector :inline :offset 144)
(ang-velocity vector :inline :offset 160)
(matrix matrix :inline :offset 176)
(inv-i-world matrix :inline :offset 240)
((process process :offset-assert 4)
(state rigid-body :inline :offset-assert 16)
)
:method-count-assert 26
:size-assert #x130
@@ -566,7 +548,7 @@
;; definition of type rigid-body-queue
(deftype rigid-body-queue (structure)
((count int8 :offset-assert 0)
(array uint64 128 :offset 8)
(array handle 128 :offset 8)
)
:method-count-assert 17
:size-assert #x408
@@ -574,11 +556,11 @@
(:methods
(rigid-body-queue-method-9 (_type_) none 9)
(rigid-body-queue-method-10 (_type_) none 10)
(rigid-body-queue-method-11 (_type_) none 11)
(rigid-body-queue-method-11 (_type_ rigid-body-object) none 11)
(rigid-body-queue-method-12 (_type_ int int) none 12)
(rigid-body-queue-method-13 (_type_) none 13)
(rigid-body-queue-method-13 (_type_ int rigid-body-object) none 13)
(rigid-body-queue-method-14 (_type_ int) none 14)
(rigid-body-queue-method-15 (_type_) none 15)
(rigid-body-queue-method-15 (_type_ rigid-body-object) none 15)
(validate (_type_) symbol 16)
)
)
+320
View File
@@ -0,0 +1,320 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for method 9 of type rigid-body-queue
;; WARN: Return type mismatch int vs none.
(defmethod rigid-body-queue-method-9 rigid-body-queue ((obj rigid-body-queue))
(set! (-> obj count) 0)
(dotimes (v1-0 128)
(set! (-> obj array v1-0) (the-as handle #f))
)
0
(none)
)
;; definition for method 16 of type rigid-body-queue
(defmethod validate rigid-body-queue ((obj rigid-body-queue))
(let ((gp-0 0))
(dotimes (v1-0 (-> obj count))
(let ((a1-2 (-> obj array v1-0))
(a2-0 (+ v1-0 1))
)
(while (< a2-0 (-> obj count))
(if (= a1-2 (-> obj array a2-0))
(+! gp-0 1)
)
(+! a2-0 1)
)
)
)
(if (> gp-0 0)
(format 0 "rigid-body-queue::validate: duplicate count ~d~%" gp-0)
)
(zero? gp-0)
)
)
;; definition for method 10 of type rigid-body-queue
;; WARN: Return type mismatch int vs none.
(defmethod rigid-body-queue-method-10 rigid-body-queue ((obj rigid-body-queue))
(local-vars (s4-0 process))
(with-pp
(let ((f0-0 (-> pp clock seconds-per-frame))
(v1-1 (-> obj count))
)
(b! #t cfg-9 :delay (nop!))
(label cfg-1)
(+! v1-1 -1)
(let ((a0-4 (handle->process (-> obj array v1-1))))
(cond
(a0-4
(let ((a0-6 (-> (the-as rigid-body-object a0-4) rbody)))
(set! (-> a0-6 state time-remaining) f0-0)
(set! (-> a0-6 state blocked-by) #f)
(set! (-> a0-6 state step-count) 0)
(logclear! (-> a0-6 state flags) (rigid-body-flag blocker))
)
)
(else
)
)
)
(label cfg-9)
(b! (nonzero? v1-1) cfg-1 :delay (nop!))
)
(let ((s5-0 0))
(b! #t cfg-35 :delay (nop!))
(until (= (-> obj array s5-0) (process->handle s4-0))
(label cfg-11)
(set! s4-0 (handle->process (-> obj array s5-0)))
(b! (not s4-0) cfg-34 :delay (empty-form))
(let ((s3-0 (-> (the-as rigid-body-object s4-0) rbody)))
(b!
(not (and (logtest? (-> s3-0 state flags) (rigid-body-flag enable-physics))
(and (< 0.001 (-> s3-0 state time-remaining)) (< (-> s3-0 state step-count) 4))
)
)
cfg-34
:delay (empty-form)
)
(rigid-body-object-method-51 (the-as rigid-body-object s4-0))
(+! (-> s3-0 state step-count) 1)
(let ((a2-2 (-> s3-0 state blocked-by)))
(b! (not a2-2) cfg-34 :delay (empty-form))
(b! (not #t) cfg-34 :delay (empty-form))
(logior! (-> a2-2 rbody state flags) (rigid-body-flag blocker))
(rigid-body-queue-method-13 obj s5-0 a2-2)
)
)
)
(label cfg-34)
(+! s5-0 1)
(label cfg-35)
(b! (< s5-0 (-> obj count)) cfg-11)
)
(let ((s5-1 0))
(b! #t cfg-48 :delay (nop!))
(label cfg-37)
(let ((a0-20 (handle->process (-> obj array s5-1))))
(when (and a0-20
(logtest? (-> (the-as rigid-body-object a0-20) rbody state flags) (rigid-body-flag enable-physics))
)
(let ((s4-1 pp))
(set! pp (the-as rigid-body-object a0-20))
(rigid-body-object-method-52 (the-as rigid-body-object a0-20))
(set! pp s4-1)
)
)
)
(+! s5-1 1)
(label cfg-48)
(b! (< s5-1 (-> obj count)) cfg-37)
)
0
(none)
)
)
;; definition for method 11 of type rigid-body-queue
;; WARN: Return type mismatch int vs none.
(defmethod rigid-body-queue-method-11 rigid-body-queue ((obj rigid-body-queue) (arg0 rigid-body-object))
(let ((v1-0 -1))
(let ((a2-0 0))
(b! #t cfg-9 :delay (nop!))
(label cfg-1)
(b! (handle->process (-> obj array a2-0)) cfg-8 :delay (empty-form))
(set! v1-0 a2-0)
(b! #t cfg-11 :delay (nop!))
(label cfg-8)
(+! a2-0 1)
(label cfg-9)
(b! (< a2-0 (-> obj count)) cfg-1)
)
(label cfg-11)
(b! (= v1-0 -1) cfg-18 :delay (nop!))
(set! (-> obj array v1-0) (process->handle arg0))
)
(b! #t cfg-25 :delay (nop!))
(label cfg-18)
(b! (>= (-> obj count) 128) cfg-25 :delay #f)
(set! (-> obj array (-> obj count)) (process->handle arg0))
(+! (-> obj count) 1)
(label cfg-25)
0
0
(none)
)
;; definition for method 12 of type rigid-body-queue
;; WARN: Return type mismatch int vs none.
(defmethod rigid-body-queue-method-12 rigid-body-queue ((obj rigid-body-queue) (arg0 int) (arg1 int))
(when (< arg0 arg1)
(let ((v1-1 arg1)
(a3-0 (+ arg1 -1))
(a2-3 (-> obj array arg1))
)
(while (>= a3-0 arg0)
(set! (-> obj array v1-1) (-> obj array a3-0))
(+! a3-0 -1)
(+! v1-1 -1)
)
(set! (-> obj array arg0) a2-3)
)
)
0
(none)
)
;; definition for method 13 of type rigid-body-queue
;; WARN: Return type mismatch int vs none.
(defmethod rigid-body-queue-method-13 rigid-body-queue ((obj rigid-body-queue) (arg0 int) (arg1 rigid-body-object))
(let ((v1-2 (process->handle arg1))
(a2-4 (+ arg0 1))
)
(b! #t cfg-9 :delay (nop!))
(label cfg-6)
(b! (!= (-> obj array a2-4) v1-2) cfg-8 :delay (empty-form))
(rigid-body-queue-method-12 obj arg0 a2-4)
(b! #t cfg-11 :delay (nop!))
(label cfg-8)
(+! a2-4 1)
(label cfg-9)
(b! (< a2-4 (-> obj count)) cfg-6)
)
(label cfg-11)
0
0
(none)
)
;; definition for method 14 of type rigid-body-queue
;; WARN: Return type mismatch int vs none.
(defmethod rigid-body-queue-method-14 rigid-body-queue ((obj rigid-body-queue) (arg0 int))
(let ((v1-0 arg0)
(a1-1 (+ arg0 1))
)
(while (< a1-1 (-> obj count))
(set! (-> obj array v1-0) (-> obj array a1-1))
(+! a1-1 1)
(+! v1-0 1)
)
)
(+! (-> obj count) -1)
0
(none)
)
;; definition for method 15 of type rigid-body-queue
;; WARN: Return type mismatch int vs none.
(defmethod rigid-body-queue-method-15 rigid-body-queue ((obj rigid-body-queue) (arg0 rigid-body-object))
(let ((v1-2 (process->handle arg0))
(a1-4 0)
)
(b! #t cfg-9 :delay (nop!))
(label cfg-6)
(b! (!= (-> obj array a1-4) v1-2) cfg-8 :delay (empty-form))
(rigid-body-queue-method-14 obj a1-4)
(b! #t cfg-11 :delay (nop!))
(label cfg-8)
(+! a1-4 1)
(label cfg-9)
(b! (< a1-4 (-> obj count)) cfg-6)
)
(label cfg-11)
0
0
(none)
)
;; definition of type rigid-body-queue-manager
(deftype rigid-body-queue-manager (process)
((queue rigid-body-queue :offset-assert 128)
)
:heap-base #x10
:method-count-assert 15
:size-assert #x84
:flag-assert #xf00100084
(:methods
(idle () _type_ :state 14)
)
)
;; definition for method 3 of type rigid-body-queue-manager
(defmethod inspect rigid-body-queue-manager ((obj rigid-body-queue-manager))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process inspect)))
(t9-0 obj)
)
(format #t "~2Tqueue: #<rigid-body-queue @ #x~X>~%" (-> obj queue))
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defstate idle (rigid-body-queue-manager)
:virtual #t
:exit (behavior ()
(set! (-> self queue count) 0)
0
(none)
)
:code (the-as (function none :behavior rigid-body-queue-manager) sleep-code)
:post (behavior ()
(local-vars (a0-3 int) (a0-5 int))
(let* ((v1-1 (-> *perf-stats* data 17))
(a0-0 (-> v1-1 ctrl))
)
(+! (-> v1-1 count) 1)
(b! (zero? a0-0) cfg-2 :delay (nop!))
(.mtc0 Perf 0)
(.sync.l)
(.sync.p)
(.mtpc pcr0 0)
(.mtpc pcr1 0)
(.sync.l)
(.sync.p)
(.mtc0 Perf a0-0)
)
(.sync.l)
(.sync.p)
(label cfg-2)
0
(rigid-body-queue-method-10 (-> self queue))
(let ((v1-6 (-> *perf-stats* data 17)))
(b! (zero? (-> v1-6 ctrl)) cfg-4 :delay (nop!))
(.mtc0 Perf 0)
(.sync.l)
(.sync.p)
(.mfpc a0-3 pcr0)
(+! (-> v1-6 accum0) a0-3)
(.mfpc a0-5 pcr1)
(+! (-> v1-6 accum1) a0-5)
)
(label cfg-4)
0
(none)
)
)
;; definition for function rigid-body-queue-manager-init-by-other
(defbehavior rigid-body-queue-manager-init-by-other rigid-body-queue-manager ((arg0 rigid-body-queue))
(stack-size-set! (-> self main-thread) 128)
(set! (-> self queue) arg0)
(rigid-body-queue-method-9 (-> self queue))
(go-virtual idle)
)
;; definition for function rigid-body-queue-manager-spawn
(defun rigid-body-queue-manager-spawn ((arg0 rigid-body-queue) (arg1 process-tree))
(let ((gp-0 (the-as process #f)))
(let ((v1-1 (process-spawn rigid-body-queue-manager arg0 :to arg1)))
(if v1-1
(set! gp-0 (-> v1-1 0))
)
)
gp-0
)
)
+15 -10
View File
@@ -559,10 +559,11 @@
(vector-rotate*! (-> s5-0 vec-7) (-> s5-0 vec-7) (-> s3-0 inv-i-world))
(vector-cross! (-> s5-0 vec-7) (-> s5-0 vec-7) (-> s5-0 vec-6))
(+! (-> s5-0 float-3) (+ (-> s3-0 info inv-mass) (vector-dot (-> s5-0 vec-5) (-> s5-0 vec-7))))
(set! f30-1 (fmax
(fmax f30-1 (-> s3-0 info bounce-factor))
(* (-> arg0 info bounce-mult-factor) (-> s3-0 info bounce-mult-factor))
)
(set! f30-1
(fmax
(fmax f30-1 (-> s3-0 info bounce-factor))
(* (-> arg0 info bounce-mult-factor) (-> s3-0 info bounce-mult-factor))
)
)
)
(else
@@ -577,12 +578,14 @@
)
(vector+float*! (-> s5-0 vec-9) (-> s5-0 vec-3) (-> s5-0 vec-5) (- (-> s5-0 float-2)))
(vector-normalize! (-> s5-0 vec-9) 1.0)
(let ((f0-31 (* -1.0 (fmin
(* (vector-dot (-> s5-0 vec-9) (-> s5-0 vec-3)) f30-2)
(* (-> arg0 info friction-factor) (-> s5-0 float-4))
)
)
(let ((f0-31
(* -1.0
(fmin
(* (vector-dot (-> s5-0 vec-9) (-> s5-0 vec-3)) f30-2)
(* (-> arg0 info friction-factor) (-> s5-0 float-4))
)
)
)
)
(vector+float*! (-> s5-0 vec-8) (-> s5-0 vec-8) (-> s5-0 vec-9) f0-31)
)
@@ -627,7 +630,9 @@
(b! #t cfg-42 :delay (nop!))
(label cfg-39)
(b! (not s3-0) cfg-41 :delay (empty-form))
(set! (-> arg0 blocked-by) (-> (the-as collide-shape-prim-mesh (-> s5-0 cquery num-spheres)) cshape process))
(set! (-> arg0 blocked-by)
(the-as rigid-body-object (-> (the-as collide-shape-prim-mesh (-> s5-0 cquery num-spheres)) cshape process))
)
0
(label cfg-41)
(vector+float*! (-> arg0 position) (-> arg0 position) (-> s5-0 vec-5) 40.96)
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -296,7 +296,7 @@
(node-at-idx (_type_ int) nav-node 41)
(nav-graph-method-42 (_type_) none 42)
(nav-graph-method-43 (_type_ nav-graph-link string) none 43)
(from-editor () none 44)
(from-editor (_type_ nav-node symbol) none 44)
)
)
+7 -5
View File
@@ -1532,11 +1532,13 @@
(if (zero? (-> obj draw light-index))
(set! (-> obj draw light-index) (the-as uint 10))
)
(rigid-body-queue-method-11 (if (logtest? (-> obj info-override flags) 1024)
*race-rigid-body-queue*
*traffic-rigid-body-queue*
)
)
(rigid-body-queue-method-11
(if (logtest? (-> obj info-override flags) 1024)
*race-rigid-body-queue*
*traffic-rigid-body-queue*
)
obj
)
0
(none)
)
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,573 @@
;;-*-Lisp-*-
(in-package goal)
;; failed to figure out what this is:
(defskelgroup skel-krew-package krew-package krew-package-lod0-jg krew-package-idle-ja
((krew-package-lod0-mg (meters 20)) (krew-package-lod1-mg (meters 40)) (krew-package-lod2-mg (meters 999999)))
:bounds (static-spherem 0 0 0 3.6)
)
;; definition of type krew-package
(deftype krew-package (process-drawable)
((attach-object handle :offset-assert 200)
(scale float :offset-assert 208)
)
:heap-base #x60
:method-count-assert 24
:size-assert #xd4
:flag-assert #x18006000d4
(:methods
(idle () _type_ :state 20)
(die () _type_ :state 21)
(krew-package-method-22 (_type_) none 22)
(krew-package-method-23 (_type_) none 23)
)
)
;; definition for method 3 of type krew-package
(defmethod inspect krew-package ((obj krew-package))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~2Tattach-object: ~D~%" (-> obj attach-object))
(format #t "~2Tscale: ~f~%" (-> obj scale))
(label cfg-4)
obj
)
;; definition for method 22 of type krew-package
;; WARN: Return type mismatch int vs none.
(defmethod krew-package-method-22 krew-package ((obj krew-package))
(set! (-> obj root) (new 'process 'trsqv))
0
(none)
)
;; definition for method 23 of type krew-package
;; WARN: Return type mismatch int vs none.
(defmethod krew-package-method-23 krew-package ((obj krew-package))
(with-pp
(set! (-> pp level) (level-get *level* 'lpackage))
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-krew-package" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(set! (-> obj scale) 1.0)
(set! (-> obj draw lod-set lod 0 dist) 81920.0)
(set! (-> obj draw lod-set lod 1 dist) 204800.0)
(set! (-> obj draw lod-set lod 1 dist) 327680.0)
(logior! (-> obj skel status) (joint-control-status sync-math))
0
(none)
)
)
;; failed to figure out what this is:
(defstate idle (krew-package)
:virtual #t
:code (the-as (function none :behavior krew-package) sleep-code)
:post (behavior ()
(let ((gp-0 (handle->process (-> self attach-object))))
(cond
(gp-0
(when (logtest? (-> (the-as process-focusable gp-0) focus-status) (focus-status dead))
(seek! (-> self scale) 0.0 (* 0.5 (-> self clock seconds-per-frame)))
(if (= (-> self scale) 0.0)
(go-virtual die)
)
)
(set! (-> self draw color-mult quad) (-> (the-as process-focusable gp-0) draw color-mult quad))
(set! (-> self root trans quad) (-> (the-as process-focusable gp-0) root-override trans quad))
(quaternion-copy! (-> self root quat) (-> (the-as process-focusable gp-0) root-override quat))
)
(else
)
)
)
(let ((f0-5 (-> self scale)))
(set-vector! (-> self root scale) f0-5 f0-5 f0-5 1.0)
)
(ja-post)
(none)
)
)
;; failed to figure out what this is:
(defstate die (krew-package)
:virtual #t
:code (behavior ()
(cleanup-for-death self)
(none)
)
)
;; definition for method 11 of type krew-package
;; WARN: Return type mismatch entity-perm-status vs none.
(defmethod init-from-entity! krew-package ((obj krew-package) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(process-entity-status! obj (entity-perm-status dead) #t)
(none)
)
;; definition for function krew-package-init-by-other
;; INFO: Used lq/sq
;; WARN: Return type mismatch object vs none.
(defbehavior krew-package-init-by-other krew-package ((arg0 process-drawable))
(stack-size-set! (-> self main-thread) 16)
(set! (-> self mask) (logior (process-mask platform) (-> self mask)))
(logclear! (-> self mask) (process-mask actor-pause movie))
(krew-package-method-22 self)
(set! (-> self attach-object) (process->handle arg0))
(set! (-> self root trans quad) (-> arg0 root trans quad))
(quaternion-copy! (-> self root quat) (-> arg0 root quat))
(krew-package-method-23 self)
(go-virtual idle)
(none)
)
;; definition for function krew-package-spawn
(defun krew-package-spawn ((arg0 process) (arg1 process))
(process-spawn krew-package arg1 :to arg0)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
24
0
(the-as
(function object)
(lambda :behavior task-manager
()
(while (!= (level-status *level* 'ctysluma) 'active)
(suspend)
)
(let ((v1-3 (entity-by-name "parking-spot-8")))
(if v1-3
(logior! (-> v1-3 extra perm status) (entity-perm-status bit-9))
)
)
(set! (-> self end-pos quad) (-> (new 'static 'vector :x -282624.0 :y 45056.0 :z 5464064.0 :w 1.0) quad))
(set-setting! 'minimap 'clear 0 32)
(let ((gp-1 *traffic-manager*))
(let ((s5-0 (new 'stack 'traffic-object-spawn-params)))
(set! (-> s5-0 position quad) (-> (new 'static 'vector :x 4698112.0 :y 45875.2 :z 81920.0 :w 1.0) quad))
(quaternion-axis-angle! (-> s5-0 rotation) 0.0 1.0 0.0 32768.0)
(set! (-> s5-0 object-type) (the-as uint 11))
(set! (-> s5-0 behavior) (the-as uint 0))
(set! (-> s5-0 id) (the-as uint 0))
(set! (-> s5-0 proc) #f)
(send-event gp-1 'spawn-object s5-0)
(when (-> s5-0 proc)
(set! (-> self slave 0) (process->handle (-> s5-0 proc)))
(let ((v1-20 (-> s5-0 proc)))
(set! (-> (the-as vehicle v1-20) damage-factor) 2.0)
)
(let ((v1-22 (krew-package-spawn (-> s5-0 proc) (-> s5-0 proc))))
(if v1-22
(set! (-> self slave 1) (process->handle (-> v1-22 0)))
)
)
)
(let ((s4-0 (new 'stack-no-clear 'task-arrow-params)))
(set! (-> s4-0 pos quad) (-> s5-0 position quad))
(quaternion-identity! (-> s4-0 quat))
(set! (-> s4-0 flags) (task-arrow-flags task-arrow-flag-03))
(set! (-> s4-0 map-icon) (the-as uint 15))
(label cfg-21)
(let ((a0-30 (task-arrow-spawn s4-0 (the-as task-arrow self))))
(when (not a0-30)
(format #t "waiting for task-arrow~%")
(suspend)
(goto cfg-21)
)
(set! (-> self arrow) (process->handle a0-30))
)
)
)
(send-event gp-1 'set-target-level #x3f800000)
(send-event gp-1 'set-guard-target-count-range 4 0 1)
(send-event gp-1 'set-guard-target-count-range 5 0 0)
)
(set! (-> self sub-state) (the-as uint -1))
(set! (-> self data-int8 0) 0)
(set! (-> self data-int8 1) 0)
0
(none)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
24
1
(the-as
(function object)
(lambda :behavior task-manager () (send-event *traffic-manager* 'restore-default-settings) (none))
)
)
;; definition for function delivery-task-setup-ambush-1
(defun delivery-task-setup-ambush-1 ()
(format #t "delivery-task-setup-ambush-1~%")
(let ((gp-0
(new 'static 'city-ambush-info
:count 10
:array (new 'static 'inline-array city-ambush-spot 10
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4501504.0 :y 32768.0 :z 2297856.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4501504.0 :y 32768.0 :z 2322432.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4501504.0 :y 32768.0 :z 2347008.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4501504.0 :y 32768.0 :z 2371584.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4501504.0 :y 32768.0 :z 2396160.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4513792.0 :y 69632.0 :z 2306048.0 :w 1.0)
:obj-type #x13
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4513792.0 :y 69632.0 :z 2387968.0 :w 1.0)
:obj-type #x13
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4464640.0 :y 69632.0 :z 2285568.0 :w 1.0)
:obj-type #x12
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4464640.0 :y 69632.0 :z 2347008.0 :w 1.0)
:obj-type #x12
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 4464640.0 :y 69632.0 :z 2408448.0 :w 1.0)
:obj-type #x12
)
)
)
)
(s5-0 (new 'stack-no-clear 'traffic-object-spawn-params))
)
(set! (-> s5-0 object-type) (the-as uint 6))
(set! (-> s5-0 behavior) (the-as uint 9))
(set! (-> s5-0 id) (the-as uint 0))
(set! (-> s5-0 nav-mesh) #f)
(set! (-> s5-0 nav-branch) #f)
(set! (-> s5-0 proc) #f)
(set! (-> s5-0 handle) (the-as uint (process->handle *target*)))
(set! (-> s5-0 user-data) (the-as uint 0))
(set! (-> s5-0 flags) (the-as uint 2))
(set! (-> s5-0 guard-type) (the-as uint 1))
(vector-reset! (-> s5-0 velocity))
(forward-up-nopitch->quaternion
(-> s5-0 rotation)
(new 'static 'vector :x -1.0 :w 1.0)
(new 'static 'vector :y 1.0 :w 1.0)
)
(city-ambush-info-method-9 gp-0 s5-0)
)
(none)
)
;; definition for function delivery-task-setup-ambush-2
(defun delivery-task-setup-ambush-2 ()
(format #t "delivery-task-setup-ambush-2~%")
(let ((gp-0
(new 'static 'city-ambush-info
:count 10
:array (new 'static 'inline-array city-ambush-spot 10
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3325952.0 :y 32768.0 :z 4689920.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3342336.0 :y 32768.0 :z 4689920.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3358720.0 :y 32768.0 :z 4689920.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3375104.0 :y 32768.0 :z 4689920.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3391488.0 :y 32768.0 :z 4689920.0 :w 1.0)
:obj-type #x6
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3338240.0 :y 69632.0 :z 4689920.0 :w 1.0)
:obj-type #x13
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3383296.0 :y 69632.0 :z 4689920.0 :w 1.0)
:obj-type #x13
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3338240.0 :y 45056.0 :z 4722688.0 :w 1.0)
:obj-type #x12
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3358720.0 :y 45056.0 :z 4722688.0 :w 1.0)
:obj-type #x12
)
(new 'static 'city-ambush-spot
:pos (new 'static 'vector :x 3379200.0 :y 45056.0 :z 4722688.0 :w 1.0)
:obj-type #x12
)
)
)
)
(s5-0 (new 'stack-no-clear 'traffic-object-spawn-params))
)
(set! (-> s5-0 object-type) (the-as uint 6))
(set! (-> s5-0 behavior) (the-as uint 9))
(set! (-> s5-0 id) (the-as uint 0))
(set! (-> s5-0 nav-mesh) #f)
(set! (-> s5-0 nav-branch) #f)
(set! (-> s5-0 proc) #f)
(set! (-> s5-0 handle) (the-as uint (process->handle *target*)))
(set! (-> s5-0 user-data) (the-as uint 0))
(set! (-> s5-0 flags) (the-as uint 2))
(set! (-> s5-0 guard-type) (the-as uint 1))
(vector-reset! (-> s5-0 velocity))
(forward-up-nopitch->quaternion
(-> s5-0 rotation)
(new 'static 'vector :x -1.0 :w 1.0)
(new 'static 'vector :y 1.0 :w 1.0)
)
(city-ambush-info-method-9 gp-0 s5-0)
)
(none)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
24
2
(the-as
(function object)
(lambda :behavior task-manager
()
(local-vars (a0-32 float))
(rlet ((acc :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
)
(init-vf0-vector)
(let ((gp-0 (handle->process (-> self slave 0))))
(cond
((and gp-0 (zero? (logand (-> (the-as process-focusable gp-0) focus-status) (focus-status dead))))
(cond
((zero? (-> self data-int8 0))
(when (= (level-status *level* 'ctyindb) 'active)
(set! (-> self data-int8 0) 1)
(delivery-task-setup-ambush-1)
)
)
(else
(when (!= (level-status *level* 'ctyindb) 'active)
(set! (-> self data-int8 0) 0)
0
)
)
)
(cond
((zero? (-> self data-int8 1))
(when (= (level-status *level* 'ctyinda) 'active)
(set! (-> self data-int8 1) 1)
(delivery-task-setup-ambush-2)
)
)
(else
(when (!= (level-status *level* 'ctyinda) 'active)
(set! (-> self data-int8 1) 0)
0
)
)
)
(let ((f0-0 (vector-vector-distance-squared (-> (the-as process-drawable gp-0) root trans) (target-pos 0)))
(f1-0 12288.0)
)
(cond
((and (< f0-0 (* f1-0 f1-0)) *target* (logtest? (focus-status pilot) (-> *target* focus-status)))
(when (nonzero? (-> self sub-state))
(send-event (handle->process (-> self arrow)) 'set-position (-> self end-pos))
(send-event (handle->process (-> self arrow)) 'modify-flags 1 0)
(send-event (handle->process (-> self arrow)) 'map-icon 8)
(set! (-> self sub-state) (the-as uint 0))
0
)
)
(else
(let* ((v1-59 (new 'stack-no-clear 'inline-array 'vector 1))
(f0-1 409.6)
(f0-3 (* f0-1 f0-1))
)
(.lvf vf1 (&-> (-> (the-as process-drawable gp-0) root transv) quad))
(.add.w.vf vf2 vf0 vf0 :mask #b1)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf2 vf1 :mask #b1)
(.add.mul.y.vf acc vf2 vf1 acc :mask #b1)
(.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1)
(.mov a0-32 vf1)
(when (>= f0-3 a0-32)
(set! (-> v1-59 0 quad) (-> (the-as process-drawable gp-0) root trans quad))
(set! (-> v1-59 0 y) (+ -14336.0 (-> v1-59 0 y)))
(send-event (handle->process (-> self arrow)) 'set-position (-> v1-59 0))
)
)
(when (!= (-> self sub-state) 1)
(send-event (handle->process (-> self arrow)) 'modify-flags 0 1)
(send-event (handle->process (-> self arrow)) 'map-icon 15)
(set! (-> self sub-state) (the-as uint 1))
)
)
)
)
(let ((f30-0 49152.0)
(f0-6 (vector-vector-distance-squared (-> (the-as process-drawable gp-0) root trans) (-> self end-pos)))
)
(if (>= (* f30-0 f30-0) f0-6)
(go-virtual complete)
)
)
)
(else
(go-virtual fail)
)
)
)
(none)
)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
24
3
(the-as
(function object)
(lambda :behavior task-manager
()
(let ((gp-0 (new 'static 'vector :x 4501504.0 :y 73728.0 :z 2338816.0 :w 204800.0))
(s5-0 #f)
)
(while (not s5-0)
(let ((v1-1 (handle->process (-> self slave 0))))
(when v1-1
(let ((f0-0 (vector-vector-distance-squared (-> (the-as process-drawable v1-1) root trans) gp-0))
(f1-0 (-> gp-0 w))
)
(set! s5-0 (< f0-0 (* f1-0 f1-0)))
)
)
)
(suspend)
)
)
(send-event *traffic-manager* 'set-guard-target-count-range 0 0 0)
(send-event *traffic-manager* 'set-guard-target-count-range 1 4 4)
(send-event *traffic-manager* 'set-guard-target-count-range 2 0 0)
(send-event *traffic-manager* 'set-guard-target-count-range 4 0 10)
(send-event *traffic-manager* 'set-guard-target-count-range 5 0 10)
(send-event *traffic-manager* 'set-alert-level 3)
(send-event *traffic-manager* 'set-alert-duration #xa4cb80)
(speech-control-method-10 *speech-control* 7 (new 'static 'speech-type-info
:channel #x1
:priority -2
:min-delay #x258
:max-delay #x4b0
:list (new 'static 'boxed-array :type string
"kg243a"
"kg241a"
"kg242a"
"kg244a"
"kg245a"
"kg246a"
"kg247a"
"kg248a"
"kg249a"
"kg250a"
"kg251a"
"kg252a"
)
)
)
(talker-spawn-func (-> *talker-speech* 49) *entity-pool* (target-pos 0) (the-as region #f))
(let ((gp-2 (new 'static 'vector :x 3358720.0 :y 32768.0 :z 4689920.0 :w 204800.0))
(s5-2 #f)
)
(while (not s5-2)
(let ((v1-48 (handle->process (-> self slave 0))))
(when v1-48
(let ((f0-1 (vector-vector-distance-squared (-> (the-as process-drawable v1-48) root trans) gp-2))
(f1-3 (-> gp-2 w))
)
(set! s5-2 (< f0-1 (* f1-3 f1-3)))
)
)
)
(suspend)
)
)
(talker-spawn-func (-> *talker-speech* 50) *entity-pool* (target-pos 0) (the-as region #f))
(none)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
24
4
(the-as (function object) (lambda :behavior task-manager
()
(send-event *traffic-manager* 'decrease-alert-level 0)
(send-event *traffic-manager* 'set-alert-duration 9000)
(if (and *target* (logtest? (focus-status pilot) (-> *target* focus-status)))
(send-event *target* 'change-mode 'normal)
)
(set-setting! 'pilot #f 0 0)
(set! (-> self state-time) (-> self clock frame-counter))
(while (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 2))
(suspend)
)
(none)
)
)
)
@@ -0,0 +1,438 @@
;;-*-Lisp-*-
(in-package goal)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
251
0
(the-as
(function object)
(lambda :behavior task-manager
()
(set! (-> self data-float 0) (the-as float (send-event *target* 'test-pickup 7)))
(send-event *target* 'change-mode 'darkjak #f 65)
(set! (-> self sound-id 0)
(add-process *gui-control* self (gui-channel message) (gui-action play) (-> self name) 81920.0 0)
)
(send-event *target* 'get-notify self)
(none)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
251
1
(the-as (function object) (lambda :behavior task-manager
()
(send-event *target* 'get-pickup 7 (-> self data-float 0))
(send-event *target* 'change-mode 'darkjak #f 128)
(send-event *target* 'get-notify #f)
(set-action!
*gui-control*
(gui-action stop)
(-> self sound-id 0)
(gui-channel none)
(gui-action none)
(the-as string #f)
(the-as (function gui-connection symbol) #f)
(the-as process #f)
)
(close! (-> self node-info) 'event)
(none)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
251
6
(the-as (function object) (lambda :behavior task-manager
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('notify)
(case (-> arg3 param 0)
(('attack)
(if (= (-> arg3 param 1) 16)
(go-virtual complete)
)
)
)
)
)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
251
2
(the-as
(function object)
(lambda :behavior task-manager
()
(if (and *target* (zero? (logand (focus-status dark) (-> *target* focus-status))))
(send-event *target* 'change-mode 'darkjak #f 65)
)
(when (= (get-status *gui-control* (-> self sound-id 0)) (gui-status active))
(let ((gp-1 (new
'stack
'font-context
*font-default-matrix*
32
280
0.0
(font-color default-#cddbcd)
(font-flags shadow kerning)
)
)
)
(set! (-> gp-1 flags) (font-flags shadow kerning large))
(let ((v1-14 gp-1))
(set! (-> v1-14 width) (the float 440))
)
(let ((v1-15 gp-1))
(set! (-> v1-15 height) (the float 80))
)
(let ((v1-16 gp-1))
(set! (-> v1-16 scale) 0.7)
)
(let ((s5-0 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (game-text-id oracle-tutorial-dark-bomb) #f))
(s5-0 *temp-string* gp-1 #f 44 (bucket-id progress))
)
)
)
(none)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
253
0
(the-as
(function object)
(lambda :behavior task-manager
()
(set! (-> self data-float 0) (the-as float (send-event *target* 'test-pickup 7)))
(send-event *target* 'change-mode 'darkjak #f 65)
(set! (-> self sound-id 0)
(add-process *gui-control* self (gui-channel message) (gui-action play) (-> self name) 81920.0 0)
)
(send-event *target* 'get-notify self)
(none)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
253
1
(the-as (function object) (lambda :behavior task-manager
()
(send-event *target* 'get-pickup 7 (-> self data-float 0))
(send-event *target* 'change-mode 'darkjak #f 128)
(send-event *target* 'get-notify #f)
(set-action!
*gui-control*
(gui-action stop)
(-> self sound-id 0)
(gui-channel none)
(gui-action none)
(the-as string #f)
(the-as (function gui-connection symbol) #f)
(the-as process #f)
)
(close! (-> self node-info) 'event)
(none)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
253
6
(the-as (function object) (lambda :behavior task-manager
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('notify)
(case (-> arg3 param 0)
(('attack)
(if (= (-> arg3 param 1) 17)
(go-virtual complete)
)
)
)
)
)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
253
2
(the-as
(function object)
(lambda :behavior task-manager
()
(if (and *target* (zero? (logand (focus-status dark) (-> *target* focus-status))))
(send-event *target* 'change-mode 'darkjak #f 65)
)
(when (= (get-status *gui-control* (-> self sound-id 0)) (gui-status active))
(let ((gp-1 (new
'stack
'font-context
*font-default-matrix*
32
280
0.0
(font-color default-#cddbcd)
(font-flags shadow kerning)
)
)
)
(set! (-> gp-1 flags) (font-flags shadow kerning large))
(let ((v1-14 gp-1))
(set! (-> v1-14 width) (the float 440))
)
(let ((v1-15 gp-1))
(set! (-> v1-15 height) (the float 80))
)
(let ((v1-16 gp-1))
(set! (-> v1-16 scale) 0.7)
)
(let ((s5-0 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (game-text-id oracle-tutorial-dark-blast) #f))
(s5-0 *temp-string* gp-1 #f 44 (bucket-id progress))
)
)
)
(none)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
255
0
(the-as
(function object)
(lambda :behavior task-manager
()
(set! (-> self data-float 0) (the-as float (send-event *target* 'test-pickup 7)))
(send-event *target* 'change-mode 'darkjak #f 65)
(set! (-> self sound-id 0)
(add-process *gui-control* self (gui-channel message) (gui-action play) (-> self name) 81920.0 0)
)
(send-event *target* 'get-notify self)
(set! (-> self start-time) (-> self clock frame-counter))
(none)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
255
1
(the-as (function object) (lambda :behavior task-manager
()
(send-event *target* 'get-pickup 7 (-> self data-float 0))
(send-event *target* 'change-mode 'darkjak #f 128)
(send-event *target* 'get-notify #f)
(set-action!
*gui-control*
(gui-action stop)
(-> self sound-id 0)
(gui-channel none)
(gui-action none)
(the-as string #f)
(the-as (function gui-connection symbol) #f)
(the-as process #f)
)
(close! (-> self node-info) 'event)
(none)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
255
2
(the-as
(function object)
(lambda :behavior task-manager
()
(if (and *target* (zero? (logand (focus-status dark) (-> *target* focus-status))))
(send-event *target* 'change-mode 'darkjak #f 65)
)
(when (= (get-status *gui-control* (-> self sound-id 0)) (gui-status active))
(let ((gp-1 (new
'stack
'font-context
*font-default-matrix*
32
280
0.0
(font-color default-#cddbcd)
(font-flags shadow kerning)
)
)
)
(set! (-> gp-1 flags) (font-flags shadow kerning large))
(let ((v1-14 gp-1))
(set! (-> v1-14 width) (the float 440))
)
(let ((v1-15 gp-1))
(set! (-> v1-15 height) (the float 80))
)
(let ((v1-16 gp-1))
(set! (-> v1-16 scale) 0.7)
)
(let ((s5-0 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (game-text-id oracle-tutorial-dark-invincible) #f))
(s5-0 *temp-string* gp-1 #f 44 (bucket-id progress))
)
)
)
(none)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
257
0
(the-as
(function object)
(lambda :behavior task-manager
()
(set! (-> self data-float 0) (the-as float (send-event *target* 'test-pickup 7)))
(send-event *target* 'change-mode 'darkjak #f 65)
(set! (-> self sound-id 0)
(add-process *gui-control* self (gui-channel message) (gui-action play) (-> self name) 81920.0 0)
)
(send-event *target* 'get-notify self)
(none)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
257
1
(the-as (function object) (lambda :behavior task-manager
()
(send-event *target* 'get-pickup 7 (-> self data-float 0))
(send-event *target* 'change-mode 'darkjak #f 128)
(send-event *target* 'get-notify #f)
(set-action!
*gui-control*
(gui-action stop)
(-> self sound-id 0)
(gui-channel none)
(gui-action none)
(the-as string #f)
(the-as (function gui-connection symbol) #f)
(the-as process #f)
)
(close! (-> self node-info) 'event)
(none)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
257
6
(the-as (function object) (lambda :behavior task-manager
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(the-as object (case arg2
(('notify)
(case (-> arg3 param 0)
(('attack)
(if (= (-> arg3 param 1) 18)
#f
)
)
)
)
)
)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
257
2
(the-as
(function object)
(lambda :behavior task-manager
()
(if (and *target* (zero? (logand (focus-status dark) (-> *target* focus-status))))
(send-event *target* 'change-mode 'darkjak #f 65)
)
(when (= (get-status *gui-control* (-> self sound-id 0)) (gui-status active))
(let ((gp-1 (new
'stack
'font-context
*font-default-matrix*
32
280
0.0
(font-color default-#cddbcd)
(font-flags shadow kerning)
)
)
)
(set! (-> gp-1 flags) (font-flags shadow kerning large))
(let ((v1-14 gp-1))
(set! (-> v1-14 width) (the float 440))
)
(let ((v1-15 gp-1))
(set! (-> v1-15 height) (the float 80))
)
(let ((v1-16 gp-1))
(set! (-> v1-16 scale) 0.7)
)
(let ((s5-0 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (game-text-id oracle-tutorial-dark-giant) #f))
(s5-0 *temp-string* gp-1 #f 44 (bucket-id progress))
)
)
)
(none)
)
)
)
@@ -32,8 +32,8 @@
;; definition of type bombbot-path
(deftype bombbot-path (structure)
((node-count uint16 :offset-assert 0)
(node uint32 :offset-assert 4)
((node-count uint16 :offset-assert 0)
(node (inline-array bombbot-node) :offset-assert 4)
)
:method-count-assert 9
:size-assert #x8
@@ -55,7 +55,3 @@
;; failed to figure out what this is:
0
@@ -0,0 +1,822 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for symbol *bombbot-path-1*, type bombbot-path
(define *bombbot-path-1* (new 'static 'bombbot-path
:node-count #x1c
:node (new 'static 'inline-array bombbot-node 28
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3258277.5 :y 36837.375 :z 2919952.0)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3527335.0 :y 36837.375 :z 2643463.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3614297.8 :y 36837.375 :z 2580864.5)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4291214.0 :y 38298.008 :z 2591629.0)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4390092.0 :y 36837.375 :z 2643881.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4455013.0 :y 36837.375 :z 2753605.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4538736.0 :y 36837.375 :z 2739244.8)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4589772.0 :y 36837.375 :z 2653011.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4602265.0 :y 38390.58 :z 2465177.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4529397.0 :y 36837.375 :z 2365566.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4405943.0 :y 36837.375 :z 2328894.8)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4000464.5 :y 36837.375 :z 2104958.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4013141.5 :y 36837.375 :z 1832038.0)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4521655.0 :y 36837.375 :z 1745903.2)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4506131.5 :y 33105.92 :z 1321582.1)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4644699.5 :y 37455.055 :z 1207492.2)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4667923.5 :y 37455.055 :z 1168281.2)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4659813.0 :y 41026.766 :z 977706.6)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4733418.5 :y 37455.055 :z 871554.7)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4753079.0 :y 37459.56 :z 775511.6)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4692417.5 :y 37457.51 :z 759676.5)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4495687.0 :y 37457.51 :z 765365.9)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4472339.5 :y 37457.51 :z 496651.88)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4383906.5 :y 37457.51 :z 276074.1)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4582235.5 :y 37446.043 :z 83403.57)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4677671.5 :y 37446.043 :z 70415.56)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4685986.5 :y 37446.043 :z 217373.9)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4718386.5 :y 37446.043 :z 233280.72)
:nav-mesh-id #x2578
)
)
)
)
;; definition for symbol *bombbot-path-2*, type bombbot-path
(define *bombbot-path-2* (new 'static 'bombbot-path
:node-count #x21
:node (new 'static 'inline-array bombbot-node 33
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1677880.9 :y 32856.473 :z -190588.11)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1826967.1 :y 36825.906 :z -179154.53)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1879178.9 :y 36858.266 :z -70936.164)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2041179.8 :y 36852.12 :z -62959.617)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2200935.8 :y 37035.62 :z -327732.44)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2238988.0 :y 36855.81 :z -502779.5)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2280828.0 :y 36862.363 :z -594517.6)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2382253.8 :y 36858.266 :z -654388.8)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2463849.8 :y 36852.53 :z -811904.6)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2693455.5 :y 32287.129 :z -782532.2)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2787884.8 :y 36854.168 :z -1143430.8)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2870263.5 :y 36964.76 :z -1137082.0)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3010809.5 :y 35717.53 :z -1025650.25)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3058421.2 :y 36852.53 :z -689659.5)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3038600.5 :y 37395.66 :z -597171.8)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2939293.0 :y 45748.223 :z -549240.44)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2885557.8 :y 43587.586 :z -452988.53)
:nav-mesh-id #x2644
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3289734.2 :y 37456.28 :z -52194.508)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3266022.5 :y 37448.09 :z 309003.88)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3520949.8 :y 38775.6 :z 423140.97)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3753070.2 :y 37448.09 :z 611843.7)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3987242.5 :y 37458.74 :z 642600.56)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4035505.2 :y 37454.234 :z 575893.1)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4232519.0 :y 37457.51 :z 589045.4)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4315381.0 :y 37457.51 :z 524410.5)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4324351.0 :y 37457.51 :z 385351.7)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4224859.5 :y 37457.51 :z 381204.47)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4227849.5 :y 37457.51 :z 289628.56)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4357856.5 :y 37457.51 :z 260807.06)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4588256.5 :y 37446.043 :z 68193.89)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4668702.0 :y 37446.043 :z 85842.74)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4679515.5 :y 37446.043 :z 238454.38)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4716789.0 :y 37446.043 :z 252433.2)
:nav-mesh-id #x2578
)
)
)
)
;; definition for symbol *bombbot-path-3*, type bombbot-path
(define *bombbot-path-3* (new 'static 'bombbot-path
:node-count #x1b
:node (new 'static 'inline-array bombbot-node 27
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3349143.2 :y 36837.375 :z 1716903.5)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3350859.2 :y 36837.375 :z 2284261.0)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3585396.0 :y 38390.58 :z 2270354.8)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3678752.2 :y 36837.375 :z 2124566.0)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3780005.5 :y 37188.402 :z 1886043.8)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3988593.8 :y 38456.523 :z 1788928.0)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4476435.5 :y 36837.375 :z 1664429.6)
:nav-mesh-id #x429e
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4459273.5 :y 30950.605 :z 1375608.4)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4297235.5 :y 37457.92 :z 1336405.6)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4267007.0 :y 37444.402 :z 1361804.9)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4239564.0 :y 37457.92 :z 1410236.0)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4136713.5 :y 42312.09 :z 1466470.0)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3730288.2 :y 37457.92 :z 1464053.4)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3679088.2 :y 37457.51 :z 1307471.5)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3718180.5 :y 37457.51 :z 1220591.2)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3999309.5 :y 40812.543 :z 1229811.2)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4089249.5 :y 37457.51 :z 1150664.2)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4044267.0 :y 37457.51 :z 856497.75)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4036837.0 :y 37457.51 :z 757390.94)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4235918.0 :y 37457.51 :z 741895.8)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4270160.5 :y 37457.51 :z 614477.44)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4392795.5 :y 37457.51 :z 371413.8)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4414668.0 :y 41926.246 :z 210297.23)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4583751.0 :y 37446.043 :z 98254.85)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4685045.0 :y 37446.043 :z 85629.336)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4691557.0 :y 37446.043 :z 193381.17)
:nav-mesh-id #x2578
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4719328.5 :y 37446.043 :z 209884.78)
:nav-mesh-id #x2578
)
)
)
)
;; definition for symbol *bombbot-path-4*, type bombbot-path
(define *bombbot-path-4* (new 'static 'bombbot-path
:node-count #x1b
:node (new 'static 'inline-array bombbot-node 27
(new 'static 'bombbot-node
:position (new 'static 'vector :x 882802.25 :y 36859.902 :z 3621834.2)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 872205.94 :y 36854.168 :z 3192081.5)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1050914.4 :y 69632.0 :z 3175034.5)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1498271.4 :y 69626.266 :z 3185827.5)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1481735.8 :y 69642.24 :z 2830061.2)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1456881.2 :y 69642.24 :z 2057588.4)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1502514.8 :y 69642.24 :z 1884434.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1484082.8 :y 69632.0 :z 1743306.4)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1115516.5 :y 69642.24 :z 1752252.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 639340.1 :y 69639.78 :z 1770094.1)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 128253.54 :y 69642.24 :z 1734078.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 73947.95 :y 69642.24 :z 1844170.4)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 109042.07 :y 69642.24 :z 2066944.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 122852.555 :y 69642.24 :z 2758323.5)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 79918.28 :y 69626.266 :z 3150474.8)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 517484.12 :y 69632.0 :z 3181182.2)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 602791.5 :y 36854.168 :z 3181075.8)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 699465.3 :y 36854.168 :z 3194715.2)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 674786.94 :y 36864.0 :z 3605937.2)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 421895.78 :y 36864.0 :z 3631988.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 369729.12 :y 36859.902 :z 3813134.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 397331.66 :y 36861.953 :z 4427570.5)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 731725.44 :y 36864.0 :z 4451286.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1126035.0 :y 36864.0 :z 4429454.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1190809.2 :y 36859.902 :z 4295065.0)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1190031.0 :y 36861.953 :z 3726978.8)
:nav-mesh-id #x5881
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1073888.9 :y 36859.902 :z 3629100.8)
:nav-mesh-id #x5881
)
)
)
)
;; definition for symbol *bombbot-path-5*, type bombbot-path
(define *bombbot-path-5* (new 'static 'bombbot-path
:node-count #x33
:node (new 'static 'inline-array bombbot-node 51
(new 'static 'bombbot-node
:position (new 'static 'vector :x 388330.7 :y 35735.55 :z 5592473.0)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 235137.44 :y 35738.418 :z 5335571.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 74786.0 :y 35725.312 :z 5357485.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -245602.72 :y 35892.43 :z 5523168.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -478199.4 :y 35809.28 :z 5729811.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -633699.94 :y 39457.586 :z 5876857.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -667004.5 :y 59325.234 :z 5924289.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -696929.9 :y 58614.58 :z 5964103.0)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -732503.6 :y 22183.527 :z 6010224.0)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -856731.25 :y 21815.297 :z 6198476.0)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -870399.56 :y 35786.344 :z 6224935.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -976211.56 :y 35637.656 :z 6564699.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -719711.9 :y 38689.176 :z 6634986.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -531132.0 :y 38689.176 :z 6696467.5)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -354006.62 :y 38696.14 :z 6784162.5)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x -180439.86 :y 38695.32 :z 6879559.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 20982.58 :y 35575.81 :z 7042620.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 195429.98 :y 35792.895 :z 6968032.5)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 312721.8 :y 35971.89 :z 6998506.5)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 453852.78 :y 37415.73 :z 7159356.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 678702.7 :y 75903.38 :z 7154687.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 891694.7 :y 75898.06 :z 7155056.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1123581.5 :y 37389.105 :z 7159807.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1262735.0 :y 36363.06 :z 7003381.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1435963.0 :y 35584.82 :z 6967623.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1585966.8 :y 37874.895 :z 7002643.5)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1763491.4 :y 38840.32 :z 6884228.5)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1928056.4 :y 38840.32 :z 6786702.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2107686.0 :y 38849.332 :z 6696098.5)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2293435.5 :y 38841.547 :z 6626262.0)
:nav-mesh-id #x48db
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2510294.8 :y 35697.46 :z 6572563.5)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2539388.0 :y 36340.53 :z 6489415.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2446294.8 :y 35794.535 :z 6219815.5)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2430483.8 :y 23202.611 :z 6190160.5)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2307473.0 :y 22759.834 :z 5994905.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2275430.0 :y 56630.066 :z 5951815.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2247085.8 :y 59249.05 :z 5913271.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2208775.2 :y 40428.34 :z 5866126.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 2049703.5 :y 35709.746 :z 5719040.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1805794.9 :y 35787.98 :z 5533326.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1550716.5 :y 35767.91 :z 5390949.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1386327.6 :y 35697.05 :z 5346631.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1270820.5 :y 35735.14 :z 5479013.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1179094.6 :y 35735.55 :z 5589237.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1153597.0 :y 23880.09 :z 5588172.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1028533.9 :y 21655.96 :z 5589810.5)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 1001635.44 :y 37785.19 :z 5586247.0)
:nav-mesh-id #x48e9
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 782425.7 :y 35723.67 :z 5569207.0)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 574987.9 :y 35949.363 :z 5584567.0)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 546176.6 :y 21655.553 :z 5588704.5)
:nav-mesh-id #x48cc
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 417185.38 :y 24605.082 :z 5599353.5)
:nav-mesh-id #x48cc
)
)
)
)
;; definition for symbol *bombbot-path-6*, type bombbot-path
(define *bombbot-path-6* (new 'static 'bombbot-path
:node-count #x1a
:node (new 'static 'inline-array bombbot-node 26
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4673330.5 :y 103528.04 :z 4155801.2)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4680252.0 :y 103531.31 :z 3704430.2)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4259757.5 :y 103531.31 :z 3700010.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3996306.8 :y 103531.31 :z 3698474.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3866263.2 :y 103531.31 :z 3698322.8)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3350626.0 :y 103528.04 :z 3702615.8)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3346918.5 :y 103528.04 :z 4084702.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3694755.5 :y 103528.04 :z 4096572.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3703221.8 :y 103528.04 :z 4352286.0)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3958894.2 :y 103528.04 :z 4364409.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3958861.5 :y 103528.04 :z 4683570.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3573743.2 :y 103528.04 :z 4682791.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3563831.0 :y 103528.04 :z 4222893.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3185090.2 :y 103528.04 :z 4217609.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3184090.8 :y 103443.25 :z 3811204.8)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3179494.5 :y 36837.375 :z 3575176.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3264048.8 :y 36837.375 :z 3525590.8)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3247177.0 :y 36837.375 :z 4148510.0)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3650235.5 :y 36837.375 :z 4178902.8)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3655273.8 :y 36837.375 :z 4465417.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 3942530.8 :y 36837.375 :z 4631551.0)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4158422.8 :y 36837.375 :z 4682956.0)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4413520.5 :y 103528.04 :z 4686642.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4432117.0 :y 103528.04 :z 4430192.0)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4616723.5 :y 103528.04 :z 4419378.5)
:nav-mesh-id #x34ad
)
(new 'static 'bombbot-node
:position (new 'static 'vector :x 4627783.0 :y 103531.31 :z 4174642.5)
:nav-mesh-id #x34ad
)
)
)
)
File diff suppressed because it is too large Load Diff
-1
View File
@@ -415,7 +415,6 @@
((method-of-type nav-enemy kill-prefer-falling) obj)
)
)
(none)
)
;; definition for method 90 of type hopper
File diff suppressed because it is too large Load Diff
+29 -35
View File
@@ -260,48 +260,42 @@ For pegasus, it will call [[enemy::57]] only if the [[pegasus]] has been targett
)
;; definition for method 74 of type pegasus
;; WARN: Return type mismatch none vs object.
(defmethod general-event-handler pegasus ((obj pegasus) (proc process) (arg2 int) (event-type symbol) (event event-message-block))
"Handles various events for the enemy
@TODO - unsure if there is a pattern for the events and this should have a more specific name"
(with-pp
(let ((v1-0 event-type))
(the-as
object
(cond
((= v1-0 'track)
#f
)
((or (= v1-0 'hit) (= v1-0 'hit-knocked))
(cond
((zero? (-> obj hit-points))
(logclear! (-> obj mask) (process-mask actor-pause))
(logclear! (-> obj focus-status) (focus-status dangerous))
(logclear! (-> obj enemy-flags) (enemy-flag enable-on-notice))
(logior! (-> obj enemy-flags) (enemy-flag chase-startup))
(logior! (-> obj focus-status) (focus-status hit))
(if (zero? (-> obj hit-points))
(logior! (-> obj focus-status) (focus-status dead))
)
(logclear! (-> obj enemy-flags) (enemy-flag actor-pause-backup))
(enemy-method-62 obj)
(set! (-> obj enemy-flags) (logior (enemy-flag actor-pause-backup) (-> obj enemy-flags)))
(process-contact-action proc)
(send-event proc 'get-attack-count 1)
(the-as object (kill-prefer-falling obj))
(case event-type
(('track)
#f
)
(('hit 'hit-knocked)
(cond
((zero? (-> obj hit-points))
(logclear! (-> obj mask) (process-mask actor-pause))
(logclear! (-> obj focus-status) (focus-status dangerous))
(logclear! (-> obj enemy-flags) (enemy-flag enable-on-notice))
(logior! (-> obj enemy-flags) (enemy-flag chase-startup))
(logior! (-> obj focus-status) (focus-status hit))
(if (zero? (-> obj hit-points))
(logior! (-> obj focus-status) (focus-status dead))
)
(else
(let ((v0-0 (the-as object (-> pp clock frame-counter))))
(set! (-> obj targetted-timer) (the-as time-frame v0-0))
v0-0
)
)
(logclear! (-> obj enemy-flags) (enemy-flag actor-pause-backup))
(enemy-method-62 obj)
(set! (-> obj enemy-flags) (logior (enemy-flag actor-pause-backup) (-> obj enemy-flags)))
(process-contact-action proc)
(send-event proc 'get-attack-count 1)
(kill-prefer-falling obj)
)
(else
(let ((v0-0 (the-as object (-> pp clock frame-counter))))
(set! (-> obj targetted-timer) (the-as time-frame v0-0))
v0-0
)
)
(else
((method-of-type enemy general-event-handler) obj proc arg2 event-type event)
)
)
)
)
(else
((method-of-type enemy general-event-handler) obj proc arg2 event-type event)
)
)
)
@@ -0,0 +1,482 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for function fortress-login
;; WARN: Return type mismatch int vs none.
(defun fortress-login ()
(set! *nav-network* (new 'loading-level 'nav-network))
(nav-network-method-9 *nav-network*)
0
(none)
)
;; definition for function fortress-deactivate
;; WARN: Return type mismatch int vs none.
(defun fortress-deactivate ()
(set! *nav-network* (the-as nav-network 0))
0
(none)
)
;; definition for function fortress-activate
(defun fortress-activate ((arg0 level))
(nav-network-method-10 *nav-network* arg0 *fortress-adjacency*)
(none)
)
;; definition of type fort-elec-button
(deftype fort-elec-button (cty-guard-turret-button)
((start-up? symbol :offset-assert 288)
)
:heap-base #xb0
:method-count-assert 41
:size-assert #x124
:flag-assert #x2900b00124
(:methods
(waiting () _type_ :state 40)
)
)
;; definition for method 3 of type fort-elec-button
(defmethod inspect fort-elec-button ((obj fort-elec-button))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type cty-guard-turret-button inspect)))
(t9-0 obj)
)
(format #t "~2Tstart-up?: ~A~%" (-> obj start-up?))
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-fort-elec-button cty-guard-turret-button cty-guard-turret-button-lod0-jg cty-guard-turret-button-idle-ja
((cty-guard-turret-button-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 3)
)
;; failed to figure out what this is:
(defstate waiting (fort-elec-button)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('trigger)
(go-virtual pop-up)
)
)
)
:code (the-as (function none :behavior fort-elec-button) sleep-code)
)
;; definition for method 33 of type fort-elec-button
;; WARN: Return type mismatch int vs none.
(defmethod basebutton-method-33 fort-elec-button ((obj fort-elec-button))
"TODO - joint stuff"
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-fort-elec-button" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(ja-channel-set! 1)
(cond
((-> obj start-up?)
(let ((a0-4 (-> obj skel root-channel 0)))
(set! (-> a0-4 frame-group) (the-as art-joint-anim (-> obj draw art-group data 3)))
(set! (-> a0-4 frame-num)
(the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 3)) frames num-frames) -1))
)
(joint-control-channel-group! a0-4 (the-as art-joint-anim (-> obj draw art-group data 3)) num-func-identity)
)
)
(else
(let ((a0-5 (-> obj skel root-channel 0)))
(set! (-> a0-5 frame-group) (the-as art-joint-anim (-> obj draw art-group data 3)))
(set! (-> a0-5 frame-num) 0.0)
(joint-control-channel-group! a0-5 (the-as art-joint-anim (-> obj draw art-group data 3)) num-func-identity)
)
)
)
(transform-post)
(none)
)
;; definition for method 35 of type fort-elec-button
;; WARN: Return type mismatch process-mask vs none.
(defmethod prepare-trigger-event! fort-elec-button ((obj fort-elec-button))
"Sets `event-going-down` to `'trigger`"
(set! (-> obj start-up?) (= 1 (res-lump-value (-> obj entity) 'extra-id uint :time -1000000000.0)))
(set! (-> obj event-going-down) 'trigger)
(process-entity-status! obj (entity-perm-status no-kill) #t)
(logclear! (-> obj mask) (process-mask actor-pause))
(none)
)
;; definition for method 32 of type fort-elec-button
(defmethod idle-state-transition fort-elec-button ((obj fort-elec-button))
"If `button-status` has [[button-status:0]] set, transition to [[basebutton::27]] otherwise, [[basebutton::30]]"
(cond
((-> obj start-up?)
(let ((s5-0 (-> obj skel root-channel 0)))
(joint-control-channel-group-eval!
s5-0
(the-as art-joint-anim (-> obj draw art-group data 2))
num-func-identity
)
(set! (-> s5-0 frame-num) 0.0)
)
(go (method-of-object obj up-idle))
)
(else
(go (method-of-object obj waiting))
)
)
)
;; definition of type fort-led
(deftype fort-led (process-drawable)
((button-actor entity-actor :offset-assert 200)
)
:heap-base #x50
:method-count-assert 22
:size-assert #xcc
:flag-assert #x16005000cc
(:methods
(red () _type_ :state 20)
(green () _type_ :state 21)
)
)
;; definition for method 3 of type fort-led
(defmethod inspect fort-led ((obj fort-led))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~2Tbutton-actor: ~A~%" (-> obj button-actor))
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-fort-led fort-led fort-led-lod0-jg fort-led-idle-ja
((fort-led-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
;; failed to figure out what this is:
(defstate red (fort-led)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('trigger)
(go-virtual green)
)
)
)
:code (behavior ()
(setup-masks (-> self draw) 4 2)
(ja-post)
(sleep-code)
(none)
)
)
;; failed to figure out what this is:
(defstate green (fort-led)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('untrigger)
(go-virtual red)
)
)
)
:code (behavior ()
(setup-masks (-> self draw) 2 4)
(ja-post)
(sleep-code)
(none)
)
)
;; definition for method 11 of type fort-led
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! fort-led ((obj fort-led) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-fort-led" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(set! (-> obj button-actor) (entity-actor-lookup arg0 'alt-actor 0))
(if (and (-> obj button-actor)
(logtest? (-> obj button-actor extra perm status) (entity-perm-status subtask-complete))
)
(go (method-of-object obj green))
(go (method-of-object obj red))
)
(none)
)
;; definition of type elec-lock-gate
(deftype elec-lock-gate (fort-elec-gate)
((actor-group (pointer actor-group) :offset-assert 516)
(actor-group-count int32 :offset-assert 520)
(all-gone? symbol :offset-assert 524)
)
:heap-base #x190
:method-count-assert 32
:size-assert #x210
:flag-assert #x2001900210
(:methods
(pre-shutdown () _type_ :state 30)
(elec-lock-gate-method-31 (_type_ symbol) symbol 31)
)
)
;; definition for method 3 of type elec-lock-gate
(defmethod inspect elec-lock-gate ((obj elec-lock-gate))
(when (not obj)
(set! obj obj)
(goto cfg-7)
)
(let ((t9-0 (method-of-type fort-elec-gate inspect)))
(t9-0 obj)
)
(format #t "~2Tactor-group: #x~X~%" (-> obj actor-group))
(dotimes (s5-0 (-> obj actor-group-count))
(format #t "~T [~D]~2Tactor-group: ~`actor-group`P~%" s5-0 (-> obj actor-group s5-0))
)
(format #t "~2Tactor-group-count: ~D~%" (-> obj actor-group-count))
(format #t "~2Tall-gone?: ~A~%" (-> obj all-gone?))
(label cfg-7)
obj
)
;; failed to figure out what this is:
(defstate active (elec-lock-gate)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('trigger)
(if (elec-lock-gate-method-31 self (the-as symbol proc))
(go-virtual pre-shutdown)
)
)
(else
((-> (method-of-type elec-gate active) event) proc arg1 event-type event)
)
)
)
)
;; failed to figure out what this is:
(defstate pre-shutdown (elec-lock-gate)
:virtual #t
:trans (-> (method-of-type elec-lock-gate active) trans)
:code (behavior ()
(let ((a0-0 *target*))
(when (and a0-0 (< 81920.0 (vector-vector-distance (get-trans a0-0 0) (-> self root trans))))
(set! (-> self quality-enabled?) #f)
(let ((gp-1 (-> self clock frame-counter)))
(until (>= (- (-> self clock frame-counter) gp-1) (seconds 0.5))
(suspend)
)
)
(hide-hud-quick #f)
(set-setting! 'entity-name "camera-243" 0 0)
(set-setting! 'process-mask 'set 0 (process-mask movie enemy))
(process-grab? *target* #f)
(let ((gp-2 (-> self clock frame-counter)))
(until (>= (- (-> self clock frame-counter) gp-2) (seconds 2))
(suspend)
)
)
)
)
(go-virtual shutdown)
(none)
)
:post (-> (method-of-type elec-lock-gate active) post)
)
;; failed to figure out what this is:
(defstate shutdown (elec-lock-gate)
:virtual #t
:enter (behavior ()
(let ((t9-1 (-> (the-as state (find-parent-method elec-lock-gate 22)) enter)))
(if t9-1
((the-as (function none) t9-1))
)
)
(set! (-> self all-gone?) #f)
(none)
)
:trans (behavior ()
(let ((gp-0 #t))
(dotimes (s5-0 5)
(let ((s4-0 (-> self l-bolt s5-0)))
(seek! (-> s4-0 pos) 0.0 (* (- 1.14 (-> s4-0 pos)) (-> self clock seconds-per-frame)))
(set! gp-0 (cond
((or (< 1.0 (-> s4-0 pos)) (>= 0.0 (-> s4-0 pos)))
(let ((v1-9 (-> self l-bolt s5-0 bolt))
(a0-1 3)
)
(let ((a1-2 (!= a0-1 (-> v1-9 state mode))))
(case a0-1
((3)
(if a1-2
(set! (-> v1-9 state counter) 0.0)
)
)
((1)
(set! (-> v1-9 state start-color) (-> v1-9 spec start-color))
(set! (-> v1-9 state end-color) (-> v1-9 spec end-color))
)
)
)
(set! (-> v1-9 state mode) (the-as lightning-mode a0-1))
)
(let ((v1-12 (-> self l-bolt s5-0 ring 0))
(a0-2 3)
)
(let ((a1-12 (!= a0-2 (-> v1-12 state mode))))
(case a0-2
((3)
(if a1-12
(set! (-> v1-12 state counter) 0.0)
)
)
((1)
(set! (-> v1-12 state start-color) (-> v1-12 spec start-color))
(set! (-> v1-12 state end-color) (-> v1-12 spec end-color))
)
)
)
(set! (-> v1-12 state mode) (the-as lightning-mode a0-2))
)
(let ((v1-15 (-> self l-bolt s5-0 ring 1))
(a0-3 3)
)
(let ((a1-22 (!= a0-3 (-> v1-15 state mode))))
(case a0-3
((3)
(if a1-22
(set! (-> v1-15 state counter) 0.0)
)
)
((1)
(set! (-> v1-15 state start-color) (-> v1-15 spec start-color))
(set! (-> v1-15 state end-color) (-> v1-15 spec end-color))
)
)
)
(set! (-> v1-15 state mode) (the-as lightning-mode a0-3))
)
gp-0
)
(else
#f
)
)
)
)
)
(set! (-> self all-gone?) gp-0)
)
(none)
)
:code (behavior ()
(until (-> self all-gone?)
(let ((gp-0 (-> self clock frame-counter)))
(until (>= (- (-> self clock frame-counter) gp-0) (seconds 0.5))
(suspend)
)
)
)
(set-setting! 'interp-time 'abs 0 0)
(remove-setting! 'entity-name)
(remove-setting! 'process-mask)
(dotimes (gp-1 2)
(suspend)
)
(remove-setting! 'interp-time)
(process-release? *target*)
(go-virtual idle)
(none)
)
)
;; definition for method 31 of type elec-lock-gate
(defmethod elec-lock-gate-method-31 elec-lock-gate ((obj elec-lock-gate) (arg0 symbol))
(dotimes (v1-0 (-> obj actor-group-count))
(dotimes (a2-0 (-> obj actor-group v1-0 length))
(when (or (not arg0) (let ((a3-5 (-> obj actor-group v1-0 data a2-0 actor)))
(!= (if a3-5
(-> a3-5 extra process)
)
arg0
)
)
)
(if (not (logtest? (-> obj actor-group v1-0 data a2-0 actor extra perm status) (entity-perm-status subtask-complete))
)
(return #f)
)
)
)
)
#t
)
;; definition for method 26 of type elec-lock-gate
(defmethod set-state! elec-lock-gate ((obj elec-lock-gate))
"If either [[actor-option::17]] is set on the [[elec-gate]] or the related subtask is completed
make the gate `idle`.
Otherwise, the gate will be `active`."
(if (elec-lock-gate-method-31 obj #f)
(go (method-of-object obj shutdown))
((method-of-type fort-elec-gate set-state!) obj)
)
(none)
)
;; definition for method 25 of type elec-lock-gate
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod set-palette! elec-lock-gate ((obj elec-lock-gate))
"Sets the [[elec-gate]]'s `palette-id` appropriately"
(local-vars (sv-16 res-tag))
(let ((t9-0 (method-of-type fort-elec-gate set-palette!)))
(t9-0 obj)
)
(logclear! (-> obj mask) (process-mask actor-pause))
(set! sv-16 (new 'static 'res-tag))
(let ((v1-4 (res-lump-data (-> obj entity) 'actor-groups pointer :tag-ptr (& sv-16))))
(cond
((and v1-4 (nonzero? (-> sv-16 elt-count)))
(set! (-> obj actor-group) (the-as (pointer actor-group) v1-4))
(set! (-> obj actor-group-count) (the-as int (-> sv-16 elt-count)))
)
(else
(set! (-> obj actor-group) (the-as (pointer actor-group) #f))
(set! (-> obj actor-group-count) 0)
0
)
)
)
(none)
)
@@ -0,0 +1,898 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type fort-twist-rail
(deftype fort-twist-rail (process-drawable)
((sync sync-eased :inline :offset-assert 200)
(init-quat quaternion :inline :offset-assert 256)
)
:heap-base #x90
:method-count-assert 21
:size-assert #x110
:flag-assert #x1500900110
(:methods
(idle () _type_ :state 20)
)
)
;; definition for method 3 of type fort-twist-rail
(defmethod inspect fort-twist-rail ((obj fort-twist-rail))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~2Tsync: #<sync-eased @ #x~X>~%" (-> obj sync))
(format #t "~2Tinit-quat: #<quaternion @ #x~X>~%" (-> obj init-quat))
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-fort-twist-rail fort-twist-rail 0 3
((1 (meters 999999)))
:bounds (static-spherem 0 0 10 14)
)
;; failed to figure out what this is:
(defstate idle (fort-twist-rail)
:virtual #t
:trans (the-as (function none :behavior fort-twist-rail) rider-trans)
:code (the-as (function none :behavior fort-twist-rail) sleep-code)
:post (behavior ()
(let ((f0-0 (get-norm! (-> self sync) 0)))
(quaternion-rotate-y! (-> self root quat) (-> self init-quat) (+ -2730.6667 (* 5461.3335 f0-0)))
)
(rider-post)
(none)
)
)
;; definition for method 11 of type fort-twist-rail
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! fort-twist-rail ((obj fort-twist-rail) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player))))
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s4-0 reaction) cshape-reaction-default)
(set! (-> s4-0 no-reaction)
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
)
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0)))
(set! (-> s4-0 total-prims) (the-as uint 3))
(set! (-> s3-0 prim-core collide-as) (collide-spec obstacle pusher))
(set! (-> s3-0 prim-core collide-with) (collide-spec jak bot player-list))
(set! (-> s3-0 prim-core action) (collide-action solid rideable))
(set! (-> s3-0 transform-index) 3)
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 40960.0 57344.0)
(set! (-> s4-0 root-prim) s3-0)
)
(pusher-init s4-0)
(let ((v1-15 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0))))
(set! (-> v1-15 prim-core collide-as) (collide-spec pusher))
(set! (-> v1-15 prim-core collide-with) (collide-spec jak bot player-list))
(set! (-> v1-15 prim-core action) (collide-action solid rideable))
(set! (-> v1-15 transform-index) 3)
(set-vector! (-> v1-15 local-sphere) 0.0 -19660.8 0.0 24576.0)
)
(let ((v1-17 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
(set! (-> v1-17 prim-core collide-as) (collide-spec pusher))
(set! (-> v1-17 prim-core collide-with) (collide-spec jak bot player-list))
(set! (-> v1-17 prim-core action) (collide-action solid rideable))
(set! (-> v1-17 transform-index) 3)
(set-vector! (-> v1-17 local-sphere) 0.0 0.0 45056.0 45056.0)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(let ((v1-20 (-> s4-0 root-prim)))
(set! (-> s4-0 backup-collide-as) (-> v1-20 prim-core collide-as))
(set! (-> s4-0 backup-collide-with) (-> v1-20 prim-core collide-with))
)
(set! (-> obj root) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-fort-twist-rail" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(quaternion-copy! (-> obj init-quat) (-> obj root quat))
(let ((a1-14 (new 'stack-no-clear 'sync-info-params)))
(let ((v1-26 0))
(if #t
(set! v1-26 (logior v1-26 1))
)
(set! (-> a1-14 sync-type) 'sync-eased)
(set! (-> a1-14 sync-flags) (the-as sync-flags v1-26))
)
(set! (-> a1-14 period) (the-as uint 900))
(set! (-> a1-14 entity) (-> obj entity))
(set! (-> a1-14 percent) 0.0)
(set! (-> a1-14 ease-in) 0.15)
(set! (-> a1-14 ease-out) 0.15)
(set! (-> a1-14 pause-in) 0.0)
(set! (-> a1-14 pause-out) 0.0)
(initialize! (-> obj sync) a1-14)
)
(let ((a0-29 (-> obj skel root-channel 0)))
(set! (-> a0-29 frame-group) (the-as art-joint-anim (-> obj draw art-group data 3)))
(set! (-> a0-29 frame-num) 0.0)
(joint-control-channel-group! a0-29 (the-as art-joint-anim (-> obj draw art-group data 3)) num-func-identity)
)
(transform-post)
(go (method-of-object obj idle))
(none)
)
;; definition of type fort-elec-belt-inst
(deftype fort-elec-belt-inst (process-drawable)
((l-spec lightning-spec :offset-assert 200)
(l-bolt lightning-control :offset-assert 204)
(points vector 17 :inline :offset-assert 208)
(path-u float :offset-assert 480)
(path-du float :offset-assert 484)
(attack-id uint32 :offset-assert 488)
(sound-id uint32 :offset-assert 492)
)
:heap-base #x170
:method-count-assert 23
:size-assert #x1f0
:flag-assert #x17017001f0
(:methods
(idle () _type_ :state 20)
(running () _type_ :state 21)
(die () _type_ :state 22)
)
)
;; definition for method 3 of type fort-elec-belt-inst
(defmethod inspect fort-elec-belt-inst ((obj fort-elec-belt-inst))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~2Tl-spec: ~A~%" (-> obj l-spec))
(format #t "~2Tl-bolt: ~A~%" (-> obj l-bolt))
(format #t "~2Tpoints[17] @ #x~X~%" (-> obj points))
(format #t "~2Tpath-u: ~f~%" (-> obj path-u))
(format #t "~2Tpath-du: ~f~%" (-> obj path-du))
(format #t "~2Tattack-id: ~D~%" (-> obj attack-id))
(format #t "~2Tsound-id: ~D~%" (-> obj sound-id))
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-fort-elec-belt-inst fort-elec-belt fort-elec-belt-lod0-jg fort-elec-belt-idle-ja
((fort-elec-belt-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 -19 20)
)
;; failed to figure out what this is:
(defstate idle (fort-elec-belt-inst)
:virtual #t
:code (behavior ()
(suspend)
(let ((v1-0 (-> self l-bolt))
(a0-0 1)
)
(let ((a1-1 (!= a0-0 (-> v1-0 state mode))))
(case a0-0
((3)
(if a1-1
(set! (-> v1-0 state counter) 0.0)
)
)
((1)
(set! (-> v1-0 state start-color) (-> v1-0 spec start-color))
(set! (-> v1-0 state end-color) (-> v1-0 spec end-color))
)
)
)
(set! (-> v1-0 state mode) (the-as lightning-mode a0-0))
)
(go-virtual running)
(none)
)
:post (behavior ()
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer self))
(set! (-> a1-0 num-params) 2)
(set! (-> a1-0 message) 'get-point-norm)
(set! (-> a1-0 param 0) (the-as uint (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 param 1) (the-as uint (-> self path-u)))
(let ((v1-7 (the-as vector (send-event-function (ppointer->process (-> self parent)) a1-0))))
(set! (-> self root trans quad) (-> v1-7 quad))
)
)
(+! (-> self path-u) (* (-> self path-du) (-> self clock seconds-per-frame)))
(ja-post)
(none)
)
)
;; failed to figure out what this is:
(defstate running (fort-elec-belt-inst)
:virtual #t
:exit (behavior ()
(sound-stop (the-as sound-id (-> self sound-id)))
(none)
)
:trans (behavior ()
(if (>= (-> self path-u) 1.0)
(go-virtual die)
)
(none)
)
:code (the-as (function none :behavior fort-elec-belt-inst) sleep-code)
:post (behavior ()
(local-vars
(sv-1696
(function lightning-spec time-frame symbol process-drawable vector vector none :behavior lightning-tracker)
)
(sv-1712 lightning-spec)
)
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer self))
(set! (-> a1-0 num-params) 2)
(set! (-> a1-0 message) 'get-point-norm)
(set! (-> a1-0 param 0) (the-as uint (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 param 1) (the-as uint (-> self path-u)))
(let ((v1-7 (the-as vector (send-event-function (ppointer->process (-> self parent)) a1-0))))
(set! (-> self root trans quad) (-> v1-7 quad))
)
)
(+! (-> self path-u) (* (-> self path-du) (-> self clock seconds-per-frame)))
(let ((s3-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4)))
(s2-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 5)))
)
(let ((t2-0 (new 'stack-no-clear 'vector)))
(vector+! t2-0 s3-0 s2-0)
(vector-float*! t2-0 t2-0 0.5)
(set! (-> t2-0 y) (+ -20480.0 (-> t2-0 y)))
(sound-play "sliding-laser" :id (the-as sound-id (-> self sound-id)) :position t2-0)
)
(let* ((v0-4 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) s2-0 s3-0) 1.0))
(gp-1 (vector-cross! (new 'stack-no-clear 'vector) v0-4 *up-vector*))
(s5-0 (-> self l-bolt))
(f30-0 90112.0)
(f0-6 (* f30-0 f30-0))
(s4-1 (vector-! (new 'stack-no-clear 'vector) s2-0 s3-0))
(f1-4 (* 0.5 (vector-length s4-1)))
)
(let ((f2-2 (* f1-4 f1-4)))
(vector-float*! s4-1 s4-1 0.5)
(vector+! s4-1 s3-0 s4-1)
(+! (-> s4-1 y) (sqrtf (- f0-6 f2-2)))
)
(let* ((f0-12 (* 2.0 (asin (/ f1-4 f30-0))))
(f28-1 (* 0.0625 f0-12))
(s3-1 (new 'stack-no-clear 'vector))
)
(set! (-> s3-1 x) 0.0)
(set! (-> s3-1 y) (- f30-0))
(set! (-> s3-1 z) 0.0)
(set! (-> s3-1 w) 0.0)
(let ((a2-2 (quaternion-vector-angle! (new 'stack-no-clear 'quaternion) gp-1 (* -0.5 f0-12))))
(vector-orient-by-quat! s3-1 s3-1 a2-2)
)
(dotimes (s2-1 17)
(let ((s1-1 (vector+! (new 'stack-no-clear 'vector) s4-1 s3-1)))
(set-point! s5-0 s2-1 s1-1)
(set! (-> self points s2-1 quad) (-> s1-1 quad))
)
(let ((a2-5 (quaternion-vector-angle! (new 'stack-no-clear 'quaternion) gp-1 f28-1)))
(vector-orient-by-quat! s3-1 s3-1 a2-5)
)
)
)
)
)
(let ((gp-2 (new 'stack-no-clear 'collide-query)))
(let ((s5-1 (new 'stack-no-clear 'bounding-box)))
(let ((a1-15 (new 'stack-no-clear 'inline-array 'sphere 17)))
(dotimes (v1-37 17)
(set! (-> a1-15 v1-37 quad) (-> self points v1-37 quad))
(set! (-> a1-15 v1-37 r) 4096.0)
)
(set-from-spheres! s5-1 a1-15 17)
)
(set! (-> gp-2 collide-with) (collide-spec jak bot player-list))
(set! (-> gp-2 ignore-process0) self)
(set! (-> gp-2 ignore-process1) #f)
(set! (-> gp-2 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1))
(set! (-> gp-2 action-mask) (collide-action solid))
(mem-copy! (the-as pointer (-> gp-2 bbox)) (the-as pointer s5-1) 32)
)
(fill-using-bounding-box *collide-cache* gp-2)
)
(let ((gp-3 1))
(while (< gp-3 17)
(let ((s3-2 (new 'stack-no-clear 'collide-query))
(s5-2 (-> self points (+ gp-3 -1)))
(s4-2 (-> self points gp-3))
)
(let ((v1-52 (vector-! (new 'stack-no-clear 'vector) s4-2 s5-2)))
(set! (-> s3-2 start-pos quad) (-> s5-2 quad))
(set! (-> s3-2 move-dist quad) (-> v1-52 quad))
)
(let ((v1-54 s3-2))
(set! (-> v1-54 radius) 4096.0)
(set! (-> v1-54 collide-with) (collide-spec jak bot player-list))
(set! (-> v1-54 ignore-process0) self)
(set! (-> v1-54 ignore-process1) #f)
(set! (-> v1-54 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1))
(set! (-> v1-54 action-mask) (collide-action solid semi-solid))
)
(when (>= (probe-using-line-sphere *collide-cache* s3-2) 0.0)
(let* ((s2-2 (-> s3-2 best-other-tri collide-ptr))
(s3-3 (if (type? s2-2 collide-shape-prim-sphere)
(the-as collide-shape-prim-sphere s2-2)
)
)
)
(when s3-3
(sound-play "laser-hit")
(let ((s2-4 (get-process *default-dead-pool* lightning-tracker #x4000)))
(when s2-4
(let ((t9-19 (method-of-type lightning-tracker activate)))
(t9-19
(the-as lightning-tracker s2-4)
*entity-pool*
(symbol->string (-> lightning-tracker symbol))
(the-as pointer #x70004000)
)
)
(let ((s1-3 run-function-in-process)
(s0-0 s2-4)
)
(set! sv-1696 lightning-tracker-init)
(set! sv-1712 (-> self l-spec))
(let ((a3-3 (the int (* 3.0 (rand-vu-float-range 5.0 11.0))))
(t0-2 #f)
(t1-2 #f)
)
((the-as (function object object object object object object object object none) s1-3)
s0-0
sv-1696
sv-1712
a3-3
t0-2
t1-2
s5-2
s4-2
)
)
)
(-> s2-4 ppointer)
)
)
(let ((v1-68 (vector-reset! (new 'stack-no-clear 'vector)))
(a1-28 (new 'stack-no-clear 'event-message-block))
)
(set! (-> a1-28 from) (process->ppointer self))
(set! (-> a1-28 num-params) 2)
(set! (-> a1-28 message) 'attack)
(set! (-> a1-28 param 0) (the-as uint #f))
(let ((a0-50 (new 'static 'attack-info :mask (attack-info-mask vector invinc-time shove-up id))))
(set! (-> a0-50 id) (-> self attack-id))
(set! (-> a0-50 invinc-time) (seconds 3))
(set! (-> a0-50 vector quad) (-> v1-68 quad))
(set! (-> a0-50 shove-up) 12288.0)
(set! (-> a1-28 param 1) (the-as uint a0-50))
)
(send-event-function (-> s3-3 cshape process) a1-28)
)
)
)
)
)
(+! gp-3 1)
)
)
(ja-post)
(none)
)
)
;; failed to figure out what this is:
(defstate die (fort-elec-belt-inst)
:virtual #t
:code (behavior ()
(let ((v1-0 (-> self l-bolt))
(a0-0 3)
)
(let ((a1-1 (!= a0-0 (-> v1-0 state mode))))
(case a0-0
((3)
(if a1-1
(set! (-> v1-0 state counter) 0.0)
)
)
((1)
(set! (-> v1-0 state start-color) (-> v1-0 spec start-color))
(set! (-> v1-0 state end-color) (-> v1-0 spec end-color))
)
)
)
(set! (-> v1-0 state mode) (the-as lightning-mode a0-0))
)
(suspend)
(cleanup-for-death self)
(none)
)
)
;; definition for method 7 of type fort-elec-belt-inst
;; WARN: Return type mismatch process-drawable vs fort-elec-belt-inst.
(defmethod relocate fort-elec-belt-inst ((obj fort-elec-belt-inst) (arg0 int))
(if (nonzero? (-> obj l-bolt))
(&+! (-> obj l-bolt) arg0)
)
(the-as fort-elec-belt-inst ((method-of-type process-drawable relocate) obj arg0))
)
;; definition for method 10 of type fort-elec-belt-inst
(defmethod deactivate fort-elec-belt-inst ((obj fort-elec-belt-inst))
(sound-stop (the-as sound-id (-> obj sound-id)))
((the-as (function process-drawable none) (find-parent-method fort-elec-belt-inst 10)) obj)
(none)
)
;; definition for function fort-elec-belt-inst-init-by-other
;; WARN: Return type mismatch object vs none.
(defbehavior fort-elec-belt-inst-init-by-other fort-elec-belt-inst ((arg0 quaternion) (arg1 float) (arg2 float) (arg3 lightning-spec) (arg4 uint))
(set! (-> self root) (new 'process 'trsqv))
(initialize-skeleton
self
(the-as
skeleton-group
(art-group-get-by-name *level* "skel-fort-elec-belt-inst" (the-as (pointer uint32) #f))
)
(the-as pair 0)
)
(quaternion-copy! (-> self root quat) arg0)
(set! (-> self path-u) arg1)
(set! (-> self path-du) arg2)
(logclear! (-> self mask) (process-mask actor-pause))
(set! (-> self l-bolt) (new 'process 'lightning-control arg3 self 0.0))
(let ((v1-8 (-> self l-bolt))
(a0-7 0)
)
(let ((a1-7 (!= a0-7 (-> v1-8 state mode))))
(case a0-7
((3)
(if a1-7
(set! (-> v1-8 state counter) 0.0)
)
)
((1)
(set! (-> v1-8 state start-color) (-> v1-8 spec start-color))
(set! (-> v1-8 state end-color) (-> v1-8 spec end-color))
)
)
)
(set! (-> v1-8 state mode) (the-as lightning-mode a0-7))
)
(set! (-> self l-spec) arg3)
(set! (-> self attack-id) arg4)
(set! (-> self sound-id) (the-as uint (new-sound-id)))
(ja-no-eval :group! (-> self draw art-group data 2) :num! zero)
(ja-post)
(go-virtual idle)
(none)
)
;; definition of type fort-elec-belt
(deftype fort-elec-belt (process)
((l-spec lightning-spec :offset-assert 128)
(next-spawn-time time-frame :offset-assert 136)
(path path-control :offset-assert 144)
(init-quat quaternion :inline :offset-assert 160)
(sync sync-linear :inline :offset-assert 176)
(attack-id uint32 :offset-assert 192)
(path-du float :offset-assert 196)
)
:heap-base #x50
:method-count-assert 16
:size-assert #xc8
:flag-assert #x10005000c8
(:methods
(idle () _type_ :state 14)
(fort-elec-belt-method-15 (_type_) none 15)
)
)
;; definition for method 3 of type fort-elec-belt
(defmethod inspect fort-elec-belt ((obj fort-elec-belt))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process inspect)))
(t9-0 obj)
)
(format #t "~2Tl-spec: ~A~%" (-> obj l-spec))
(format #t "~2Tnext-spawn-time: ~D~%" (-> obj next-spawn-time))
(format #t "~2Tpath: ~A~%" (-> obj path))
(format #t "~2Tinit-quat: #<quaternion @ #x~X>~%" (-> obj init-quat))
(format #t "~2Tsync: #<sync-linear @ #x~X>~%" (-> obj sync))
(format #t "~2Tattack-id: ~D~%" (-> obj attack-id))
(format #t "~2Tpath-du: ~f~%" (-> obj path-du))
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defstate idle (fort-elec-belt)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(the-as object (case event-type
(('get-point-norm)
(get-point-at-percent-along-path!
(-> self path)
(the-as vector (-> event param 0))
(the-as float (-> event param 1))
'interp
)
)
)
)
)
:trans (behavior ()
(set-forrescb-electricity-scale! 1.0 0)
(when (>= (-> self clock frame-counter) (-> self next-spawn-time))
(process-spawn
fort-elec-belt-inst
(-> self init-quat)
0
(-> self path-du)
(-> self l-spec)
(-> self attack-id)
:to self
)
(set! (-> self next-spawn-time) (get-timeframe-offset! (-> self sync) 0))
)
(none)
)
:code (the-as (function none :behavior fort-elec-belt) sleep-code)
)
;; definition for method 15 of type fort-elec-belt
;; WARN: Return type mismatch symbol vs none.
(defmethod fort-elec-belt-method-15 fort-elec-belt ((obj fort-elec-belt))
(with-pp
(let* ((f28-0 (total-distance (-> obj path)))
(s5-0 (-> obj sync))
(f26-0 81.92)
(a0-3 (- (-> pp clock frame-counter) (get-timeframe-offset! s5-0 0)))
(v1-6 (-> s5-0 period))
(f30-0 (/ (* f26-0 (the float a0-3)) f28-0))
(f28-1 (/ (* f26-0 (the float v1-6)) f28-0))
)
(while (>= 1.0 f30-0)
(if (>= f30-0 0.0)
(process-spawn
fort-elec-belt-inst
(-> obj init-quat)
f30-0
(-> obj path-du)
(-> obj l-spec)
(-> obj attack-id)
:to obj
)
)
(+! f30-0 f28-1)
)
)
(none)
)
)
;; definition for method 7 of type fort-elec-belt
;; WARN: Return type mismatch process vs fort-elec-belt.
(defmethod relocate fort-elec-belt ((obj fort-elec-belt) (arg0 int))
(if (nonzero? (-> obj path))
(&+! (-> obj path) arg0)
)
(the-as fort-elec-belt ((method-of-type process relocate) obj arg0))
)
;; definition for method 11 of type fort-elec-belt
;; INFO: Used lq/sq
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! fort-elec-belt ((obj fort-elec-belt) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(local-vars (sv-64 int))
(quaternion-copy! (-> obj init-quat) (-> arg0 quat))
(let ((s5-0 (new 'stack-no-clear 'sync-info-params)))
(let ((s3-0 1200))
0.0
(set! sv-64 0)
(let ((v1-1 (res-lump-data arg0 'sync (pointer float) :tag-ptr (the-as (pointer res-tag) (& sv-64)))))
(when v1-1
(set! s3-0 (the int (* 300.0 (-> v1-1 0))))
(-> v1-1 1)
)
)
(let ((v1-2 0))
(if #t
(set! v1-2 (logior v1-2 1))
)
(set! (-> s5-0 sync-type) 'sync-linear)
(set! (-> s5-0 sync-flags) (the-as sync-flags v1-2))
)
(set! (-> s5-0 entity) arg0)
(set! (-> s5-0 period) (the-as uint s3-0))
)
(set! (-> s5-0 percent) 0.0)
(initialize! (-> obj sync) s5-0)
)
(set! (-> obj l-spec) (new 'static 'lightning-spec
:name #f
:flags (lightning-spec-flags lsf2)
:rand-func #x2
:start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
:end-color (new 'static 'rgba :a #x80)
:fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5)
:fade-start-factor 0.2
:fade-time 120.0
:texture (new 'static 'texture-id :index #x83 :page #xc)
:reduction 0.72
:num-points 17
:box-size 4997.12
:merge-factor 0.32
:merge-count 2
:radius 7372.8
:duration -1.0
:sound #f
)
)
(set! (-> obj path) (new 'process 'path-control obj 'path 0.0 (the-as entity #f) #f))
(logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text))
(set! (-> obj path-du) (/ 24576.0 (total-distance (-> obj path))))
(let* ((v1-14 *game-info*)
(a0-15 (+ (-> v1-14 attack-id) 1))
)
(set! (-> v1-14 attack-id) a0-15)
(set! (-> obj attack-id) a0-15)
)
(fort-elec-belt-method-15 obj)
(set! (-> obj next-spawn-time) (get-timeframe-offset! (-> obj sync) 0))
(logclear! (-> obj mask) (process-mask actor-pause))
(go (method-of-object obj idle))
(none)
)
;; definition of type fort-conveyor
(deftype fort-conveyor (conveyor)
()
:heap-base #x80
:method-count-assert 28
:size-assert #x100
:flag-assert #x1c00800100
)
;; definition for method 3 of type fort-conveyor
(defmethod inspect fort-conveyor ((obj fort-conveyor))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type conveyor inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-fort-conveyor fort-conveyor fort-conveyor-lod0-jg fort-conveyor-idle-ja
((fort-conveyor-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 16 16.5)
)
;; definition for method 22 of type fort-conveyor
(defmethod get-art-group fort-conveyor ((obj fort-conveyor))
"@returns The respective [[art-group]] for the [[conveyor]]"
(art-group-get-by-name *level* "skel-fort-conveyor" (the-as (pointer uint32) #f))
)
;; definition for method 23 of type fort-conveyor
;; WARN: Return type mismatch collide-shape-moving vs none.
(defmethod reset-root! fort-conveyor ((obj fort-conveyor))
"Re-initializes the `root` [[trsqv]]"
(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) cshape-reaction-default)
(set! (-> s5-0 no-reaction)
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
)
(let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
(set! (-> s4-0 prim-core collide-as) (collide-spec pusher))
(set! (-> s4-0 prim-core collide-with) (collide-spec jak player-list))
(set! (-> s4-0 prim-core action) (collide-action solid rideable))
(set! (-> s4-0 transform-index) 0)
(set-vector! (-> s4-0 local-sphere) 0.0 0.0 65536.0 67584.0)
(set! (-> s5-0 total-prims) (the-as uint 1))
(set! (-> s5-0 root-prim) s4-0)
)
(pusher-init s5-0)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
(let ((v1-15 (-> s5-0 root-prim)))
(set! (-> s5-0 backup-collide-as) (-> v1-15 prim-core collide-as))
(set! (-> s5-0 backup-collide-with) (-> v1-15 prim-core collide-with))
)
(set! (-> obj root) s5-0)
)
(none)
)
;; definition for method 24 of type fort-conveyor
;; WARN: Return type mismatch vector vs none.
(defmethod init! fort-conveyor ((obj fort-conveyor))
"Initializes defaults for things like the `speed` and `belt-radius`"
(set! (-> obj speed) -47104.0)
(set! (-> obj belt-radius) 24576.0)
(set! (-> obj pull-y-threshold) 4096.0)
(if (name= (-> obj name) "fort-conveyor-4")
(set-vector! (-> obj root scale) 0.8 0.0 0.657 1.0)
)
(none)
)
;; definition for method 25 of type fort-conveyor
(defmethod set-and-get-ambient-sound! fort-conveyor ((obj fort-conveyor))
"So long as [[actor-option::16]] is not set, fetch the [[ambient-sound]] for the [[conveyor]]
and return it as well. Otherwise, set it to `0`"
(let* ((s5-0 (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) 0.0 'interp))
(v1-2 (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) 1.0 'interp))
(a3-3 (vector+! (new 'stack-no-clear 'vector) s5-0 v1-2))
)
(vector-float*! a3-3 a3-3 0.5)
(let ((v0-2 (new 'process 'ambient-sound (static-sound-spec "fort-conveyor" :fo-max 50) a3-3)))
(set! (-> obj sound) v0-2)
v0-2
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
172
0
(the-as
(function object)
(lambda :behavior task-manager
()
(set-setting! 'sound-mode #f 0 1)
(set-setting! 'sound-excitement 'abs #x3f4ccccd 0)
(speech-control-method-10
*speech-control*
6
(new 'static 'speech-type-info
:min-delay #x4b0
:max-delay #x960
:list (new 'static 'boxed-array :type string
"kg001"
"kg002"
"kg004"
"kg006"
"kg001a"
"kg013"
"kg016"
"kg018"
"kg019"
"kg023"
"kg024"
"kg002a"
"kg004a"
"kg078a"
"kg079a"
"kg080a"
"kg081a"
"kg004a"
"kg082a"
"kg083a"
"kg084a"
"kg085a"
"kg086a"
"kg087a"
"kg088a"
"kg091a"
"kg023a"
"kg006a"
"kg092a"
"kg020a"
"kg093a"
"kg094a"
"kg095a"
"kg103a"
"kg104a"
"kg112a"
"kg024a"
"kg134"
"kg136"
"kg137"
"kg138"
"kg139"
"kg140"
"kg141"
)
)
)
(speech-control-method-10
*speech-control*
9
(new 'static 'speech-type-info
:priority 1
:min-delay #x12c
:max-delay #x258
:list (new 'static 'boxed-array :type string
"kg133"
"kg142"
"kg144"
"kg145"
"kg146"
"kg147"
"kg148"
"kg149"
"kg150"
"kg138"
"kg151"
"kg152"
"kg153"
"kg154"
"kg155"
"kg159"
"kg163"
"kg164"
)
)
)
(speech-control-method-10
*speech-control*
10
(new 'static 'speech-type-info :priority #xa :max-delay #x12c :list (new 'static 'boxed-array :type string
"kg166"
"kg167"
"kg168"
"kg169"
"kg171"
"kg172"
"kg173"
"kg174"
"kg175"
)
)
)
(none)
)
)
)
;; failed to figure out what this is:
(set-subtask-hook!
*game-info*
172
1
(the-as
(function object)
(lambda :behavior task-manager () (speech-control-method-9 *speech-control*) (none))
)
)
+510
View File
@@ -0,0 +1,510 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type hip-trophy-a
(deftype hip-trophy-a (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
;; definition for method 3 of type hip-trophy-a
(defmethod inspect hip-trophy-a ((obj hip-trophy-a))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-hip-trophy-a hip-trophy-a hip-trophy-a-lod0-jg hip-trophy-a-idle-ja
((hip-trophy-a-lod0-mg (meters 999999)))
:bounds (static-spherem 1 -1 0 1.6)
)
;; failed to figure out what this is:
(defstate idle (hip-trophy-a)
:virtual #t
:code (the-as (function none :behavior hip-trophy-a) sleep-code)
:post (the-as (function none :behavior hip-trophy-a) ja-post)
)
;; definition for method 11 of type hip-trophy-a
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-a ((obj hip-trophy-a) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-a" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
;; definition of type hip-trophy-d
(deftype hip-trophy-d (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
;; definition for method 3 of type hip-trophy-d
(defmethod inspect hip-trophy-d ((obj hip-trophy-d))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-hip-trophy-d hip-trophy-d hip-trophy-d-lod0-jg hip-trophy-d-idle-ja
((hip-trophy-d-lod0-mg (meters 999999)))
:bounds (static-spherem -0.2 -0.5 0 2)
)
;; failed to figure out what this is:
(defstate idle (hip-trophy-d)
:virtual #t
:code (the-as (function none :behavior hip-trophy-d) sleep-code)
:post (the-as (function none :behavior hip-trophy-d) ja-post)
)
;; definition for method 11 of type hip-trophy-d
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-d ((obj hip-trophy-d) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-d" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
;; definition of type hip-trophy-f
(deftype hip-trophy-f (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
;; definition for method 3 of type hip-trophy-f
(defmethod inspect hip-trophy-f ((obj hip-trophy-f))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-hip-trophy-f hip-trophy-f hip-trophy-f-lod0-jg hip-trophy-f-idle-ja
((hip-trophy-f-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 2)
)
;; failed to figure out what this is:
(defstate idle (hip-trophy-f)
:virtual #t
:code (the-as (function none :behavior hip-trophy-f) sleep-code)
:post (the-as (function none :behavior hip-trophy-f) ja-post)
)
;; definition for method 11 of type hip-trophy-f
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-f ((obj hip-trophy-f) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-f" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
;; definition of type hip-trophy-g
(deftype hip-trophy-g (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
;; definition for method 3 of type hip-trophy-g
(defmethod inspect hip-trophy-g ((obj hip-trophy-g))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-hip-trophy-g hip-trophy-g hip-trophy-g-lod0-jg hip-trophy-g-idle-ja
((hip-trophy-g-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
;; failed to figure out what this is:
(defstate idle (hip-trophy-g)
:virtual #t
:code (the-as (function none :behavior hip-trophy-g) sleep-code)
:post (the-as (function none :behavior hip-trophy-g) ja-post)
)
;; definition for method 11 of type hip-trophy-g
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-g ((obj hip-trophy-g) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-g" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
;; definition of type hip-trophy-i
(deftype hip-trophy-i (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
;; definition for method 3 of type hip-trophy-i
(defmethod inspect hip-trophy-i ((obj hip-trophy-i))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-hip-trophy-i hip-trophy-i hip-trophy-i-lod0-jg hip-trophy-i-idle-ja
((hip-trophy-i-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
;; failed to figure out what this is:
(defstate idle (hip-trophy-i)
:virtual #t
:code (the-as (function none :behavior hip-trophy-i) sleep-code)
:post (the-as (function none :behavior hip-trophy-i) ja-post)
)
;; definition for method 11 of type hip-trophy-i
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-i ((obj hip-trophy-i) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-i" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
;; definition of type hip-trophy-j
(deftype hip-trophy-j (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
;; definition for method 3 of type hip-trophy-j
(defmethod inspect hip-trophy-j ((obj hip-trophy-j))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-hip-trophy-j hip-trophy-j hip-trophy-j-lod0-jg hip-trophy-j-idle-ja
((hip-trophy-j-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
;; failed to figure out what this is:
(defstate idle (hip-trophy-j)
:virtual #t
:code (the-as (function none :behavior hip-trophy-j) sleep-code)
:post (the-as (function none :behavior hip-trophy-j) ja-post)
)
;; definition for method 11 of type hip-trophy-j
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-j ((obj hip-trophy-j) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-j" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
;; definition of type hip-trophy-n
(deftype hip-trophy-n (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
;; definition for method 3 of type hip-trophy-n
(defmethod inspect hip-trophy-n ((obj hip-trophy-n))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-hip-trophy-n hip-trophy-n hip-trophy-n-lod0-jg hip-trophy-n-idle-ja
((hip-trophy-n-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
;; failed to figure out what this is:
(defstate idle (hip-trophy-n)
:virtual #t
:code (the-as (function none :behavior hip-trophy-n) sleep-code)
:post (the-as (function none :behavior hip-trophy-n) ja-post)
)
;; definition for method 11 of type hip-trophy-n
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-n ((obj hip-trophy-n) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-n" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
;; definition of type hip-trophy-m
(deftype hip-trophy-m (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
;; definition for method 3 of type hip-trophy-m
(defmethod inspect hip-trophy-m ((obj hip-trophy-m))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-hip-trophy-m hip-trophy-m hip-trophy-m-lod0-jg hip-trophy-m-idle-ja
((hip-trophy-m-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
;; failed to figure out what this is:
(defstate idle (hip-trophy-m)
:virtual #t
:code (the-as (function none :behavior hip-trophy-m) sleep-code)
:post (the-as (function none :behavior hip-trophy-m) ja-post)
)
;; definition for method 11 of type hip-trophy-m
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! hip-trophy-m ((obj hip-trophy-m) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-hip-trophy-m" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(let ((v1-5 (res-lump-value (-> obj entity) 'index uint128 :time -1000000000.0)))
(if (= (the-as uint v1-5) 1)
(logior! (-> obj draw global-effect) (draw-control-global-effect disable-envmap))
)
)
(go (method-of-object obj idle))
(none)
)
+527
View File
@@ -0,0 +1,527 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type intro-flamer
(deftype intro-flamer (process-drawable)
((up-dir vector :inline :offset-assert 208)
(average-dir vector :inline :offset-assert 224)
(id int32 :offset-assert 240)
(path-u float :offset-assert 244)
(path-du float :offset-assert 248)
(z-rot float :offset-assert 252)
(flit-prev-offset vector :inline :offset-assert 256)
(flit-next-offset vector :inline :offset-assert 272)
(flit-factor float :offset-assert 288)
(flit-timer uint64 :offset-assert 296)
(flit-interval uint64 :offset-assert 304)
)
:heap-base #xc0
:method-count-assert 23
:size-assert #x138
:flag-assert #x1700c00138
(:methods
(idle () _type_ :state 20)
(die () _type_ :state 21)
(intro-flamer-method-22 (_type_) path-control 22)
)
)
;; definition for method 3 of type intro-flamer
(defmethod inspect intro-flamer ((obj intro-flamer))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~2Tup-dir: #<vector @ #x~X>~%" (-> obj up-dir))
(format #t "~2Taverage-dir: #<vector @ #x~X>~%" (-> obj average-dir))
(format #t "~2Tid: ~D~%" (-> obj id))
(format #t "~2Tpath-u: ~f~%" (-> obj path-u))
(format #t "~2Tpath-du: ~f~%" (-> obj path-du))
(format #t "~2Tz-rot: ~f~%" (-> obj z-rot))
(format #t "~2Tflit-prev-offset: #<vector @ #x~X>~%" (-> obj flit-prev-offset))
(format #t "~2Tflit-next-offset: #<vector @ #x~X>~%" (-> obj flit-next-offset))
(format #t "~2Tflit-factor: ~f~%" (-> obj flit-factor))
(format #t "~2Tflit-timer: ~D~%" (-> obj flit-timer))
(format #t "~2Tflit-interval: ~D~%" (-> obj flit-interval))
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-intro-flamer intro-flamer intro-flamer-lod0-jg intro-flamer-fly-straight-ja
((intro-flamer-lod0-mg (meters 20)) (intro-flamer-lod1-mg (meters 40)) (intro-flamer-lod2-mg (meters 999999)))
:bounds (static-spherem 0 0 0 7.5)
:shadow intro-flamer-shadow-mg
:origin-joint-index 3
)
;; failed to figure out what this is:
(defstate idle (intro-flamer)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('die)
(go-virtual die)
)
)
)
:trans (behavior ()
(if (= (-> self path-u) 1.0)
(go-virtual die)
)
(when (>= (- (-> self clock frame-counter) (the-as int (-> self flit-timer)))
(the-as time-frame (-> self flit-interval))
)
(let ((f28-0 (rand-vu-float-range -1.0 1.0))
(f30-0 (rand-vu-float-range -1.0 1.0))
(f0-1 (rand-vu-float-range 0.2 0.6))
)
(set! (-> self flit-prev-offset quad) (-> self flit-next-offset quad))
(set-vector! (-> self flit-next-offset) (* 4096.0 f28-0) (* 4096.0 f30-0) 0.0 0.0)
(set! (-> self flit-factor) 0.0)
(set! (-> self flit-interval) (the-as uint (the int (* 300.0 f0-1))))
)
(set! (-> self flit-timer) (the-as uint (-> self clock frame-counter)))
)
(none)
)
:code (behavior ()
(ja-channel-set! 1)
(let ((f30-0 (rand-vu-float-range 0.8 1.2)))
(until #f
(ja-no-eval :group! (-> self draw art-group data 5)
:num! (seek!
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) frames num-frames) -1))
f30-0
)
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max f30-0))
)
)
)
#f
(none)
)
:post (behavior ()
(seek! (-> self path-u) 1.0 (* (-> self path-du) (-> self clock seconds-per-frame)))
(let ((s3-0 (intro-flamer-method-22 self))
(s4-0 (new 'stack-no-clear 'vector))
(s5-0 (new 'stack-no-clear 'quaternion))
(f30-0 (-> self path-u))
(gp-0 (new 'stack-no-clear 'vector))
)
(get-point-at-percent-along-path! s3-0 gp-0 f30-0 'interp)
(displacement-between-points-at-percent-normalized! s3-0 s4-0 (fmin 1.0 (+ 0.05 f30-0)))
(let ((t9-4 vector-normalize!)
(a0-4 (new 'stack-no-clear 'vector))
)
(set! (-> a0-4 x) (-> s4-0 x))
(set! (-> a0-4 y) 0.0)
(set! (-> a0-4 z) (-> s4-0 z))
(set! (-> a0-4 w) 1.0)
(let ((s3-1 (t9-4 a0-4 1.0))
(t9-5 vector-normalize!)
(a0-5 (new 'stack-no-clear 'vector))
)
(set! (-> a0-5 x) (-> self average-dir x))
(set! (-> a0-5 y) 0.0)
(set! (-> a0-5 z) (-> self average-dir z))
(set! (-> a0-5 w) 1.0)
(let* ((v1-10 (t9-5 a0-5 1.0))
(f0-15 (vector-dot (vector-cross! (new 'stack-no-clear 'vector) s3-1 v1-10) *up-vector*))
(f0-16 (* 49152.0 f0-15))
)
(set! (-> self z-rot) (deg-seek
(-> self z-rot)
(fmax -15473.777 (fmin 15473.777 f0-16))
(* 21845.334 (-> self clock seconds-per-frame))
)
)
)
)
)
(let ((a2-5 (vector-rotate-z! (new 'stack-no-clear 'vector) *up-vector* (-> self z-rot))))
(forward-up->quaternion s5-0 s4-0 a2-5)
)
(quaternion-slerp! (-> self root quat) (-> self root quat) s5-0 (* 8.0 (-> self clock seconds-per-frame)))
(seek! (-> self flit-factor) 1.0 (* 8.0 (-> self clock seconds-per-frame)))
(let* ((v1-25 (-> self flit-prev-offset))
(a1-10 (-> self flit-next-offset))
(a0-14 (vector-! (new 'stack-no-clear 'vector) a1-10 v1-25))
(s5-1 (new 'stack-no-clear 'vector))
)
(vector+float*! s5-1 v1-25 a0-14 (-> self flit-factor))
(vector-orient-by-quat! s5-1 s5-1 (-> self root quat))
(vector+! (-> self root trans) gp-0 s5-1)
)
)
(cond
((logtest? (-> self draw status) (draw-control-status on-screen))
(new 'stack-no-clear 'vector)
(new 'stack-no-clear 'vector)
(let ((gp-1 (new 'stack-no-clear 'collide-query)))
(set! (-> gp-1 start-pos quad) (-> self root trans quad))
(set-vector! (-> gp-1 move-dist) 0.0 -81920.0 0.0 1.0)
(let ((v1-37 gp-1))
(set! (-> v1-37 radius) 2048.0)
(set! (-> v1-37 collide-with) (collide-spec backgnd))
(set! (-> v1-37 ignore-process0) self)
(set! (-> v1-37 ignore-process1) #f)
(set! (-> v1-37 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1))
(set! (-> v1-37 action-mask) (collide-action solid))
)
(cond
((>= (fill-and-probe-using-line-sphere *collide-cache* gp-1) 0.0)
(let ((v1-41 (-> self draw shadow-ctrl)))
(logclear! (-> v1-41 settings flags) (shadow-flags disable-draw))
)
0
(let ((a0-28 (-> gp-1 best-other-tri intersect)))
(let ((f0-36 (-> self root trans y)))
(let ((v1-45 (-> self draw shadow-ctrl)))
(set! (-> v1-45 settings bot-plane w) (- (+ (- -12288.0 f0-36) (-> a0-28 y))))
)
0
(let ((v1-48 (-> self draw shadow-ctrl)))
(set! (-> v1-48 settings top-plane w) (- (+ (- 12288.0 f0-36) (-> a0-28 y))))
)
)
0
(let* ((f2-2 (vector-vector-distance a0-28 (-> self root trans)))
(f0-41 (* 0.000030517578 (fmax 0.0 (fmin 32768.0 (+ -57344.0 f2-2)))))
)
(set! (-> self draw shadow-ctrl settings shadow-dir w) (lerp 409600.0 40960.0 f0-41))
)
)
)
(else
(let ((v1-58 (-> self draw shadow-ctrl)))
(logior! (-> v1-58 settings flags) (shadow-flags disable-draw))
)
0
)
)
)
)
(else
(let ((v1-61 (-> self draw shadow-ctrl)))
(logior! (-> v1-61 settings flags) (shadow-flags disable-draw))
)
0
)
)
(ja-post)
(none)
)
)
;; failed to figure out what this is:
(defstate die (intro-flamer)
:virtual #t
:code (behavior ()
(suspend)
(cleanup-for-death self)
(none)
)
)
;; definition for method 22 of type intro-flamer
;; WARN: Return type mismatch object vs path-control.
(defmethod intro-flamer-method-22 intro-flamer ((obj intro-flamer))
(the-as path-control (send-event (ppointer->process (-> obj parent)) 'path (-> obj id)))
)
;; definition for method 11 of type intro-flamer
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! intro-flamer ((obj intro-flamer) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-intro-flamer" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(go (method-of-object obj idle))
(none)
)
;; definition for function intro-flamer-init-by-other
;; INFO: Used lq/sq
;; WARN: Return type mismatch object vs none.
(defbehavior intro-flamer-init-by-other intro-flamer ((arg0 int) (arg1 path-control) (arg2 vector))
(set! (-> self root) (new 'process 'trsqv))
(initialize-skeleton
self
(the-as skeleton-group (art-group-get-by-name *level* "skel-intro-flamer" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(set! (-> self draw force-lod) 2)
(set! (-> self id) arg0)
(set! (-> self path-u) 0.0)
(set! (-> self path-du) (rand-vu-float-range 0.15 0.32))
(set! (-> self z-rot) 0.0)
(set! (-> self flit-timer) (the-as uint (-> self clock frame-counter)))
(set! (-> self flit-interval) (the-as uint 0))
(vector-reset! (-> self flit-prev-offset))
(vector-reset! (-> self flit-next-offset))
(set! (-> self flit-factor) 0.0)
(get-point-in-path! arg1 (-> self root trans) 0.0 'interp)
(let ((s4-1 (new 'stack-no-clear 'vector)))
(displacement-between-points-at-percent-normalized! arg1 s4-1 0.0)
(forward-up-nopitch->quaternion (-> self root quat) s4-1 *up-vector*)
)
(set! (-> self draw shadow-ctrl)
(new 'process 'shadow-control 0.0 0.0 614400.0 (shadow-flags shdf03) 491520.0)
)
(set! (-> self draw light-index) (the-as uint 30))
(set! (-> self average-dir quad) (-> arg2 quad))
(go-virtual idle)
(none)
)
;; definition of type metalhead-spawner
(deftype metalhead-spawner (process)
((path-tbl path-control 19 :offset-assert 128)
(init-pos vector :inline :offset-assert 208)
(average-dir vector :inline :offset-assert 224)
)
:heap-base #x70
:method-count-assert 17
:size-assert #xf0
:flag-assert #x11007000f0
(:methods
(idle () _type_ :state 14)
(active () _type_ :state 15)
(die () _type_ :state 16)
)
)
;; definition for method 3 of type metalhead-spawner
(defmethod inspect metalhead-spawner ((obj metalhead-spawner))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process inspect)))
(t9-0 obj)
)
(format #t "~2Tpath-tbl[19] @ #x~X~%" (-> obj path-tbl))
(format #t "~2Tinit-pos: #<vector @ #x~X>~%" (-> obj init-pos))
(format #t "~2Taverage-dir: #<vector @ #x~X>~%" (-> obj average-dir))
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defstate idle (metalhead-spawner)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('trigger)
(go-virtual active)
)
(('path)
(-> self path-tbl (-> event param 0))
)
)
)
:code (the-as (function none :behavior metalhead-spawner) sleep-code)
)
;; failed to figure out what this is:
(defstate active (metalhead-spawner)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('untrigger)
(go-virtual idle)
)
(('die)
(go-virtual die)
)
(('path)
(-> self path-tbl (-> event param 0))
)
)
)
:code (behavior ()
(let ((gp-0 0))
(until #f
(set! gp-0 (mod (+ gp-0 (rand-vu-int-range 1 6)) 19))
(let ((s5-0 (get-process *default-dead-pool* intro-flamer #x4000)))
(when s5-0
(let ((t9-2 (method-of-type process activate)))
(t9-2 s5-0 self (symbol->string (-> intro-flamer symbol)) (the-as pointer #x70004000))
)
(run-now-in-process s5-0 intro-flamer-init-by-other gp-0 (-> self path-tbl gp-0) (-> self average-dir))
(-> s5-0 ppointer)
)
)
(let ((s5-1 (the int (* 300.0 (rand-vu-float-range 0.03 0.08))))
(s4-0 (-> self clock frame-counter))
)
(until (>= (- (-> self clock frame-counter) s4-0) s5-1)
(suspend)
)
)
)
)
#f
(none)
)
:post (behavior ()
(dotimes (gp-0 19)
(debug-draw (-> self path-tbl gp-0))
)
(none)
)
)
;; failed to figure out what this is:
(defstate die (metalhead-spawner)
:virtual #t
:code (behavior ()
(let ((gp-0 (-> self child)))
(while gp-0
(send-event (ppointer->process gp-0) 'die)
(set! gp-0 (-> gp-0 0 brother))
)
)
(while (-> self child)
(suspend)
)
(process-entity-status! self (entity-perm-status dead) #t)
(none)
)
)
;; definition for method 7 of type metalhead-spawner
;; WARN: Return type mismatch process vs metalhead-spawner.
(defmethod relocate metalhead-spawner ((obj metalhead-spawner) (arg0 int))
(dotimes (v1-0 19)
(if (nonzero? (-> obj path-tbl v1-0))
(&+! (-> obj path-tbl v1-0) arg0)
)
)
(the-as
metalhead-spawner
((the-as (function process int process) (find-parent-method metalhead-spawner 7)) obj arg0)
)
)
;; definition for method 11 of type metalhead-spawner
;; INFO: Used lq/sq
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! metalhead-spawner ((obj metalhead-spawner) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj init-pos quad) (-> arg0 extra trans quad))
(vector-reset! (-> obj average-dir))
(dotimes (s5-0 19)
(let ((s4-0 (new 'process 'curve-control obj 'path (the float (+ s5-0 1)))))
(set! (-> obj path-tbl s5-0) s4-0)
(logior! (-> s4-0 flags) (path-control-flag display draw-line draw-point draw-text))
(let* ((s3-0 (get-point-at-percent-along-path! s4-0 (new 'stack-no-clear 'vector) 0.0 'interp))
(v1-10 (get-point-at-percent-along-path! s4-0 (new 'stack-no-clear 'vector) 1.0 'interp))
(s4-2 (vector-! (new 'stack-no-clear 'vector) v1-10 s3-0))
)
(vector-normalize! s4-2 1.0)
(vector+! (-> obj average-dir) (-> obj average-dir) s4-2)
)
)
)
(vector-normalize! (-> obj average-dir) 1.0)
(go (method-of-object obj idle))
(none)
)
;; definition of type vil-windmill-sail
(deftype vil-windmill-sail (process-drawable)
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
;; definition for method 3 of type vil-windmill-sail
(defmethod inspect vil-windmill-sail ((obj vil-windmill-sail))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-vil-windmill-sail vil-windmill-sail vil-windmill-sail-lod0-jg vil-windmill-sail-idle-ja
((vil-windmill-sail-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 25)
)
;; failed to figure out what this is:
(defstate idle (vil-windmill-sail)
:virtual #t
:code (behavior ()
(until #f
(ja-no-eval :group! (ja-group)
:num! (seek! (the float (+ (-> (ja-group) frames num-frames) -1)))
:frame-num 0.0
)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
)
)
#f
(none)
)
:post (the-as (function none :behavior vil-windmill-sail) ja-post)
)
;; definition for method 11 of type vil-windmill-sail
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! vil-windmill-sail ((obj vil-windmill-sail) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-vil-windmill-sail" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(go (method-of-object obj idle))
(none)
)
File diff suppressed because it is too large Load Diff
+496
View File
@@ -0,0 +1,496 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for symbol *slime-clut*, type clut16x16
(define *slime-clut* (new 'static 'clut16x16 :clut (new 'static 'array rgba 256
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x53 :g #x55 :b #x13 :a #x80)
(new 'static 'rgba :r #x55 :g #x58 :b #x13 :a #x80)
(new 'static 'rgba :r #x57 :g #x5c :b #x13 :a #x80)
(new 'static 'rgba :r #x59 :g #x5f :b #x13 :a #x80)
(new 'static 'rgba :r #x5b :g #x63 :b #x13 :a #x80)
(new 'static 'rgba :r #x5c :g #x66 :b #x13 :a #x80)
(new 'static 'rgba :r #x5e :g #x69 :b #x13 :a #x80)
(new 'static 'rgba :r #x60 :g #x6d :b #x13 :a #x80)
(new 'static 'rgba :r #x60 :g #x6d :b #x14 :a #x80)
(new 'static 'rgba :r #x5e :g #x69 :b #x13 :a #x80)
(new 'static 'rgba :r #x5c :g #x66 :b #x13 :a #x80)
(new 'static 'rgba :r #x5a :g #x62 :b #x13 :a #x80)
(new 'static 'rgba :r #x59 :g #x5f :b #x13 :a #x80)
(new 'static 'rgba :r #x57 :g #x5c :b #x13 :a #x80)
(new 'static 'rgba :r #x55 :g #x58 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x52 :b #x13 :a #x80)
(new 'static 'rgba :r #x52 :g #x53 :b #x12 :a #x80)
(new 'static 'rgba :r #x53 :g #x54 :b #x12 :a #x80)
(new 'static 'rgba :r #x54 :g #x55 :b #x12 :a #x80)
(new 'static 'rgba :r #x55 :g #x56 :b #x12 :a #x80)
(new 'static 'rgba :r #x55 :g #x58 :b #x12 :a #x80)
(new 'static 'rgba :r #x56 :g #x59 :b #x12 :a #x80)
(new 'static 'rgba :r #x57 :g #x5a :b #x12 :a #x80)
(new 'static 'rgba :r #x58 :g #x5b :b #x12 :a #x80)
(new 'static 'rgba :r #x58 :g #x5c :b #x12 :a #x80)
(new 'static 'rgba :r #x59 :g #x5e :b #x12 :a #x80)
(new 'static 'rgba :r #x5a :g #x5f :b #x12 :a #x80)
(new 'static 'rgba :r #x5b :g #x60 :b #x12 :a #x80)
(new 'static 'rgba :r #x5c :g #x61 :b #x12 :a #x80)
(new 'static 'rgba :r #x5c :g #x62 :b #x12 :a #x80)
(new 'static 'rgba :r #x5d :g #x64 :b #x12 :a #x80)
(new 'static 'rgba :r #x5e :g #x65 :b #x12 :a #x80)
(new 'static 'rgba :r #x5f :g #x66 :b #x12 :a #x80)
(new 'static 'rgba :r #x5f :g #x67 :b #x12 :a #x80)
(new 'static 'rgba :r #x60 :g #x68 :b #x12 :a #x80)
(new 'static 'rgba :r #x61 :g #x6a :b #x12 :a #x80)
(new 'static 'rgba :r #x62 :g #x6b :b #x12 :a #x80)
(new 'static 'rgba :r #x63 :g #x6c :b #x12 :a #x80)
(new 'static 'rgba :r #x63 :g #x6d :b #x12 :a #x80)
(new 'static 'rgba :r #x64 :g #x6e :b #x12 :a #x80)
(new 'static 'rgba :r #x65 :g #x70 :b #x12 :a #x80)
(new 'static 'rgba :r #x66 :g #x71 :b #x12 :a #x80)
(new 'static 'rgba :r #x66 :g #x72 :b #x12 :a #x80)
(new 'static 'rgba :r #x67 :g #x73 :b #x12 :a #x80)
(new 'static 'rgba :r #x68 :g #x74 :b #x12 :a #x80)
(new 'static 'rgba :r #x69 :g #x76 :b #x12 :a #x80)
(new 'static 'rgba :r #x69 :g #x77 :b #x12 :a #x80)
(new 'static 'rgba :r #x6c :g #x7c :b #x12 :a #x80)
(new 'static 'rgba :r #x73 :g #x86 :b #x12 :a #x80)
(new 'static 'rgba :r #x7a :g #x91 :b #x12 :a #x80)
(new 'static 'rgba :r #x81 :g #x9c :b #x11 :a #x80)
(new 'static 'rgba :r #x88 :g #xa6 :b #x11 :a #x80)
(new 'static 'rgba :r #x8f :g #xb1 :b #x11 :a #x80)
(new 'static 'rgba :r #x96 :g #xbc :b #x11 :a #x80)
(new 'static 'rgba :r #x9e :g #xc7 :b #x11 :a #x80)
(new 'static 'rgba :r #x9e :g #xc7 :b #x11 :a #x80)
(new 'static 'rgba :r #x99 :g #xc0 :b #x11 :a #x80)
(new 'static 'rgba :r #x94 :g #xb9 :b #x11 :a #x80)
(new 'static 'rgba :r #x90 :g #xb2 :b #x11 :a #x80)
(new 'static 'rgba :r #x8b :g #xab :b #x11 :a #x80)
(new 'static 'rgba :r #x87 :g #xa4 :b #x11 :a #x80)
(new 'static 'rgba :r #x82 :g #x9d :b #x12 :a #x80)
(new 'static 'rgba :r #x79 :g #x8f :b #x12 :a #x80)
(new 'static 'rgba :r #x77 :g #x8b :b #x12 :a #x80)
(new 'static 'rgba :r #x77 :g #x8d :b #x12 :a #x80)
(new 'static 'rgba :r #x78 :g #x8e :b #x12 :a #x80)
(new 'static 'rgba :r #x79 :g #x8f :b #x12 :a #x80)
(new 'static 'rgba :r #x7a :g #x90 :b #x12 :a #x80)
(new 'static 'rgba :r #x7a :g #x91 :b #x12 :a #x80)
(new 'static 'rgba :r #x7b :g #x93 :b #x12 :a #x80)
(new 'static 'rgba :r #x7c :g #x94 :b #x12 :a #x80)
(new 'static 'rgba :r #x7d :g #x95 :b #x12 :a #x80)
(new 'static 'rgba :r #x7e :g #x96 :b #x12 :a #x80)
(new 'static 'rgba :r #x7e :g #x97 :b #x12 :a #x80)
(new 'static 'rgba :r #x7f :g #x99 :b #x12 :a #x80)
(new 'static 'rgba :r #x80 :g #x9a :b #x12 :a #x80)
(new 'static 'rgba :r #x81 :g #x9b :b #x12 :a #x80)
(new 'static 'rgba :r #x81 :g #x9c :b #x12 :a #x80)
(new 'static 'rgba :r #x82 :g #x9d :b #x12 :a #x80)
(new 'static 'rgba :r #x83 :g #x9f :b #x12 :a #x80)
(new 'static 'rgba :r #x84 :g #xa0 :b #x12 :a #x80)
(new 'static 'rgba :r #x85 :g #xa1 :b #x12 :a #x80)
(new 'static 'rgba :r #x85 :g #xa2 :b #x12 :a #x80)
(new 'static 'rgba :r #x86 :g #xa3 :b #x12 :a #x80)
(new 'static 'rgba :r #x87 :g #xa5 :b #x12 :a #x80)
(new 'static 'rgba :r #x88 :g #xa6 :b #x12 :a #x80)
(new 'static 'rgba :r #x88 :g #xa7 :b #x12 :a #x80)
(new 'static 'rgba :r #x89 :g #xa8 :b #x12 :a #x80)
(new 'static 'rgba :r #x8a :g #xa9 :b #x12 :a #x80)
(new 'static 'rgba :r #x8b :g #xab :b #x12 :a #x80)
(new 'static 'rgba :r #x8b :g #xac :b #x12 :a #x80)
(new 'static 'rgba :r #x8c :g #xad :b #x12 :a #x80)
(new 'static 'rgba :r #x8d :g #xae :b #x12 :a #x80)
(new 'static 'rgba :r #x8e :g #xaf :b #x12 :a #x80)
(new 'static 'rgba :r #x8f :g #xb1 :b #x12 :a #x80)
(new 'static 'rgba :r #x8f :g #xb2 :b #x12 :a #x80)
(new 'static 'rgba :r #x92 :g #xb5 :b #x11 :a #x80)
(new 'static 'rgba :r #x94 :g #xb9 :b #x11 :a #x80)
(new 'static 'rgba :r #x96 :g #xbc :b #x11 :a #x80)
(new 'static 'rgba :r #x99 :g #xbf :b #x11 :a #x80)
(new 'static 'rgba :r #x9b :g #xc3 :b #x11 :a #x80)
(new 'static 'rgba :r #x9d :g #xc6 :b #x11 :a #x80)
(new 'static 'rgba :r #xa0 :g #xca :b #x11 :a #x80)
(new 'static 'rgba :r #xa0 :g #xca :b #x11 :a #x80)
(new 'static 'rgba :r #x9e :g #xc7 :b #x11 :a #x80)
(new 'static 'rgba :r #x9c :g #xc4 :b #x11 :a #x80)
(new 'static 'rgba :r #x9a :g #xc2 :b #x11 :a #x80)
(new 'static 'rgba :r #x98 :g #xbf :b #x11 :a #x80)
(new 'static 'rgba :r #x96 :g #xbd :b #x12 :a #x80)
(new 'static 'rgba :r #x94 :g #xba :b #x12 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x12 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x12 :a #x80)
(new 'static 'rgba :r #x8f :g #xb4 :b #x12 :a #x80)
(new 'static 'rgba :r #x8e :g #xb3 :b #x12 :a #x80)
(new 'static 'rgba :r #x8d :g #xb2 :b #x12 :a #x80)
(new 'static 'rgba :r #x8d :g #xb1 :b #x12 :a #x80)
(new 'static 'rgba :r #x8c :g #xb0 :b #x13 :a #x80)
(new 'static 'rgba :r #x8b :g #xaf :b #x13 :a #x80)
(new 'static 'rgba :r #x8a :g #xae :b #x13 :a #x80)
(new 'static 'rgba :r #x8a :g #xae :b #x13 :a #x80)
(new 'static 'rgba :r #x89 :g #xad :b #x13 :a #x80)
(new 'static 'rgba :r #x88 :g #xac :b #x13 :a #x80)
(new 'static 'rgba :r #x87 :g #xab :b #x13 :a #x80)
(new 'static 'rgba :r #x87 :g #xaa :b #x13 :a #x80)
(new 'static 'rgba :r #x86 :g #xa9 :b #x13 :a #x80)
(new 'static 'rgba :r #x85 :g #xa8 :b #x13 :a #x80)
(new 'static 'rgba :r #x84 :g #xa7 :b #x13 :a #x80)
(new 'static 'rgba :r #x84 :g #xa7 :b #x13 :a #x80)
(new 'static 'rgba :r #x83 :g #xa6 :b #x13 :a #x80)
(new 'static 'rgba :r #x82 :g #xa5 :b #x14 :a #x80)
(new 'static 'rgba :r #x81 :g #xa4 :b #x14 :a #x80)
(new 'static 'rgba :r #x81 :g #xa3 :b #x14 :a #x80)
(new 'static 'rgba :r #x80 :g #xa2 :b #x14 :a #x80)
(new 'static 'rgba :r #x7f :g #xa1 :b #x14 :a #x80)
(new 'static 'rgba :r #x7e :g #xa0 :b #x14 :a #x80)
(new 'static 'rgba :r #x7e :g #xa0 :b #x14 :a #x80)
(new 'static 'rgba :r #x7d :g #x9f :b #x14 :a #x80)
(new 'static 'rgba :r #x7c :g #x9e :b #x14 :a #x80)
(new 'static 'rgba :r #x7b :g #x9d :b #x14 :a #x80)
(new 'static 'rgba :r #x7b :g #x9c :b #x14 :a #x80)
(new 'static 'rgba :r #x7a :g #x9b :b #x14 :a #x80)
(new 'static 'rgba :r #x79 :g #x9a :b #x14 :a #x80)
(new 'static 'rgba :r #x79 :g #x9a :b #x15 :a #x80)
(new 'static 'rgba :r #x79 :g #x9a :b #x15 :a #x80)
(new 'static 'rgba :r #x7c :g #x9d :b #x14 :a #x80)
(new 'static 'rgba :r #x7f :g #xa1 :b #x14 :a #x80)
(new 'static 'rgba :r #x82 :g #xa5 :b #x14 :a #x80)
(new 'static 'rgba :r #x85 :g #xa8 :b #x13 :a #x80)
(new 'static 'rgba :r #x88 :g #xac :b #x13 :a #x80)
(new 'static 'rgba :r #x8b :g #xb0 :b #x13 :a #x80)
(new 'static 'rgba :r #x8e :g #xb3 :b #x12 :a #x80)
(new 'static 'rgba :r #x91 :g #xb7 :b #x12 :a #x80)
(new 'static 'rgba :r #x94 :g #xbb :b #x12 :a #x80)
(new 'static 'rgba :r #x97 :g #xbf :b #x12 :a #x80)
(new 'static 'rgba :r #x9a :g #xc2 :b #x11 :a #x80)
(new 'static 'rgba :r #x9d :g #xc6 :b #x11 :a #x80)
(new 'static 'rgba :r #xa0 :g #xca :b #x11 :a #x80)
(new 'static 'rgba :r #xa3 :g #xcd :b #x10 :a #x80)
(new 'static 'rgba :r #xa6 :g #xd1 :b #x10 :a #x80)
(new 'static 'rgba :r #xac :g #xd9 :b #x10 :a #x80)
(new 'static 'rgba :r #xab :g #xd8 :b #x10 :a #x80)
(new 'static 'rgba :r #xaa :g #xd7 :b #x10 :a #x80)
(new 'static 'rgba :r #xa9 :g #xd6 :b #x10 :a #x80)
(new 'static 'rgba :r #xa8 :g #xd5 :b #x10 :a #x80)
(new 'static 'rgba :r #xa8 :g #xd4 :b #x10 :a #x80)
(new 'static 'rgba :r #xa7 :g #xd3 :b #x10 :a #x80)
(new 'static 'rgba :r #xa6 :g #xd2 :b #x10 :a #x80)
(new 'static 'rgba :r #xa5 :g #xd1 :b #x10 :a #x80)
(new 'static 'rgba :r #xa4 :g #xd0 :b #x10 :a #x80)
(new 'static 'rgba :r #xa4 :g #xcf :b #x10 :a #x80)
(new 'static 'rgba :r #xa3 :g #xce :b #x10 :a #x80)
(new 'static 'rgba :r #xa2 :g #xcd :b #x11 :a #x80)
(new 'static 'rgba :r #xa1 :g #xcc :b #x11 :a #x80)
(new 'static 'rgba :r #xa0 :g #xcb :b #x11 :a #x80)
(new 'static 'rgba :r #xa0 :g #xca :b #x11 :a #x80)
(new 'static 'rgba :r #x9f :g #xc9 :b #x11 :a #x80)
(new 'static 'rgba :r #x9e :g #xc8 :b #x11 :a #x80)
(new 'static 'rgba :r #x9d :g #xc7 :b #x11 :a #x80)
(new 'static 'rgba :r #x9d :g #xc6 :b #x11 :a #x80)
(new 'static 'rgba :r #x9c :g #xc5 :b #x11 :a #x80)
(new 'static 'rgba :r #x9b :g #xc4 :b #x11 :a #x80)
(new 'static 'rgba :r #x9a :g #xc3 :b #x11 :a #x80)
(new 'static 'rgba :r #x99 :g #xc2 :b #x11 :a #x80)
(new 'static 'rgba :r #x99 :g #xc1 :b #x11 :a #x80)
(new 'static 'rgba :r #x98 :g #xc0 :b #x12 :a #x80)
(new 'static 'rgba :r #x97 :g #xbf :b #x12 :a #x80)
(new 'static 'rgba :r #x96 :g #xbe :b #x12 :a #x80)
(new 'static 'rgba :r #x95 :g #xbd :b #x12 :a #x80)
(new 'static 'rgba :r #x95 :g #xbc :b #x12 :a #x80)
(new 'static 'rgba :r #x94 :g #xbb :b #x12 :a #x80)
(new 'static 'rgba :r #x93 :g #xba :b #x12 :a #x80)
(new 'static 'rgba :r #x92 :g #xb9 :b #x12 :a #x80)
(new 'static 'rgba :r #x91 :g #xb8 :b #x12 :a #x80)
(new 'static 'rgba :r #x91 :g #xb7 :b #x12 :a #x80)
(new 'static 'rgba :r #x90 :g #xb6 :b #x12 :a #x80)
(new 'static 'rgba :r #x8f :g #xb5 :b #x12 :a #x80)
(new 'static 'rgba :r #x8e :g #xb4 :b #x12 :a #x80)
(new 'static 'rgba :r #x8e :g #xb3 :b #x13 :a #x80)
(new 'static 'rgba :r #x8c :g #xb1 :b #x13 :a #x80)
(new 'static 'rgba :r #x8c :g #xb1 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb6 :b #x12 :a #x80)
(new 'static 'rgba :r #x94 :g #xba :b #x12 :a #x80)
(new 'static 'rgba :r #x97 :g #xbf :b #x12 :a #x80)
(new 'static 'rgba :r #x9b :g #xc3 :b #x11 :a #x80)
(new 'static 'rgba :r #x9e :g #xc8 :b #x11 :a #x80)
(new 'static 'rgba :r #xa2 :g #xcc :b #x11 :a #x80)
(new 'static 'rgba :r #xa6 :g #xd1 :b #x11 :a #x80)
(new 'static 'rgba :r #xa6 :g #xd1 :b #x11 :a #x80)
(new 'static 'rgba :r #xa3 :g #xcd :b #x11 :a #x80)
(new 'static 'rgba :r #xa0 :g #xca :b #x11 :a #x80)
(new 'static 'rgba :r #x9d :g #xc6 :b #x11 :a #x80)
(new 'static 'rgba :r #x9b :g #xc3 :b #x12 :a #x80)
(new 'static 'rgba :r #x98 :g #xbf :b #x12 :a #x80)
(new 'static 'rgba :r #x95 :g #xbc :b #x12 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
(new 'static 'rgba :r #x90 :g #xb5 :b #x13 :a #x80)
)
)
)
;; definition for symbol *toxic-slime-texture-anim-array*, type (texture-anim-array texture-anim)
(define *toxic-slime-texture-anim-array*
(the-as (texture-anim-array texture-anim)
(new 'static 'texture-anim-array :type texture-anim
(new 'static 'texture-anim
:func 'texture-anim-alpha-ramp-clut-upload
:init-func 'texture-anim-alpha-ramp-clut-init
:tex #f
:tex-name #f
:extra (new 'static 'vector :x 28.0)
:color (new 'static 'rgba :a #x80)
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:num-layers #x2
:func 'cloud-texture-anim-func
:init-func 'dest-texture-init
:tex #f
:tex-name #f
:extra (new 'static 'vector :x 16.0 :y 8.0)
:color (new 'static 'rgba :a #x80)
:frame-delta 300.0
:frame-mod 600.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:num-layers #x2
:func 'cloud-texture-anim-func
:init-func 'dest-texture-init
:tex #f
:tex-name #f
:extra (new 'static 'vector :x 32.0 :y 9.0)
:color (new 'static 'rgba :a #x80)
:frame-delta 300.0
:frame-mod 300.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:num-layers #x2
:func 'cloud-texture-anim-func
:init-func 'dest-texture-init
:tex #f
:tex-name #f
:extra (new 'static 'vector :x 64.0 :y 10.0)
:color (new 'static 'rgba :a #x80)
:frame-time 99.0
:frame-delta 300.0
:frame-mod 150.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:num-layers #x2
:func 'cloud-texture-anim-func
:init-func 'dest-texture-init
:tex #f
:tex-name #f
:extra (new 'static 'vector :x 128.0 :y 12.0)
:color (new 'static 'rgba :a #x80)
:frame-time 199.0
:frame-delta 300.0
:frame-mod 75.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:num-layers #x4
:func #f
:init-func 'dest-texture-init
:tex #f
:tex-name #f
:extra (new 'static 'vector :x 128.0 :y 20.0)
:color (new 'static 'rgba :a #x80)
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:num-layers #x1
:func #f
:init-func 'texture-anim-change-mt8h-init
:tex #f
:tex-name "cas-toxic-slime-dest"
:extra (new 'static 'vector :x 28.0 :y 12.0 :z 128.0 :w 128.0)
:color (new 'static 'rgba :a #x80)
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:func 'texture-anim-slime-clut-upload
:init-func 'texture-anim-slime-clut-init
:tex #f
:tex-name #f
:extra (new 'static 'vector :x 28.0)
:color (new 'static 'rgba :a #x80)
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
(new 'static 'texture-anim
:num-layers #x1
:func #f
:init-func 'texture-anim-overide-size-init
:tex #f
:tex-name "cas-toxic-slime-scroll-dest"
:extra (new 'static 'vector :x 64.0 :y 64.0)
:color (new 'static 'rgba :a #x80)
:frame-delta 300.0
:frame-mod 1200.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
)
)
)
)
;; definition for function set-slime-alphas
(defun set-slime-alphas ((arg0 float) (arg1 float) (arg2 float) (arg3 float))
(set! (-> *toxic-slime-texture-anim-array* array-data 5 data 0 start-color w) arg0)
(set! (-> *toxic-slime-texture-anim-array* array-data 5 data 1 start-color w) arg1)
(set! (-> *toxic-slime-texture-anim-array* array-data 5 data 2 start-color w) arg2)
(set! (-> *toxic-slime-texture-anim-array* array-data 5 data 3 start-color w) arg3)
)
;; definition for function get-slime-alphas
;; WARN: Return type mismatch object vs none.
(defun get-slime-alphas ()
(format
0
"~f ~f ~f ~f~%"
(-> *toxic-slime-texture-anim-array* array-data 5 data 0 start-color w)
(-> *toxic-slime-texture-anim-array* array-data 5 data 1 start-color w)
(-> *toxic-slime-texture-anim-array* array-data 5 data 2 start-color w)
(-> *toxic-slime-texture-anim-array* array-data 5 data 3 start-color w)
)
(none)
)
;; definition for function set-slime-speed
(defun set-slime-speed ((arg0 float))
(let ((v1-0 *toxic-slime-texture-anim-array*)
(f0-3 (the float (the int (* 300.0 arg0))))
)
(dotimes (a0-1 4)
(let ((a1-4 (-> v1-0 array-data (+ a0-1 1))))
(set! (-> a1-4 frame-mod) f0-3)
(set! (-> a1-4 data 0 end-time) f0-3)
(set! (-> a1-4 data 1 end-time) f0-3)
)
(set! f0-3 (* 0.5 f0-3))
)
)
#f
)
;; definition for symbol *cas-conveyor-texture-anim-array*, type (texture-anim-array texture-anim)
(define *cas-conveyor-texture-anim-array*
(the-as (texture-anim-array texture-anim)
(new 'static 'texture-anim-array :type texture-anim
(new 'static 'texture-anim
:num-layers #x1
:func #f
:init-func 'texture-anim-overide-size-init
:tex #f
:tex-name "cas-conveyor-dest"
:extra (new 'static 'vector :x 64.0 :y 32.0)
:color (new 'static 'rgba :a #x80)
:frame-delta 555.0
:frame-mod 300.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
:clamp (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(new 'static 'texture-anim
:num-layers #x1
:func #f
:init-func 'texture-anim-overide-size-init
:tex #f
:tex-name "cas-conveyor-dest-01"
:extra (new 'static 'vector :x 64.0 :y 32.0)
:color (new 'static 'rgba :a #x80)
:frame-delta 555.0
:frame-mod 300.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
:clamp (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(new 'static 'texture-anim
:num-layers #x1
:func #f
:init-func 'texture-anim-overide-size-init
:tex #f
:tex-name "cas-conveyor-dest-02"
:extra (new 'static 'vector :x 64.0 :y 32.0)
:color (new 'static 'rgba :a #x80)
:frame-delta 555.0
:frame-mod 300.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
:clamp (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(new 'static 'texture-anim
:num-layers #x1
:func #f
:init-func 'texture-anim-overide-size-init
:tex #f
:tex-name "cas-conveyor-dest-03"
:extra (new 'static 'vector :x 64.0 :y 32.0)
:color (new 'static 'rgba :a #x80)
:frame-delta 555.0
:frame-mod 300.0
:test (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
:alpha (new 'static 'gs-alpha :b #x1 :d #x1)
:clamp (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
)
)
)
;; definition for function set-conveyor-speed!
;; WARN: Return type mismatch int vs none.
(defun set-conveyor-speed! ((arg0 int) (arg1 float))
(set! (-> *cas-conveyor-texture-anim-array* array-data arg0 frame-delta) (* 0.018066408 arg1))
0
(none)
)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+279
View File
@@ -0,0 +1,279 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type pal-lowrez-throne
(deftype pal-lowrez-throne (med-res-level)
()
:heap-base #x60
:method-count-assert 21
:size-assert #xd4
:flag-assert #x15006000d4
)
;; definition for method 3 of type pal-lowrez-throne
(defmethod inspect pal-lowrez-throne ((obj pal-lowrez-throne))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type med-res-level inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-pal-lowrez-throne pal-lowrez-throne pal-lowrez-throne-lod0-jg pal-lowrez-throne-idle-ja
((pal-lowrez-throne-lod0-mg (meters 999999)))
:bounds (static-spherem -5 40 -10 75)
)
;; failed to figure out what this is:
(defpartgroup group-pal-prong-energy
:id 1111
:bounds (static-bspherem 0 0 0 160)
:parts ((sp-item 4762 :fade-after (meters 80) :falloff-to (meters 80))
(sp-item 4763 :fade-after (meters 220) :flags (bit6))
)
)
;; failed to figure out what this is:
(defpart 4762
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
(sp-flt spt-num 2.0)
(sp-flt spt-scale-x (meters 0))
(sp-flt spt-rot-z (degrees 90.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 32.0)
(sp-flt spt-vel-y (meters -0.03))
(sp-rnd-flt spt-scalevel-x (meters 0.005) (meters 0.005) 1.0)
(sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-r -0.98)
(sp-flt spt-fade-g -0.98)
(sp-flt spt-fade-a 0.19393939)
(sp-int spt-timer 250)
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)
(sp-int spt-next-time 165)
(sp-launcher-by-id spt-next-launcher 4764)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 3600.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0)
(sp-flt spt-conerot-radius (meters 6))
)
)
;; failed to figure out what this is:
(defpart 4764
:init-specs ((sp-flt spt-fade-a -0.7529412) (sp-flt spt-friction 0.1))
)
;; failed to figure out what this is:
(defpart 4763
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 8))
(sp-flt spt-rot-x 1228.8)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 0.0 64.0 1.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 64.0)
(sp-flt spt-omega 822476.8)
(sp-int spt-timer 5)
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow)
(sp-flt spt-userdata 8192.0)
)
)
;; definition of type pal-prong
(deftype pal-prong (process-drawable)
((root-override collide-shape :offset 128)
)
:heap-base #x50
:method-count-assert 23
:size-assert #xc8
:flag-assert #x17005000c8
(:methods
(idle () _type_ :state 20)
(break-it () _type_ :state 21)
(broken () _type_ :state 22)
)
)
;; definition for method 3 of type pal-prong
(defmethod inspect pal-prong ((obj pal-prong))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(label cfg-4)
obj
)
;; failed to figure out what this is:
(defskelgroup skel-pal-prong pal-prong pal-prong-lod0-jg pal-prong-idle-ja
((pal-prong-lod0-mg (meters 999999)))
:bounds (static-spherem 0 5 0 5.5)
:origin-joint-index 3
)
;; failed to figure out what this is:
(defskelgroup skel-pal-prong-explode pal-prong pal-prong-explode-lod0-jg pal-prong-explode-idle-ja
((pal-prong-explode-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 15)
)
;; definition for symbol *pal-prong-exploder-params*, type joint-exploder-static-params
(define *pal-prong-exploder-params*
(new 'static 'joint-exploder-static-params
:joints (new 'static 'boxed-array :type joint-exploder-static-joint-params
(new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1)
)
)
)
;; definition for method 11 of type pal-prong
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! pal-prong ((obj pal-prong) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player))))
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0)))
(set! (-> s4-0 total-prims) (the-as uint 3))
(set! (-> s3-0 prim-core collide-as) (collide-spec obstacle))
(set! (-> s3-0 prim-core action) (collide-action solid))
(set! (-> s3-0 transform-index) 3)
(set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 22528.0)
(set! (-> s4-0 root-prim) s3-0)
)
(let ((v1-8 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
(set! (-> v1-8 prim-core collide-as) (collide-spec obstacle))
(set! (-> v1-8 prim-core action) (collide-action solid))
(set! (-> v1-8 transform-index) 3)
(set-vector! (-> v1-8 local-sphere) 0.0 20480.0 0.0 22528.0)
)
(let ((v1-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0))))
(set! (-> v1-10 prim-core collide-as) (collide-spec obstacle))
(set! (-> v1-10 prim-core action) (collide-action solid))
(set! (-> v1-10 transform-index) 3)
(set-vector! (-> v1-10 local-sphere) 0.0 0.0 0.0 8192.0)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(let ((v1-13 (-> s4-0 root-prim)))
(set! (-> s4-0 backup-collide-as) (-> v1-13 prim-core collide-as))
(set! (-> s4-0 backup-collide-with) (-> v1-13 prim-core collide-with))
)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-pal-prong" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(set! (-> obj part) (create-launch-control (-> *part-group-id-table* 1111) obj))
(if (task-node-closed? (game-task-node palace-boss-resolution))
(go (method-of-object obj broken))
(go (method-of-object obj idle))
)
(none)
)
;; definition for function pal-prong-small-collision
;; WARN: Return type mismatch int vs none.
(defbehavior pal-prong-small-collision pal-prong ()
(let ((v1-3 (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) child 0)))
(set! (-> v1-3 prim-core collide-as) (collide-spec))
(set! (-> v1-3 prim-core collide-with) (collide-spec))
)
0
(none)
)
;; failed to figure out what this is:
(defstate broken (pal-prong)
:virtual #t
:enter (behavior ()
(setup-masks (-> self draw) 0 1)
(pal-prong-small-collision)
(transform-post)
(none)
)
:code (the-as (function none :behavior pal-prong) sleep-code)
)
;; failed to figure out what this is:
(defstate break-it (pal-prong)
:virtual #t
:enter (behavior ()
(setup-masks (-> self draw) 0 1)
(pal-prong-small-collision)
(transform-post)
(sound-play "sqd-post-break")
(let ((gp-1 (new 'stack 'joint-exploder-tuning (the-as uint 0))))
(process-spawn
joint-exploder
(art-group-get-by-name *level* "skel-pal-prong-explode" (the-as (pointer uint32) #f))
5
gp-1
*pal-prong-exploder-params*
:to self
)
)
(none)
)
:trans (behavior ()
(go-virtual broken)
(none)
)
:code (the-as (function none :behavior pal-prong) sleep-code)
)
;; failed to figure out what this is:
(defstate idle (pal-prong)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(case event-type
(('trigger)
(go-virtual break-it)
)
)
)
:enter (behavior ()
(transform-post)
(none)
)
:trans (behavior ()
(let ((a1-0 (new 'stack-no-clear 'vector)))
(set! (-> a1-0 quad) (-> self root-override trans quad))
(set! (-> a1-0 y) (+ 36864.0 (-> a1-0 y)))
(spawn (-> self part) a1-0)
)
(none)
)
:code (the-as (function none :behavior pal-prong) sleep-code)
)
+5 -1
View File
@@ -54,12 +54,15 @@
"DGO/ONINTENT.DGO",
"DGO/ORACLE.DGO",
"DGO/OUTROCST.DGO",
"DGO/CAS.DGO",
"DGO/LPACKAGE.DGO",
"DGO/LPOWER.DGO",
"DGO/PAC.DGO",
"DGO/PAE.DGO",
"DGO/PALOUT.DGO",
"DGO/PALBOSS.DGO",
"DGO/PAR.DGO",
"DGO/DEMO.DGO",
"DGO/PAS.DGO",
"DGO/PRI.DGO",
"DGO/RUI.DGO",
@@ -291,7 +294,8 @@
"(method 3 rhino)",
"(method 193 grunt-mech)", // .mula.s
"(method 3 sig-path-sample)",
"debug-eyes" // unused debug function
"debug-eyes", // unused debug function
"(method 11 pal-grind-ring-center)" // same thing defined twice
],
"skip_compile_states": {