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