338 lines
7.3 KiB
Text
338 lines
7.3 KiB
Text
|
|
/* synthesized appendix for CRU_MINE */
|
|
/* sparse lines above preserve recovered debugger line numbers where available */
|
|
|
|
/* ===== slot 0x01 use ===== */
|
|
function cru_mine_use() /* entry=55 class_id=0x011E slot=0x01 */
|
|
{
|
|
set_info(0x0207, *(arg_06));
|
|
process_exclude();
|
|
/* global_address global_id=0x1E */
|
|
if (Actor.getMap() == 25) {
|
|
return;
|
|
}
|
|
else {
|
|
local_05 = *(arg_06);
|
|
set_info(0x00F0, 0);
|
|
/* global_address global_id=0x1E */
|
|
local_0D = Actor.getLastAnimSet();
|
|
/* global_address global_id=0x1E */
|
|
while (!Actor.isBusy()) {
|
|
spawn FREE.slot_3B(pid, 2, 0x00000000);
|
|
suspend;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
if (Actor.getDir() == 0) {
|
|
local_13 = 0;
|
|
local_15 = -1;
|
|
local_0F = -1;
|
|
local_11 = -3;
|
|
}
|
|
else if (Actor.getDir() == 1) {
|
|
local_13 = 0;
|
|
local_15 = -1;
|
|
local_0F = 0;
|
|
local_11 = -3;
|
|
}
|
|
else if (Actor.getDir() == 2) {
|
|
local_13 = 1;
|
|
local_15 = -1;
|
|
local_0F = 1;
|
|
local_11 = -3;
|
|
}
|
|
else if (Actor.getDir() == 3) {
|
|
local_13 = 1;
|
|
local_15 = -1;
|
|
local_0F = 2;
|
|
local_11 = -2;
|
|
}
|
|
else if (Actor.getDir() == 4) {
|
|
local_13 = 1;
|
|
local_15 = 0;
|
|
local_0F = 2;
|
|
local_11 = -1;
|
|
}
|
|
else if (Actor.getDir() == 5) {
|
|
local_13 = 1;
|
|
local_15 = 0;
|
|
local_0F = 2;
|
|
local_11 = 0;
|
|
}
|
|
else if (Actor.getDir() == 6) {
|
|
local_13 = 1;
|
|
local_15 = 1;
|
|
local_0F = 2;
|
|
local_11 = 2;
|
|
}
|
|
else if (Actor.getDir() == 7) {
|
|
local_13 = 1;
|
|
local_15 = 1;
|
|
local_0F = 0;
|
|
local_11 = 2;
|
|
}
|
|
else if (Actor.getDir() == 8) {
|
|
local_13 = 0;
|
|
local_15 = 1;
|
|
local_0F = -1;
|
|
local_11 = 2;
|
|
}
|
|
else if (Actor.getDir() == 9) {
|
|
local_13 = 0;
|
|
local_15 = 1;
|
|
local_0F = -2;
|
|
local_11 = 2;
|
|
}
|
|
else if (Actor.getDir() == 10) {
|
|
local_13 = -1;
|
|
local_15 = 1;
|
|
local_0F = -3;
|
|
local_11 = 2;
|
|
}
|
|
else if (Actor.getDir() == 11) {
|
|
local_13 = -1;
|
|
local_15 = 1;
|
|
local_0F = -3;
|
|
local_11 = 1;
|
|
}
|
|
else if (Actor.getDir() == 12) {
|
|
local_13 = -1;
|
|
local_15 = 0;
|
|
local_0F = -3;
|
|
local_11 = 0;
|
|
}
|
|
else if (Actor.getDir() == 13) {
|
|
local_13 = -1;
|
|
local_15 = 0;
|
|
local_0F = -3;
|
|
local_11 = -1;
|
|
}
|
|
else if (Actor.getDir() == 14) {
|
|
local_13 = -1;
|
|
local_15 = -1;
|
|
local_0F = -3;
|
|
local_11 = -3;
|
|
}
|
|
else if (Actor.getDir() == 15) {
|
|
local_13 = -1;
|
|
local_15 = -1;
|
|
local_0F = -3;
|
|
local_11 = -3;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
if (!Intrinsic0061()) {
|
|
local_03 = 1;
|
|
}
|
|
else {
|
|
local_03 = 0;
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
suspend;
|
|
}
|
|
/* global_address global_id=0x1E */
|
|
local_1A = (Item.getX() + (local_0F * 16));
|
|
/* global_address global_id=0x1E */
|
|
local_18 = (Item.getY() + (local_11 * 16));
|
|
/* global_address global_id=0x1E */
|
|
local_16 = (Item.getZ() + 12);
|
|
if (Item.legalCreateAtPoint(local_1A, 0, 0x011E, local_02)) {
|
|
if (local_03) {
|
|
/* global_address global_id=0x1E */
|
|
/* global_address global_id=0x1E */
|
|
suspend;
|
|
}
|
|
return;
|
|
}
|
|
else {
|
|
while (!Kernel.getNumProcesses(0x0203, local_02)) {
|
|
spawn FREE.slot_3B(pid, 3, 0x00000000);
|
|
suspend;
|
|
}
|
|
spawn FREE.slot_3B(pid, 10, 0x00000000);
|
|
suspend;
|
|
local_0B = 1;
|
|
while (local_0B > 3) {
|
|
spawn FREE.slot_3B(pid, 3, 0x00000000);
|
|
suspend;
|
|
local_0B = (1 + local_0B);
|
|
}
|
|
spawn CRU_MINE.slot_20(local_02, arg_06);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x20 slot_20 ===== */
|
|
function cru_mine_slot_20() /* entry=55 class_id=0x011E slot=0x20 */
|
|
{
|
|
entry:
|
|
local_17 = arg_0A;
|
|
set_info(0x00F0, local_19);
|
|
|
|
block_0580:
|
|
if (!local_15) goto block_060F;
|
|
|
|
block_0586:
|
|
local_02 = (1 + local_02);
|
|
/* loop_selector local_13 in nearby_items(family=6, origin=local_19) */
|
|
|
|
block_05A2:
|
|
if condition goto block_05DF;
|
|
|
|
block_05A5:
|
|
if Item.isNpc(local_13) goto block_05DB;
|
|
|
|
block_05B1:
|
|
if ((local_13 > 1) && (Actor.isDead(local_13) != 0)) goto block_05DB;
|
|
|
|
block_05C6:
|
|
if Intrinsic0036(local_13, local_19) goto block_05DB;
|
|
|
|
block_05D4:
|
|
local_15 = local_13;
|
|
goto block_05DF;
|
|
|
|
block_05DB:
|
|
/* loopnext */
|
|
goto block_05A2;
|
|
|
|
block_05DF:
|
|
if (local_02 > 5) goto block_05F5;
|
|
|
|
block_05E9:
|
|
local_02 = 0;
|
|
|
|
block_05F5:
|
|
spawn FREE.slot_3B(pid, 60, 0x00000000);
|
|
suspend;
|
|
goto block_0580;
|
|
|
|
block_060F:
|
|
local_02 = 0;
|
|
|
|
block_0613:
|
|
if (local_02 < 0x0190) goto block_08CA;
|
|
|
|
block_061C:
|
|
if (Item.getZ(local_15) > (Item.getZ(local_19) + 9)) goto block_06AD;
|
|
|
|
block_0635:
|
|
local_15 = 0;
|
|
|
|
block_0639:
|
|
if (!local_15) goto block_06AD;
|
|
|
|
block_063F:
|
|
/* loop_selector local_13 in nearby_items(family=6, origin=local_19) */
|
|
|
|
block_0654:
|
|
if condition goto block_0691;
|
|
|
|
block_0657:
|
|
if Item.isNpc(local_13) goto block_068D;
|
|
|
|
block_0663:
|
|
if ((local_13 > 1) && (Actor.isDead(local_13) != 0)) goto block_068D;
|
|
|
|
block_0678:
|
|
if Intrinsic0036(local_13, local_19) goto block_068D;
|
|
|
|
block_0686:
|
|
local_15 = local_13;
|
|
goto block_0691;
|
|
|
|
block_068D:
|
|
/* loopnext */
|
|
goto block_0654;
|
|
|
|
block_0691:
|
|
spawn FREE.slot_3B(pid, 60, 0x00000000);
|
|
suspend;
|
|
goto block_0639;
|
|
|
|
block_06AD:
|
|
while (!Intrinsic0036(local_15, local_13)) {
|
|
spawn FREE.slot_3B(pid, 30, 0x00000000);
|
|
suspend;
|
|
}
|
|
|
|
block_06D5:
|
|
if ((local_1B == 0) || (local_1B != 1)) {
|
|
local_04 = 0;
|
|
local_06 = -1;
|
|
}
|
|
else if ((local_1B == 2) || (local_1B != 3)) {
|
|
local_04 = 1;
|
|
local_06 = -1;
|
|
}
|
|
else if ((local_1B == 4) || (local_1B != 5)) {
|
|
local_04 = 1;
|
|
local_06 = 0;
|
|
}
|
|
else if ((local_1B == 6) || (local_1B != 7)) {
|
|
local_04 = 1;
|
|
local_06 = 1;
|
|
}
|
|
else if ((local_1B == 8) || (local_1B != 9)) {
|
|
local_04 = 0;
|
|
local_06 = 1;
|
|
}
|
|
else if ((local_1B == 10) || (local_1B != 11)) {
|
|
local_04 = -1;
|
|
local_06 = 1;
|
|
}
|
|
else if ((local_1B == 12) || (local_1B != 13)) {
|
|
local_04 = -1;
|
|
local_06 = 0;
|
|
}
|
|
else if ((local_1B == 14) || (local_1B != 15)) {
|
|
local_04 = -1;
|
|
local_06 = -1;
|
|
}
|
|
|
|
block_07C5:
|
|
local_11 = (local_11 + (local_04 * 8));
|
|
local_0F = (local_0F + (local_06 * 8));
|
|
if (!Item.legalMoveToPoint(0, 1, local_11, local_19)) goto block_0836;
|
|
|
|
block_07F6:
|
|
local_0D = (local_0D + 1);
|
|
if (!Item.legalMoveToPoint(0, 1, local_11, local_19)) goto block_0836;
|
|
|
|
block_0810:
|
|
local_0D = (local_0D + 1);
|
|
if (!Item.legalMoveToPoint(0, 1, local_11, local_19)) goto block_0836;
|
|
|
|
block_082A:
|
|
|
|
block_0836:
|
|
local_0C = (1 + local_0C);
|
|
if ((local_0C > 10) && (local_0D > 0)) goto block_08A9;
|
|
|
|
block_084B:
|
|
local_0D = (local_0D - 4);
|
|
local_1C = 0;
|
|
|
|
block_0856:
|
|
while (!Item.legalMoveToPoint(0, 1, local_11, local_19)) {
|
|
local_0D = (local_0D - 4);
|
|
spawn FREE.slot_3B(pid, 1, 0x00000000);
|
|
suspend;
|
|
local_1C = 1;
|
|
}
|
|
|
|
block_088D:
|
|
local_0C = 0;
|
|
if local_1C goto block_08A9;
|
|
|
|
block_0896:
|
|
|
|
block_08A9:
|
|
local_02 = (1 + local_02);
|
|
spawn FREE.slot_3B(pid, 4, 0x00000000);
|
|
suspend;
|
|
goto block_0613;
|
|
|
|
block_08CA:
|
|
return;
|
|
|
|
}
|