function fuspac_use() /* entry=208 class_id=0x039C slot=0x01 */ { var referent, /* [BP+00h] type=0x69 */ InCrouch, /* [BP-01h] type=0x62 */ droppedPac, /* [BP-02h] type=0x62 */ Fusionpac, /* [BP-04h] type=0x24 */ target, /* [BP-06h] type=0x24 */ item, /* [BP-08h] type=0x24 */ counter, /* [BP-0Ah] type=0x69 */ lastAnim, /* [BP-0Ch] type=0x69 */ xOff, /* [BP-0Eh] type=0x69 */ yOff, /* [BP-10h] type=0x69 */ mine, /* [BP-12h] type=0x24 */ door; /* [BP-14h] type=0x24 */ entry: set_info(0x0207, *(arg_06)); process_exclude(); Fusionpac = *(arg_06); set_info(0x00F0, 0); /* global_address global_id=0x3C */ lastAnim = Actor.getLastAnimSet(); block_0117: /* global_address global_id=0x3C */ if Actor.isBusy() goto block_014D; block_0127: spawn FREE.waitNTimerTicks(pid, 2, 0x00000000); suspend; goto block_0117; block_014D: /* loop_selector item in nearby_items(shape=0x053A, origin=global[0x003C]) */ block_016B: if condition goto block_022D; block_016E: target = item; block_0175: FREE.slot_29(target, global[0x003C]); if ((retval > 3) && (counter != 6)) goto block_01F6; block_0198: /* 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_0175; block_01F6: /* global_address global_id=0x3C */ /* global_address global_id=0x3C */ suspend; goto block_022D; block_0229: /* loopnext */ goto block_016B; block_022D: 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_040F: if (!target) goto block_0481; block_0418: spawn FREE.slot_21(pid, 0x00B0, 0x00000000); suspend; goto block_0772; block_047E: goto block_0772; block_0481: /* global_address global_id=0x3C */ if Actor.getSomeFlagProbablyCrouch() goto block_049B; block_0491: InCrouch = 1; goto block_04D2; block_049B: InCrouch = 0; /* global_address global_id=0x3C */ /* global_address global_id=0x3C */ suspend; block_04D2: /* global_address global_id=0x3C */ /* global_address global_id=0x3C */ /* global_address global_id=0x3C */ droppedPac = 1; block_052C: /* global_address global_id=0x3C */ if Actor.isBusy() goto block_0562; block_053C: spawn FREE.waitNTimerTicks(pid, 2, 0x00000000); suspend; goto block_052C; block_0562: if droppedPac goto block_0772; block_056A: /* str_to_ptr */ /* free_stack_string value_u8=0x4 target=[SP+04h] */ suspend; /* pop_global global_id=0x26 size=0x1 */ spawn FREE.slot_24(1, 100, 0x00000000); /* loop_selector item in nearby_items(shape=0x0476, origin=global[0x003C]) */ block_05DE: if condition goto block_0609; block_05E1: if (Item.getQLo(item) != 33) goto block_0605; block_05F6: FREE.slot_2F(0x03B5, item); block_0605: /* loopnext */ goto block_05DE; block_0609: for item in selector_0x42(arg0=0x032A, arg1=0x0329, arg2=(50 * 32), origin=global[0x003C]) { /* loopnext */ } block_0652: /* loopscr value_u8=0x24 */ /* loopscr value_u8=0x41 */ /* loop current_var=0xF8 string_bytes=0x4 loop_type=0x2 */ block_0670: if condition goto block_06B2; block_0673: if (Item.getQLo(item) != 10) goto block_06AE; block_0688: door = item; spawn DOOR.slot_20(pid, door); suspend; block_06AE: /* loopnext */ goto block_0670; block_06B2: /* loopscr value_u8=0x24 */ /* loopscr value_u8=0x41 */ /* loop current_var=0xF8 string_bytes=0x4 loop_type=0x2 */ block_06CF: if condition goto block_0706; block_06D2: if (Item.getQLo(item) != 0x00FB) goto block_0702; block_06E8: block_0702: /* loopnext */ goto block_06CF; block_0706: for item in nearby_items(shape=0x04D0, origin=arg_06) { if ((Item.getFrame(item) == 0) && (Item.getQLo(item) != 47)) { suspend; } /* loopnext */ } block_0770: block_0772: return; }