SCAR Code:
program RMC;
{.Include SRL\SRL\Misc\Smart.Scar}
{.Include SRL\SRL.Scar}
{.Include SRL\SRL\reflection\reflection.Scar}
{.include SRL/SRL/Skill/Magic.Scar}
var
x, y: integer;
Procedure DeclarePlayers;
Begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active := True;
end;
{-------------------------------------------------------------------------------
-- Load paths and walk functions
-------------------------------------------------------------------------------}
function LumbyToLadder: TPointArray;
begin
SetLength(Result, 4);
Result[0] := Point(3222, 3217);
Result[1] := Point(3215, 3217);
Result[2] := Point(3214, 3226);
Result[3] := Point(3207, 3226);
end;
function LumbyToTower: TPointArray;
begin
SetLength(Result, 70);
Result[0] := Point(3214, 3226);
Result[1] := Point(3215, 3219);
Result[2] := Point(3221, 3217);
Result[3] := Point(3226, 3217);
Result[4] := Point(3231, 3217);
Result[5] := Point(3235, 3219);
Result[6] := Point(3235, 3224);
Result[7] := Point(3232, 3228);
Result[8] := Point(3228, 3232);
Result[9] := Point(3225, 3235);
Result[10] := Point(3223, 3238);
Result[11] := Point(3222, 3241);
Result[12] := Point(3220, 3246);
Result[13] := Point(3219, 3250);
Result[14] := Point(3218, 3255);
Result[15] := Point(3217, 3259);
Result[16] := Point(3217, 3263);
Result[17] := Point(3217, 3267);
Result[18] := Point(3216, 3271);
Result[19] := Point(3213, 3277);
Result[20] := Point(3209, 3279);
Result[21] := Point(3204, 3279);
Result[22] := Point(3197, 3278);
Result[23] := Point(3193, 3280);
Result[24] := Point(3186, 3281);
Result[25] := Point(3184, 3284);
Result[26] := Point(3179, 3286);
Result[27] := Point(3175, 3286);
Result[28] := Point(3169, 3286);
Result[29] := Point(3164, 3287);
Result[30] := Point(3160, 3288);
Result[31] := Point(3155, 3291);
Result[32] := Point(3151, 3293);
Result[33] := Point(3146, 3294);
Result[34] := Point(3141, 3294);
Result[35] := Point(3135, 3293);
Result[36] := Point(3131, 3295);
Result[37] := Point(3125, 3296);
Result[38] := Point(3120, 3296);
Result[39] := Point(3115, 3294);
Result[40] := Point(3110, 3293);
Result[41] := Point(3110, 3290);
Result[42] := Point(3109, 3287);
Result[43] := Point(3108, 3284);
Result[44] := Point(3106, 3278);
Result[45] := Point(3105, 3275);
Result[46] := Point(3105, 3270);
Result[47] := Point(3104, 3266);
Result[48] := Point(3104, 3258);
Result[49] := Point(3104, 3252);
Result[50] := Point(3104, 3248);
Result[51] := Point(3104, 3244);
Result[52] := Point(3105, 3241);
Result[53] := Point(3105, 3234);
Result[54] := Point(3107, 3232);
Result[55] := Point(3110, 3228);
Result[56] := Point(3110, 3226);
Result[57] := Point(3110, 3221);
Result[58] := Point(3115, 3216);
Result[59] := Point(3118, 3212);
Result[60] := Point(3115, 3208);
Result[61] := Point(3114, 3202);
Result[62] := Point(3113, 3197);
Result[63] := Point(3112, 3189);
Result[64] := Point(3112, 3184);
Result[65] := Point(3113, 3180);
Result[66] := Point(3113, 3176);
Result[67] := Point(3113, 3171);
Result[68] := Point(3111, 3167);
Result[69] := Point(3108, 3166);
end;
function LumbyToVarrock: TPointArray;
begin
SetLength(Result, 65);
Result[0] := Point(3224, 3218);
Result[1] := Point(3228, 3217);
Result[2] := Point(3233, 3217);
Result[3] := Point(3237, 3219);
Result[4] := Point(3237, 3223);
Result[5] := Point(3243, 3224);
Result[6] := Point(3248, 3224);
Result[7] := Point(3253, 3224);
Result[8] := Point(3258, 3227);
Result[9] := Point(3260, 3232);
Result[10] := Point(3260, 3235);
Result[11] := Point(3260, 3239);
Result[12] := Point(3259, 3242);
Result[13] := Point(3255, 3247);
Result[14] := Point(3252, 3252);
Result[15] := Point(3249, 3257);
Result[16] := Point(3247, 3262);
Result[17] := Point(3244, 3267);
Result[18] := Point(3242, 3271);
Result[19] := Point(3240, 3277);
Result[20] := Point(3239, 3282);
Result[21] := Point(3240, 3290);
Result[22] := Point(3239, 3294);
Result[23] := Point(3239, 3300);
Result[24] := Point(3241, 3305);
Result[25] := Point(3244, 3310);
Result[26] := Point(3249, 3314);
Result[27] := Point(3251, 3316);
Result[28] := Point(3254, 3320);
Result[29] := Point(3260, 3322);
Result[30] := Point(3265, 3324);
Result[31] := Point(3268, 3328);
Result[32] := Point(3274, 3331);
Result[33] := Point(3280, 3332);
Result[34] := Point(3283, 3332);
Result[35] := Point(3289, 3332);
Result[36] := Point(3294, 3334);
Result[37] := Point(3299, 3334);
Result[38] := Point(3303, 3338);
Result[39] := Point(3301, 3343);
Result[40] := Point(3301, 3349);
Result[41] := Point(3300, 3356);
Result[42] := Point(3297, 3361);
Result[43] := Point(3294, 3366);
Result[44] := Point(3297, 3370);
Result[45] := Point(3298, 3376);
Result[46] := Point(3295, 3379);
Result[47] := Point(3293, 3386);
Result[48] := Point(3293, 3391);
Result[49] := Point(3292, 3397);
Result[50] := Point(3292, 3402);
Result[51] := Point(3291, 3406);
Result[52] := Point(3288, 3410);
Result[53] := Point(3287, 3415);
Result[54] := Point(3288, 3419);
Result[55] := Point(3285, 3423);
Result[56] := Point(3280, 3427);
Result[57] := Point(3273, 3427);
Result[58] := Point(3268, 3427);
Result[59] := Point(3265, 3422);
Result[60] := Point(3265, 3419);
Result[61] := Point(3264, 3414);
Result[62] := Point(3262, 3408);
Result[63] := Point(3259, 3405);
Result[64] := Point(3254, 3400);
end;
function VarrockToLumby: TPointArray;
begin
SetLength(Result, 56);
Result[0] := Point(3258, 3402);
Result[1] := Point(3259, 3407);
Result[2] := Point(3261, 3414);
Result[3] := Point(3265, 3416);
Result[4] := Point(3266, 3421);
Result[5] := Point(3268, 3427);
Result[6] := Point(3275, 3428);
Result[7] := Point(3282, 3427);
Result[8] := Point(3286, 3421);
Result[9] := Point(3287, 3415);
Result[10] := Point(3288, 3409);
Result[11] := Point(3292, 3405);
Result[12] := Point(3292, 3400);
Result[13] := Point(3293, 3392);
Result[14] := Point(3293, 3385);
Result[15] := Point(3295, 3380);
Result[16] := Point(3298, 3377);
Result[17] := Point(3296, 3369);
Result[18] := Point(3296, 3362);
Result[19] := Point(3299, 3357);
Result[20] := Point(3303, 3356);
Result[21] := Point(3305, 3351);
Result[22] := Point(3300, 3348);
Result[23] := Point(3302, 3342);
Result[24] := Point(3303, 3336);
Result[25] := Point(3298, 3333);
Result[26] := Point(3292, 3333);
Result[27] := Point(3286, 3332);
Result[28] := Point(3278, 3331);
Result[29] := Point(3272, 3331);
Result[30] := Point(3267, 3325);
Result[31] := Point(3262, 3323);
Result[32] := Point(3255, 3322);
Result[33] := Point(3251, 3317);
Result[34] := Point(3248, 3313);
Result[35] := Point(3242, 3309);
Result[36] := Point(3238, 3302);
Result[37] := Point(3238, 3294);
Result[38] := Point(3239, 3287);
Result[39] := Point(3240, 3279);
Result[40] := Point(3242, 3274);
Result[41] := Point(3246, 3267);
Result[42] := Point(3249, 3263);
Result[43] := Point(3251, 3257);
Result[44] := Point(3253, 3250);
Result[45] := Point(3258, 3245);
Result[46] := Point(3259, 3239);
Result[47] := Point(3260, 3232);
Result[48] := Point(3259, 3226);
Result[49] := Point(3254, 3225);
Result[50] := Point(3248, 3224);
Result[51] := Point(3241, 3224);
Result[52] := Point(3237, 3224);
Result[53] := Point(3234, 3218);
Result[54] := Point(3228, 3217);
Result[55] := Point(3220, 3217);
end;
function PathWalk(Path: array of TPoint; Tol, FlagD: integer): Boolean;
var
Count : integer;
begin
Count := 0;
repeat
Result := WalkToTile(Path[Count], Tol, FlagD);
if not(Result) then
begin
WriteLn('Path walk failed');
Exit;
end;
Count := Count + 1;
until (not(Result)) or (Count = GetArrayLength(Path))
end;
procedure ClimbLumby;
var
Pass: integer;
begin
SetAngle(True);
MakeCompass('N');
SetRun(True);
PathWalk(LumbyToLadder, 1, 0);
Pass := 0;
repeat
if FindObj(x, y, 'limb', 6317928, 3) then
begin
Mouse(x, y, 2, 2, false);
ChooseOption('limb');
Wait(1000 +random(400));
Pass := 1;
end;
until(Pass = 1);
Pass := 0;
Wait(1550 + random(450));
WalkToTile(Point(3207, 3221), 1, 0);
Wait(650 + random(450));
SetAngle(False);
MakeCompass('E');
repeat
if FindObj(x, y, 'oor', 3622225, 3) then
begin
if isUpText('pen') then
begin
Mouse(x, y, 2, 2, false);
ChooseOption('Open');
Flag;
Wait(1800 + random(400));
end;
Wait(550 + random(450));
FindSymbol(x, y, 'Quest');
Mouse(x, y, 3, 3, true);
Flag;
Pass := 1;
end;
until(Pass = 1);
Pass := 0;
end;
procedure ClimbLumbyQuestDraynorCenter;
var
Pass: integer;
begin
ClimbLumby;
SetAngle(True);
MakeCompass('N');
repeat
if FindObj(x, y, 'uke', 1586757, 3) then
begin
repeat
Mouse(x, y, 1, 1, false);
ChooseOption('alk-to');
Flag;
Wait(2800 + random(500));
until(FindNPCChatText('eetings', nothing));
Pass := 1;
end;
until(Pass = 1);
Pass := 0;
Wait(550 + random(550));
FindNPCChatText('lick', ClickLeft);
Wait(550 + random(200));
FindNPCChatText('me', ClickLeft);
Wait(650 + random(200));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(900));
FindNPCChatText('lick here', ClickLeft);
Wait(350 + random(400));
FindNPCChatText('lick here', ClickLeft);
Wait(250 + random(200));
FindNPCChatText('lick here', ClickLeft);
Wait(450 + random(200));
FindNPCChatText('oblem', ClickLeft);
Wait(550 + random(200));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(200));
FindNPCChatText('lick here', ClickLeft);
Wait(250 + random(200));
FindNPCChatText('lick here', ClickLeft);
Wait(350 + random(500));
repeat
if FindObj(x, y, 'oor', 5532284, 2) then
begin
Mouse(x, y, 1, 1, false);
ChooseOption('Open');
Flag;
Wait(800 + random(400));
Pass := 1;
end;
until(Pass = 1);
Pass := 0;
WalkToTile(Point(3206, 3227), 1, 0);
Wait(1550 + random(250));
repeat
if FindObj(x, y, 'limb', 8291976, 3) then
begin
Mouse(x, y, 2, 2, false);
ChooseOption('limb-down');
Wait(1000 +random(400));
Pass := 1;
end;
until(Pass = 1);
Pass := 0;
SetRun(true);
PathWalk(LumbyToTower, 1, 0);
end;
procedure ClimbWizTowerP2;
var
Pass: integer;
begin
SetAngle(false);
MakeCompass('N');
Pass := 0;
repeat
if FindObj(x, y, 'oor', 3363948, 3) then
begin
if isUpText('pen') then
begin
Mouse(x, y, 2, 2, false);
ChooseOption('Open');
Flag;
Wait(1800 + random(400));
end;
Pass := 1;
end;
until(Pass = 1);
Pass := 0;
WalkToTile(Point(3108, 3161), 1, 0);
Wait(1550 + random(250));
MakeCompass('W');
Wait(550 + random(250));
repeat
if FindObj(x, y, 'oor', 2575978, 3) then
begin
if isUpText('pen') then
begin
Mouse(x, y, 1, 1, false);
ChooseOption('Open');
Flag;
Wait(1800 + random(400));
end;
Pass := 1;
end;
until(Pass = 1);
Pass := 0;
SetAngle(true);
WalkToTile(Point(3104, 3159), 1, 0);
Wait(550 + random(550));
repeat
if FindObj(x, y, 'adder', 2311774, 3) then
begin
Mouse(x, y, 2, 2, false);
ChooseOption('Climb-down');
Flag;
Wait(800 + random(400));
Pass := 1;
end;
until(Pass = 1);
Pass := 0;
Wait(880 + random(250));
WalkToTile(Point(3108, 9571), 1, 0);
repeat
if FindObj(x, y, 'arge door', 2244683, 2) then
begin
if isUpText('pen') then
begin
Mouse(x, y, 1, 1, false);
ChooseOption('Open');
Flag;
Wait(1800 + random(400));
end;
Pass := 1;
end;
until(Pass = 1);
Pass := 0;
repeat
if FindObj(x, y, 'edridor', 13535515, 5) then
begin
repeat
Mouse(x, y, 1, 1, false);
ChooseOption('alk-to');
Flag;
Wait(1200 + random(500));
until(FindNPCChatText('elcome', nothing));
Pass := 1;
end;
until(Pass = 1);
Pass := 0;
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('head wizard', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('here you are', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('es', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
end;
procedure ToVarrockAlmostDone;
var
Pass: integer;
begin
Gametab(7);
Cast('Home Teleport');
Wait(15500 + random(2450));
PathWalk(LumbyToVarrock, 1, 2);
Pass := 0;
repeat
if FindObj(x, y, 'ubury', 1808866, 5) then
begin
repeat
Mouse(x, y, 1, 1, false);
ChooseOption('alk-to');
Flag;
Wait(1200 + random(500));
until(FindNPCChatText('ant to', nothing));
Pass := 1;
end;
until(Pass = 1);
Pass := 0;
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('been sent', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
repeat
if FindObj(x, y, 'ubury', 1808866, 5) then
begin
repeat
Mouse(x, y, 1, 1, false);
ChooseOption('alk-to');
Flag;
Wait(1200 + random(500));
until(FindNPCChatText('adven', nothing));
Pass := 1;
end;
until(Pass = 1);
Pass := 0;
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
Wait(550 + random(550));
FindNPCChatText('lick here', ClickLeft);
end;
procedure ToLumbyFinished;
var
Pass: integer;
begin
PathWalk(VarrockToLumby, 0, 0);
SetRun(true);
PathWalk(LumbyToTower, 1, 0);
end;
begin
SetupSRL;
Disguise('Untitled - Notepad');
SymbolAccuracy := 0.4;
SmartSetup('world14', False, True, False);
Wait(3000);
SetTargetDC(SmartGetDC);
DeclarePlayers;
LoginPlayer;
ClimbLumbyQuestDraynorCenter;
ClimbWizTowerP2;
ToVarrockAlmostDone;
ToLumbyFinished;
end.