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

157 lines
3.3 KiB
Text

function camerans_enterFastArea() /* entry=90 class_id=0x01B8 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()) * 5);
iSeeYou = (5 - (Game.getDifficultyLevel() * 5));
if (Item.getFrame(arg_06) != 9) goto block_0126;
block_0120:
goto block_04A7;
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(13, 3, 16, Item.getY(target), Item.getX(target), Item.getY(arg_06), Item.getX(arg_06));
fram = Item.getFrame(arg_06);
if ((12 - dir) != fram) goto block_03B4;
block_025D:
range = Item.getRangeIfVisible(target, arg_06);
if range goto block_0310;
block_0275:
sawCrusader = 1;
trackedEnough = (1 + trackedEnough);
if ((trackedEnough > iSeeYou) && (!(Item.getStatus(arg_06) & 0x1000))) goto block_030D;
block_02A3:
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_030D:
goto block_03B1;
block_0310:
sawCrusader = 0;
if ((fram + movement) < 0) goto block_0355;
block_0325:
movement = 1;
spawn FREE.waitNTimerTicks(pid, 30, 0x00000000);
suspend;
goto block_0393;
block_0355:
if ((fram + movement) > 8) goto block_0393;
block_0363:
movement = -1;
spawn FREE.waitNTimerTicks(pid, 30, 0x00000000);
suspend;
goto block_0393;
block_0393:
block_03B1:
goto block_04A4;
block_03B4:
if (trackedEnough && sawCrusader) goto block_03ED;
block_03C5:
if ((12 - dir) > fram) goto block_03E3;
block_03D9:
movement = 1;
goto block_03EA;
block_03E3:
movement = -1;
block_03EA:
goto block_040A;
block_03ED:
trackedEnough = 0;
sawCrusader = 0;
/* bit_not */
block_040A:
if ((fram + movement) < 0) goto block_0448;
block_0418:
movement = 1;
spawn FREE.waitNTimerTicks(pid, 30, 0x00000000);
suspend;
goto block_0486;
block_0448:
if ((fram + movement) > 8) goto block_0486;
block_0456:
movement = -1;
spawn FREE.waitNTimerTicks(pid, 30, 0x00000000);
suspend;
goto block_0486;
block_0486:
block_04A4:
goto block_0170;
block_04A7:
return;
}