Advertisement
Guest User

Untitled

a guest
Sep 25th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.33 KB | None | 0 0
  1. program EvasivArceuusFavour;
  2.  
  3. {$DEFINE SMART}
  4. {$i AeroLib/AeroLib.Simba}
  5. {$i Reflection/Reflection.simba}
  6.  
  7. var
  8. reflectPlayer: TReflectLocalPlayer;
  9. villia,horphis,sam,grackle,biblia: TPoint;
  10. mode,onTask,gotBook,gotLoc,firstTimeHorphis:boolean;
  11. startingfavour,currentState,bl,booksRetrieved,i:integer;
  12. currentSearch:String;
  13. AllShelves: TReflectObjectArray;
  14. Shelf: TReflectObject;
  15. xpbook: TReflectInvItem;
  16. const
  17. LIB_DIST = 60;
  18. {
  19. 1: Journey of Souls
  20. 2: Ideology of Darkness
  21. 3: Rada's Census
  22. 4: Rada's journey
  23. 5: Twill Accord
  24. 6: Transvergence Theory
  25. 7: Byrne's coronation speech - Speach of King Byrne
  26. 8: Tristessa's tragedy- The Tragedy of Tristessa
  27. 9: Ricktor's diary - Diary of Steklan Ricktor
  28. 10:Treachery of Royalty - Treachery of Royalty
  29. 11:Killing of a King - Killing of a King
  30. 12:Dark manuscript
  31. }
  32. procedure declarePoints();
  33. begin
  34. villia := Point(1626,3815);
  35. horphis := Point(1639,3815);
  36. sam := Point(1638,3801);
  37. grackle := Point(1626,3801);
  38. biblia := Point(1633,3824);
  39. end;
  40.  
  41. procedure login();
  42. begin
  43. reflectPlayer.Username := 'andrecourau1993@gmail.com';
  44. reflectPlayer.Password := 'lebaguette333';
  45. reflectPlayer.Active := True;
  46. Me.Member := True;
  47. reflectPlayer.Create;
  48. reflectPlayer.Login;
  49. end;
  50.  
  51. function TileInsideZone(tile : TTile; xMax, yMax, xMin, yMin : Integer) : boolean;
  52. var
  53. x,y:Integer;
  54. ret : boolean;
  55. begin
  56. x := tile.X;
  57. y := tile.Y;
  58. exit ( (x <= xMax) and (x>=xMin) and (y<=yMax) and (y>=yMin) );
  59. end;
  60.  
  61. function DistFromPlayer(tile : TTile) : single;
  62. Var
  63. playerTile: TTile;
  64. begin
  65. playerTile := reflectPlayer.GetTile;
  66. exit (Sqrt(power(playerTile.X - tile.X, 2) + power(playerTile.Y - tile.Y, 2)));
  67. end;
  68.  
  69. procedure RemoveFromArray(var objects : Array of TReflectObject; index : Integer);
  70. var
  71. i: Integer;
  72. begin
  73. for i := index + 1 to Length(objects) - 1 do
  74. objects[i - 1] := objects[i];
  75. SetLength(AllShelves, Length(AllShelves)-1);
  76. end;
  77.  
  78. procedure SortGameObjectByDist(var objects : Array of TReflectObject; size : Integer);
  79. Var
  80. i, j: Integer;
  81. temp : TReflectObject;
  82. Begin
  83. For i := size-1 DownTo 1 do
  84. For j := 1 to i do
  85. If (DistFromPlayer(objects[j-1].GetTile) > DistFromPlayer(objects[j].GetTile)) Then
  86. Begin
  87. temp := objects[j-1];
  88. objects[j-1] := objects[j];
  89. objects[j] := temp;
  90. End;
  91. End;
  92.  
  93. function searchShelves(bookName : String; xMax, yMax, xMin, yMin : Integer) : boolean;
  94. var
  95. i: Integer;
  96. tile: TTile;
  97. shelf : TReflectObject;
  98. book : TReflectInvItem;
  99. safety: boolean;
  100. begin
  101. WriteLn('Starting book search for: ', bookName);
  102. //Check if inside room
  103. if(not TileInsideZone(reflectPlayer.GetTile, xMax, yMax, xMin, yMin)) then
  104. begin
  105. WriteLn('Player not inside correct room, exiting');
  106. exit(false);
  107. end;
  108.  
  109. //Move pitch
  110. Reflect.Compass.MakePitch(7);
  111.  
  112. //Search
  113. AllShelves.Get(objGame, 'Bookshelf', LIB_DIST);
  114. WriteLn('Shelves found: ', Length(AllShelves));
  115.  
  116. //Clamp search
  117. i:=0;
  118. while(i<Length(AllShelves)) do
  119. begin
  120. if(not(TileInsideZone(AllShelves[i].GetTile,xMax, yMax, xMin, yMin))) then
  121. begin
  122. RemoveFromArray(AllShelves,i);
  123. end else
  124. begin
  125. inc(i);
  126. end;
  127. end;
  128. WriteLn('Shelves after clamp: ', Length(AllShelves));
  129.  
  130. //Start searching
  131. while(Length(AllShelves)>0) do
  132. begin
  133. //Get next
  134. shelf := AllShelves[0];
  135. tile := shelf.GetTile;
  136.  
  137. //If far go to shelf
  138. if(Reflect.Tiles.DistanceFromTile(tile) > 1) then
  139. begin
  140. repeat
  141. reflectPlayer.BlindWalkMM (tile,0);
  142. wait(1000);
  143. while(reflectPlayer.IsMoving) do
  144. wait(250);
  145. until (Reflect.Tiles.DistanceFromTile(tile) <= 1);
  146. end;
  147.  
  148. //Rotate to
  149. Reflect.Tiles.RotateCameraToTile(tile);
  150.  
  151. //Click shelf
  152. repeat
  153. Reflect.Mouse.Move(shelf.getMSPoint,5,5);
  154. wait(1000);
  155. if(Reflect.Text.IsUpText('Stairs')) then
  156. begin
  157. Reflect.Mouse.Click(Mouse_Right);
  158. chooseOption('Search');
  159. safety:=true;
  160. end;
  161. until((Reflect.Text.IsUpText('Bookshelf')) or safety);
  162.  
  163. if(not safety) then
  164. Reflect.Mouse.Click(Mouse_Left);
  165. safety:=false;
  166. wait(1000);
  167. repeat
  168. wait(200);
  169. until((not reflectPlayer.IsAnimating) and (not reflectPlayer.IsMoving));
  170.  
  171. //Check for book
  172. if(book.Find(bookName)) then
  173. begin
  174. WriteLn('Book Found!');
  175. if(mode) then
  176. begin
  177. startingfavour:=startingfavour+30;
  178. end else
  179. begin
  180. startingfavour:=startingfavour+15;
  181. end;
  182. gotBook:=true;
  183. Reflect.Compass.Make('n');
  184. WriteLn('EXIT TRUE');
  185. exit(true);
  186. break;
  187. end;
  188.  
  189. //Remove and resort
  190. RemoveFromArray(AllShelves,0);
  191. SortGameObjectByDist(AllShelves, Length(AllShelves));
  192. WriteLn('Books left: ', Length(AllShelves));
  193.  
  194. end;
  195. //Loop ended
  196. WriteLn('Book not found, very sad');
  197. exit(false);
  198.  
  199. end;
  200.  
  201. procedure getBookName();
  202. var
  203. book:integer;
  204.  
  205. begin
  206. if(Reflect.Chat.NpcChooseOption('Journey of Souls') = true ) then
  207. currentSearch:='Soul journey';
  208.  
  209. if(Reflect.Chat.NpcChooseOption('Ideology of Darkness') = true ) then
  210. currentSearch:='Ideology of darkness';
  211.  
  212. if(Reflect.Chat.NpcChooseOption('census') = true ) then
  213. currentSearch:='Rada''s census';
  214.  
  215. if(Reflect.Chat.NpcChooseOption('Journey of Rada') = true ) then
  216. currentSearch:='Rada''s journey';
  217.  
  218. if(Reflect.Chat.NpcChooseOption('Twill') = true ) then
  219. currentSearch:='Twill accord';
  220.  
  221. if(Reflect.Chat.NpcChooseOption('Transvergence') = true ) then
  222. currentSearch:='Transvergence theory';
  223.  
  224. if(Reflect.Chat.NpcChooseOption('Byrne') = true ) then
  225. currentSearch:='Byrne''s coronation speech';
  226.  
  227. if(Reflect.Chat.NpcChooseOption('Tristessa') = true ) then
  228. currentSearch:='Tristessa''s tragedy';
  229.  
  230. if(Reflect.Chat.NpcChooseOption('Steklan') = true ) then
  231. currentSearch:='Ricktor''s diary(7)';
  232.  
  233. if(Reflect.Chat.NpcChooseOption('Treachery ') = true ) then
  234. currentSearch:='Treachery of royalty';
  235.  
  236. if(Reflect.Chat.NpcChooseOption('Killing') = true ) then
  237. currentSearch:='Killing of a king';
  238.  
  239. if(Reflect.Chat.NpcChooseOption('hodidius') = true ) then
  240. currentSearch:='Hosidius letter';
  241.  
  242. if(Reflect.Chat.NpcChooseOption('Wintertodt') = true ) then
  243. currentSearch:='Wintertodt parable';
  244.  
  245. if(Reflect.Chat.NpcChooseOption('extract') = true ) then
  246. currentSearch:='Eathram & rada extract';
  247.  
  248. if(Reflect.Chat.NpcChooseOption('Transportation') = true ) then
  249. currentSearch:='Transportation incantations';
  250. WriteLn(currentSearch);
  251. end;
  252.  
  253. procedure walker(tpa:TPointArray);
  254. var
  255. i:integer;
  256.  
  257. begin
  258. for i:=0 to length(tpa)-1 do
  259. begin
  260. repeat
  261. reflectPlayer.BlindWalkMM(tpa[i],1);
  262. sleep(1000+random(83));
  263. until(Reflect.Tiles.DistanceFromTile(tpa[i])< 2);
  264. end;
  265. end;
  266.  
  267. procedure atGrackle();
  268. var
  269. path:TPointArray;
  270.  
  271. begin
  272. path:=[villia];
  273. walker(path);
  274. end;
  275.  
  276.  
  277.  
  278. procedure climbStairs();
  279. var
  280. stairs:TReflectObject;
  281. plane:integer;
  282.  
  283. begin
  284. if (stairs.Find(objGame,'Stairs',4)) then
  285. begin
  286. plane:=Reflect.Tiles.GetPlane;
  287. repeat
  288. Reflect.Mouse.Move(stairs.getMSPoint,3,8);
  289. sleep(300+random(33));
  290. until(Reflect.Text.IsUpText('Climb'));
  291. Reflect.Mouse.Click(Mouse_Left);
  292. while(Reflect.Tiles.GetPlane<>plane) do sleep(100);
  293. sleep(2000+random(100));
  294. end;
  295. end;
  296.  
  297. procedure toTopNW();
  298. var
  299. path1:TPointArray;
  300. begin
  301. path1:=[Point(1623,3824),Point(1615,3825)];
  302. walker(path1);
  303. end;
  304.  
  305. procedure toMiddleNW();
  306. var
  307. path1,path2:TPointArray;
  308. begin
  309. path1:=[Point(1623,3824),Point(1608,3819)];
  310. path2:=[Point(1619,3820)];
  311. walker(path1);
  312. climbstairs;
  313. walker(path2);
  314. end;
  315.  
  316. procedure toBottomNW();
  317. var
  318. path1,path2,path3:TPointArray;
  319. begin
  320. path1:=[Point(1623,3824),Point(1608,3819)];
  321. path2:=[Point(1610,3827)];
  322. path3:=[Point(1620,3824)];
  323. walker(path1);
  324. climbstairs;
  325. walker(path2);
  326. climbstairs;
  327. walker(path3);
  328. end;
  329.  
  330. procedure toTopS();
  331. var
  332. path1:TPointArray;
  333. begin
  334. path1:=[Point(1623,3824),Point(1615,3815),Point(1614,3799),Point(1618,3798)];
  335. walker(path1);
  336. end;
  337.  
  338. procedure toMiddleS();
  339. var
  340. path1,path2:TPointArray;
  341. begin
  342. path1:=[Point(1623,3824),Point(1615,3815),Point(1614,3799),Point(1621,3798)];
  343. path2:=[Point(1616,3788)];
  344. walker(path1);
  345. climbstairs;
  346. walker(path2);
  347. end;
  348.  
  349. procedure toBottomS();
  350. var
  351. path1,path2,path3:TPointArray;
  352. begin
  353. path1:=[Point(1623,3824),Point(1615,3815),Point(1614,3799),Point(1621,3798),Point(1621,3798)];
  354. path2:=[Point(1610,3795)];
  355. path3:=[Point(1620,3791)];
  356. walker(path1);
  357. climbstairs;
  358. walker(path2);
  359. climbstairs;
  360. walker(path3);
  361. end;
  362.  
  363. procedure toTopNE();
  364. var
  365. path1:TPointArray;
  366. begin
  367. path1:=[Point(1642,3825),Point(1653,3820)];
  368. walker(path1);
  369. end;
  370.  
  371. procedure toMiddleNE();
  372. var
  373. path1,path2,path3:TPointArray;
  374. begin
  375. path1:=[Point(1642,3825),Point(1650,3828)];
  376. path2:=[Point(1652,3825)];
  377. walker(path1);
  378. climbstairs;
  379. walker(path2);
  380. end;
  381.  
  382. procedure toBottomNE();
  383. var
  384. path1,path2,path3:TPointArray;
  385. begin
  386. path1:=[Point(1642,3825),Point(1650,3828)];
  387. path2:=[Point(1642,3821)];
  388. path3:=[Point(1648,3826)];
  389. walker(path1);
  390. climbstairs;
  391. walker(path2);
  392. climbstairs;
  393. walker(path3);
  394. end;
  395.  
  396. procedure toTopCenter();
  397. var
  398. path1:TPointArray;
  399. begin
  400. path1:=[Point(1638,3801)];
  401. walker(path1);
  402. end;
  403.  
  404. procedure toMiddleCenter();
  405. var
  406. path1,path2:TPointArray;
  407. stair:TTile;
  408. begin
  409. stair:=Point(1639,3804);
  410. path1:=[Point(1639,3803)];
  411. path2:=[Point(1639,3810)];
  412. walker(path1);
  413. repeat
  414. Reflect.Mouse.Move(Reflect.Tiles.TileToMS(stair,0,0,0),3,3);
  415. sleep(1000+random(100));
  416. until (Reflect.Text.IsUpText('Stairs'));
  417. Reflect.Mouse.Click(Mouse_Left);
  418. sleep(1500+random(100));
  419. walker(path2);
  420. end;
  421.  
  422. procedure MiddleNEtoStart();
  423. var
  424. path1,path2,path3,path4:TPointArray;
  425.  
  426. begin
  427. path1:=[Point(1642,3822)];
  428.  
  429. walker(path1);
  430. climbstairs;
  431.  
  432. if(mode)then
  433. begin
  434. walker([horphis]);
  435. end else
  436. begin
  437. walker([horphis]);
  438. walker([villia]);
  439. end;
  440. end;
  441.  
  442. procedure TopNEtoStart();
  443. var
  444. path1,path2,path3,path4:TPointArray;
  445.  
  446. begin
  447. path1:=[Point(1644,3828)];
  448. walker(path1);
  449. climbstairs;
  450. MiddleNEtoStart;
  451. end;
  452.  
  453. procedure BottomNEtoStart();
  454. begin
  455. if(mode)then
  456. begin
  457. walker([horphis]);
  458. end else
  459. begin
  460. walker([horphis]);
  461. walker([villia]);
  462. end;
  463. end;
  464.  
  465. procedure TopNWtoStart();
  466. var
  467. path1,path2:TPointArray;
  468.  
  469. begin
  470. path1:=[Point(1608,3818)];
  471. path2:=[Point(1610,3826)];
  472. walker(path1);
  473. climbstairs;
  474. walker(path2);
  475. climbstairs;
  476. if(mode) then
  477. begin
  478. walker([horphis]);
  479. end else
  480. walker([villia]);
  481. end;
  482.  
  483. procedure MiddleNWtoStart();
  484. var
  485. path1:TPointArray;
  486.  
  487. begin
  488. path1:=[Point(1610,3826)];
  489. walker(path1);
  490. climbstairs;
  491. if(mode) then
  492. begin
  493. walker([horphis]);
  494. end else
  495. walker([villia]);
  496. end;
  497.  
  498. procedure BottomNWtoStart();
  499.  
  500. begin
  501. if(mode) then
  502. begin
  503. walker([horphis]);
  504. end else
  505. walker([villia]);
  506. end;
  507.  
  508. procedure TopStoStart();
  509. var
  510. path1,path2,path3:TPointArray;
  511.  
  512. begin
  513. path1:=[Point(1621,3798)];
  514. path2:=[Point(1610,3795)];
  515. path3:=[Point(1626,3803)];
  516. walker(path1);
  517. climbstairs;
  518. walker(path2);
  519. climbstairs;
  520. walker(path3);
  521. if(mode) then
  522. begin
  523. walker([horphis]);
  524. end else
  525. walker([villia]);
  526. end;
  527.  
  528. procedure MiddleStoStart();
  529. var
  530. path1,path2:TPointArray;
  531.  
  532. begin
  533.  
  534. path1:=[Point(1610,3795)];
  535. path2:=[Point(1626,3803)];
  536.  
  537. walker(path1);
  538. climbstairs;
  539. walker(path2);
  540. if(mode) then
  541. begin
  542. walker([horphis]);
  543. end else
  544. walker([villia]);
  545. end;
  546.  
  547. procedure BottomStoStart();
  548. var
  549. path1,path2:TPointArray;
  550.  
  551. begin
  552. path1:=[Point(1626,3803)];
  553. walker(path1);
  554. if(mode) then
  555. begin
  556. walker([horphis]);
  557. end else
  558. walker([villia]);
  559. end;
  560.  
  561. procedure TopCenterToStart();
  562. var
  563. path1:TPointArray;
  564.  
  565. begin
  566.  
  567. path1:=[Point(1646,3825)];
  568. walker([biblia]);
  569. if(mode)then
  570. begin
  571. walker(path1);
  572. TopNEtoStart;
  573. end;
  574. end;
  575.  
  576. procedure MiddleCenterToStart();
  577.  
  578. var
  579. path1:TPointArray;
  580. begin
  581. path1:=[Point(1639,3810)];
  582. walker(path1);
  583. climbstairs;
  584. TopCenterToStart;
  585. end;
  586.  
  587. procedure moveToStart();
  588.  
  589. begin
  590. case (bl) of
  591. 1: TopStoStart();
  592. 2: TopNEtoStart();
  593. 3: TopNWtoStart();
  594. 4: TopCenterToStart();
  595. 5: MiddleStoStart();
  596. 6: MiddleNEtoStart();
  597. 7: MiddleNWtoStart();
  598. 8: MiddleCenterToStart();
  599. 9: BottomStoStart();
  600. 10:BottomNEtoStart();
  601. 11:BottomNWtoStart();
  602. end;
  603. end;
  604.  
  605. procedure moveToBook();
  606. var
  607. xMax,yMax,xMin,yMin,safeI:integer;
  608. done:boolean;
  609. begin
  610. case (bl) of
  611. 1: toTopS();
  612. 2: toTopNE();
  613. 3: toTopNW();
  614. 4: toTopCenter();
  615. 5: toMiddleS();
  616. 6: toMiddleNE();
  617. 7: toMiddleNW();
  618. 8: toMiddleCenter();
  619. 9: toBottomS();
  620. 10:toBottomNE();
  621. 11:toBottomNW();
  622. end;
  623. sleep(1000+random(200));
  624. if(mode=true) then
  625. currentSearch:='Dark manuscript';
  626. if((bl=1) or (bl = 5) or (bl = 9)) then
  627. begin
  628. xMax:=1627;
  629. yMax:=3803;
  630. xMin:=1606;
  631. yMin:=3783;
  632. end;
  633.  
  634. if((bl=4) or (bl = 8)) then
  635. begin
  636. xMax:=1642;
  637. yMax:=3816;
  638. xMin:=1624;
  639. yMin:=3799;
  640. end;
  641.  
  642. if((bl=3) or (bl = 7) or (bl = 11)) then
  643. begin
  644. xMax:=1628;
  645. yMax:=3832;
  646. xMin:=1606;
  647. yMin:=3813;
  648. end;
  649.  
  650. if((bl=2) or (bl = 6) or (bl = 10)) then
  651. begin
  652. xMax:=1659;
  653. yMax:=3832;
  654. xMin:=1638;
  655. yMin:=3813;
  656. end;
  657. repeat
  658. done := searchShelves(currentSearch,xMax,yMax,xMin,yMin);
  659. WriteLn('Done????',done);
  660. if(done=false)then
  661. inc(safeI);
  662. WriteLn('Done? ',done);
  663. until(done or (safeI>2));
  664. movetostart;
  665. end;
  666.  
  667. procedure getBookLocation();
  668. begin
  669. if((Reflect.Chat.NpcChooseOption('top') = true) and (Reflect.Chat.NpcChooseOption('south') = true)) then
  670. bl:=1;
  671. if((Reflect.Chat.NpcChooseOption('top') = true) and (Reflect.Chat.NpcChooseOption('north-eastern') = true)) then
  672. bl:=2;
  673. if((Reflect.Chat.NpcChooseOption('top') = true) and (Reflect.Chat.NpcChooseOption('north-western') = true)) then
  674. bl:=3;
  675. if((Reflect.Chat.NpcChooseOption('top') = true) and (Reflect.Chat.NpcChooseOption('central') = true)) then
  676. bl:=4;
  677. if((Reflect.Chat.NpcChooseOption('middle') = true) and (Reflect.Chat.NpcChooseOption('south') = true)) then
  678. bl:=5;
  679. if((Reflect.Chat.NpcChooseOption('middle') = true) and (Reflect.Chat.NpcChooseOption('north-eastern') = true)) then
  680. bl:=6;
  681. if((Reflect.Chat.NpcChooseOption('middle') = true) and (Reflect.Chat.NpcChooseOption('north-western') = true)) then
  682. bl:=7;
  683. if((Reflect.Chat.NpcChooseOption('middle') = true) and (Reflect.Chat.NpcChooseOption('central') = true)) then
  684. bl:=8;
  685. if((Reflect.Chat.NpcChooseOption('bottom') = true) and (Reflect.Chat.NpcChooseOption('south') = true)) then
  686. bl:=9;
  687. if((Reflect.Chat.NpcChooseOption('bottom') = true) and (Reflect.Chat.NpcChooseOption('north-eastern') = true)) then
  688. bl:=10;
  689. if((Reflect.Chat.NpcChooseOption('bottom') = true) and (Reflect.Chat.NpcChooseOption('north-western') = true)) then
  690. bl:=11;
  691. WriteLn('Book Location: ', bl);
  692. moveToBook;
  693. end;
  694.  
  695. procedure talkToBiblia();
  696. var
  697. biblia: TReflectNpc;
  698. msp:integer;
  699.  
  700. begin
  701. repeat
  702. if(xpbook.Find('Book of arcane knowledge')) then
  703. begin
  704. Reflect.Mouse.Move(xpbook.GetMSPoint,3,8);
  705. if(Reflect.Text.IsUpText('knowledge'))then
  706. begin
  707. Reflect.Mouse.Click(Mouse_left);
  708. sleep(1500+random(150));
  709. Reflect.Chat.NpcChooseOption('Magic');
  710. end;
  711. end;
  712. repeat
  713. sleep(500+random(50));
  714. until(biblia.Find('Biblia'));
  715. if(biblia.Find('Biblia')) then
  716. begin
  717. repeat
  718. reflectPlayer.BlindWalkMM(biblia.GetTile,2);
  719. until(Reflect.Tiles.DistanceFromTile(biblia.GetTile)<3);
  720. msp:=Reflect.MouseSpeed;
  721. Reflect.MouseSpeed:=30;
  722. repeat
  723. sleep(150+random(100));
  724. Reflect.Mouse.Move(biblia.getMSPoint,3,8);
  725. until(Reflect.Text.IsUpText('Biblia'));
  726. Reflect.Mouse.Click(MOUSE_RIGHT);
  727. Reflect.MouseSpeed:=msp;
  728. chooseOption('Talk');
  729. if(not didRedClick)then
  730. talkToBiblia;
  731. repeat
  732. sleep(100+random(20));
  733. until(Reflect.Chat.NpcChooseOption('I have much tidying'))
  734. if(mode=false) then
  735. begin
  736. if(Reflect.Chat.NpcChooseOption('I have much tidying') = true ) then
  737. begin
  738. Reflect.Chat.NpcClickToContinue;
  739. repeat
  740. sleep(200+random(30));
  741. until(Reflect.Chat.NpcChooseOption('looking for a book') = true);
  742. Reflect.Chat.NpcChooseOption('looking for a book');
  743. sleep(1200+random(100));
  744. Reflect.Chat.NpcClickToContinue;
  745. sleep(2000+random(100));
  746. gotLoc:=true;
  747. getBookLocation;
  748. end else
  749. talkToBiblia;
  750. end else
  751. begin
  752. sleep(500+random(100));
  753. Reflect.Chat.NpcClickToContinue;
  754. sleep(1200+random(100));
  755. if(Reflect.Chat.NpcChooseOption('seen') = true ) then
  756. begin
  757. if(Reflect.Chat.NpcChooseOption('book'))then
  758. TopNEtoStart;
  759. Reflect.Chat.NpcChooseOption('Have');
  760. sleep(500+random(200));
  761. Reflect.Chat.NpcClickToContinue;
  762. sleep(800+random(100));
  763. gotLoc:=true;
  764. getBookLocation;
  765. end;
  766. end;
  767. end;
  768. until(gotLoc);
  769. end;
  770.  
  771. procedure toBiblia();
  772. var
  773. biblia: TReflectNpc;
  774. stairs,stairs1:TReflectObject;
  775. path1,path2,path3:TPointArray;
  776.  
  777. begin
  778. path1:=[Point(1618,3826)];
  779. path2:=[Point(1615,3818)];
  780. path3:=[Point(1623,3824),Point(1633,3825)];
  781.  
  782. walker(path1);
  783. stairs.Find(objGame,'Stairs',3);
  784. climbstairs;
  785. walker(path2);
  786. stairs1.Find(objGame,'Stairs',4);
  787. climbstairs;
  788. walker(path3);
  789. talkToBiblia;
  790. end;
  791.  
  792. procedure talkToHorphis();
  793. var
  794. horphis: TReflectNpc;
  795. begin
  796. if(horphis.Find('Horphis')) then
  797. begin
  798. repeat
  799. Reflect.Mouse.Move(horphis.GetMSPoint,3,5);
  800. sleep(100+random(100));
  801. until(Reflect.Text.IsUpText('Horphis'));
  802. Reflect.Mouse.Click(Mouse_Left);
  803. if(Reflect.Chat.NpcChooseOption('assist'))then
  804. begin
  805. Reflect.Chat.NpcClickToContinue;
  806. sleep(2000+random(200));
  807. Reflect.Chat.NpcChooseOption('you');
  808. sleep(1000+random(200));
  809. Reflect.Chat.NpcClickToContinue;
  810. sleep(1000+random(200));
  811. Reflect.Chat.NpcClickToContinue;
  812. sleep(1000+random(200));
  813. Reflect.Chat.NpcClickToContinue;
  814. sleep(1000+random(200));
  815. Reflect.Chat.NpcClickToContinue;
  816. sleep(1000+random(200));
  817. Reflect.Chat.NpcClickToContinue;
  818. firstTimeHorphis:=true;
  819. end;
  820. sleep(1000+random(50));
  821. gotBook:=false;
  822. end;
  823. end;
  824.  
  825. procedure horphisToBiblia();
  826. var
  827. path1,path2,path3:TPointArray;
  828. biblia: TReflectNpc;
  829.  
  830. begin
  831. if(firstTimeHorphis=false)then
  832. talkToHorphis;
  833. path1:=[Point(1644,3818)];
  834. path2:=[Point(1643,3829)];
  835. path3:=[Point(1633,3824)];
  836. walker(path1);
  837. climbstairs;
  838. walker(path2);
  839. climbstairs;
  840. walker(path3);
  841. talkToBiblia;
  842. end;
  843.  
  844. procedure talkToGrackle();
  845.  
  846. var
  847. grackle,biblia: TReflectNpc;
  848. stairs,stairs1:TReflectObject;
  849. path:TPointArray;
  850.  
  851. begin
  852. path:=[villia];
  853. if(grackle.Find('Professor Gracklebone')) then
  854. begin
  855. repeat
  856. Reflect.Mouse.Move(grackle.getMSPoint,3,8);
  857. until(Reflect.Text.IsUpText('Talk'));
  858. Reflect.Mouse.Click(MOUSE_RIGHT);
  859. chooseOption('Help');
  860. sleep(1000+random(100));
  861. if((Reflect.Chat.NpcChooseOption('Thank') = true) or (Reflect.Chat.NpcChooseOption('I believe you are curr') = true) ) then
  862. begin
  863. walker(path);
  864. exit;
  865. end;
  866. getBookName;
  867. sleep(500+random(100));
  868. toBiblia;
  869. end;
  870. end;
  871.  
  872. procedure talkToVillia();
  873. var
  874. villia,biblia: TReflectNpc;
  875. stairs,stairs1:TReflectObject;
  876. path:TPointArray;
  877. begin
  878. path:=[grackle];
  879. if(villia.Find('Villia')) then
  880. begin
  881. repeat
  882. Reflect.Mouse.Move(villia.getMSPoint,3,8);
  883. until(Reflect.Text.IsUpText('Talk'));
  884. Reflect.Mouse.Click(MOUSE_RIGHT);
  885. chooseOption('Help');
  886. sleep(1000+random(100));
  887. if((Reflect.Chat.NpcChooseOption('Thank') = true) or (Reflect.Chat.NpcChooseOption('I believe you are curr') = true) ) then
  888. begin
  889. walker(path);
  890. exit;
  891. end;
  892. getBookName;
  893. sleep(500+random(100));
  894. toBiblia;
  895. end;
  896. end;
  897.  
  898. function getState(): Integer;
  899. var
  900. horphis: TReflectNpc;
  901. begin
  902. if((Reflect.Tiles.DistanceFromTile(villia)< 6) and not onTask and not mode and (Reflect.Tiles.GetTileHeight(reflectPlayer.GetTile)<1600)) then
  903. exit(1);
  904. if((Reflect.Tiles.DistanceFromTile(grackle)< 6) and not onTask and not mode and (Reflect.Tiles.GetTileHeight(reflectPlayer.GetTile)<1600)) then
  905. exit(2);
  906. {if((Reflect.Tiles.GetPlane=2) and not(Reflect.Chat.NpcChatOpen)) then
  907. exit(3);}
  908. if(mode and (horphis.Find('Horphis')) and not(gotBook))then
  909. exit(4);
  910. if(mode and (horphis.Find('Horphis')) and (gotBook))then
  911. exit(5);
  912. end;
  913.  
  914. procedure executeState(State: Integer);
  915. begin
  916. case (State) of
  917. 1: talkToVillia();
  918. 2: talkToGrackle();
  919. 3: talkToBiblia();
  920. 4: horphisToBiblia();
  921. 5: talkToHorphis();
  922. end;
  923. sleep(Random(100,200));
  924. end;
  925.  
  926. begin
  927. initAL('C:\Javas\Java4\jre1.8.0_91\bin\javaw.exe');
  928. Reflect.Setup;
  929. login;
  930. declarePoints;
  931. mode:=false;;
  932. //startingfavour is your current favour x10
  933. startingfavour:=510;
  934. repeat
  935. if (startingfavour>200) then
  936. mode:=true;
  937. WriteLn(reflectPlayer.GetTile);
  938. WriteLn(Reflect.Tiles.GetPlane);
  939. currentState := getState();
  940. WriteLn('Current mode :',mode,' Favour: ', startingfavour, ' State :', currentState);
  941.  
  942. executeState(currentState);
  943. sleep(1000);
  944. until(startingfavour=600);
  945. logoutPlayer;
  946. terminatescript;
  947. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement