Crusader_Decomp/USECODE/EUSECODE_extracted/pseudocode/BLASTPAC/slot_01_use.txt
2026-03-26 00:37:17 +01:00

202 lines
4.3 KiB
Text

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 class_0A0C_slot_32(pid, 2, 0x00000000);
suspend;
goto block_011D;
block_0153:
/* loopscr value_u8=0x24 */
/* loopscr value_u8=0x3D */
/* loopscr value_u8=0x40 */
/* loopscr value_u8=0x25 */
/* loop current_var=0xF9 string_bytes=0x6 loop_type=0x2 */
block_0171:
if condition goto block_0233;
block_0174:
target = item;
block_017B:
class_0A0C_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 class_0A11_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 class_039B_slot_20(mine, arg_06);
block_04C5:
/* global_address global_id=0x3C */
if Actor.isBusy() goto block_04FB;
block_04D5:
spawn class_0A0C_slot_32(pid, 2, 0x00000000);
suspend;
goto block_04C5;
block_04FB:
spawn class_0A0C_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 class_0A0C_slot_21(pid, 0x00B0, 0x00000000);
suspend;
block_061A:
goto block_0672;
block_061D:
spawn class_0A0C_slot_21(pid, 0x00B0, 0x00000000);
suspend;
block_0672:
return;
}