Crusader_Decomp/USECODE/EUSECODE_extracted/pseudocode/MOTION/slot_0F_enterFastArea.txt

82 lines
1.8 KiB
Text

function motion_enterFastArea() /* entry=89 class_id=0x01B7 slot=0x0F */
{
var
referent, /* [BP+00h] type=0x69 */
trackedEnough, /* [BP-02h] type=0x69 */
fram, /* [BP-04h] type=0x69 */
movement, /* [BP-06h] type=0x69 */
foundTarget, /* [BP-07h] type=0x62 */
delay, /* [BP-09h] type=0x69 */
iSeeYou, /* [BP-0Bh] type=0x69 */
dir; /* [BP-0Dh] type=0x69 */
entry:
set_info(0x021B, *(arg_06));
process_exclude();
movement = 1;
delay = ((5 - Game.getDifficultyLevel()) * 2);
iSeeYou = ((5 - Game.getDifficultyLevel()) * 5);
block_0112:
suspend;
spawn FREE.waitNTimerTicks(pid, delay, 0x00000000);
suspend;
/* global_address global_id=0x3C */
/* global_address global_id=0x3C */
dir = getClosestDirectionInRange(Item.getX(Item.getY(16, 0, 16)), Item.getY(arg_06), Item.getX(arg_06));
fram = Item.getFrame(arg_06);
if (dir != fram) goto block_01DA;
block_019C:
trackedEnough = (1 + trackedEnough);
if ((trackedEnough > iSeeYou) && (foundTarget != 0)) goto block_01D7;
block_01BA:
foundTarget = 1;
spawn TRIGGER.slot_20(0, *(arg_06), arg_06);
block_01D7:
goto block_02A1;
block_01DA:
if trackedEnough goto block_0207;
block_01E2:
if ((12 - dir) > fram) goto block_0200;
block_01F6:
movement = 1;
goto block_0207;
block_0200:
movement = -1;
block_0207:
trackedEnough = 0;
foundTarget = 0;
if ((fram + movement) < 0) goto block_0253;
block_0223:
movement = 1;
spawn FREE.waitNTimerTicks(pid, 30, 0x00000000);
suspend;
goto block_0291;
block_0253:
if ((fram + movement) > 15) goto block_0291;
block_0261:
movement = -1;
spawn FREE.waitNTimerTicks(pid, 30, 0x00000000);
suspend;
goto block_0291;
block_0291:
block_02A1:
goto block_0112;
block_02A4:
return;
}