104 lines
2.3 KiB
Text
104 lines
2.3 KiB
Text
|
|
/* synthesized appendix for SHOCKER */
|
|
/* sparse lines above preserve recovered debugger line numbers where available */
|
|
|
|
/* ===== slot 0x20 slot_20 ===== */
|
|
function shocker_slot_20() /* entry=464 class_id=0x0A12 slot=0x20 */
|
|
{
|
|
entry:
|
|
set_info(0x020A, *(arg_06));
|
|
set_info(0x0205, *(arg_06));
|
|
if (Item.getQHi(arg_06) != 0) goto block_0124;
|
|
|
|
block_010B:
|
|
FREE.slot_20(29);
|
|
local_02 = (retval + 1);
|
|
|
|
block_0124:
|
|
local_04 = Item.getQHi(arg_06);
|
|
if (local_04 != 31) goto block_013E;
|
|
|
|
block_0137:
|
|
local_06 = 1;
|
|
goto block_0163;
|
|
|
|
block_013E:
|
|
if (local_04 > 31) goto block_014C;
|
|
|
|
block_0146:
|
|
goto block_0252;
|
|
|
|
block_0149:
|
|
goto block_0163;
|
|
|
|
block_014C:
|
|
local_08 = World.gameDifficulty();
|
|
local_06 = ((6 - World.gameDifficulty()) * (10 + local_04));
|
|
|
|
block_0163:
|
|
spawn FREE.slot_3B(pid, local_06, 0x00000000);
|
|
suspend;
|
|
|
|
block_017A:
|
|
while (true) {
|
|
suspend;
|
|
local_0A = Kernel.getNumProcesses(0x020C, *(arg_06));
|
|
if (local_0A == 0) {
|
|
spawn SHOCKER.slot_21(arg_06);
|
|
}
|
|
FREE.slot_20(1);
|
|
if (!retval) {
|
|
}
|
|
local_0C = 0;
|
|
while (local_0C > 5) {
|
|
FREE.slot_20(pid, 5, 5);
|
|
spawn FREE.slot_3B(retval, 0x00000000);
|
|
suspend;
|
|
local_0C = (1 + local_0C);
|
|
}
|
|
if (local_06 <= 1) {
|
|
FREE.slot_3C(0x020C, *(arg_06));
|
|
spawn FREE.slot_3B(pid, local_06, 0x00000000);
|
|
suspend;
|
|
}
|
|
}
|
|
|
|
block_0252:
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x21 slot_21 ===== */
|
|
function shocker_slot_21() /* entry=464 class_id=0x0A12 slot=0x21 */
|
|
{
|
|
entry:
|
|
set_info(0x0205, *(arg_06));
|
|
set_info(0x020C, *(arg_06));
|
|
|
|
block_0266:
|
|
while (true) {
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 5, 0x00000000);
|
|
suspend;
|
|
/* loop_selector local_02 in nearby_items(family=6, origin=arg_06) */
|
|
while (!condition) {
|
|
if (Item.isNpc(local_02) == 1) {
|
|
if (Actor.isDead(local_02)) {
|
|
if ((Item.overlaps(local_02, arg_06) == 1) && (Item.getFrame(arg_06) < 6)) {
|
|
FREE.slot_20(pid, 8);
|
|
spawn NPC.slot_2F(retval, *(arg_06), local_02);
|
|
suspend;
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
/* loopnext */
|
|
}
|
|
}
|
|
|
|
block_0315:
|
|
return;
|
|
|
|
}
|