Crusader_Decomp/USECODE/EUSECODE_extracted/pseudocode/FUSPAC/slot_01_use.txt

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