function cameraco_enterFastArea() /* entry=88 class_id=0x01B6 slot=0x0F */ { var referent, /* [BP+00h] type=0x69 */ delay, /* [BP-02h] type=0x69 */ iSeeYou, /* [BP-04h] type=0x69 */ trackedEnough, /* [BP-06h] type=0x69 */ fram, /* [BP-08h] type=0x69 */ counter, /* [BP-0Ah] type=0x69 */ sawCrusader, /* [BP-0Ch] type=0x69 */ movement, /* [BP-0Eh] type=0x69 */ target, /* [BP-10h] type=0x24 */ range, /* [BP-12h] type=0x69 */ dir; /* [BP-14h] type=0x69 */ entry: set_info(0x021B, *(arg_06)); process_exclude(); delay = ((5 - Game.getDifficultyLevel()) * 15); iSeeYou = (5 - (Game.getDifficultyLevel() * 15)); if (Item.getFrame(arg_06) != 5) goto block_0126; block_0120: goto block_04AD; block_0126: if (!Item.isOnScreen(arg_06)) goto block_0162; block_0139: spawn FREE.waitNTimerTicks(pid, delay, 0x00000000); suspend; goto block_0126; block_0162: sawCrusader = 0; movement = 1; block_0170: suspend; range = 0; block_0184: if (!Item.isOnScreen(arg_06)) goto block_01C0; block_0197: spawn FREE.waitNTimerTicks(pid, delay, 0x00000000); suspend; goto block_0184; block_01C0: spawn FREE.waitNTimerTicks(pid, delay, 0x00000000); suspend; if (getTargetNPCNumMaybe() != 0) goto block_0204; block_01F7: target = getTargetNPCNumMaybe(); goto block_020B; block_0204: target = 1; block_020B: dir = getClosestDirectionInRange(15, 0, 16, Item.getY(target), Item.getX(target), Item.getY(arg_06), Item.getX(arg_06)); fram = Item.getFrame(arg_06); if (((dir / 2) - 1) != fram) goto block_03B7; block_0260: range = Item.getRangeIfVisible(target, arg_06); if range goto block_0313; block_0278: sawCrusader = 1; trackedEnough = (1 + trackedEnough); if ((trackedEnough > iSeeYou) && (!(Item.getStatus(arg_06) & 0x1000))) goto block_0310; block_02A6: spawn FREE.waitNTimerTicks(pid, delay, 0x00000000); suspend; spawn TRIGGER.slot_20(pid, 0, *(arg_06), arg_06); suspend; ITEM.slot_23(0x1000, arg_06); block_0310: goto block_03B4; block_0313: sawCrusader = 0; if ((fram + movement) < 0) goto block_0358; block_0328: movement = 1; spawn FREE.waitNTimerTicks(pid, 30, 0x00000000); suspend; goto block_0396; block_0358: if ((fram + movement) > 4) goto block_0396; block_0366: movement = -1; spawn FREE.waitNTimerTicks(pid, 30, 0x00000000); suspend; goto block_0396; block_0396: block_03B4: goto block_04AA; block_03B7: if (trackedEnough && sawCrusader) goto block_03F3; block_03C8: if (((dir / 2) - 1) > fram) goto block_03E9; block_03DF: movement = 1; goto block_03F0; block_03E9: movement = -1; block_03F0: goto block_0410; block_03F3: trackedEnough = 0; sawCrusader = 0; /* bit_not */ block_0410: if ((fram + movement) < 0) goto block_044E; block_041E: movement = 1; spawn FREE.waitNTimerTicks(pid, 30, 0x00000000); suspend; goto block_048C; block_044E: if ((fram + movement) > 4) goto block_048C; block_045C: movement = -1; spawn FREE.waitNTimerTicks(pid, 30, 0x00000000); suspend; goto block_048C; block_048C: block_04AA: goto block_0170; block_04AD: return; }