251 lines
5.3 KiB
Text
251 lines
5.3 KiB
Text
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;
|
|
|
|
}
|