82 lines
1.8 KiB
Text
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;
|
|
|
|
}
|