Crusader_Decomp/USECODE/REGRET/SHOCKER.unk

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;
}