function blastpac_use() /* entry=207 class_id=0x039B slot=0x01 */ { var referent, /* [BP+00h] type=0x69 */ InCrouch, /* [BP-01h] type=0x62 */ Blastpac, /* [BP-03h] type=0x24 */ target, /* [BP-05h] type=0x24 */ item, /* [BP-07h] type=0x24 */ counter, /* [BP-09h] type=0x69 */ lastAnim, /* [BP-0Bh] type=0x69 */ xOff, /* [BP-0Dh] type=0x69 */ yOff, /* [BP-0Fh] type=0x69 */ mine; /* [BP-11h] type=0x24 */ entry: set_info(0x0207, *(arg_06)); process_exclude(); Blastpac = *(arg_06); set_info(0x00F0, 0); /* global_address global_id=0x3C */ lastAnim = Actor.getLastAnimSet(); block_011D: /* global_address global_id=0x3C */ if Actor.isBusy() goto block_0153; block_012D: spawn FREE.waitNTimerTicks(pid, 2, 0x00000000); suspend; goto block_011D; block_0153: /* loop_selector item in nearby_items(shape=0x053A, origin=global[0x003C]) */ block_0171: if condition goto block_0233; block_0174: target = item; block_017B: FREE.slot_29(target, global[0x003C]); if ((retval > 3) && (counter != 6)) goto block_01FC; block_019E: /* global_address global_id=0x3C */ /* global_address global_id=0x3C */ /* global_address global_id=0x3C */ spawn NPC.slot_22(Item.getDirFromTo16(Item.getX(pid, 1, Item.getY(Item.getY(target), Item.getX(target))))); suspend; counter = (1 + counter); goto block_017B; block_01FC: /* global_address global_id=0x3C */ /* global_address global_id=0x3C */ suspend; goto block_0233; block_022F: /* loopnext */ goto block_0171; block_0233: if (Actor.getDir() == 0) { xOff = -1; yOff = -3; } else if (Actor.getDir() == 1) { xOff = 0; yOff = -3; } else if (Actor.getDir() == 2) { xOff = 1; yOff = -3; } else if (Actor.getDir() == 3) { xOff = 2; yOff = -2; } else if (Actor.getDir() == 4) { xOff = 2; yOff = -1; } else if (Actor.getDir() == 5) { xOff = 2; yOff = 0; } else if (Actor.getDir() == 6) { xOff = 2; yOff = 2; } else if (Actor.getDir() == 7) { xOff = 0; yOff = 2; } else if (Actor.getDir() == 8) { xOff = -1; yOff = 2; } else if (Actor.getDir() == 9) { xOff = -2; yOff = 2; } else if (Actor.getDir() == 10) { xOff = -3; yOff = 2; } else if (Actor.getDir() == 11) { xOff = -3; yOff = 1; } else if (Actor.getDir() == 12) { xOff = -3; yOff = 0; } else if (Actor.getDir() == 13) { xOff = -3; yOff = -1; } else if (Actor.getDir() == 14) { xOff = -3; yOff = -2; } else if (Actor.getDir() == 15) { xOff = -3; yOff = -3; } block_0415: if target goto block_061D; block_041D: /* global_address global_id=0x3C */ if Actor.getSomeFlagProbablyCrouch() goto block_0437; block_042D: InCrouch = 1; goto block_046E; block_0437: InCrouch = 0; /* global_address global_id=0x3C */ /* global_address global_id=0x3C */ suspend; block_046E: /* global_address global_id=0x3C */ /* global_address global_id=0x3C */ /* global_address global_id=0x3C */ spawn BLASTPAC.slot_20(mine, arg_06); block_04C5: /* global_address global_id=0x3C */ if Actor.isBusy() goto block_04FB; block_04D5: spawn FREE.waitNTimerTicks(pid, 2, 0x00000000); suspend; goto block_04C5; block_04FB: spawn FREE.slot_21(pid, 13, 0x00000000); suspend; if (!InCrouch) goto block_05C5; block_052A: /* global_address global_id=0x3C */ /* global_address global_id=0x3C */ suspend; if target goto block_05C2; block_0562: /* global_address global_id=0x3C */ /* global_address global_id=0x3C */ suspend; /* global_address global_id=0x3C */ /* global_address global_id=0x3C */ suspend; block_05C2: goto block_061A; block_05C5: spawn FREE.slot_21(pid, 0x00B0, 0x00000000); suspend; block_061A: goto block_0672; block_061D: spawn FREE.slot_21(pid, 0x00B0, 0x00000000); suspend; block_0672: return; }