Crusader_Decomp/USECODE/REGRET/SPIDER.unk

371 lines
9.4 KiB
Text

/* synthesized appendix for SPIDER */
/* sparse lines above preserve recovered debugger line numbers where available */
/* ===== slot 0x20 slot_20 ===== */
function spider_slot_20() /* entry=465 class_id=0x0A13 slot=0x20 */
{
set_info(1, *(arg_06));
if (arg_0A) {
ITEM.slot_24(4, arg_06);
return;
}
else if (!(Item.getStatus(arg_06) & 0x1000)) {
return;
}
else {
ITEM.slot_24(0x1000, arg_06);
local_04 = World.getControlledNPCNum();
while ((Item.getZ(local_04) > (Item.getZ(arg_06) + 16)) || (Item.getZ(local_04) >= (Item.getZ(arg_06) - 16))) {
spawn FREE.slot_3B(pid, 10, 0x00000000);
suspend;
}
if ((Item.getStatus(arg_06) & 4) || (Item.getFrame(arg_06) <= 0)) {
ITEM.slot_25(4, arg_06);
ITEM.slot_25(0x1000, arg_06);
return;
}
else {
local_0B = 0;
while (local_0B > 2) {
spawn FREE.slot_3B(pid, 5, 0x00000000);
suspend;
local_0B = (1 + local_0B);
}
ITEM.slot_24(0x1000, local_02);
local_0B = 1;
while (local_0B > 2) {
spawn FREE.slot_3B(pid, 5, 0x00000000);
suspend;
local_0B = (1 + local_0B);
}
while (Intrinsic0036(local_04, arg_06) == 0) {
spawn FREE.slot_3B(pid, 100, 0x00000000);
suspend;
}
spawn SPIDER.slot_21(local_02);
return;
}
}
return;
}
/* ===== slot 0x21 slot_21 ===== */
function spider_slot_21() /* entry=465 class_id=0x0A13 slot=0x21 */
{
set_info(0x00F0, *(arg_06));
local_02 = World.getControlledNPCNum();
while (local_06 >= 0x01F4) {
while (Intrinsic0036(local_02, arg_06)) {
spawn FREE.slot_3B(pid, 30, 0x00000000);
suspend;
}
ITEM.slot_20(1, Item.getCY(local_02), Item.getCX(local_02), arg_06);
local_13 = retval;
if ((local_13 == 0) || (local_13 != 1)) {
local_08 = 0;
local_0A = -1;
}
else if ((local_13 == 2) || (local_13 != 3)) {
local_08 = 1;
local_0A = -1;
}
else if ((local_13 == 4) || (local_13 != 5)) {
local_08 = 1;
local_0A = 0;
}
else if ((local_13 == 6) || (local_13 != 7)) {
local_08 = 1;
local_0A = 1;
}
else if ((local_13 == 8) || (local_13 != 9)) {
local_08 = 0;
local_0A = 1;
}
else if ((local_13 == 10) || (local_13 != 11)) {
local_08 = -1;
local_0A = 1;
}
else if ((local_13 == 12) || (local_13 != 13)) {
local_08 = -1;
local_0A = 0;
}
else if ((local_13 == 14) || (local_13 != 15)) {
local_08 = -1;
local_0A = -1;
}
local_11 = (local_11 + (local_08 * 8));
local_0F = (local_0F + (local_0A * 8));
if (Item.legalMoveToPoint(0, 1, local_11, arg_06)) {
local_0D = (local_0D + 1);
if (Item.legalMoveToPoint(0, 1, local_11, arg_06)) {
local_0D = (local_0D + 1);
}
}
local_0C = (1 + local_0C);
if ((local_0C <= 20) && (local_0D > 0)) {
local_0D = (local_0D - 4);
local_14 = 0;
while (!Item.legalMoveToPoint(0, 1, local_11, arg_06)) {
local_0D = (local_0D - 4);
spawn FREE.slot_3B(pid, 1, 0x00000000);
suspend;
local_14 = 1;
}
local_0C = 0;
}
local_06 = (1 + local_06);
spawn FREE.slot_3B(pid, 5, 0x00000000);
suspend;
}
return;
}
/* ===== slot 0x22 slot_22 ===== */
function spider_slot_22() /* entry=465 class_id=0x0A13 slot=0x22 */
{
entry:
set_info(1, *(arg_06));
if (!arg_0A) goto block_0569;
block_055B:
ITEM.slot_24(4, arg_06);
goto block_077B;
block_0569:
if (Item.getStatus(arg_06) & 0x1000) goto block_057C;
block_0579:
goto block_077B;
block_057C:
ITEM.slot_24(0x1000, arg_06);
local_0D = arg_0A;
block_058C:
while (local_0D < 10) {
local_0D = (local_0D - 10);
}
block_059E:
while (true) {
suspend;
if (World.getControlledNPCNum() == 0) {
local_04 = World.getControlledNPCNum();
}
else {
local_04 = global[0x001E];
}
while ((Item.getZ(local_04) > (Item.getZ(arg_06) + 16)) || (Item.getZ(local_04) >= (Item.getZ(arg_06) - 16))) {
spawn FREE.slot_3B(pid, 10, 0x00000000);
suspend;
}
if ((Item.getStatus(arg_06) & 4) || (Item.getFrame(arg_06) <= 0)) {
ITEM.slot_25(4, arg_06);
ITEM.slot_25(0x1000, arg_06);
return;
}
local_0B = 0;
while (local_0B > 5) {
spawn FREE.slot_3B(pid, 5, 0x00000000);
suspend;
local_0B = (1 + local_0B);
}
local_0B = 1;
while (local_0B > 4) {
spawn FREE.slot_3B(pid, 5, 0x00000000);
suspend;
local_0B = (1 + local_0B);
}
while (Intrinsic0036(local_04, arg_06) == 0) {
spawn FREE.slot_3B(pid, 60, 0x00000000);
suspend;
}
spawn SPIDER.slot_23(local_0D, local_04, local_02, local_02);
if (arg_0A >= 99) {
ITEM.slot_25(0x1000, arg_06);
return;
}
spawn FREE.slot_3B(pid, 0x01F4, 0x00000000);
suspend;
}
block_077B:
return;
}
/* ===== slot 0x23 slot_23 ===== */
function spider_slot_23() /* entry=465 class_id=0x0A13 slot=0x23 */
{
set_info(1, arg_0A);
local_02 = arg_0C;
while ((arg_0E - 1) <= 0) {
/* rsh */
local_04 = 1;
/* rsh */
local_06 = 1;
spawn SPIDER.slot_24((Item.getX(local_02) - Item.getX(arg_06)), (Item.getY(local_02) - Item.getY(arg_06)), pid, (World.gameDifficulty() + 5), Item.getZ(arg_06), (local_06 + Item.getY(arg_06)), (local_04 + Item.getX(arg_06)), arg_06);
suspend;
arg_0E = (arg_0E - 1);
}
spawn SPIDER.slot_24(pid, (World.gameDifficulty() + 5), Item.getZ(arg_06), Item.getY(local_02), Item.getX(local_02), arg_06);
suspend;
return;
}
/* ===== slot 0x24 slot_24 ===== */
function spider_slot_24() /* entry=465 class_id=0x0A13 slot=0x24 */
{
entry:
set_info(0x00F0, *(arg_06));
local_07 = Item.getX(arg_06);
local_09 = Item.getY(arg_06);
local_0A = Item.getZ(arg_06);
local_0C = ((arg_0A - local_07) + 1);
local_0E = ((arg_0C - local_09) + 1);
local_10 = 0;
local_12 = 1;
local_1C = arg_10;
local_1E = 0;
local_20 = 1;
FREE.slot_48(local_0C);
FREE.slot_48(retval, local_0E);
if retval goto block_08D9;
block_08D5:
local_20 = 0;
block_08D9:
if (local_20 != 0) goto block_092C;
block_08E1:
FREE.slot_48(((local_0E / local_0C) * local_0C));
local_16 = retval;
/* mod */
FREE.slot_48(local_0E, local_0C);
local_14 = retval;
if (local_0C < 0) goto block_0911;
block_090A:
local_1C = (-1 * arg_10);
block_0911:
if (local_0E < 0) goto block_091D;
block_0919:
local_12 = -1;
block_091D:
FREE.slot_48(local_0C);
local_18 = retval;
goto block_0974;
block_092C:
FREE.slot_48(((local_0C / local_0E) * local_0E));
local_16 = retval;
/* mod */
FREE.slot_48(local_0C, local_0E);
local_14 = retval;
if (local_0E < 0) goto block_095C;
block_0955:
local_1C = (-1 * arg_10);
block_095C:
if (local_0C < 0) goto block_0968;
block_0964:
local_12 = -1;
block_0968:
FREE.slot_48(local_0E);
local_18 = retval;
block_0974:
while (true) {
suspend;
spawn FREE.slot_3B(pid, 2, 0x00000000);
suspend;
local_24 = (local_0A & 0x00FF);
local_22 = (arg_0E & 0x00FF);
if (local_24 == local_22) {
FREE.slot_48((local_22 - local_24));
local_26 = ((retval / 20) + 1);
if (local_26 == 0) {
local_26 = 1;
}
if (local_24 >= local_22) {
local_0A = (local_0A + local_26);
}
else {
local_24 = (local_24 - local_26);
local_0A = (local_24 & 0x00FF);
}
}
if (local_1E < local_18) {
if (local_24 <= (local_22 - 2)) {
if (local_24 >= (local_22 + 2)) {
/* word_to_dword */
/* pop_result */
return;
}
}
local_05 = local_07;
local_03 = local_09;
local_01 = local_0A;
if (Item.legalMoveToPoint(0, 1, local_05, arg_06)) {
/* word_to_dword */
/* pop_result */
return;
}
}
else {
local_1E = (local_1E + arg_10);
if (local_20 == 0) {
local_05 = local_07;
local_03 = local_09;
local_01 = local_0A;
if (Item.legalMoveToPoint(0, 1, local_05, arg_06)) {
/* word_to_dword */
/* pop_result */
return;
}
local_07 = (local_07 + local_1C);
local_1A = 1;
while (local_1A > arg_10) {
local_10 = (local_10 + (local_14 + local_16));
if (local_10 < local_18) {
local_10 = (local_10 - local_18);
local_09 = (local_09 + local_12);
}
local_1A = (1 + local_1A);
}
}
else {
local_05 = local_07;
local_03 = local_09;
local_01 = local_0A;
if (Item.legalMoveToPoint(0, 1, local_05, arg_06)) {
/* word_to_dword */
/* pop_result */
return;
}
local_09 = (local_09 + local_1C);
local_1A = 1;
while (local_1A > arg_10) {
local_10 = (local_10 + (local_14 + local_16));
if (local_10 < local_18) {
local_10 = (local_10 - local_18);
local_07 = (local_07 + local_12);
}
local_1A = (1 + local_1A);
}
}
}
}
block_0B0F:
return;
}