Advertisement
Guest User

Untitled

a guest
Nov 9th, 2016
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 217.15 KB | None | 0 0
  1. program newerLapeCutter;
  2. {$DEFINE SMART}
  3. {$DEFINE CHOPPER}
  4. {$i Reflection/Reflection.Simba}
  5. {$i [Reflection] ineedbot's functions.simba}
  6.  
  7. const Version = 5.03;
  8.  
  9. PicturePage = 'http://pastebin.com/raw/zF7qBL4J';
  10. ScriptPage = 'https://raw.githubusercontent.com/ineedbots/Scripts/master/%5BReflection%5D%20ineedbot''s%20AIO%20Woodcutter.simba';
  11.  
  12. //Feel free to use code, GIVE CREDIT WHERE DUE! -ineedbot
  13.  
  14. type TreeObject = record
  15. Tile : TPoint;
  16. AliveIDs, DeadIDs : TIntegerArray;
  17. Name : String;
  18. Offset : array[0..2] of integer;
  19. TileOffset : array[0..1] of integer;
  20. Timer : TReflectTimer;
  21. Index, Plane : Integer;
  22. Options : TStringArray;
  23. end;
  24. TreeObjectArray = array of TreeObject;
  25.  
  26. function TreeObject.isAlive:boolean;
  27. var TempObject : TReflectObject;
  28. begin
  29. TempObject.GetAt(ObjGame, self.Tile);
  30. if not Reflect.Smart.IsNull(TempObject.Reference) and inIntArray(self.AliveIDs, TempObject.GetId) then
  31. exit(true);
  32. end;
  33.  
  34. function TreeObject.isDead:boolean;
  35. var TempObject : TReflectObject;
  36. begin
  37. TempObject.GetAt(ObjGame, self.Tile);
  38. if not Reflect.Smart.IsNull(TempObject.Reference) and inIntArray(self.DeadIDs, TempObject.GetId) then
  39. exit(true);
  40. end;
  41.  
  42. function TreeObjectArray.getAliveTrees:TreeObjectArray;
  43. var i : integer;
  44. begin
  45. for i:=0 to high(self) do
  46. if self[i].isAlive then begin
  47. setLength(result, length(result)+1);
  48. result[high(result)] := self[i];
  49. end;
  50. end;
  51.  
  52. function TreeObjectArray.getDeadTrees:TreeObjectArray;
  53. var i : integer;
  54. begin
  55. for i:=0 to high(self) do
  56. if self[i].isDead then begin
  57. setLength(result, length(result)+1);
  58. result[high(result)] := self[i];
  59. end;
  60. end;
  61.  
  62. function TreeObject.isValid:boolean;
  63. begin
  64. if Self.Tile.x <> 0 then
  65. exit(true);
  66. end;
  67.  
  68. function TreeObjectArray.getClosestTree:TreeObject;
  69. var i : integer;
  70. begin
  71. for i:=0 to high(self) do
  72. if not result.isValid then
  73. result := self[i]
  74. else
  75. if (Reflect.Tiles.DistanceFromTile(self[i].tile) < Reflect.Tiles.DistanceFromTile(result.tile)) then
  76. result := self[i];
  77. end;
  78.  
  79. function TreeObjectArray.getClosestTreeTime:TreeObject;
  80. var i:integer;
  81. begin
  82. for i:=0 to high(self) do
  83. if (self[i].Timer.StartTime <> -1) then
  84. if not result.isValid then
  85. result := self[i]
  86. else if (self[i].Timer.Elapsedtime > result.Timer.Elapsedtime) then
  87. result := self[i];
  88. end;
  89.  
  90. function TreeObjectArray.getTreeIndex(ind:integer):TreeObject;
  91. var i : integer;
  92. begin
  93. for i:=0 to high(self) do
  94. if self[i].Index = ind then
  95. exit(self[i]);
  96. end;
  97.  
  98. function TreeObjectArray.getNextTree(PTree:TreeObject):TreeObject;
  99. var CurrentTree : TreeObject;
  100. begin
  101. CurrentTree := Self.getClosestTree;
  102. result := CurrentTree;
  103.  
  104. if (high(self) < 1) or not PTree.isValid then
  105. exit;
  106.  
  107. if(CurrentTree.Index < PTree.Index) or (CurrentTree.Index = high(self)) then begin
  108. result := Self.GetTreeIndex(CurrentTree.Index-1);
  109. end else begin
  110. result := Self.GetTreeIndex(CurrentTree.Index+1);
  111. end;
  112. end;
  113.  
  114. type BankLocation = record
  115. Tile : TPoint;
  116. Name : String;
  117. Plane : integer;
  118. Offset : array[0..2] of integer;
  119. TileOffset : array[0..1] of integer;
  120. Options : TStringArray;
  121. end;
  122.  
  123. type BankNPC = record
  124. Locations : TPointArray;
  125. Options, Names : TStringArray;
  126. IDs : TIntegerArray;
  127. Plane : Integer;
  128. Offset : array[0..2] of integer;
  129. end;
  130.  
  131. type FireLane = record
  132. Plane, Length : Integer;
  133. Tile : TPoint;
  134. end;
  135.  
  136. type workedLog = record
  137. chopped, ID, price : integer;
  138. end;
  139.  
  140. type Location = record
  141. Name : string;
  142. RunDirections : TStringArray;
  143. ID, distanceCheck : integer;
  144. TreeLocations : TPointArray;
  145. canFire, canFletch, canBank, isDynamic, isSell, isFar, isPower : boolean;
  146. FletchPoint : TPoint;
  147. FireLanes : array of FireLane;
  148. PathToBank, PathToTree : TPointArray;
  149. customIDs : array of TIntegerArray;
  150. customTPAs : array of TPointArray;
  151. BankLocations : array of BankLocation;
  152. TreeObjects : TreeObjectArray;
  153. DoorObjects : array of TReflectDoor;
  154. BankNPCs : array of BankNPC;
  155. Logs : array of workedLog;
  156. end;
  157.  
  158. var
  159. graphicOpti: TMufasaBitmap;
  160.  
  161. statsServer: TStats;
  162.  
  163. daLocation: Location;
  164.  
  165. PreviousTree: TreeObject;
  166.  
  167. statsTimer,LastXPCheck,gItemTim: TReflectTimer;
  168.  
  169. playNum,job,RunAmount,AmountAmount,cpuLoadOften,cpuLoadWait,
  170. updateScreenOften,ItemCheckDistance,statsProfit,
  171. statsTime,statsFireXP,statsFletchXP,StartFletchXP,
  172. statsWoodXP,nullINT,gItemOften,Nests,StartWoodLevel,
  173. startWoodXp,LastXPXP,StartFireXP: integer;
  174.  
  175. WorldList,TradingSticksIDs,GreeGreeIDs,ChopAnimationIDs,KnifeIDs,TinderIDs,
  176. FireIDs,FireAnimIDs,AxeIDs,CoinsIDs,ShaftIDs,FletchAnimationIDs,
  177. NestIDs: TIntegerArray;
  178.  
  179. started,loading,saving,MouseKeys,DisableBank,UseSpec,useBreaks,
  180. dropOnly,useStats: boolean;
  181.  
  182. sdrop,sbrin,sbreak,sbin,sbrfor,sbfor,swait,schat,sname,spass,spin,samount,
  183. sloc,stype,santi,srun,sworld,sspec,sbank,smouse,ssound,schatt,swaitt,swaito,
  184. supdatet,sscreent,slchatt,slevelt,scloset,sdismisst,sitemd,scriptstatus,sitemt: string;
  185.  
  186. TFormMain,TFormBreak,TFormExtra: TForm;
  187.  
  188. TLabelPin,TLabelWorld,TLabelRun,TLabelAnti,TLabelAmount,TLabelPlayNum,
  189. TLabelbIn,TLabelbrIn,TLabelbFor,TLabelItemDis,TLabelLookForChatTime,
  190. TLabelCloseTime,TLabelLevelUpTime,TLabelUpdateTime,TLabelDismissTime,
  191. TLabelWaitTime,TLabelWaitOften,TLabelbrFor,TLabelScreenTime,TLabelSound,
  192. TLabelChatTime,TLabelItemTime: TLabel;
  193.  
  194. TEditUser,TEditPass,TEditPin,TEditWorld,TEditRun,TEditAnti,TEditAmount,
  195. TEditPlayNum,TEditbIn,TEditbrIn,TEditItemDis,TEditLookForChatTime,
  196. TEditCloseTime,TEditLevelUpTime,TEditUpdateTime,TEditDismissTime,
  197. TEditWaitTime,TEditWaitOften,TEditbFor,TEditbrFor,TEditScreenTime,
  198. TEditSound,TEditChatTime,TEditItemTime: TEdit;
  199.  
  200. TButtonPlay,TButtonLoad,TButtonSave,TButtonBreak,TButtonExtra: TButton;
  201.  
  202. TCheckBoxBreak,TCheckBoxTalk,TCheckBoxWait,TCheckBoxMouse,TCheckBoxSpec,
  203. TCheckBoxBank,TCheckBoxDropOnly: TCheckBox;
  204.  
  205. TComboBoxLoc,TComboBoxType: TComboBox;
  206.  
  207. TMainImage: TImage;
  208.  
  209. TMainBMP: TBitmap;
  210.  
  211. procedure doUpdate; //thanks shuttleu
  212. var NetworkVersion : extended;
  213. FileNew, script : string;
  214. ThisFile : integer;
  215. begin
  216. if DirectoryExists(ScriptPath + '.git\') then
  217. exit;
  218. script := Reflect.Misc.GetPage(scriptPage);
  219. try
  220. NetworkVersion := strToFloat(between('Version = ', ';', script));
  221. except
  222. begin
  223. daLogger.Error('Failed get update version.', []);
  224. exit;
  225. end;
  226. end;
  227. daLogger.Status('ineedbot''s Woodcutter: Local Version: '+FloatToStr(Version)+' Network Version: '+FloatToStr(NetworkVersion), []);
  228. if(Version < NetworkVersion) then begin
  229. FileNew := ScriptPath + '[Reflection] ineedbot''s AIO Woodcutter.simba';
  230. ThisFile := Rewritefile(FileNew, true);
  231. try
  232. WriteFileString(ThisFile, script);
  233. except
  234. begin
  235. daLogger.Error('Failed writing to: '+FileNew, []);
  236. CloseFile(ThisFile);
  237. exit;
  238. end;
  239. end;
  240. CloseFile(ThisFile);
  241. daLogger.Status('Successfully downloaded new script to '+FileNew+'. Please reopen this script.', []);
  242. TerminateScript;
  243. end else begin
  244. if(Version = NetworkVersion)then begin
  245. end else begin
  246. end;
  247. end;
  248. end;
  249.  
  250. procedure YourClickProcedure(Sender: TObject);
  251. {$IFNDEF CODEINSIGHT}
  252. native;
  253. {$ENDIF}
  254. begin
  255. case sender of
  256. TButtonBreak:begin
  257. TFormBreak.ShowModal();
  258. end;
  259. TButtonExtra:begin
  260. TFormExtra.ShowModal();
  261. end;
  262. TButtonPlay:begin
  263. started := true;
  264. TFormMain.Close;
  265. end;
  266. TButtonLoad:begin
  267. loading := true;
  268. TFormMain.Close;
  269. end;
  270. TButtonSave:begin
  271. schat := tostr(TCheckBoxTalk.getstate);
  272. swait := tostr(TCheckBoxWait.getstate);
  273. sname := TEditUser.Gettext;
  274. spass := TEditPass.gettext;
  275. spin := TEditPin.gettext;
  276. samount := TEditAmount.gettext;
  277. stype := tostr(TComboBoxType.getitemindex);
  278. sloc := tostr(TComboBoxLoc.getitemindex);
  279. santi := TEditAnti.gettext;
  280. srun := TEditRun.gettext;
  281. sworld := TEditWorld.gettext;
  282. sspec := tostr(TCheckBoxSpec.getstate);
  283. sbank := tostr(TCheckBoxBank.getstate);
  284. smouse := tostr(TCheckBoxMouse.getstate);
  285. sbreak := tostr(TCheckBoxBreak.getstate);
  286. sbfor := TEditbFor.gettext;
  287. sbrfor := TEditbrFor.gettext;
  288. sbin := TEditbin.gettext;
  289. sbrin := TEditbrin.gettext;
  290. ssound := TEditSound.getText;
  291. sdismisst := TEditDismissTime.getText;
  292. slchatt := TEditLookForChatTime.getText;
  293. schatt := TEditChatTime.getText;
  294. supdatet := TEditUpdateTime.getText;
  295. sscreent := TEditScreenTime.getText;
  296. slevelt := TEditLevelUpTime.getTExt;
  297. swaitt := TEditWaitTime.getText;
  298. swaito := TEditWaitOften.getText;
  299. scloset := TEditCloseTime.getTExt;
  300. sitemd := TEditItemDis.getText;
  301. sdrop := tostr(TCheckBoxDropOnly.getstate);
  302. sitemt := TEditItemTime.getText;
  303. saving := true;
  304. TFormMain.Close;
  305. end;
  306. end;
  307. end;
  308.  
  309. procedure _OnChange2;
  310. var i : integer;
  311. begin
  312. TComboBoxType.Clear;
  313. TComboBoxType.setText('Type of wood:');
  314. i := -1;
  315. case TComboBoxLoc.getItemIndex of
  316. (i:=i+1):begin //lumbridge
  317. TComboBoxType.AddItem('Oaks (sell)', nil);
  318. TComboBoxType.AddItem('Willows (sell)', nil);
  319. TComboBoxType.AddItem('West Willows', nil);
  320. TComboBoxType.AddItem('West Willows(2)', nil);
  321. TComboBoxType.AddItem('North Willows', nil);
  322. TComboBoxType.AddItem('Yews', nil);
  323. TComboBoxType.AddItem('Yews (sell)', nil);
  324. TComboBoxType.AddItem('Progressive Chopping', nil);
  325. end;
  326. (i:=i+1):begin //draynor
  327. TComboBoxType.AddItem('Oaks', nil);
  328. TComboBoxType.AddItem('Willows', nil);
  329. TComboBoxType.AddItem('Yews', nil);
  330. end;
  331. (i:=i+1):begin //Rimmington
  332. TComboBoxType.AddItem('Willows (p.s.)', nil);
  333. TComboBoxType.AddItem('Yews (p.s.)', nil);
  334. TComboBoxType.AddItem('Willows (sell)', nil);
  335. TComboBoxType.AddItem('Yews', nil);
  336. TComboBoxType.AddItem('Yews (sell)', nil);
  337. end;
  338. (i:=i+1):begin //Falador
  339. TComboBoxType.AddItem('Oaks', nil);
  340. TComboBoxType.AddItem('Yews', nil);
  341. end;
  342. (i:=i+1):begin //edgeville
  343. TComboBoxType.AddItem('Yews', nil);
  344. end;
  345. (i:=i+1):begin //varrock
  346. TComboBoxType.AddItem('Oaks (west)', nil);
  347. TComboBoxType.AddItem('Yews (palace)', nil);
  348. TComboBoxType.AddItem('Oaks (east)', nil);
  349. TComboBoxType.AddItem('Yews (pray)', nil);
  350. TComboBoxType.AddItem('Yews (east)', nil);
  351. end;
  352. (i:=i+1):begin //seers
  353. TComboBoxType.AddItem('Oaks', nil);
  354. TComboBoxType.AddItem('Willows', nil);
  355. TComboBoxType.AddItem('Maples', nil);
  356. TComboBoxType.AddItem('Yews', nil);
  357. TComboBoxType.AddItem('Magics', nil);
  358. TComboBoxType.AddItem('Magics (2)', nil);
  359. end;
  360. (i:=i+1):begin //catherby
  361. TComboBoxType.AddItem('Willows', nil);
  362. TComboBoxType.AddItem('Yews', nil);
  363. end;
  364. (i:=i+1):begin //tree gnome village
  365. TComboBoxType.AddItem('Yews', nil);
  366. TComboBoxType.AddItem('Yews (2)', nil);
  367. end;
  368. (i:=i+1):begin //barb
  369. TComboBoxType.AddItem('Willows', nil);
  370. end;
  371. (i:=i+1):begin //deul
  372. TComboBoxType.AddItem('Magics', nil);
  373. end;
  374. (i:=i+1):begin //ape
  375. TComboBoxType.AddItem('Teaks', nil);
  376. end;
  377. (i:=i+1):begin //castle
  378. TComboBoxType.AddItem('Teaks', nil);
  379. end;
  380. (i:=i+1):begin //two bai
  381. TComboBoxType.AddItem('Teaks', nil);
  382. TComboBoxType.AddItem('Teaks(2)', nil);
  383. TComboBoxType.AddItem('Mahogany', nil);
  384. end;
  385. (i:=i+1):begin //powerchop
  386. TComboBoxType.AddItem('Normal Trees', nil);
  387. TComboBoxType.AddItem('Oaks', nil);
  388. TComboBoxType.AddItem('Willows', nil);
  389. end;
  390. (i:=i+1):begin //wc guild
  391. TComboBoxType.AddItem('Yews', nil);
  392. TComboBoxType.AddItem('Magics', nil);
  393. TComboBoxType.AddItem('Redwood', nil);
  394. TComboBoxType.AddItem('Redwood(2)', nil);
  395. TComboBoxType.AddItem('Redwood(3)', nil);
  396. TComboBoxType.AddItem('Redwood(4)', nil);
  397. end;
  398. end;
  399. end;
  400.  
  401. procedure breakCheck;
  402. begin
  403. TButtonBreak.setEnabled(toStr(TCheckBoxBreak.getState) = 'cbChecked');
  404. end;
  405.  
  406. procedure OnChange(Sender: TObject);
  407. {$IFNDEF CODEINSIGHT}
  408. native;
  409. {$ENDIF}
  410. begin
  411. _OnChange2;
  412. end;
  413.  
  414. procedure brakeHandle(Sender: TObject);
  415. {$IFNDEF CODEINSIGHT}
  416. native;
  417. {$ENDIF}
  418. begin
  419. breakCheck;
  420. end;
  421.  
  422. procedure OnlyPostiveNumbers(Sender: TObject; var Key:Char);
  423. {$IFNDEF CODEINSIGHT}
  424. native;
  425. {$ENDIF}
  426. begin
  427. case toStr(key) of
  428. #8, '0'..'9':begin
  429. end;
  430. else begin
  431. Key := #0;
  432. end;
  433. end;
  434. end;
  435.  
  436. procedure OnlyNumbers(Sender: TObject; var Key: Char);
  437. {$IFNDEF CODEINSIGHT}
  438. native;
  439. {$ENDIF}
  440. var _sender : TEdit;
  441. begin
  442. _sender := sender;
  443. case toStr(key) of
  444. #8, '0'..'9', '-':begin
  445. if(toStr(key) = '-')then begin
  446. if(_sender.getSelStart <> 0)then begin
  447. Key := #0;
  448. end;
  449. end;
  450. end;
  451. else begin
  452. Key := #0;
  453. end;
  454. end;
  455. end;
  456.  
  457. procedure NoKeys(Sender: TObject; var Key: Char);
  458. {$IFNDEF CODEINSIGHT}
  459. native;
  460. {$ENDIF}
  461. begin
  462. Key := #0;
  463. end;
  464.  
  465. procedure OnlyPostiveNumbers2(Sender: TObject; var Key:Char);
  466. {$IFNDEF CODEINSIGHT}
  467. native;
  468. {$ENDIF}
  469. begin
  470. case toStr(key) of
  471. #8, ',', '0'..'9':begin
  472. end;
  473. else begin
  474. Key := #0;
  475. end;
  476. end;
  477. end;
  478.  
  479. procedure InitForm;
  480. var
  481. tempFont : TFont;
  482. begin
  483. tempFont.Init;
  484. tempFont.setColor(0);
  485. //TFormMain\\
  486. TFormMain.Init(nil);
  487. with TFormMain do
  488. begin
  489. SetCaption('ineedbot''s AIO Woodcutter');
  490. setBorderStyle(bsSingle);
  491. SetBounds(0,0,374,208);
  492. SetPosition(poScreenCenter);
  493. end;
  494. TMainImage.init(TFormMain);
  495. with TMainImage do
  496. begin
  497. setParent(TFormMain);
  498. SetBounds(0,0,374,208);
  499. setPicture(TMainBMP);
  500. end;
  501. //TLabelPin\\
  502. TLabelPin.Init(TFormMain);
  503. with TLabelPin do
  504. begin
  505. SetParent(TFormMain);
  506. SetCaption('Pin:');
  507. SetBounds(2,57,53,16);
  508. setFont(tempFont);
  509. end;
  510. //TLabelWorld\\
  511. TLabelWorld.Init(TFormMain);
  512. with TLabelWorld do
  513. begin
  514. SetParent(TFormMain);
  515. SetCaption('World:');
  516. SetBounds(2,82,68,16);
  517. setFont(tempFont);
  518. end;
  519. //TLabelRun\\
  520. TLabelRun.Init(TFormMain);
  521. with TLabelRun do
  522. begin
  523. SetParent(TFormMain);
  524. SetCaption('When to run:');
  525. SetBounds(2,107,57,16);
  526. setFont(tempFont);
  527. end;
  528. //TLabelAnti\\
  529. TLabelAnti.Init(TFormMain);
  530. with TLabelAnti do
  531. begin
  532. SetParent(TFormMain);
  533. SetCaption('Antiban often:');
  534. SetBounds(2,132,58,16);
  535. setFont(tempFont);
  536. end;
  537. //TLabelAmount\\
  538. TLabelAmount.Init(TFormMain);
  539. with TLabelAmount do
  540. begin
  541. SetParent(TFormMain);
  542. SetCaption('Amount to cut:');
  543. SetBounds(2,157,80,16);
  544. setFont(tempFont);
  545. end;
  546. //TLabelPlayNum\\
  547. TLabelPlayNum.Init(TFormMain);
  548. with TLabelPlayNum do
  549. begin
  550. SetParent(TFormMain);
  551. SetCaption('Player number:');
  552. SetBounds(116,182,85,16);
  553. setFont(tempFont);
  554. end;
  555. //TEditUser\\
  556. TEditUser.Init(TFormMain);
  557. with TEditUser do
  558. begin
  559. SetParent(TFormMain);
  560. SetText('Username or email');
  561. SetBounds(2,27,219,23);
  562. setFont(tempFont);
  563. end;
  564. //TEditPass\\
  565. TEditPass.Init(TFormMain);
  566. with TEditPass do
  567. begin
  568. SetParent(TFormMain);
  569. SetText('Password');
  570. SetBounds(225,27,147,23);
  571. setFont(tempFont);
  572. setPasswordChar('*');
  573. setMaxLength(20);
  574. end;
  575. //TEditPin\\
  576. TEditPin.Init(TFormMain);
  577. with TEditPin do
  578. begin
  579. SetParent(TFormMain);
  580. SetText('');
  581. SetBounds(26,52,36,23);
  582. setFont(tempFont);
  583. setPasswordChar('*');
  584. setMaxLength(4);
  585. setONKEYPRESS(OnlyPostiveNumbers);
  586. end;
  587. //TEditWorld\\
  588. TEditWorld.Init(TFormMain);
  589. with TEditWorld do
  590. begin
  591. SetParent(TFormMain);
  592. SetText('');
  593. SetBounds(40,77,80,23);
  594. setFont(tempFont);
  595. setONKEYPRESS(OnlyPostiveNumbers2);
  596. end;
  597. //TEditRun\\
  598. TEditRun.Init(TFormMain);
  599. with TEditRun do
  600. begin
  601. SetParent(TFormMain);
  602. SetText('75');
  603. SetBounds(75,102,30,23);
  604. setFont(tempFont);
  605. setMaxLength(3);
  606. setONKEYPRESS(OnlyPostiveNumbers);
  607. end;
  608. //TEditAnti\\
  609. TEditAnti.Init(TFormMain);
  610. with TEditAnti do
  611. begin
  612. SetParent(TFormMain);
  613. SetText('1000');
  614. SetBounds(82,127,48,23);
  615. setFont(tempFont);
  616. setMaxLength(6);
  617. setONKEYPRESS(OnlyPostiveNumbers);
  618. end;
  619. //TEditAmount\\
  620. TEditAmount.Init(TFormMain);
  621. with TEditAmount do
  622. begin
  623. SetParent(TFormMain);
  624. SetText('-1');
  625. SetBounds(88,152,48,23);
  626. setFont(tempFont);
  627. setMaxLength(6);
  628. setONKEYPRESS(OnlyPostiveNumbers);
  629. end;
  630. //TEditPlayNum\\
  631. TEditPlayNum.Init(TFormMain);
  632. with TEditPlayNum do
  633. begin
  634. SetParent(TFormMain);
  635. SetText('0');
  636. SetBounds(200,180,20,23);
  637. setFont(tempFont);
  638. setMaxLength(2);
  639. setONKEYPRESS(OnlyPostiveNumbers);
  640. end;
  641. //TButtonPlay\\
  642. TButtonPlay.Init(TFormMain);
  643. with TButtonPlay do
  644. begin
  645. SetParent(TFormMain);
  646. SetCaption('Play');
  647. SetBounds(296,180,75,25);
  648. setFont(tempFont);
  649. setOnClick(YourClickProcedure);
  650. end;
  651. //TButtonLoad\\
  652. TButtonLoad.Init(TFormMain);
  653. with TButtonLoad do
  654. begin
  655. SetParent(TFormMain);
  656. SetCaption('Load');
  657. SetBounds(2,180,50,25);
  658. setFont(tempFont);
  659. setOnClick(YourClickProcedure);
  660. end;
  661. //TButtonSave\\
  662. TButtonSave.Init(TFormMain);
  663. with TButtonSave do
  664. begin
  665. SetParent(TFormMain);
  666. SetCaption('Save');
  667. SetBounds(54,180,50,25);
  668. setFont(tempFont);
  669. setOnClick(YourClickProcedure);
  670. end;
  671. //TButtonBreak\\
  672. TButtonBreak.Init(TFormMain);
  673. with TButtonBreak do
  674. begin
  675. SetParent(TFormMain);
  676. SetCaption('Break handler');
  677. SetBounds(160,152,85,25);
  678. setFont(tempFont);
  679. setOnClick(YourClickProcedure);
  680. setEnabled(false);
  681. end;
  682. //TButtonExtra\\
  683. TButtonExtra.Init(TFormMain);
  684. with TButtonExtra do
  685. begin
  686. SetParent(TFormMain);
  687. SetCaption('Extras');
  688. SetBounds(304,152,60,25);
  689. setFont(tempFont);
  690. setOnClick(YourClickProcedure);
  691. end;
  692. //TCheckBoxBreak\\
  693. TCheckBoxBreak.Init(TFormMain);
  694. with TCheckBoxBreak do
  695. begin
  696. SetParent(TFormMain);
  697. SetCaption('');
  698. SetBounds(140,154,23,19);
  699. setState(0);
  700. setOnChange(brakeHandle);
  701. setFont(tempFont);
  702. end;
  703. //TCheckBoxTalk\\
  704. TCheckBoxTalk.Init(TFormMain);
  705. with TCheckBoxTalk do
  706. begin
  707. SetParent(TFormMain);
  708. SetCaption('Use auto responder?');
  709. SetBounds(140,52,101,19);
  710. setState(0);
  711. setFont(tempFont);
  712. end;
  713. //TCheckBoxWait\\
  714. TCheckBoxWait.Init(TFormMain);
  715. with TCheckBoxWait do
  716. begin
  717. SetParent(TFormMain);
  718. SetCaption('Force waits after actions?');
  719. SetBounds(140,72,103,19);
  720. setState(0);
  721. setFont(tempFont);
  722. end;
  723. //TCheckBoxMouse\\
  724. TCheckBoxMouse.Init(TFormMain);
  725. with TCheckBoxMouse do
  726. begin
  727. SetParent(TFormMain);
  728. SetCaption('Use mouse keys?');
  729. SetBounds(140,92,115,19);
  730. setState(0);
  731. setFont(tempFont);
  732. end;
  733. //TCheckBoxSpec\\
  734. TCheckBoxSpec.Init(TFormMain);
  735. with TCheckBoxSpec do
  736. begin
  737. SetParent(TFormMain);
  738. SetCaption('Use DAxe Spec?');
  739. SetBounds(140,112,107,19);
  740. setState(0);
  741. setFont(tempFont);
  742. end;
  743. //TCheckBoxBank\\
  744. TCheckBoxBank.Init(TFormMain);
  745. with TCheckBoxBank do
  746. begin
  747. SetParent(TFormMain);
  748. SetCaption('Force disable banking?');
  749. SetBounds(140,132,105,19);
  750. setState(0);
  751. setFont(tempFont);
  752. end;
  753. //TComboBoxLoc\\
  754. TComboBoxLoc.Init(TFormMain);
  755. with TComboBoxLoc do
  756. begin
  757. SetParent(TFormMain);
  758. SetBounds(2,2,219,23);
  759. setCaption('Location:');
  760. //add your items here
  761. AddItem('Lumbridge', nil);
  762. AddItem('Draynor', nil);
  763. AddItem('Rimmington', nil);
  764. AddItem('Falador', nil);
  765. AddItem('Edgeville', nil);
  766. AddItem('Varrock', nil);
  767. AddItem('Seers', nil);
  768. AddItem('Catherby', nil);
  769. AddItem('Gnome Stronghold', nil);
  770. AddItem('Barb. Assault', nil);
  771. AddItem('Duel Arena', nil);
  772. AddItem('Ape Atoll', nil);
  773. AddItem('Castle Wars', nil);
  774. AddItem('Tai Bwo Wannai', nil);
  775. AddItem('Powerchop', nil);
  776. AddItem('Woodcutting Guild', nil);
  777. //End items
  778. setFont(tempFont);
  779. setONKEYPRESS(NoKeys);
  780. setOnExit(OnChange);
  781. end;
  782. //TComboBoxType\\
  783. TComboBoxType.Init(TFormMain);
  784. with TComboBoxType do
  785. begin
  786. SetParent(TFormMain);
  787. SetBounds(225,2,147,23);
  788. setCaption('Type of wood:');
  789. setFont(tempFont);
  790. setONKEYPRESS(NoKeys);
  791. end;
  792.  
  793. TFormBreak.init(nil);
  794. with TFormBreak do
  795. begin
  796. SetCaption('Break Handler');
  797. setBorderStyle(bsSingle);
  798. SetBounds(0,0,255,120);
  799. SetPosition(poScreenCenter);
  800. end;
  801. TLabelbIn.init(TFormBreak);
  802. with TLabelbIn do
  803. begin
  804. setParent(TFormBreak);
  805. setCaption('Break after/every/within:');
  806. SetBounds(5,5,68,16);
  807. setFont(tempFont);
  808. end;
  809. TLabelbrIn.init(TFormBreak);
  810. with TLabelbrIn do
  811. begin
  812. setParent(TFormBreak);
  813. setCaption('Random:');
  814. SetBounds(5,30,68,16);
  815. setFont(tempFont);
  816. end;
  817. TLabelbFor.init(TFormBreak);
  818. with TLabelbFor do
  819. begin
  820. setParent(TFormBreak);
  821. setCaption('Break for:');
  822. SetBounds(5,65,68,16);
  823. setFont(tempFont);
  824. end;
  825. TLabelbrFor.init(TFormBreak);
  826. with TLabelbrFor do
  827. begin
  828. setParent(TFormBreak);
  829. setCaption('Random:');
  830. SetBounds(5,90,68,16);
  831. setFont(tempFont);
  832. end;
  833. TEditbIn.init(TFormBreak);
  834. with TEditbIn do
  835. begin
  836. setParent(TFormBreak);
  837. setText('90');
  838. SetBounds(150,2,100,23);
  839. setONKEYPRESS(OnlyPostiveNumbers);
  840. setMaxLength(9);
  841. setFont(tempFont);
  842. end;
  843. TEditbrIn.init(TFormBreak);
  844. with TEditbrIn do
  845. begin
  846. setParent(TFormBreak);
  847. setText('30');
  848. SetBounds(150,30,100,23);
  849. setONKEYPRESS(OnlyPostiveNumbers);
  850. setMaxLength(9);
  851. setFont(tempFont);
  852. end;
  853. TEditbFor.init(TFormBreak);
  854. with TEditbFor do
  855. begin
  856. setParent(TFormBreak);
  857. setText('10');
  858. SetBounds(150,67,100,23);
  859. setONKEYPRESS(OnlyPostiveNumbers);
  860. setMaxLength(9);
  861. setFont(tempFont);
  862. end;
  863. TEditbrFor.init(TFormBreak);
  864. with TEditbrFor do
  865. begin
  866. setParent(TFormBreak);
  867. setText('5');
  868. SetBounds(150,92,100,23);
  869. setONKEYPRESS(OnlyPostiveNumbers);
  870. setMaxLength(9);
  871. setFont(tempFont);
  872. end;
  873.  
  874. TFormExtra.init(nil);
  875. with TFormExtra do
  876. begin
  877. setCaption('Extras');
  878. setBorderStyle(bsSingle);
  879. SetBounds(0,0,255,330);
  880. SetPosition(poScreenCenter);
  881. end;
  882. TLabelSound.init(TFormExtra);
  883. with TLabelSound do
  884. begin
  885. setParent(TFormExtra);
  886. setCaption('Sound:');
  887. SetBounds(5,5,68,16);
  888. setFont(tempFont);
  889. end;
  890. TEditSound.init(TFormExtra);
  891. with TEditSound do
  892. begin
  893. setParent(TFormExtra);
  894. setText('C:\Windows\Media\Windows Notify.wav');
  895. SetBounds(150,5,100,23);
  896. setFont(tempFont);
  897. end;
  898. TLabelChatTime.init(TFormExtra);
  899. with TLabelChatTime do
  900. begin
  901. setParent(TFormExtra);
  902. setCaption('Chat time often:');
  903. SetBounds(5,30,68,16);
  904. setFont(tempFont);
  905. end;
  906. TEditChatTime.init(TFormExtra);
  907. with TEditChatTime do
  908. begin
  909. setParent(TFormExtra);
  910. setText('200000');
  911. SetBounds(150,30,100,23);
  912. setONKEYPRESS(OnlyNumbers);
  913. setMaxLength(9);
  914. setFont(tempFont);
  915. end;
  916. TLabelScreenTime.init(TFormExtra);
  917. with TLabelScreenTime do
  918. begin
  919. setParent(TFormExtra);
  920. setCaption('Screen time often:');
  921. SetBounds(5,55,68,16);
  922. setFont(tempFont);
  923. end;
  924. TEditScreenTime.init(TFormExtra);
  925. with TEditScreenTime do
  926. begin
  927. setParent(TFormExtra);
  928. setText('1000');
  929. SetBounds(150,55,100,23);
  930. setONKEYPRESS(OnlyNumbers);
  931. setMaxLength(9);
  932. setFont(tempFont);
  933. end;
  934. TLabelWaitTime.init(TFormExtra);
  935. with TLabelWaitTime do
  936. begin
  937. setParent(TFormExtra);
  938. setCaption('Wait time:');
  939. SetBounds(5,80,68,16);
  940. setFont(tempFont);
  941. end;
  942. TEditWaitTime.init(TFormExtra);
  943. with TEditWaitTime do
  944. begin
  945. setParent(TFormExtra);
  946. setText('-1');
  947. SetBounds(150,80,100,23);
  948. setONKEYPRESS(OnlyNumbers);
  949. setMaxLength(9);
  950. setFont(tempFont);
  951. end;
  952. TLabelWaitOften.init(TFormExtra);
  953. with TLabelWaitOften do
  954. begin
  955. setParent(TFormExtra);
  956. setCaption('Wait often:');
  957. SetBounds(5,105,68,16);
  958. setFont(tempFont);
  959. end;
  960. TEditWaitOften.init(TFormExtra);
  961. with TEditWaitOften do
  962. begin
  963. setParent(TFormExtra);
  964. setText('250');
  965. SetBounds(150,105,100,23);
  966. setONKEYPRESS(OnlyPostiveNumbers);
  967. setMaxLength(9);
  968. setFont(tempFont);
  969. end;
  970. TLabelDismissTime.init(TFormExtra);
  971. with TLabelDismissTime do
  972. begin
  973. setParent(TFormExtra);
  974. setCaption('Dismiss time:');
  975. SetBounds(5,130,68,16);
  976. setFont(tempFont);
  977. end;
  978. TEditDismissTime.init(TFormExtra);
  979. with TEditDismissTime do
  980. begin
  981. setParent(TFormExtra);
  982. setText('10000');
  983. SetBounds(150,130,100,23);
  984. setONKEYPRESS(OnlyNumbers);
  985. setMaxLength(9);
  986. setFont(tempFont);
  987. end;
  988. TLabelUpdateTime.init(TFormExtra);
  989. with TLabelUpdateTime do
  990. begin
  991. setParent(TFormExtra);
  992. setCaption('Update time:');
  993. SetBounds(5,155,68,16);
  994. setFont(tempFont);
  995. end;
  996. TEditUpdateTime.init(TFormExtra);
  997. with TEditUpdateTime do
  998. begin
  999. setParent(TFormExtra);
  1000. setText('45000');
  1001. SetBounds(150,155,100,23);
  1002. setONKEYPRESS(OnlyNumbers);
  1003. setMaxLength(9);
  1004. setFont(tempFont);
  1005. end;
  1006. TLabelLevelUpTime.init(TFormExtra);
  1007. with TLabelLevelUpTime do
  1008. begin
  1009. setParent(TFormExtra);
  1010. setCaption('Level up time:');
  1011. SetBounds(5,180,68,16);
  1012. setFont(tempFont);
  1013. end;
  1014. TEditLevelUpTime.init(TFormExtra);
  1015. with TEditLevelUpTime do
  1016. begin
  1017. setParent(TFormExtra);
  1018. setText('2500');
  1019. SetBounds(150,180,100,23);
  1020. setONKEYPRESS(OnlyNumbers);
  1021. setMaxLength(9);
  1022. setFont(tempFont);
  1023. end;
  1024. TLabelCloseTime.init(TFormExtra);
  1025. with TLabelCloseTime do
  1026. begin
  1027. setParent(TFormExtra);
  1028. setCaption('Close stuff time:');
  1029. SetBounds(5,205,68,16);
  1030. setFont(tempFont);
  1031. end;
  1032. TEditCloseTime.init(TFormExtra);
  1033. with TEditCloseTime do
  1034. begin
  1035. setParent(TFormExtra);
  1036. setText('10000');
  1037. SetBounds(150,205,100,23);
  1038. setONKEYPRESS(OnlyNumbers);
  1039. setMaxLength(9);
  1040. setFont(tempFont);
  1041. end;
  1042. TLabelLookForChatTime.init(TFormExtra);
  1043. with TLabelLookForChatTime do
  1044. begin
  1045. setParent(TFormExtra);
  1046. setCaption('Look for chat time:');
  1047. SetBounds(5,230,68,16);
  1048. setFont(tempFont);
  1049. end;
  1050. TEditLookForChatTime.init(TFormExtra);
  1051. with TEditLookForChatTime do
  1052. begin
  1053. setParent(TFormExtra);
  1054. setText('2000');
  1055. SetBounds(150,230,100,23);
  1056. setONKEYPRESS(OnlyNumbers);
  1057. setMaxLength(9);
  1058. setFont(tempFont);
  1059. end;
  1060. TLabelItemDis.init(TFormExtra);
  1061. with TLabelItemDis do
  1062. begin
  1063. setParent(TFormExtra);
  1064. setCaption('Nest check distance:');
  1065. SetBounds(5,255,68,16);
  1066. setFont(tempFont);
  1067. end;
  1068. TEditItemDis.init(TFormExtra);
  1069. with TEditItemDis do
  1070. begin
  1071. setParent(TFormExtra);
  1072. setText('20');
  1073. SetBounds(150,255,100,23);
  1074. setONKEYPRESS(OnlyPostiveNumbers);
  1075. setMaxLength(3);
  1076. setFont(tempFont);
  1077. end;
  1078. TCheckBoxDropOnly.init(TFormExtra);
  1079. with TCheckBoxDropOnly do
  1080. begin
  1081. setFont(tempFont);
  1082. setParent(TFormExtra);
  1083. setCaption('Drop only?');
  1084. setState(0);
  1085. SetBounds(5,280,68,16);
  1086. end;
  1087. TLabelItemTime.init(TFormExtra);
  1088. with TLabelItemTime do
  1089. begin
  1090. setParent(TFormExtra);
  1091. setCaption('Look for nest time:');
  1092. SetBounds(5,305,68,16);
  1093. setFont(tempFont);
  1094. end;
  1095. TEditItemTime.init(TFormExtra);
  1096. with TEditItemTime do
  1097. begin
  1098. setParent(TFormExtra);
  1099. setText('5000');
  1100. SetBounds(150,305,100,23);
  1101. setONKEYPRESS(OnlyNumbers);
  1102. setMaxLength(9);
  1103. end;
  1104. tempFont.Free;
  1105. end;
  1106.  
  1107. procedure ShowFormModal;
  1108. {$IFNDEF CODEINSIGHT}
  1109. native;
  1110. {$ENDIF}
  1111. var
  1112. i, h : integer;
  1113. strings : TStringArray;
  1114. begin
  1115. InitForm;
  1116.  
  1117. if loading or saving then begin
  1118. saving := false;
  1119. loading := false;
  1120. TEditUser.setText(sname);
  1121. TEditPass.setText(spass);
  1122. TEditPin.setText(spin);
  1123. TEditWorld.setText(sworld);
  1124.  
  1125. if (Length(santi) > 0) then
  1126. TEditAnti.setText(santi)
  1127. else
  1128. TEditAnti.setText('0');
  1129.  
  1130. if (Length(srun) > 0) then
  1131. TEditRun.setText(srun)
  1132. else
  1133. TEditRun.setText('0');
  1134.  
  1135. if (Length(samount) > 0) then
  1136. TEditAmount.setText(samount)
  1137. else
  1138. TEditAmount.setText('0');
  1139.  
  1140. if (Length(sloc) > 0) then
  1141. TComboBoxLoc.setItemIndex(StrToInt(sloc))
  1142. else
  1143. TComboBoxLoc.setItemIndex(0);
  1144. _OnChange2;
  1145.  
  1146. if (Length(stype) > 0) then
  1147. TComboBoxType.setItemIndex(StrToInt(stype))
  1148. else
  1149. TComboBoxType.setItemIndex(0);
  1150.  
  1151. if(sbank = 'cbUnchecked')then
  1152. TCheckBoxBank.setState(0)
  1153. else
  1154. TCheckBoxBank.setState(1);
  1155.  
  1156. if(sspec = 'cbUnchecked')then
  1157. TCheckBoxSpec.setState(0)
  1158. else
  1159. TCheckBoxSpec.setState(1);
  1160.  
  1161. if(schat = 'cbUnchecked')then
  1162. TCheckBoxTalk.setState(0)
  1163. else
  1164. TCheckBoxTalk.setState(1);
  1165.  
  1166. if(swait = 'cbUnchecked')then
  1167. TCheckBoxWait.setState(0)
  1168. else
  1169. TCheckBoxWait.setState(1);
  1170.  
  1171. if(smouse = 'cbUnchecked')then
  1172. TCheckBoxMouse.setState(0)
  1173. else
  1174. TCheckBoxMouse.setState(1);
  1175.  
  1176. if(sbreak = 'cbUnchecked')then
  1177. TCheckBoxBreak.setState(0)
  1178. else
  1179. TCheckBoxBreak.setState(1);
  1180. breakCheck;
  1181.  
  1182. TEditbin.setText(sbin);
  1183. TEditbrin.setText(sbrin);
  1184. TEditbfor.setText(sbfor);
  1185. TEditbrfor.setText(sbrfor);
  1186.  
  1187. if(sdrop = 'cbUnchecked')then
  1188. TCheckBoxDropOnly.setState(0)
  1189. else
  1190. TCheckBoxDropOnly.setState(1);
  1191.  
  1192. TEditSound.setText(ssound);
  1193. TEditCloseTime.setText(scloset);
  1194. TEditWaitOften.setText(swaito);
  1195. TEditWaitTime.setText(swaitt);
  1196. TEditLevelUpTime.setText(slevelt);
  1197. TEditScreenTime.setText(sscreent);
  1198. TEditUpdateTime.setText(supdatet);
  1199. TEditChatTime.setText(schatt);
  1200. TEditLookForChatTime.setText(slchatt);
  1201. TEditDismissTime.setText(sdismisst);
  1202.  
  1203. TEditItemDis.setText(sitemd);
  1204.  
  1205. TEditItemTime.setText(sitemt);
  1206.  
  1207. TEditPlayNum.setText(tostr(playNum));
  1208. end;
  1209.  
  1210. TFormMain.ShowModal;
  1211.  
  1212. i := -1;
  1213. h := -1;
  1214. case TComboBoxLoc.getItemIndex of
  1215. (i:=i+1):begin //lumb
  1216. case TComboBoxType.getItemIndex of
  1217. (h:=h+1):Job:=0; // oak sell
  1218. (h:=h+1):Job:=1; // willow sell
  1219. (h:=h+1):Job:=2; // west will
  1220. (h:=h+1):Job:=3; // west willow 2
  1221. (h:=h+1):Job:=4; // north will
  1222. (h:=h+1):Job:=5; // yew
  1223. (h:=h+1):Job:=6; // yew sell
  1224. (h:=h+1):Job:=7; // prog chop
  1225. end;
  1226. end;
  1227. (i:=i+1):begin //draynor
  1228. case TComboBoxType.getItemIndex of
  1229. (h:=h+1):Job:=8; //oak
  1230. (h:=h+1):Job:=9; // willow
  1231. (h:=h+1):Job:=10; // yew
  1232. end;
  1233. end;
  1234. (i:=i+1):begin // rimm
  1235. case TComboBoxType.getItemIndex of
  1236. (h:=h+1):Job:=11; // will ps
  1237. (h:=h+1):Job:=12; // yew ps
  1238. (h:=h+1):Job:=13; // will sell
  1239. (h:=h+1):Job:=14; // yew
  1240. (h:=h+1):Job:=15; // yew sell
  1241. end;
  1242. end;
  1243. (i:=i+1):begin //fala
  1244. case TComboBoxType.getItemIndex of
  1245. (h:=h+1):Job:=16; // oak
  1246. (h:=h+1):Job:=17; // yew
  1247. end;
  1248. end;
  1249. (i:=i+1):begin // edge
  1250. case TComboBoxType.getItemIndex of
  1251. (h:=h+1):Job:=18; // yew
  1252. end;
  1253. end;
  1254. (i:=i+1):begin //varr
  1255. case TComboBoxType.getItemIndex of
  1256. (h:=h+1):Job:=19; // oak west
  1257. (h:=h+1):Job:=20; // yew palc
  1258. (h:=h+1):Job:=21; // oak east
  1259. (h:=h+1):Job:=22; // yew pray
  1260. (h:=h+1):Job:=23; // yew east
  1261. end;
  1262. end;
  1263. (i:=i+1):begin //seers
  1264. case TComboBoxType.getItemIndex of
  1265. (h:=h+1):Job:=24; // oak
  1266. (h:=h+1):Job:=25; // willow
  1267. (h:=h+1):Job:=26; // maople
  1268. (h:=h+1):Job:=27; // yew
  1269. (h:=h+1):Job:=28; // mage
  1270. (h:=h+1):Job:=29; // mage2
  1271. end;
  1272. end;
  1273. (i:=i+1):begin //cath
  1274. case TComboBoxType.getItemIndex of
  1275. (h:=h+1):Job:=30; // will
  1276. (h:=h+1):Job:=31; // yew
  1277. end;
  1278. end;
  1279. (i:=i+1):begin //tree g
  1280. case TComboBoxType.getItemIndex of
  1281. (h:=h+1):Job:=32; // yew
  1282. (h:=h+1):Job:=33; // yew 2
  1283. end;
  1284. end;
  1285. (i:=i+1):begin // barb
  1286. case TComboBoxType.getItemIndex of
  1287. (h:=h+1):Job:=34; // will
  1288. end;
  1289. end;
  1290. (i:=i+1):begin // deul
  1291. case TComboBoxType.getItemIndex of
  1292. (h:=h+1):Job:=35; // mag
  1293. end;
  1294. end;
  1295. (i:=i+1):begin // ape
  1296. case TComboBoxType.getItemIndex of
  1297. (h:=h+1):Job:=36; // teak
  1298. end;
  1299. end;
  1300. (i:=i+1):begin // castle wars
  1301. case TComboBoxType.getItemIndex of
  1302. (h:=h+1):Job:=37; // teak
  1303. end;
  1304. end;
  1305. (i:=i+1):begin // two baw
  1306. case TComboBoxType.getItemIndex of
  1307. (h:=h+1):Job:=38; // teak
  1308. (h:=h+1):Job:=39; // teak 2
  1309. (h:=h+1):Job:=40; // mah
  1310. end;
  1311. end;
  1312. (i:=i+1):begin // power
  1313. case TComboBoxType.getItemIndex of
  1314. (h:=h+1):Job:=41; // tree
  1315. (h:=h+1):Job:=42; // oak
  1316. (h:=h+1):Job:=43; // willow
  1317. end;
  1318. end;
  1319. (i:=i+1):begin // wc guild
  1320. case TComboBoxType.getItemIndex of
  1321. (h:=h+1):Job:=45; // Yews
  1322. (h:=h+1):Job:=46; // Magics
  1323. (h:=h+1):Job:=47; // red
  1324. (h:=h+1):Job:=48; // red2
  1325. (h:=h+1):Job:=49; // red3
  1326. (h:=h+1):Job:=50; // red4
  1327. end;
  1328. end;
  1329. end;
  1330.  
  1331. ReflectPlayer.Username := TEditUser.getText;
  1332. ReflectPlayer.Password := TEditPass.getText;
  1333. ReflectPlayer.Pin := TEditPin.getText;
  1334. ReflectPlayer.Active := true;
  1335.  
  1336. SmartShowConsole := false;
  1337. case random(8) of
  1338. 0:SmartUserAgent := 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0';
  1339. 1:SmartUserAgent := 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0';
  1340. 2:SmartUserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0';
  1341. 3:SmartUserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0';
  1342. 4:SmartUserAgent := 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0';
  1343. 5:SmartUserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0';
  1344. 6:SmartUserAgent := 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0';
  1345. 7:SmartUserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0';
  1346. end;
  1347.  
  1348. strings := GetWordsEx(TEditWorld.getText, '1234567890');
  1349. if (length(strings) > 0) then
  1350. SmartWorld := StrToInt(Strings[0]);
  1351.  
  1352. setLength(WorldList, length(strings));
  1353. for i := 0 to high(strings) do
  1354. WorldList[i] := StrToInt(strings[i]);
  1355.  
  1356. MouseKeys := (toStr(TCheckBoxMouse.getState) = 'cbChecked');
  1357. DisableBank := (toStr(TCheckBoxBank.getState) = 'cbChecked');
  1358. UseSpec := (toStr(TCheckBoxSpec.getState) = 'cbChecked');
  1359. useBreaks := (toStr(TCheckBoxBreak.getState) = 'cbChecked');
  1360. useAutoResponder := (toStr(TCheckBoxTalk.getState) = 'cbChecked');
  1361. useFakeWaitTime := (toStr(TCheckBoxWait.getState) = 'cbChecked');
  1362. dropOnly := (toStr(TCheckBoxDropOnly.getState) = 'cbChecked');
  1363.  
  1364. if (Length(TEditRun.getText) > 0) then
  1365. RunAmount := StrToInt(TEditRun.getText)
  1366. else
  1367. RunAmount := 0;
  1368.  
  1369. if (Length(TEditAmount.getText) > 0) then
  1370. AmountAmount := StrToInt(TEditAmount.getText)
  1371. else
  1372. AmountAmount := 0;
  1373.  
  1374. if (Length(TEditAnti.getText) > 0) then
  1375. AntiAmount := StrToInt(TEditAnti.getText)
  1376. else
  1377. AntiAmount := 0;
  1378.  
  1379. if (Length(TEditPlayNum.getText) > 0) then
  1380. playNum := StrToInt(TEditPlayNum.getText)
  1381. else
  1382. playNum := 0;
  1383.  
  1384. if (Length(TEditCloseTime.getText) > 0) then
  1385. closeAllOften := StrToInt(TEditCloseTime.GetText)
  1386. else
  1387. closeAllOften := 0;
  1388.  
  1389. if (Length(TEditDismissTime.getText) > 0) then
  1390. dismissAllOften := StrToInt(TEditDismissTime.GetText)
  1391. else
  1392. dismissAllOften := 0;
  1393.  
  1394. if (Length(TEditLookForChatTime.getText) > 0) then
  1395. lookForChatOften := StrToInt(TEditLookForChatTime.GetText)
  1396. else
  1397. lookForChatOften := 0;
  1398.  
  1399. if (Length(TEditLevelupTime.getText) > 0) then
  1400. checkForLevelOften := StrToInt(TEditLevelupTime.GetText)
  1401. else
  1402. checkForLevelOften := 0;
  1403.  
  1404. if (Length(TEditChatTime.getText) > 0) then
  1405. chatTimeOften := StrToInt(TEditChatTime.GetText)
  1406. else
  1407. chatTimeOften := 0;
  1408.  
  1409. if (Length(TEditUpdateTime.getText) > 0) then
  1410. updateAllOften := StrToInt(TEditUpdateTime.GetText)
  1411. else
  1412. updateAllOften := 0;
  1413.  
  1414. if (Length(TEditWaitOften.getText) > 0) then
  1415. cpuLoadOften := StrToInt(TEditWaitOften.GetText)
  1416. else
  1417. cpuLoadOften := 0;
  1418.  
  1419. if (Length(TEditWaitTime.getText) > 0) then
  1420. cpuLoadWait := StrToInt(TEditWaitTime.GetText)
  1421. else
  1422. cpuLoadWait := 0;
  1423.  
  1424. if (Length(TEditScreenTime.getText) > 0) then
  1425. updateScreenOften := StrToInt(TEditScreenTime.GetText)
  1426. else
  1427. updateScreenOften := 0;
  1428.  
  1429. if (Length(TEditbin.getText) > 0) then
  1430. breakIn := StrToInt(TEditbin.getText)
  1431. else
  1432. breakIn := 0;
  1433.  
  1434. if (Length(TEditbrin.getText) > 0) then
  1435. breakInRandom := StrToInt(TEditbrin.getText)
  1436. else
  1437. breakInRandom := 0;
  1438.  
  1439. if (Length(TEditbfor.getText) > 0) then
  1440. breakFor := StrToInt(TEditbfor.getText)
  1441. else
  1442. breakFor := 0;
  1443.  
  1444. if (Length(TEditbrfor.getText) > 0) then
  1445. breakForRandom := StrToInt(TEditbrfor.getText)
  1446. else
  1447. breakForRandom := 0;
  1448.  
  1449. if (Length(TEditItemDis.getText) > 0) then
  1450. ItemCheckDistance := StrToInt(TEditItemDis.GetText)
  1451. else
  1452. ItemCheckDistance := 0;
  1453.  
  1454. if (Length(TEditItemTime.getText) > 0) then
  1455. gItemOften := StrToInt(TEditItemTime.GetText)
  1456. else
  1457. gItemOften := 0;
  1458.  
  1459. SoundString := TEditSound.getText;
  1460.  
  1461. breakIn := breakIn*60000;
  1462. breakInRandom := breakInRandom*60000;
  1463. breakFor := breakFor*60000;
  1464. breakForRandom := breakForRandom*60000;
  1465.  
  1466. breakInTimer.restart;
  1467. breakInFinal := breakIn + randomRange(-breakInRandom, breakInRandom);
  1468.  
  1469. TFormBreak.Free;
  1470. TFormExtra.Free;
  1471. TFormMain.Free;
  1472. end;
  1473.  
  1474. procedure ShowForm();
  1475. var
  1476. tempBMP : integer;
  1477. IniString, picString, crypt : string;
  1478. begin
  1479. daLogger.Init('Script', TReflectLoggerLevel.Status);
  1480.  
  1481. picString := GetPage(PicturePage);
  1482.  
  1483. tempBMP := BitmapFromString(374, 208, picString);
  1484. TMainBMP.Init;
  1485. TMainBMP := GetMufasaBitmap(tempBMP).ToTBitmap;
  1486. freeBitmap(tempBMP);
  1487.  
  1488. started := false;
  1489. saving := false;
  1490. loading := false;
  1491. job := -1;
  1492. playNum := 0;
  1493. IniString := scriptPath+'ineedbot''s AIO Woodcutter user details.ini';
  1494.  
  1495. sync(ShowFormModal);
  1496. while saving or loading do begin
  1497. if saving then begin
  1498. writeini('chat', intToStr(playNum), schat, IniString);
  1499. writeini('wait', intToStr(playNum), swait, IniString);
  1500. writeini('name', intToStr(playNum), sname, IniString);
  1501.  
  1502. crypt := spass;
  1503. rc2_encrypt('ineedbotschop', htMD5, crypt);
  1504. writeini('pass', intToStr(playNum), crypt, IniString);
  1505.  
  1506. writeini('pin', intToStr(playNum), spin, IniString);
  1507. writeini('world', intToStr(playNum), sworld, IniString);
  1508. writeini('amount', intToStr(playNum), samount, IniString);
  1509. writeini('run', intToStr(playNum), srun, IniString);
  1510. writeini('anti', intToStr(playNum), santi, IniString);
  1511. writeini('type', intToStr(playNum), stype, IniString);
  1512. writeini('loc', intToStr(playNum), sloc, IniString);
  1513. writeini('mouse', intToStr(playNum), smouse, IniString);
  1514. writeini('bank', intToStr(playNum), sbank, IniString);
  1515. writeini('spec', intToStr(playNum), sspec, IniString);
  1516. writeini('bfor', intToStr(playNum), sbfor, IniString);
  1517. writeini('brfor', intToStr(playNum), sbrfor, IniString);
  1518. writeini('bin', intToStr(playNum), sbin, IniString);
  1519. writeini('brin', intToStr(playNum), sbrin, IniString);
  1520. writeini('brake', intToStr(playNum), sbreak, IniString);
  1521. writeini('sound', intToStr(playNum), ssound, IniString);
  1522. writeini('dismisst', intToStr(playNum), sdismisst, IniString);
  1523. writeini('lchatt', intToStr(playNum), slchatt, IniString);
  1524. writeini('chatt', intToStr(playNum), schatt, IniString);
  1525. writeini('updatet', intToStr(playNum), supdatet, IniString);
  1526. writeini('screent', intToStr(playNum), sscreent, IniString);
  1527. writeini('levelt', intToStr(playNum), slevelt, IniString);
  1528. writeini('waitt', intToStr(playNum), swaitt, IniString);
  1529. writeini('waito', intToStr(playNum), swaito, IniString);
  1530. writeini('closet', intToStr(playNum), scloset, IniString);
  1531. writeini('itemd', intToStr(playNum), sitemd, IniString);
  1532. writeini('drop', intToStr(playNum), sdrop, IniString);
  1533. writeini('itemt', intToStr(playNum), sitemt, IniString);
  1534. end;
  1535. if (loading or saving) and FileExists(IniString) then begin
  1536. schat := ReadINI('chat', intToStr(playNum), IniString);
  1537. swait := ReadINI('wait', intToStr(playNum), IniString);
  1538. sname := ReadINI('name', intToStr(playNum), IniString);
  1539.  
  1540. crypt := ReadINI('pass', intToStr(playNum), IniString);
  1541. rc2_decrypt('ineedbotschop', htMD5, crypt);
  1542. spass := crypt;
  1543.  
  1544. spin := ReadINI('pin', intToStr(playNum), IniString);
  1545. sworld := ReadINI('world', intToStr(playNum), IniString);
  1546. samount := ReadINI('amount', intToStr(playNum), IniString);
  1547. srun := ReadINI('run', intToStr(playNum), IniString);
  1548. santi := ReadINI('anti', intToStr(playNum), IniString);
  1549. stype := ReadINI('type', intToStr(playNum), IniString);
  1550. sloc := ReadINI('loc', intToStr(playNum), IniString);
  1551. smouse := ReadINI('mouse', intToStr(playNum), IniString);
  1552. sbank := ReadINI('bank', intToStr(playNum), IniString);
  1553. sspec := ReadINI('spec', intToStr(playNum), IniString);
  1554. sbfor := ReadINI('bfor', intToStr(playNum), IniString);
  1555. sbrfor := ReadINI('brfor', intToStr(playNum), IniString);
  1556. sbin := ReadINI('bin', intToStr(playNum), IniString);
  1557. sbrin := ReadINI('brin', intToStr(playNum), IniString);
  1558. sbreak := ReadINI('brake', intToStr(playNum), IniString);
  1559. ssound := ReadINI('sound', intToStr(playNum), IniString);
  1560. sdismisst := ReadINI('dismisst', intToStr(playNum), IniString);
  1561. slchatt := ReadINI('lchatt', intToStr(playNum), IniString);
  1562. schatt := ReadINI('chatt', intToStr(playNum), IniString);
  1563. supdatet := ReadINI('updatet', intToStr(playNum), IniString);
  1564. sscreent := ReadINI('screent', intToStr(playNum), IniString);
  1565. slevelt := ReadINI('levelt', intToStr(playNum), IniString);
  1566. swaitt := ReadINI('waitt', intToStr(playNum), IniString);
  1567. swaito := ReadINI('waito', intToStr(playNum), IniString);
  1568. scloset := ReadINI('closet', intToStr(playNum), IniString);
  1569. sitemd := ReadINI('itemd', intToStr(playNum), IniString);
  1570. sdrop := ReadINI('drop', intToStr(playNum), IniString);
  1571. sitemt := ReadINI('itemt', intToStr(playNum), IniString);
  1572. end;
  1573. sync(showFormModal);
  1574. end;
  1575.  
  1576. TMainBMP.free;
  1577. end;
  1578.  
  1579. procedure doUpdateScreen;
  1580. var currentWoodXp, CurrentWoodLevel, currentFletchXp, currentFireXP, tempInt, i, h, tempCheck, tempCheck2, TimeRunning, myPlane: integer;
  1581. _items : TReflectInvItemArray;
  1582. perHour : extended;
  1583. _eitems : TReflectWornEquipmentArray;
  1584. tB : TBox;
  1585. tObj : TReflectObject;
  1586. RSTile, rsTile2 : TPoint;
  1587. BankNPCIDs : TIntegerArray;
  1588. _npcs : TReflectNpcArray;
  1589. t_string : string;
  1590. begin
  1591. graphicOpti.DrawClear(0);
  1592.  
  1593. currentWoodLevel := ReflectPlayer.GetMaxSkillLevel(SKILL_WOODCUTTING);
  1594. currentFletchXP := ReflectPlayer.GetSkillExp(SKILL_Fletching);
  1595. currentWoodXP := ReflectPlayer.GetSkillExp(SKILL_WOODCUTTING);
  1596. currentFireXP := ReflectPlayer.GetSkillExp(SKILL_FireMaking);
  1597.  
  1598. TimeRunning := GetTimeRunning;
  1599. perHour := 3600000/TimeRunning;
  1600.  
  1601. myPlane := Reflect.Tiles.GetPlane;
  1602.  
  1603. tempInt := Reflect.Gametab.CurrentColor;
  1604. if tempInt = Gametab_Inventory then begin
  1605. _items.GetAll;
  1606. for i:=0 to high(_items) do begin
  1607. h := _items[i].getid;
  1608. if(inIntArray(AxeIDs, h))then begin
  1609. tB := _items[i].GetBox;
  1610. graphicOpti.DrawClippedText('Axe', 'upchars07', Point(tB.x1 - 5, tB.y1), true, 65280);
  1611. end else begin
  1612. if(inIntArray(KnifeIDs, h))then begin
  1613. tB := _items[i].GetBox;
  1614. graphicOpti.DrawClippedText('Knife', 'upchars07', Point(tB.x1 - 5, tB.y1), true, 65280);
  1615. end else begin
  1616. if(inIntArray(TinderIDs, h))then begin
  1617. tB := _items[i].GetBox;
  1618. graphicOpti.DrawClippedText('Tind.', 'upchars07', Point(tB.x1 - 5, tB.y1), true, 65280);
  1619. end else begin
  1620. if(inIntArray(CoinsIDs, h))then begin
  1621. tB := _items[i].GetBox;
  1622. graphicOpti.DrawClippedText('Coins', 'upchars07', Point(tB.x1 - 5, tB.y1), true, 65280);
  1623. end else begin
  1624. if(inIntArray(NestIDs, h))then begin
  1625. tB := _items[i].GetBox;
  1626. graphicOpti.DrawClippedText('Nest', 'upchars07', Point(tB.x1 - 5, tB.y1), true, 65280);
  1627. end else begin
  1628. if(inIntArray(ShaftIDs, h))then begin
  1629. tB := _items[i].GetBox;
  1630. graphicOpti.DrawClippedText('Shaft', 'upchars07', Point(tB.x1 - 5, tB.y1), true, 65280);
  1631. end else begin
  1632. if(inIntArray(GreeGreeIds, h))then begin
  1633. tB := _items[i].GetBox;
  1634. graphicOpti.DrawClippedText('Gree', 'upchars07', Point(tB.x1 - 5, tB.y1), true, 65280);
  1635. end else begin
  1636. if(inIntArray(TradingSticksIds, h))then begin
  1637. tB := _items[i].GetBox;
  1638. graphicOpti.DrawClippedText('Sticks', 'upchars07', Point(tB.x1 - 5, tB.y1), true, 65280);
  1639. end else begin
  1640. for tempCheck := 0 to high(DaLocation.Logs) do
  1641. if h = DaLocation.Logs[tempCheck].ID then begin
  1642. tB := _items[i].GetBox;
  1643. graphicOpti.DrawClippedText('Log', 'upchars07', Point(tB.x1 - 5, tB.y1), true, 65280);
  1644. end;
  1645. end;
  1646. end;
  1647. end;
  1648. end;
  1649. end;
  1650. end;
  1651. end;
  1652. end;
  1653. end;
  1654. end else begin
  1655. if tempInt = Gametab_WornEquipment then begin
  1656. _eitems.GetAll;
  1657. for i:=0 to high(_eitems) do begin
  1658. h := _eitems[i].getID;
  1659. if(inIntArray(AxeIDs, h))then begin
  1660. tB := _eitems[i].getBox;
  1661. graphicOpti.DrawClippedText('Axe', 'upchars07', Point(tB.x1 - 5, tB.y1), true, 65280);
  1662. end;
  1663. end;
  1664. end;
  1665. end;
  1666.  
  1667. for i:=0 to high(DaLocation.BankLocations) do begin
  1668. if myPlane = DaLocation.BankLocations[i].Plane then begin
  1669. if R_TileOnMM(DaLocation.BankLocations[i].Tile, RSTile) then begin
  1670. graphicOpti.DrawEllipse(RSTile, 5, 5, clBlue, false);
  1671. if R_TileOnMS(DaLocation.BankLocations[i].Tile, RSTile, DaLocation.BankLocations[i].Offset[0], DaLocation.BankLocations[i].Offset[1], DaLocation.BankLocations[i].Offset[2]) then begin
  1672. graphicOpti.DrawClippedText(DaLocation.BankLocations[i].Name, 'upchars07', RSTile, true, clBlue);
  1673. end;
  1674. end;
  1675. end;
  1676. end;
  1677.  
  1678. for i:=0 to high(DaLocation.TreeLocations) do begin
  1679. if R_TileOnMM(DaLocation.TreeLocations[i], RSTile) then begin
  1680. graphicOpti.DrawEllipse(RSTile, 5, 5, clGreen, false);
  1681. if R_TileOnMS(DaLocation.TreeLocations[i], RSTile) then begin
  1682. graphicOpti.DrawClippedText('Trees', 'upchars07', RSTile, true, clGreen);
  1683. end;
  1684. end;
  1685. end;
  1686.  
  1687. for i:=0 to high(DaLocation.FireLanes) do begin
  1688. if myPlane = DaLocation.FireLanes[i].Plane then begin
  1689. if R_TileOnMM(daLocation.FireLanes[i].Tile, RSTile) then begin
  1690. graphicOpti.DrawEllipse(RSTile, 5, 5, clOrange, false);
  1691. if R_TileOnMS(daLocation.FireLanes[i].Tile, RSTile) then begin
  1692. graphicOpti.DrawClippedText('FireStart', 'upchars07', RSTile, true, clOrange);
  1693. end;
  1694. end;
  1695. if R_TileOnMM(Point(daLocation.FireLanes[i].Tile.x-daLocation.FireLanes[i].Length, daLocation.FireLanes[i].Tile.y), RSTile) then begin
  1696. graphicOpti.DrawEllipse(RSTile, 5, 5, clOrange, false);
  1697. if R_TileOnMS(Point(daLocation.FireLanes[i].Tile.x-daLocation.FireLanes[i].Length, daLocation.FireLanes[i].Tile.y), RSTile) then begin
  1698. graphicOpti.DrawClippedText('FireEnd', 'upchars07', RSTile, true, clOrange);
  1699. end;
  1700. end;
  1701. end;
  1702. end;
  1703.  
  1704. for i:=0 to high(daLocation.BankNPCs) do
  1705. for h:=0 to high(daLocation.BankNPCs[i].IDs) do begin
  1706. setLength(BankNPCIDs, length(BankNPCIDs)+1);
  1707. BankNPCIDs[high(BankNPCIDs)] := daLocation.BankNPCs[i].IDs[h];
  1708. end;
  1709. _npcs.GetAll;
  1710. for i:=0 to high(_npcs) do begin
  1711. if(inIntArray(BankNPCIDs, _npcs[i].getid))then begin
  1712. rsTile2 := _npcs[i].gettile;
  1713. if R_TileOnMM(rsTile2, RSTile) then begin
  1714. graphicOpti.DrawEllipse(RSTile, 5, 5, clBlue, false);
  1715. if R_TileOnMS(rsTile2, RSTile) then
  1716. graphicOpti.DrawClippedText(_npcs[i].getname, 'upchars07', RSTile, true, clBlue);
  1717. end;
  1718. end;
  1719. end;
  1720.  
  1721. for i:=0 to high(daLocation.DoorObjects) do begin
  1722. if myPlane = daLocation.DoorObjects[i].Plane then begin
  1723. if R_TileOnMM(daLocation.DoorObjects[i].Tile, RSTile) then begin
  1724. graphicOpti.DrawEllipse(RSTile, 5, 5, clGray, false);
  1725. if R_TileOnMS(daLocation.DoorObjects[i].Tile, RSTile, daLocation.DoorObjects[i].Offset[0], daLocation.DoorObjects[i].Offset[1], daLocation.DoorObjects[i].Offset[2]) then begin
  1726. tObj.GetAt(ObjBoundary, daLocation.DoorObjects[i].Tile);
  1727. if not Reflect.Smart.IsNull(tObj.Reference) then begin
  1728. graphicOpti.DrawClippedText('Closed door', 'upchars07', RSTile, true, clGray);
  1729. end else begin
  1730. graphicOpti.DrawClippedText('Opened door', 'upchars07', RSTile, true, clGray);
  1731. end;
  1732. end;
  1733. end;
  1734. end;
  1735. end;
  1736.  
  1737. for i:=0 to high(daLocation.TreeObjects) do begin
  1738. if myPlane = daLocation.TreeObjects[i].Plane then begin
  1739. tObj.GetAt(ObjGame, daLocation.TreeObjects[i].Tile);
  1740. if not Reflect.Smart.IsNull(tObj.Reference) then
  1741. h := tObj.GetId
  1742. else
  1743. h := -1;
  1744. if inIntArray(daLocation.TreeObjects[i].AliveIDs, h) then begin
  1745. t_string := 'Alive '+daLocation.TreeObjects[i].Name;
  1746. daLocation.TreeObjects[i].Timer.Restart;
  1747. daLocation.TreeObjects[i].Timer.StartTime := -1;
  1748. end else begin
  1749. if inIntArray(daLocation.TreeObjects[i].DeadIDs, h) then begin
  1750. if (daLocation.TreeObjects[i].Timer.StartTime = -1) then
  1751. daLocation.TreeObjects[i].Timer.reStart;
  1752. t_string := 'Dead '+daLocation.TreeObjects[i].Name+'('+floatToStr(daLocation.TreeObjects[i].Timer.Elapsedtime / 1000)+')';
  1753. end else begin
  1754. if (daLocation.TreeObjects[i].Timer.StartTime = -1) then
  1755. daLocation.TreeObjects[i].Timer.reStart;
  1756. t_string := 'Unknown '+daLocation.TreeObjects[i].Name+' ID('+intToStr(h)+')';
  1757. end;
  1758. end;
  1759.  
  1760. if R_TileOnMM(daLocation.TreeObjects[i].Tile, RSTile) then begin
  1761. graphicOpti.DrawEllipse(RSTile, 5, 5, clAqua, false);
  1762. if R_TileOnMS(daLocation.TreeObjects[i].Tile, RSTile, daLocation.TreeObjects[i].Offset[0], daLocation.TreeObjects[i].Offset[1], daLocation.TreeObjects[i].Offset[2]) then begin
  1763. graphicOpti.DrawClippedText(t_string, 'upchars07', RSTile, true, clAqua);
  1764. end;
  1765. end;
  1766. end;
  1767. end;
  1768.  
  1769. tempInt := 20;
  1770. graphicOpti.DrawClippedText('Status: '+scriptStatus+', '+IntToStr(job), 'upchars07', Point(5, tempInt), true, 65280);
  1771. tempInt:=tempInt+15;
  1772. tempCheck := currentWoodXP-startWoodXP;
  1773. if (tempCheck > 0) then begin
  1774. tempCheck2 := Round(tempCheck*perHour);
  1775. graphicOpti.DrawClippedText('Woodcutting XP gained: '+intToStr(tempCheck)+'('+InttoStr(tempCheck2)+'), level: '+intToStr(currentWoodLevel)+'('+InttoStr(CurrentWoodLevel-StartWoodLevel)+') TTL: '+Reflect.Time.msToTime(Round(varExpToGoal(CurrentWoodXP, CurrentWoodLevel+1)/(((CurrentWoodXP-startWoodXP))/GetTimeRunning)), Time_Bare), 'upchars07', Point(5, tempInt), true, 65280);
  1776. tempInt:=tempInt+15;
  1777. end;
  1778. tempCheck := currentFletchXP-startFletchXP;
  1779. if (tempCheck > 0) then begin
  1780. tempCheck2 := Round(tempCheck*perHour);
  1781. graphicOpti.DrawClippedText('Fletching XP gained: '+intToStr(tempCheck)+'('+InttoStr(tempCheck2)+')', 'upchars07', Point(5, tempInt), true, 65280);
  1782. tempInt:=tempInt+15;
  1783. end;
  1784. tempCheck := currentFireXP-startFireXP;
  1785. if (tempCheck > 0) then begin
  1786. tempCheck2 := Round(tempCheck*perHour);
  1787. graphicOpti.DrawClippedText('Firemaking XP gained: '+intToStr(tempCheck)+'('+InttoStr(tempCheck2)+')', 'upchars07', Point(5, tempInt), true, 65280);
  1788. tempInt:=tempInt+15;
  1789. end;
  1790. tempCheck := 0;
  1791. for i:=0 to high(DaLocation.Logs) do
  1792. tempCheck := tempCheck + DaLocation.Logs[i].chopped;
  1793. if (tempCheck > 0) then begin
  1794. tempCheck2 := Round(tempCheck*perHour);
  1795. graphicOpti.DrawClippedText('Chopped: '+intToStr(tempCheck)+'('+InttoStr(tempCheck2)+'), nests: '+intToStr(nests), 'upchars07', Point(5, tempInt), true, 65280);
  1796. tempInt:=tempInt+15;
  1797. if daLocation.canBank and not daLocation.canFire and not daLocation.isSell and not daLocation.canFletch then begin
  1798. tempCheck := 0;
  1799. for i:=0 to high(DaLocation.Logs) do
  1800. tempCheck := tempCheck + (DaLocation.Logs[i].price*DaLocation.Logs[i].chopped);
  1801. tempCheck2 := Round(tempCheck*perHour);
  1802. graphicOpti.DrawClippedText('Profit: '+intToStr(tempCheck)+'('+InttoStr(tempCheck2)+')', 'upchars07', Point(5, tempInt), true, 65280);
  1803. tempInt:=tempInt+15;
  1804. end;
  1805. end;
  1806. if useBreaks then begin
  1807. graphicOpti.DrawClippedText('Breaks taken: '+intToStr(breaks)+', next break in: '+Reflect.Time.msToTime(breakInFinal-breakInTimer.Elapsedtime, Time_Bare), 'upchars07', Point(5, tempInt), true, 65280);
  1808. tempInt:=tempInt+15;
  1809. end;
  1810. graphicOpti.DrawClippedText('Current job: '+daLocation.Name+', bank:'+boolToStr(daLocation.canBank)+', fletch:'+boolToStr(daLocation.canfletch)+', fire:'+boolToStr(daLocation.canfire), 'upchars07', Point(5, tempInt), true, 65280);
  1811. tempInt:=tempInt+15;
  1812. graphicOpti.DrawClippedText('Ran for '+Reflect.Time.msToTime(getTimeRunning(), TIME_FORMAL)+'. Script version: '+floatToStr(version)+'('+floatToStr(fversion)+')', 'upchars07', Point(5, tempInt), true, 65280);
  1813.  
  1814. Reflect.Smart.Graphics.DrawBitmap(graphicOpti, Point(0, 0), true);
  1815. end;
  1816.  
  1817. procedure sleepScript(tim:integer);override;
  1818. var _t : treflecttimer;
  1819. begin
  1820. if cpuLoadWait < 0 then begin
  1821. sleep(tim);
  1822. end else begin
  1823. if cpuLoadWait = 0 then begin
  1824.  
  1825. end else begin
  1826. _t.restart;
  1827. while (_t.Elapsedtime < tim) do
  1828. sleep(cpuLoadWait);
  1829. end;
  1830. end;
  1831. end;
  1832.  
  1833. procedure updateScreen(_string:string);override;
  1834. begin
  1835. if (_string <> '') then
  1836. scriptStatus := _string;
  1837. if cpuLoadOften > 0 then
  1838. sleepScript(cpuLoadOften);
  1839. if updateScreenTimer.Elapsedtime > updateScreenOften then begin
  1840. doUpdateScreen;
  1841. updateScreenTimer.restart;
  1842. end;
  1843. end;
  1844.  
  1845. procedure TReflectObjectArray.GetAll2(ObjType: TObjectType; Distance: Integer; Position: TPoint);
  1846. var
  1847. Multi, BaseX, BaseY, X, Y, I, Count, Plane, HighX, HighY: integer;
  1848. Temp: TReflectObject;
  1849. ObjectHook, SceneHook: THook;
  1850. begin
  1851. if not Reflect.Mem.IsNull(ckObject) then
  1852. Reflect.Mem.FreeObjects(ckObject, True);
  1853. Distance := Round(Distance / 2);
  1854. if HookCache[TCacheKey.ckRegion][0] = 0 then
  1855. Reflect.Mem.GetObject(ckNull, ckRegion, Client_Region, 0, 0);
  1856. BaseX := Reflect.Misc.BaseX;
  1857. BaseY := Reflect.Misc.BaseY;
  1858. Position := Point(Position.X - BaseX, Position.Y - BaseY);
  1859. Plane := Reflect.Tiles.GetPlane;
  1860. HighX := Position.X + Distance;
  1861. HighY := Position.Y + Distance;
  1862. if HighX > 103 then
  1863. HighX := 103;
  1864. if HighY > 103 then
  1865. HighY := 103;
  1866. SetLength(Self, 10817);
  1867. for X := Position.X - Distance to HighX do
  1868. for Y := Position.Y - Distance to HighY do
  1869. begin
  1870. Reflect.Mem.Get3DObject(ckRegion, ckSceneTile, Region_SceneTiles,
  1871. Count, 0, Plane, X, Y);
  1872. Temp._ObjType := ObjType;
  1873. Temp._GetObject(Count, Point(BaseX + X, BaseY + Y));
  1874. Inc(Count);
  1875. if Temp.Reference = 0 then
  1876. Continue;
  1877. Self[I] := Temp;
  1878. Inc(I);
  1879. end;
  1880. SetLength(Self, I);
  1881. Reflect.Mem.FreeObjects(ckSceneTile, Count);
  1882. Self.Sort;
  1883. end;
  1884.  
  1885. function apeAtollIsChopping(_treeTile : TPoint;_ids:TIntegerArray):boolean;
  1886. var invC, _id : integer;
  1887. timer : treflecttimer;
  1888. tObj : TReflectObject;
  1889. begin
  1890. if daLocation.ID <> 36 then
  1891. exit(false);
  1892. timer.restart;
  1893. invC := Reflect.Inv.Count;
  1894. tObj.GetAt(ObjGame, _treeTile);
  1895. if not Reflect.Smart.IsNull(tObj.Reference) then
  1896. _id := tObj.GetId
  1897. else
  1898. _id := -1;
  1899. while ReflectPlayer.IsLoggedIn and (timer.Elapsedtime < 5000) and (invC = Reflect.Inv.Count) and
  1900. not ReflectPlayer.IsUnderAttack and inIntArray(_ids, _id) do begin
  1901. randomHandler;
  1902. FixActive;
  1903. UpdateScreen('Chopping tree...');
  1904. tObj.GetAt(ObjGame, _treeTile);
  1905. if not Reflect.Smart.IsNull(tObj.Reference) then
  1906. _id := tObj.GetId
  1907. else
  1908. _id := -1;
  1909. end;
  1910. result := (invC <> Reflect.Inv.Count);
  1911. end;
  1912.  
  1913. function daLocation.getLogIDs: TIntegerArray;
  1914. var i : integer;
  1915. begin
  1916. for i:=0 to high(daLocation.Logs) do begin
  1917. setLength(result, length(result)+1);
  1918. result[high(result)] := daLocation.Logs[i].ID;
  1919. end;
  1920. end;
  1921.  
  1922. function getActivatedSlot:integer;
  1923. var i : integer;
  1924. begin
  1925. result := -1;
  1926. for i:=1 to 28 do begin
  1927. if slotActivated(i) then begin
  1928. exit(i);
  1929. end;
  1930. end;
  1931. end;
  1932.  
  1933. function getActiveItemID:integer;
  1934. var i, h : integer;
  1935. _items : TReflectInvItemArray;
  1936. begin
  1937. _items.GetAll;
  1938. h := getActivatedSlot;
  1939.  
  1940. for i:=0 to high(_items) do
  1941. if (_items[i].GetInvSlot = h) then
  1942. exit(_items[i].GetID);
  1943. end;
  1944.  
  1945. function getGoodFireLaneIndices : TIntegerArray;
  1946. var i, h : integer;
  1947. _obj : TReflectObject;
  1948. goodArray : boolean;
  1949. begin
  1950. for i:=0 to high(daLocation.Firelanes) do begin
  1951. if Reflect.Tiles.GetPlane = daLocation.Firelanes[i].Plane then begin
  1952. goodArray := true;
  1953. for h:=daLocation.Firelanes[i].Tile.x downto (daLocation.Firelanes[i].Tile.x - daLocation.Firelanes[i].Length) do begin
  1954. _obj.GetAt(ObjGame, Point(h, daLocation.Firelanes[i].Tile.Y));
  1955. if not Reflect.Smart.IsNull(_obj.Reference) and inIntArray(FireIDs, _obj.GetId) then begin
  1956. goodArray := false;
  1957. break;
  1958. end;
  1959. end;
  1960. if goodArray then begin
  1961. setLength(result, length(result)+1);
  1962. result[high(result)] := i;
  1963. end;
  1964. end;
  1965. end;
  1966. end;
  1967.  
  1968. procedure dynChop;
  1969. var wclevel, i, coins : integer;
  1970. equ : string;
  1971. tP : TPoint;
  1972. tB : TBox;
  1973. _item : TReflectInvItem;
  1974. _obj : TReflectObject;
  1975. foundAxe : boolean;
  1976. logIDs : TIntegerArray;
  1977. begin
  1978. case job of
  1979. 7:begin
  1980. equ := R_GetEquipText;
  1981. foundAxe := ((equ = 'Steel axe') or (_item.Find('Steel axe')));
  1982.  
  1983. if (equ = 'Unarmed') and _item.Find('Bronze axe') then begin
  1984. if Reflect.Gametab.CurrentColor <> Gametab_Inventory then
  1985. Reflect.Gametab.Open(Gametab_Inventory);
  1986. _item.Interact(Mouse_left);
  1987. sleepScript(1000+random(1000));
  1988. end;
  1989.  
  1990. wclevel := ReflectPlayer.GetMaxSkillLevel(SKILL_WOODCUTTING);
  1991.  
  1992. logIDs := daLocation.getLogIDs;
  1993.  
  1994. if _item.Find('Coins') then
  1995. coins := _item.GetQuantity
  1996. else
  1997. coins := 0;
  1998.  
  1999. setLength(daLocation.DoorObjects, 2);
  2000. with daLocation.DoorObjects[0] do begin
  2001. TileOffset := [0, 0];
  2002. Plane := 0;
  2003. Actions := ['Open'];
  2004. Tile := Point(3215, 3245);
  2005. Offset := [-62, 0, 100];
  2006. TileEncompass := [Point(3208, 3244), Point(3210, 3242), Point(3212, 3242), Point(3214, 3244), Point(3214, 3249), Point(3212, 3251), Point(3210, 3251), Point(3208, 3249)];
  2007. end;
  2008. with daLocation.DoorObjects[1] do begin
  2009. Plane := 0;
  2010. TileOffset := [0, 0];
  2011. Tile := Point(3234, 3203);
  2012. Actions := ['Open'];
  2013. Offset := [-62, 0, 100];
  2014. TileEncompass := [Point(3233, 3205), Point(3233, 3201), Point(3228, 3201), Point(3228, 3205)];
  2015. end;
  2016.  
  2017. if wclevel >= 6 then begin
  2018. if coins >= 208 then begin
  2019. if not foundAxe then begin
  2020. while ReflectPlayer.IsLoggedIn and not foundAxe and (coins >= 208) do begin
  2021. foundAxe := ((R_GetEquipText = 'Steel axe') or (_item.Find('Steel axe')));
  2022. if _item.Find('Coins') then
  2023. coins := _item.GetQuantity
  2024. else
  2025. coins := 0;
  2026.  
  2027. updateScreen('Going to go buy axe.');
  2028. if Reflect.Inv.IsFull then begin
  2029. if _item.Find(LogIDs) then begin
  2030. _item.Interact('Drop');
  2031. sleepScript(1000+random(1000));
  2032. end;
  2033. end;
  2034.  
  2035. daLocation.DoorObjects[1].Open(false);
  2036. if not Reflect.Shop.IsOpen then begin
  2037. updateScreen('Trading Bob.');
  2038. R_TryInteractNPC([505], ['Trade'], 5, 0, 0, 50);
  2039. ReflectPlayer.FFlag(0, 5000+random(500));
  2040. sleepScript(random(1000));
  2041. end;
  2042. updateScreen('Buying axe.');
  2043. if Reflect.Shop.IsOpen then begin
  2044. Reflect.Mouse.Move(Point(235, 81), 5, 5, Mouse_right);
  2045. if Reflect.Text.ChooseOption('Buy 1') then
  2046. foundAxe := true;
  2047. sleepScript(1000+random(1000));
  2048. Reflect.Mouse.Move(Point(488, 43), 5, 5, Mouse_Left);
  2049. sleepScript(1000+random(1000));
  2050. end;
  2051. end;
  2052. end;
  2053. end;
  2054. end;
  2055.  
  2056. daLocation.DoorObjects[1].Open(true);
  2057. if wclevel >= 15 then begin
  2058. if wclevel >= 30 then begin
  2059. daLocation.ID := 1;
  2060.  
  2061. daLocation.canBank := true;
  2062. setLength(daLocation.BankNPCs, 1);
  2063. with daLocation.BankNPCs[0] do begin
  2064. Locations := [Point(3212, 3246)];
  2065. Names := [];
  2066. Plane := 0;
  2067. IDs := [507, 506];
  2068. Options := ['Trade S'];
  2069. Offset := [0, 0, 50];
  2070. end;
  2071. daLocation.isSell := true;
  2072.  
  2073. daLocation.isPower := false;
  2074. daLocation.canFletch := true;
  2075. daLocation.fletchPoint := Point(264, 413);
  2076. daLocation.TreeLocations := [Point(3234, 3242)];
  2077.  
  2078. daLocation.RunDirections := ['rand'];
  2079.  
  2080. setLength(daLocation.TreeObjects, 2)
  2081. with daLocation.TreeObjects[0] do begin
  2082. Offset := [62, 62, 200];
  2083. TileOffset := [0, 2];
  2084. Options := ['Chop down'];
  2085. Timer.Restart;
  2086. Timer.StartTime := -1;
  2087. Name := 'Willow';
  2088. Index := 0;
  2089. Tile := Point(3234, 3238);
  2090. AliveIDs := [7482, 7422, 7480, 7424, 1760, 1750, 1756, 1758];
  2091. DeadIds := [9471, 9711];
  2092. Plane := 0;
  2093. end;
  2094. with daLocation.TreeObjects[1] do begin
  2095. Offset := [-62, 62, 200];
  2096. TileOffset := [-1, -1];
  2097. Options := ['Chop down'];
  2098. Timer.Restart;
  2099. Timer.StartTime := -1;
  2100. Name := 'Willow';
  2101. Index := 1;
  2102. Tile := Point(3234, 3244);
  2103. AliveIDs := [7482, 7422, 7480, 7424, 1760, 1750, 1756, 1758];
  2104. DeadIds := [9471, 9711];
  2105. Plane := 0;
  2106. end;
  2107. end else begin
  2108. daLocation.ID := 0;
  2109.  
  2110. daLocation.canBank := true;
  2111. setLength(daLocation.BankNPCs, 1);
  2112. with daLocation.BankNPCs[0] do begin
  2113. Locations := [Point(3212, 3246)];
  2114. Names := [];
  2115. Plane := 0;
  2116. IDs := [507, 506];
  2117. Options := ['Trade S'];
  2118. Offset := [0, 0, 50];
  2119. end;
  2120. daLocation.isSell := true;
  2121.  
  2122. daLocation.isPower := false;
  2123. daLocation.canFletch := true;
  2124. daLocation.fletchPoint := Point(264, 413);
  2125.  
  2126. daLocation.RunDirections := ['rand'];
  2127. daLocation.TreeLocations := [Point(3206, 3242)];
  2128.  
  2129. setLength(daLocation.TreeObjects, 2)
  2130. with daLocation.TreeObjects[0] do begin
  2131. Offset := [0, 0, 200];
  2132. TileOffset := [0, -2];
  2133. Options := ['Chop down'];
  2134. Timer.Restart;
  2135. Timer.StartTime := -1;
  2136. Name := 'Oak';
  2137. Index := 0;
  2138. Tile := Point(3204, 3247);
  2139. AliveIDs := [7417, 1751];
  2140. DeadIDs := [1356];
  2141. Plane := 0;
  2142. end;
  2143. with daLocation.TreeObjects[1] do begin
  2144. Offset := [0, 0, 200];
  2145. TileOffset := [0, 2];
  2146. Options := ['Chop down'];
  2147. Timer.Restart;
  2148. Timer.StartTime := -1;
  2149. Name := 'Oak';
  2150. Index := 1;
  2151. Tile := Point(3205, 3240);
  2152. AliveIDs := [7417, 1751];
  2153. DeadIDs := [1356];
  2154. Plane := 0;
  2155. end;
  2156. end;
  2157. end else begin
  2158. daLocation.ID := 41;
  2159. setLength(daLocation.customIDs, 1);
  2160. daLocation.customIDs[0] := [1278, 1276, 1286, 1282, 2091, 2092];
  2161. daLocation.canFletch := true;
  2162. daLocation.fletchPoint := Point(62, 421);
  2163.  
  2164. daLocation.isPower := true;
  2165. daLocation.RunDirections := ['n'];
  2166.  
  2167. daLocation.TreeLocations := [Point(3171, 3233)];
  2168. daLocation.distanceCheck := 26;
  2169. end;
  2170. end;
  2171. end;
  2172. end;
  2173.  
  2174. procedure setupScript;
  2175. var i : integer;
  2176. AliveTreeIDs, DeadTreeIDs, AliveOakIDs, DeadOakIDs, AliveWillowIDs, DeadWillowIDs, AliveMapleIDs, DeadMapleIDs, AliveYewIDs, DeadYewIDs, AliveMagicIDs, DeadMagicIDs : TIntegerArray;
  2177. begin
  2178. graphicOpti.Init(Client.GetMBitmaps);
  2179. graphicOpti.SetSize(765, 503);
  2180. graphicOpti.SetTransparentColor(0);
  2181.  
  2182. AddOnTerminate('FreeDTMZ');
  2183.  
  2184. Reflect.Interfaces.CloseAll;
  2185. updateAllRefVars;
  2186. updateScreen('Setting up...');
  2187. useStats := true;
  2188. if useStats then
  2189. statsServer.Setup('6');
  2190.  
  2191. StartWoodXP := ReflectPlayer.GetSkillExp(SKILL_WOODCUTTING);
  2192. StartWoodLevel := ReflectPlayer.GetMaxSkillLevel(SKILL_WOODCUTTING);
  2193. StartFletchXP := ReflectPlayer.GetSkillExp(SKILL_FLETCHING);
  2194. StartFireXP := ReflectPlayer.GetSkillExp(SKILL_FIREMAKING);
  2195.  
  2196. LastXPXP := StartWoodXP;
  2197. LastXPCheck.restart;
  2198. statsWoodXP := StartWoodXP;
  2199. statsFletchXP := StartFletchXP;
  2200. statsFireXp := StartFireXP;
  2201. statsProfit := 0;
  2202. StatsTimer.restart;
  2203. gItemTim.restart;
  2204. StatsTime := 50000 + random(400000);
  2205.  
  2206. Nests := 0;
  2207.  
  2208. wasWorking := false;
  2209.  
  2210. ChopAnimationIDs := [879, 877, 875, 873, 871, 869, 867, 2846];
  2211. FletchAnimationIDs := [1248];
  2212. ShaftIDs := [52];
  2213. CoinsIDs := [995];
  2214. KnifeIDs := [946];
  2215. AxeIDs := [1351, 1349, 1357, 1359, 6739, 1355, 1361, 1353];
  2216. NestIDs := [5069, 5070, 5071, 5072, 5073, 5074, 7412, 11965];
  2217. TinderIDs := [590];
  2218. FireIDs := [26185, 2986, 9380];
  2219. FireAnimIDs := [733];
  2220. GreeGreeIDs := [4030, 4026, 4031, 4024];
  2221. TradingSticksIDs := [6306];
  2222.  
  2223. AliveTreeIDs := [1276, 1278];
  2224. DeadTreeIDs := [1342];
  2225. AliveOakIDs := [7417, 1751];
  2226. DeadOakIDs := [1356];
  2227. AliveWillowIDs := [7482, 7422, 7480, 7424, 1760, 1750, 1756, 1758];
  2228. DeadWillowIDs := [9471, 9711];
  2229. AliveMapleIDs := [7481, 1759];
  2230. DeadMapleIDs := [9712];
  2231. AliveYewIDs := [7420, 7419, 1754, 1753];
  2232. DeadYewIDs := [9714];
  2233. AliveMagicIDs := [7483, 1762, 1761];
  2234. DeadMagicIDs := [9713];
  2235.  
  2236. daLocation.BankLocations := [];
  2237. daLocation.BankNPCs := [];
  2238. daLocation.customIDs := [];
  2239. daLocation.customTPAs := [];
  2240. daLocation.DoorObjects := [];
  2241. daLocation.FireLanes := [];
  2242. daLocation.Logs := [];
  2243. daLocation.PathToBank := [];
  2244. daLocation.PathToTree := [];
  2245. daLocation.RunDirections := [];
  2246. daLocation.TreeLocations := [];
  2247. daLocation.TreeObjects := [];
  2248. daLocation.canBank := false;
  2249. daLocation.canFire := false;
  2250. daLocation.canFletch := false;
  2251. daLocation.isDynamic := false;
  2252. daLocation.isSell := false;
  2253. daLocation.ID := -1;
  2254. daLocation.Name := '';
  2255. daLocation.isFar := false;
  2256. daLocation.isPower := false;
  2257. daLocation.fletchPoint := Point(-1, -1);
  2258.  
  2259. PreviousTree.Tile := Point(-1, -1);
  2260.  
  2261. case job of
  2262. 8..10:begin
  2263. daLocation.canBank := true;
  2264. setLength(daLocation.BankLocations, 3);
  2265. with daLocation.BankLocations[0] do begin
  2266. Offset := [0, 0, 50];
  2267. TileOffset := [2, -1];
  2268. Tile := Point(3091, 3245);
  2269. Options := ['Bank Bank booth'];
  2270. Plane := 0;
  2271. Name := 'Bank';
  2272. end;
  2273. with daLocation.BankLocations[1] do begin
  2274. Offset := [0, 0, 50];
  2275. TileOffset := [2, 0];
  2276. Tile := Point(3091, 3243);
  2277. Options := ['Bank Bank booth'];
  2278. Plane := 0;
  2279. Name := 'Bank';
  2280. end;
  2281. with daLocation.BankLocations[2] do begin
  2282. Offset := [0, 0, 50];
  2283. TileOffset := [2, 1];
  2284. Tile := Point(3091, 3242);
  2285. Options := ['Bank Bank booth'];
  2286. Plane := 0;
  2287. Name := 'Bank';
  2288. end;
  2289.  
  2290. case job of
  2291. 8:begin
  2292. daLocation.ID := 8;
  2293. daLocation.Name := 'Draynor Oaks';
  2294.  
  2295. daLocation.canFletch := true;
  2296. daLocation.fletchPoint := Point(264, 413);
  2297.  
  2298. daLocation.RunDirections := ['n', 'w'];
  2299.  
  2300. daLocation.canFire := true;
  2301.  
  2302. setLength(daLocation.FireLanes, 5);
  2303. with daLocation.FireLanes[0] do begin
  2304. Plane := 0;
  2305. Length := 17;
  2306. Tile := Point(3098, 3247);
  2307. end;
  2308. with daLocation.FireLanes[1] do begin
  2309. Plane := 0;
  2310. Length := 26;
  2311. Tile := Point(3098, 3248);
  2312. end;
  2313. with daLocation.FireLanes[2] do begin
  2314. Plane := 0;
  2315. Length := 20;
  2316. Tile := Point(3097, 3249);
  2317. end;
  2318. with daLocation.FireLanes[3] do begin
  2319. Plane := 0;
  2320. Length := 16;
  2321. Tile := Point(3105, 3250);
  2322. end;
  2323. with daLocation.FireLanes[4] do begin
  2324. Plane := 0;
  2325. Length := 10;
  2326. Tile := Point(3087, 3250);
  2327. end;
  2328.  
  2329. setLength(daLocation.Logs, 1);
  2330. daLocation.Logs[0].ID := 1521;
  2331.  
  2332. daLocation.TreeLocations := [Point(3103, 3243)];
  2333.  
  2334. setLength(daLocation.TreeObjects, 1);
  2335. with daLocation.TreeObjects[0] do begin
  2336. Offset := [0, 0, 250];
  2337. TileOffset := [-2, 2];
  2338. Tile := Point(3103, 3243);
  2339. Options := ['Chop down Oak'];
  2340. Name := 'Oak';
  2341. Index := 0;
  2342. AliveIDs := AliveOakIDs;
  2343. DeadIds := DeadOakIDs;
  2344. Timer.Restart;
  2345. Timer.StartTime := -1;
  2346. end;
  2347. end;
  2348. 9:begin
  2349. daLocation.ID := 9;
  2350. daLocation.Name := 'Draynor Willows';
  2351.  
  2352. daLocation.canFletch := true;
  2353. daLocation.fletchPoint := Point(264, 413);
  2354.  
  2355. daLocation.RunDirections := ['n', 's', 'e'];
  2356.  
  2357. setLength(daLocation.Logs, 1);
  2358. daLocation.Logs[0].ID := 1519;
  2359.  
  2360. daLocation.canFire := true;
  2361.  
  2362. setLength(daLocation.FireLanes, 5);
  2363. with daLocation.FireLanes[0] do begin
  2364. Plane := 0;
  2365. Length := 17;
  2366. Tile := Point(3102, 3237);
  2367. end;
  2368. with daLocation.FireLanes[1] do begin
  2369. Plane := 0;
  2370. Length := 17;
  2371. Tile := Point(3102, 3238);
  2372. end;
  2373. with daLocation.FireLanes[2] do begin
  2374. Plane := 0;
  2375. Length := 22;
  2376. Tile := Point(3102, 3239);
  2377. end;
  2378. with daLocation.FireLanes[3] do begin
  2379. Plane := 0;
  2380. Length := 26;
  2381. Tile := Point(3116, 3234);
  2382. end;
  2383. with daLocation.FireLanes[4] do begin
  2384. Plane := 0;
  2385. Length := 21;
  2386. Tile := Point(3111, 3235);
  2387. end;
  2388.  
  2389. daLocation.TreeLocations := [Point(3083, 3237)];
  2390.  
  2391. setLength(daLocation.TreeObjects, 2);
  2392. with daLocation.TreeObjects[0] do begin
  2393. Offset := [75, 125, 200];
  2394. TileOffset := [2, 0];
  2395. Tile := Point(3083, 3237);
  2396. Options := ['Chop down Willow'];
  2397. Name := 'Willow';
  2398. Index := 0;
  2399. AliveIDs := AliveWillowIDs;
  2400. DeadIds := DeadWillowIDs;
  2401. Timer.Restart;
  2402. Timer.StartTime := -1;
  2403. Plane := 0;
  2404. end;
  2405. with daLocation.TreeObjects[1] do begin
  2406. Offset := [75, 75, 200];
  2407. TileOffset := [0, 2];
  2408. Tile := Point(3085, 3235);
  2409. Options := ['Chop down Willow'];
  2410. Name := 'Willow';
  2411. Index := 1;
  2412. AliveIDs := AliveWillowIDs;
  2413. DeadIds := DeadWillowIDs;
  2414. Timer.Restart;
  2415. Timer.StartTime := -1;
  2416. Plane := 0;
  2417. end;
  2418. {with daLocation.TreeObjects[2] do begin
  2419. Offset := [75, 75, 200];
  2420. TileOffset := [0, 2];
  2421. Tile := Point(3088, 3234);
  2422. Options := ['Chop down Willow'];
  2423. Name := 'Willow';
  2424. Index := 2;
  2425. AliveIDs := AliveWillowIDs;
  2426. DeadIds := DeadWillowIDs;
  2427. Timer.Restart;
  2428. Timer.StartTime := -1;
  2429. Plane := 0;
  2430. end;
  2431. with daLocation.TreeObjects[3] do begin
  2432. Offset := [75, 75, 200];
  2433. TileOffset := [0, 2];
  2434. Tile := Point(3087, 3231);
  2435. Options := ['Chop down Willow'];
  2436. Name := 'Willow';
  2437. Index := 3;
  2438. AliveIDs := AliveWillowIDs;
  2439. DeadIds := DeadWillowIDs;
  2440. Timer.Restart;
  2441. Timer.StartTime := -1;
  2442. Plane := 0;
  2443. end;
  2444. with daLocation.TreeObjects[4] do begin
  2445. Offset := [75, 75, 200];
  2446. TileOffset := [0, 2];
  2447. Tile := Point(3088, 3227);
  2448. Options := ['Chop down Willow'];
  2449. Name := 'Willow';
  2450. Index := 4;
  2451. AliveIDs := AliveWillowIDs;
  2452. DeadIds := DeadWillowIDs;
  2453. Timer.Restart;
  2454. Timer.StartTime := -1;
  2455. Plane := 0;
  2456. end; }
  2457. end;
  2458. 10:begin
  2459. daLocation.ID := 10;
  2460. daLocation.Name := 'Draynor Yews';
  2461.  
  2462. daLocation.RunDirections := ['rand'];
  2463.  
  2464. setLength(daLocation.Logs, 1);
  2465. daLocation.Logs[0].ID := 1515;
  2466.  
  2467. daLocation.isFar := true;
  2468.  
  2469. daLocation.TreeLocations := [Point(3152, 3231)];
  2470.  
  2471. daLocation.PathToBank := [Point(3152, 3229), Point(3147, 3229), Point(3142, 3229), Point(3137, 3229), Point(3132, 3229), Point(3127, 3228), Point(3122, 3228), Point(3117, 3228), Point(3112, 3230), Point(3108, 3234), Point(3104, 3238), Point(3105, 3243), Point(3104, 3248), Point(3099, 3250), Point(3094, 3248), Point(3093, 3243)];
  2472. daLocation.PathToTree := [Point(3093, 3244), Point(3096, 3249), Point(3101, 3250), Point(3105, 3246), Point(3105, 3241), Point(3105, 3236), Point(3109, 3233), Point(3113, 3230), Point(3118, 3228), Point(3123, 3228), Point(3128, 3228), Point(3133, 3228), Point(3138, 3228), Point(3143, 3228), Point(3148, 3229)];
  2473.  
  2474. setLength(daLocation.TreeObjects, 4)
  2475. with daLocation.TreeObjects[0] do begin
  2476. Offset := [0, 0, 250];
  2477. TileOffset := [0, -2];
  2478. Options := ['Chop down Yew'];
  2479. Timer.Restart;
  2480. Timer.StartTime := -1;
  2481. Name := 'Yew';
  2482. Index := 0;
  2483. Tile := Point(3147, 3255);
  2484. AliveIDs := AliveYewIDs;
  2485. DeadIDs := DeadYewIDs;
  2486. Plane := 0;
  2487. end;
  2488. with daLocation.TreeObjects[1] do begin
  2489. Offset := [0, 0, 250];
  2490. TileOffset := [0, 0];
  2491. Options := ['Chop down Yew'];
  2492. Timer.Restart;
  2493. Timer.StartTime := -1;
  2494. Name := 'Yew';
  2495. Index := 1;
  2496. Tile := Point(3152, 3231);
  2497. AliveIDs := AliveYewIDs;
  2498. DeadIDs := DeadYewIDs;
  2499. Plane := 0;
  2500. end;
  2501. with daLocation.TreeObjects[2] do begin
  2502. Offset := [0, 0, 250];
  2503. TileOffset := [0, 0];
  2504. Options := ['Chop down Yew'];
  2505. Timer.Restart;
  2506. Timer.StartTime := -1;
  2507. Name := 'Yew';
  2508. Index := 2;
  2509. Tile := Point(3166, 3220);
  2510. AliveIDs := AliveYewIDs;
  2511. DeadIDs := DeadYewIDs;
  2512. Plane := 0;
  2513. end;
  2514. with daLocation.TreeObjects[3] do begin
  2515. Offset := [0, 0, 250];
  2516. TileOffset := [-2, 0];
  2517. Options := ['Chop down Yew'];
  2518. Timer.Restart;
  2519. Timer.StartTime := -1;
  2520. Name := 'Yew';
  2521. Index := 3;
  2522. Tile := Point(3185, 3227);
  2523. AliveIDs := AliveYewIDs;
  2524. DeadIDs := DeadYewIDs;
  2525. Plane := 0;
  2526. end;
  2527. end;
  2528. end;
  2529. end;
  2530. 24..29:begin
  2531. daLocation.canBank := true;
  2532. setLength(daLocation.BankLocations, 1);
  2533. with daLocation.BankLocations[0] do begin
  2534. Offset := [0, 0, 50];
  2535. TileOffset := [0, -2];
  2536. Tile := Point(2727, 3494);
  2537. Options := ['Bank Bank booth'];
  2538. Plane := 0;
  2539. Name := 'Bank';
  2540. end;
  2541.  
  2542. case job of
  2543. 24:begin
  2544. daLocation.ID := 24;
  2545. daLocation.Name := 'Seers Oaks';
  2546.  
  2547. daLocation.RunDirections := ['rand'];
  2548.  
  2549. setLength(daLocation.Logs, 1);
  2550. daLocation.Logs[0].ID := 1521;
  2551.  
  2552. daLocation.TreeLocations := [Point(2731, 3485)];
  2553.  
  2554. setLength(daLocation.TreeObjects, 1)
  2555. with daLocation.TreeObjects[0] do begin
  2556. Offset := [0, 0, 200];
  2557. TileOffset := [0, 0];
  2558. Options := ['Chop down'];
  2559. Timer.Restart;
  2560. Timer.StartTime := -1;
  2561. Name := 'Oak';
  2562. Index := 0;
  2563. Tile := Point(2731, 3485);
  2564. AliveIDs := AliveOakIDs;
  2565. DeadIDs := DeadOakIDs;
  2566. Plane := 0;
  2567. end;
  2568. end;
  2569. 25:begin
  2570. daLocation.ID := 25;
  2571. daLocation.Name := 'Seers Willows';
  2572.  
  2573. daLocation.RunDirections := ['rand'];
  2574.  
  2575. setLength(daLocation.Logs, 1);
  2576. daLocation.Logs[0].ID := 1519;
  2577.  
  2578. daLocation.TreeLocations := [Point(2711, 3510)];
  2579.  
  2580. setLength(daLocation.TreeObjects, 5)
  2581. with daLocation.TreeObjects[0] do begin
  2582. Offset := [0, 0, 200];
  2583. TileOffset := [0, 0];
  2584. Options := ['Chop down'];
  2585. Timer.Restart;
  2586. Timer.StartTime := -1;
  2587. Name := 'Willow';
  2588. Index := 0;
  2589. Tile := Point(2719, 3506);
  2590. AliveIDs := AliveWillowIDs;
  2591. DeadIDs := DeadWillowIDs;
  2592. Plane := 0;
  2593. end;
  2594. with daLocation.TreeObjects[1] do begin
  2595. Offset := [0, 0, 200];
  2596. TileOffset := [0, 0];
  2597. Options := ['Chop down'];
  2598. Timer.Restart;
  2599. Timer.StartTime := -1;
  2600. Name := 'Willow';
  2601. Index := 1;
  2602. Tile := Point(2711, 3512);
  2603. AliveIDs := AliveWillowIDs;
  2604. DeadIDs := DeadWillowIDs;
  2605. Plane := 0;
  2606. end;
  2607. with daLocation.TreeObjects[2] do begin
  2608. Offset := [0, 0, 200];
  2609. TileOffset := [0, 0];
  2610. Options := ['Chop down'];
  2611. Timer.Restart;
  2612. Timer.StartTime := -1;
  2613. Name := 'Willow';
  2614. Index := 2;
  2615. Tile := Point(2709, 3511);
  2616. AliveIDs := AliveWillowIDs;
  2617. DeadIDs := DeadWillowIDs;
  2618. Plane := 0;
  2619. end;
  2620. with daLocation.TreeObjects[3] do begin
  2621. Offset := [0, 0, 200];
  2622. TileOffset := [0, 0];
  2623. Options := ['Chop down'];
  2624. Timer.Restart;
  2625. Timer.StartTime := -1;
  2626. Name := 'Willow';
  2627. Index := 3;
  2628. Tile := Point(2712, 3509);
  2629. AliveIDs := AliveWillowIDs;
  2630. DeadIDs := DeadWillowIDs;
  2631. Plane := 0;
  2632. end;
  2633. with daLocation.TreeObjects[4] do begin
  2634. Offset := [0, 0, 200];
  2635. TileOffset := [0, 0];
  2636. Options := ['Chop down'];
  2637. Timer.Restart;
  2638. Timer.StartTime := -1;
  2639. Name := 'Willow';
  2640. Index := 4;
  2641. Tile := Point(2708, 3514);
  2642. AliveIDs := AliveWillowIDs;
  2643. DeadIDs := DeadWillowIDs;
  2644. Plane := 0;
  2645. end;
  2646. end;
  2647. 26:begin
  2648. daLocation.ID := 26;
  2649. daLocation.Name := 'Seers Maples';
  2650.  
  2651. daLocation.RunDirections := ['rand'];
  2652.  
  2653. setLength(daLocation.Logs, 1);
  2654. daLocation.Logs[0].ID := 1517;
  2655.  
  2656. daLocation.TreeLocations := [Point(2728, 3500)];
  2657.  
  2658. daLocation.PathToBank := [Point(2725, 3501), Point(2720, 3499), Point(2718, 3494), Point(2720, 3489), Point(2724, 3486), Point(2725, 3491)];
  2659. daLocation.PathToTree := [Point(2725, 3491), Point(2725, 3486), Point(2720, 3489), Point(2718, 3494), Point(2721, 3499), Point(2726, 3499)];
  2660.  
  2661. setLength(daLocation.TreeObjects, 4)
  2662. with daLocation.TreeObjects[0] do begin
  2663. Offset := [0, 0, 200];
  2664. TileOffset := [0, 0];
  2665. Options := ['Chop down'];
  2666. Timer.Restart;
  2667. Timer.StartTime := -1;
  2668. Name := 'Maple';
  2669. Index := 0;
  2670. Tile := Point(2721, 3502);
  2671. AliveIDs := AliveMapleIDs;
  2672. DeadIDs := DeadMapleIDs;
  2673. Plane := 0;
  2674. end;
  2675. with daLocation.TreeObjects[1] do begin
  2676. Offset := [0, 0, 200];
  2677. TileOffset := [0, 0];
  2678. Options := ['Chop down'];
  2679. Timer.Restart;
  2680. Timer.StartTime := -1;
  2681. Name := 'Maple';
  2682. Index := 1;
  2683. Tile := Point(2727, 3502);
  2684. AliveIDs := AliveMapleIDs;
  2685. DeadIDs := DeadMapleIDs;
  2686. Plane := 0;
  2687. end;
  2688. with daLocation.TreeObjects[2] do begin
  2689. Offset := [0, 0, 200];
  2690. TileOffset := [0, 0];
  2691. Options := ['Chop down'];
  2692. Timer.Restart;
  2693. Timer.StartTime := -1;
  2694. Name := 'Maple';
  2695. Index := 2;
  2696. Tile := Point(2730, 3502);
  2697. AliveIDs := AliveMapleIDs;
  2698. DeadIDs := DeadMapleIDs;
  2699. Plane := 0;
  2700. end;
  2701. with daLocation.TreeObjects[3] do begin
  2702. Offset := [0, 0, 200];
  2703. TileOffset := [0, 0];
  2704. Options := ['Chop down'];
  2705. Timer.Restart;
  2706. Timer.StartTime := -1;
  2707. Name := 'Maple';
  2708. Index := 3;
  2709. Tile := Point(2732, 3500);
  2710. AliveIDs := AliveMapleIDs;
  2711. DeadIDs := DeadMapleIDs;
  2712. Plane := 0;
  2713. end;
  2714. end;
  2715. 27:begin
  2716. daLocation.ID := 27;
  2717. daLocation.Name := 'Seers Yews';
  2718.  
  2719. daLocation.RunDirections := ['rand'];
  2720.  
  2721. setLength(daLocation.Logs, 1);
  2722. daLocation.Logs[0].ID := 1515;
  2723.  
  2724. daLocation.TreeLocations := [Point(2710, 3462)];
  2725.  
  2726. daLocation.PathToBank := [Point(2714, 3462), Point(2718, 3465), Point(2719, 3470), Point(2723, 3474), Point(2725, 3479), Point(2724, 3484), Point(2725, 3489), Point(2725, 3491)];
  2727. daLocation.PathToTree := [Point(2726, 3491), Point(2726, 3486), Point(2727, 3481), Point(2726, 3476), Point(2724, 3471), Point(2723, 3466), Point(2718, 3463), Point(2714, 3462)];
  2728.  
  2729. setLength(daLocation.TreeObjects, 3)
  2730. with daLocation.TreeObjects[0] do begin
  2731. Offset := [0, 0, 200];
  2732. TileOffset := [0, 0];
  2733. Options := ['Chop down'];
  2734. Timer.Restart;
  2735. Timer.StartTime := -1;
  2736. Name := 'Yew';
  2737. Index := 0;
  2738. Tile := Point(2715, 3460);
  2739. AliveIDs := AliveYewIds;
  2740. DeadIDs := DeadYewIDs;
  2741. Plane := 0;
  2742. end;
  2743. with daLocation.TreeObjects[1] do begin
  2744. Offset := [0, 0, 200];
  2745. TileOffset := [0, 0];
  2746. Options := ['Chop down'];
  2747. Timer.Restart;
  2748. Timer.StartTime := -1;
  2749. Name := 'Yew';
  2750. Index := 1;
  2751. Tile := Point(2706, 3460);
  2752. AliveIDs := AliveYewIds;
  2753. DeadIDs := DeadYewIDs;
  2754. Plane := 0;
  2755. end;
  2756. with daLocation.TreeObjects[2] do begin
  2757. Offset := [0, 0, 200];
  2758. TileOffset := [0, 0];
  2759. Options := ['Chop down'];
  2760. Timer.Restart;
  2761. Timer.StartTime := -1;
  2762. Name := 'Yew';
  2763. Index := 2;
  2764. Tile := Point(2706, 3465);
  2765. AliveIDs := AliveYewIds;
  2766. DeadIDs := DeadYewIDs;
  2767. Plane := 0;
  2768. end;
  2769. end;
  2770. 28:begin
  2771. daLocation.ID := 28;
  2772. daLocation.Name := 'Seers Magics';
  2773.  
  2774. daLocation.RunDirections := ['rand'];
  2775.  
  2776. setLength(daLocation.Logs, 1);
  2777. daLocation.Logs[0].ID := 1513;
  2778.  
  2779. daLocation.TreeLocations := [Point(2693, 3425)];
  2780.  
  2781. daLocation.PathToBank := [Point(2695, 3425), Point(2700, 3425), Point(2702, 3430), Point(2702, 3435), Point(2701, 3440), Point(2704, 3444), Point(2708, 3448), Point(2713, 3451), Point(2717, 3454), Point(2719, 3459), Point(2719, 3464), Point(2719, 3469), Point(2722, 3473), Point(2725, 3478), Point(2727, 3483), Point(2726, 3488), Point(2725, 3491)];
  2782. daLocation.PathToTree := [Point(2726, 3490), Point(2726, 3485), Point(2727, 3480), Point(2727, 3475), Point(2727, 3470), Point(2728, 3465), Point(2727, 3460), Point(2725, 3455), Point(2721, 3452), Point(2721, 3447), Point(2719, 3442), Point(2714, 3440), Point(2713, 3435), Point(2711, 3430), Point(2707, 3426), Point(2702, 3425), Point(2697, 3425), Point(2693, 3424)];
  2783.  
  2784. setLength(daLocation.TreeObjects, 3)
  2785. with daLocation.TreeObjects[0] do begin
  2786. Offset := [0, 0, 200];
  2787. TileOffset := [0, 0];
  2788. Options := ['Chop down'];
  2789. Timer.Restart;
  2790. Timer.StartTime := -1;
  2791. Name := 'Magic';
  2792. Index := 0;
  2793. Tile := Point(2692, 3425);
  2794. AliveIDs := AliveMagicIDs;
  2795. DeadIDs := DeadMagicIDs;
  2796. Plane := 0;
  2797. end;
  2798. with daLocation.TreeObjects[1] do begin
  2799. Offset := [0, 0, 200];
  2800. TileOffset := [0, 0];
  2801. Options := ['Chop down'];
  2802. Timer.Restart;
  2803. Timer.StartTime := -1;
  2804. Name := 'Magic';
  2805. Index := 1;
  2806. Tile := Point(2691, 3428);
  2807. AliveIDs := AliveMagicIDs;
  2808. DeadIDs := DeadMagicIDs;
  2809. Plane := 0;
  2810. end;
  2811. with daLocation.TreeObjects[2] do begin
  2812. Offset := [0, 0, 200];
  2813. TileOffset := [0, 0];
  2814. Options := ['Chop down'];
  2815. Timer.Restart;
  2816. Timer.StartTime := -1;
  2817. Name := 'Magic';
  2818. Index := 2;
  2819. Tile := Point(2696, 3424);
  2820. AliveIDs := AliveMagicIDs;
  2821. DeadIDs := DeadMagicIDs;
  2822. Plane := 0;
  2823. end;
  2824. end;
  2825. 29:begin
  2826. daLocation.ID := 29;
  2827. daLocation.Name := 'Seers Magics(2)';
  2828.  
  2829. daLocation.RunDirections := ['rand'];
  2830.  
  2831. setLength(daLocation.Logs, 1);
  2832. daLocation.Logs[0].ID := 1513;
  2833.  
  2834. daLocation.TreeLocations := [Point(2700, 3397)];
  2835.  
  2836. daLocation.PathToBank := [Point(2701, 3396), Point(2704, 3392), Point(2709, 3392), Point(2714, 3393), Point(2714, 3398), Point(2716, 3403), Point(2715, 3408), Point(2715, 3413), Point(2714, 3418), Point(2714, 3423), Point(2713, 3428), Point(2713, 3433), Point(2713, 3438), Point(2710, 3442), Point(2712, 3447), Point(2717, 3449), Point(2720, 3453), Point(2720, 3458), Point(2720, 3463), Point(2720, 3468), Point(2722, 3473), Point(2725, 3478), Point(2727, 3483), Point(2726, 3488), Point(2726, 3491)];
  2837. daLocation.PathToTree := [Point(2725, 3491), Point(2726, 3486), Point(2727, 3481), Point(2726, 3476), Point(2724, 3471), Point(2723, 3466), Point(2723, 3461), Point(2719, 3457), Point(2716, 3453), Point(2713, 3448), Point(2710, 3444), Point(2710, 3439), Point(2711, 3434), Point(2713, 3429), Point(2713, 3424), Point(2713, 3419), Point(2715, 3414), Point(2715, 3409), Point(2716, 3404), Point(2716, 3399), Point(2715, 3394), Point(2710, 3393), Point(2705, 3392), Point(2701, 3395), Point(2702, 3397)];
  2838.  
  2839. setLength(daLocation.TreeObjects, 4)
  2840. with daLocation.TreeObjects[0] do begin
  2841. Offset := [0, 0, 200];
  2842. TileOffset := [0, 0];
  2843. Options := ['Chop down'];
  2844. Timer.Restart;
  2845. Timer.StartTime := -1;
  2846. Name := 'Magic';
  2847. Index := 0;
  2848. Tile := Point(2705, 3397);
  2849. AliveIDs := AliveMagicIDs;
  2850. DeadIDs := DeadMagicIDs;
  2851. Plane := 0;
  2852. end;
  2853. with daLocation.TreeObjects[1] do begin
  2854. Offset := [0, 0, 200];
  2855. TileOffset := [0, 0];
  2856. Options := ['Chop down'];
  2857. Timer.Restart;
  2858. Timer.StartTime := -1;
  2859. Name := 'Magic';
  2860. Index := 1;
  2861. Tile := Point(2705, 3399);
  2862. AliveIDs := AliveMagicIDs;
  2863. DeadIDs := DeadMagicIDs;
  2864. Plane := 0;
  2865. end;
  2866. with daLocation.TreeObjects[2] do begin
  2867. Offset := [0, 0, 200];
  2868. TileOffset := [0, 0];
  2869. Options := ['Chop down'];
  2870. Timer.Restart;
  2871. Timer.StartTime := -1;
  2872. Name := 'Magic';
  2873. Index := 2;
  2874. Tile := Point(2699, 3397);
  2875. AliveIDs := AliveMagicIDs;
  2876. DeadIDs := DeadMagicIDs;
  2877. Plane := 0;
  2878. end;
  2879. with daLocation.TreeObjects[3] do begin
  2880. Offset := [0, 0, 200];
  2881. TileOffset := [0, 0];
  2882. Options := ['Chop down'];
  2883. Timer.Restart;
  2884. Timer.StartTime := -1;
  2885. Name := 'Magic';
  2886. Index := 3;
  2887. Tile := Point(2699, 3399);
  2888. AliveIDs := AliveMagicIDs;
  2889. DeadIDs := DeadMagicIDs;
  2890. Plane := 0;
  2891. end;
  2892. end;
  2893. end;
  2894. end;
  2895. 30..31:begin
  2896. daLocation.canBank := true;
  2897. setLength(daLocation.BankLocations, 1);
  2898. with daLocation.BankLocations[0] do begin
  2899. Offset := [0, 0, 50];
  2900. TileOffset := [0, -2];
  2901. Tile := Point(2809, 3442);
  2902. Options := ['Bank Bank booth'];
  2903. Plane := 0;
  2904. Name := 'Bank';
  2905. end;
  2906. case job of
  2907. 30:begin
  2908. daLocation.ID := 30;
  2909. daLocation.Name := 'Catherby Willows';
  2910.  
  2911. daLocation.RunDirections := ['rand'];
  2912.  
  2913. setLength(daLocation.Logs, 1);
  2914. daLocation.Logs[0].ID := 1519;
  2915.  
  2916. daLocation.TreeLocations := [Point(2783, 3428)];
  2917.  
  2918. setLength(daLocation.TreeObjects, 5)
  2919. with daLocation.TreeObjects[0] do begin
  2920. Offset := [0, 0, 200];
  2921. TileOffset := [0, 0];
  2922. Options := ['Chop down'];
  2923. Timer.Restart;
  2924. Timer.StartTime := -1;
  2925. Name := 'Willow';
  2926. Index := 0;
  2927. Tile := Point(2786, 3430);
  2928. AliveIDs := AliveWillowIDs;
  2929. DeadIDs := DeadWillowIDs;
  2930. Plane := 0;
  2931. end;
  2932. with daLocation.TreeObjects[1] do begin
  2933. Offset := [0, 0, 200];
  2934. TileOffset := [0, 0];
  2935. Options := ['Chop down'];
  2936. Timer.Restart;
  2937. Timer.StartTime := -1;
  2938. Name := 'Willow';
  2939. Index := 1;
  2940. Tile := Point(2783, 3427);
  2941. AliveIDs := AliveWillowIDs;
  2942. DeadIDs := DeadWillowIDs;
  2943. Plane := 0;
  2944. end;
  2945. with daLocation.TreeObjects[2] do begin
  2946. Offset := [0, 0, 200];
  2947. TileOffset := [0, 0];
  2948. Options := ['Chop down'];
  2949. Timer.Restart;
  2950. Timer.StartTime := -1;
  2951. Name := 'Willow';
  2952. Index := 2;
  2953. Tile := Point(2781, 3428);
  2954. AliveIDs := AliveWillowIDs;
  2955. DeadIDs := DeadWillowIDs;
  2956. Plane := 0;
  2957. end;
  2958. with daLocation.TreeObjects[3] do begin
  2959. Offset := [0, 0, 200];
  2960. TileOffset := [0, 0];
  2961. Options := ['Chop down'];
  2962. Timer.Restart;
  2963. Timer.StartTime := -1;
  2964. Name := 'Willow';
  2965. Index := 3;
  2966. Tile := Point(2768, 3427);
  2967. AliveIDs := AliveWillowIDs;
  2968. DeadIDs := DeadWillowIDs;
  2969. Plane := 0;
  2970. end;
  2971. with daLocation.TreeObjects[4] do begin
  2972. Offset := [0, 0, 200];
  2973. TileOffset := [0, 0];
  2974. Options := ['Chop down'];
  2975. Timer.Restart;
  2976. Timer.StartTime := -1;
  2977. Name := 'Willow';
  2978. Index := 4;
  2979. Tile := Point(2771, 3428);
  2980. AliveIDs := AliveWillowIDs;
  2981. DeadIDs := DeadWillowIDs;
  2982. Plane := 0;
  2983. end;
  2984. end;
  2985. 31:begin
  2986. daLocation.ID := 31;
  2987. daLocation.Name := 'Catherby Yews';
  2988.  
  2989. daLocation.RunDirections := ['rand'];
  2990.  
  2991. setLength(daLocation.Logs, 1);
  2992. daLocation.Logs[0].ID := 1515;
  2993.  
  2994. daLocation.TreeLocations := [Point(2758, 3432)];
  2995.  
  2996. daLocation.PathToBank := [Point(2760, 3430), Point(2765, 3430), Point(2770, 3431), Point(2775, 3433), Point(2780, 3435), Point(2785, 3432), Point(2790, 3432), Point(2795, 3433), Point(2800, 3433), Point(2805, 3433), Point(2808, 3437), Point(2809, 3439)];
  2997. daLocation.PathToTree := [Point(2809, 3439), Point(2805, 3436), Point(2801, 3433), Point(2796, 3433), Point(2791, 3433), Point(2786, 3432), Point(2781, 3434), Point(2776, 3435), Point(2771, 3433), Point(2766, 3431), Point(2761, 3430), Point(2759, 3430)];
  2998.  
  2999. setLength(daLocation.TreeObjects, 6)
  3000. with daLocation.TreeObjects[0] do begin
  3001. Offset := [0, 0, 200];
  3002. TileOffset := [0, 0];
  3003. Options := ['Chop down'];
  3004. Timer.Restart;
  3005. Timer.StartTime := -1;
  3006. Name := 'Yew';
  3007. Index := 0;
  3008. Tile := Point(2758, 3434);
  3009. AliveIDs := AliveYewIDs;
  3010. DeadIDs := DeadYewIDs;
  3011. Plane := 0;
  3012. end;
  3013. with daLocation.TreeObjects[1] do begin
  3014. Offset := [0, 0, 200];
  3015. TileOffset := [0, 0];
  3016. Options := ['Chop down'];
  3017. Timer.Restart;
  3018. Timer.StartTime := -1;
  3019. Name := 'Yew';
  3020. Index := 1;
  3021. Tile := Point(2756, 3431);
  3022. AliveIDs := AliveYewIDs;
  3023. DeadIDs := DeadYewIDs;
  3024. Plane := 0;
  3025. end;
  3026. with daLocation.TreeObjects[2] do begin
  3027. Offset := [0, 0, 200];
  3028. TileOffset := [0, 0];
  3029. Options := ['Chop down'];
  3030. Timer.Restart;
  3031. Timer.StartTime := -1;
  3032. Name := 'Yew';
  3033. Index := 2;
  3034. Tile := Point(2761, 3432);
  3035. AliveIDs := AliveYewIDs;
  3036. DeadIDs := DeadYewIDs;
  3037. Plane := 0;
  3038. end;
  3039. with daLocation.TreeObjects[3] do begin
  3040. Offset := [0, 0, 200];
  3041. TileOffset := [0, 0];
  3042. Options := ['Chop down'];
  3043. Timer.Restart;
  3044. Timer.StartTime := -1;
  3045. Name := 'Yew';
  3046. Index := 3;
  3047. Tile := Point(2755, 3434);
  3048. AliveIDs := AliveYewIDs;
  3049. DeadIDs := DeadYewIDs;
  3050. Plane := 0;
  3051. end;
  3052. with daLocation.TreeObjects[4] do begin
  3053. Offset := [0, 0, 200];
  3054. TileOffset := [0, 0];
  3055. Options := ['Chop down'];
  3056. Timer.Restart;
  3057. Timer.StartTime := -1;
  3058. Name := 'Yew';
  3059. Index := 4;
  3060. Tile := Point(2760, 3428);
  3061. AliveIDs := AliveYewIDs;
  3062. DeadIDs := DeadYewIDs;
  3063. Plane := 0;
  3064. end;
  3065. with daLocation.TreeObjects[5] do begin
  3066. Offset := [0, 0, 200];
  3067. TileOffset := [0, 0];
  3068. Options := ['Chop down'];
  3069. Timer.Restart;
  3070. Timer.StartTime := -1;
  3071. Name := 'Yew';
  3072. Index := 5;
  3073. Tile := Point(2766, 3428);
  3074. AliveIDs := AliveYewIDs;
  3075. DeadIDs := DeadYewIDs;
  3076. Plane := 0;
  3077. end;
  3078. end;
  3079. end;
  3080. end;
  3081. 19:begin
  3082. daLocation.canBank := true;
  3083. setLength(daLocation.BankLocations, 1);
  3084. with daLocation.BankLocations[0] do begin
  3085. Offset := [0, 0, 50];
  3086. TileOffset := [-2, 0];
  3087. Tile := Point(3186, 3436);
  3088. Options := ['Bank Bank booth'];
  3089. Plane := 0;
  3090. Name := 'Bank';
  3091. end;
  3092.  
  3093. daLocation.ID := 19;
  3094. daLocation.Name := 'Varrock Oaks (west)';
  3095.  
  3096. daLocation.RunDirections := ['rand'];
  3097.  
  3098. setLength(daLocation.Logs, 1);
  3099. daLocation.Logs[0].ID := 1521;
  3100.  
  3101. daLocation.PathToBank := [Point(3170, 3422), Point(3174, 3425), Point(3178, 3428), Point(3182, 3432), Point(3184, 3436)];
  3102. daLocation.PathToTree := [Point(3184, 3436), Point(3181, 3432), Point(3177, 3429), Point(3173, 3426), Point(3170, 3421), Point(3170, 3423)];
  3103. daLocation.TreeLocations := [Point(3170, 3422)];
  3104.  
  3105. setLength(daLocation.TreeObjects, 3)
  3106. with daLocation.TreeObjects[0] do begin
  3107. Offset := [0, 0, 200];
  3108. TileOffset := [0, 0];
  3109. Options := ['Chop down'];
  3110. Timer.Restart;
  3111. Timer.StartTime := -1;
  3112. Name := 'Oak';
  3113. Index := 0;
  3114. Tile := Point(3168, 3421);
  3115. AliveIDs := AliveOakIDs;
  3116. DeadIDs := DeadOakIDs;
  3117. Plane := 0;
  3118. end;
  3119. with daLocation.TreeObjects[1] do begin
  3120. Offset := [0, 0, 200];
  3121. TileOffset := [0, 0];
  3122. Options := ['Chop down'];
  3123. Timer.Restart;
  3124. Timer.StartTime := -1;
  3125. Name := 'Oak';
  3126. Index := 1;
  3127. Tile := Point(3166, 3412);
  3128. AliveIDs := AliveOakIDs;
  3129. DeadIDs := DeadOakIDs;
  3130. Plane := 0;
  3131. end;
  3132. with daLocation.TreeObjects[2] do begin
  3133. Offset := [0, 0, 200];
  3134. TileOffset := [0, 0];
  3135. Options := ['Chop down'];
  3136. Timer.Restart;
  3137. Timer.StartTime := -1;
  3138. Name := 'Oak';
  3139. Index := 2;
  3140. Tile := Point(3162, 3417);
  3141. AliveIDs := AliveOakIDs;
  3142. DeadIDs := DeadOakIDs;
  3143. Plane := 0;
  3144. end;
  3145. end;
  3146. 20:begin
  3147. daLocation.Name := 'Varrock Yews (palace)';
  3148. daLocation.ID := 20;
  3149.  
  3150. daLocation.RunDirections := ['rand'];
  3151.  
  3152. daLocation.canBank := true;
  3153. setLength(daLocation.BankNPCs, 1);
  3154. with daLocation.BankNPCs[0] do begin
  3155. Locations := [Point(3167, 3489)];
  3156. Names := [];
  3157. Plane := 0;
  3158. IDs := [5456, 5455, 5454, 5453];
  3159. Options := ['Bank B'];
  3160. Offset := [0, 0, 50];
  3161. end;
  3162.  
  3163. setLength(daLocation.Logs, 1);
  3164. daLocation.Logs[0].ID := 1515;
  3165.  
  3166. daLocation.TreeLocations := [Point(3207, 3502)];
  3167.  
  3168. daLocation.PathToTree := [Point(3167, 3489), Point(3173, 3490), Point(3179, 3490), Point(3185, 3490), Point(3191, 3491), Point(3196, 3494), Point(3197, 3500), Point(3203, 3502), Point(3206, 3502)];
  3169. daLocation.PathToBank := [Point(3206, 3502), Point(3200, 3502), Point(3195, 3499), Point(3192, 3494), Point(3187, 3491), Point(3181, 3491), Point(3175, 3491), Point(3169, 3491), Point(3167, 3489)];
  3170.  
  3171. setLength(daLocation.TreeObjects, 3)
  3172. with daLocation.TreeObjects[0] do begin
  3173. Offset := [0, 0, 250];
  3174. TileOffset := [2, -2];
  3175. Options := ['Chop down Yew'];
  3176. Timer.Restart;
  3177. Timer.StartTime := -1;
  3178. Name := 'Yew';
  3179. Index := 0;
  3180. Tile := Point(3205, 3504);
  3181. AliveIDs := AliveYewIDs;
  3182. DeadIDs := DeadYewIDs;
  3183. Plane := 0;
  3184. end;
  3185. with daLocation.TreeObjects[1] do begin
  3186. Offset := [0, 0, 250];
  3187. TileOffset := [0, 2];
  3188. Options := ['Chop down Yew'];
  3189. Timer.Restart;
  3190. Timer.StartTime := -1;
  3191. Name := 'Yew';
  3192. Index := 1;
  3193. Tile := Point(3209, 3500);
  3194. AliveIDs := AliveYewIDs;
  3195. DeadIDs := DeadYewIDs;
  3196. Plane := 0;
  3197. end;
  3198. with daLocation.TreeObjects[2] do begin
  3199. Offset := [0, 0, 250];
  3200. TileOffset := [-2, -2];
  3201. Options := ['Chop down Yew'];
  3202. Timer.Restart;
  3203. Timer.StartTime := -1;
  3204. Name := 'Yew';
  3205. Index := 2;
  3206. Tile := Point(3222, 3503);
  3207. AliveIDs := AliveYewIDs;
  3208. DeadIDs := DeadYewIDs;
  3209. Plane := 0;
  3210. end;
  3211. end;
  3212. 21..23:begin
  3213. daLocation.canBank := true;
  3214.  
  3215. setLength(daLocation.BankLocations, 1);
  3216. with daLocation.BankLocations[0] do begin
  3217. Offset := [0, 0, 50];
  3218. TileOffset := [0, 0];
  3219. Tile := Point(3254, 3419);
  3220. Options := ['Bank B'];
  3221. Plane := 0;
  3222. Name := 'Bank';
  3223. end;
  3224.  
  3225. case job of
  3226. 21:begin
  3227. daLocation.ID := 21;
  3228.  
  3229. daLocation.RunDirections := ['rand'];
  3230.  
  3231. setLength(daLocation.Logs, 1);
  3232. daLocation.Logs[0].ID := 1521;
  3233.  
  3234. daLocation.Name := 'Varrock East Oaks';
  3235.  
  3236. daLocation.TreeLocations := [Point(3280, 3431)];
  3237.  
  3238. setLength(daLocation.TreeObjects, 3)
  3239. with daLocation.TreeObjects[0] do begin
  3240. Offset := [0, 0, 200];
  3241. TileOffset := [0, 0];
  3242. Options := ['Chop down'];
  3243. Timer.Restart;
  3244. Timer.StartTime := -1;
  3245. Name := 'Oak';
  3246. Index := 0;
  3247. Tile := Point(3280, 3431);
  3248. AliveIDs := AliveOakIDs;
  3249. DeadIDs := DeadOakIDs;
  3250. Plane := 0;
  3251. end;
  3252. with daLocation.TreeObjects[1] do begin
  3253. Offset := [0, 0, 200];
  3254. TileOffset := [0, 0];
  3255. Options := ['Chop down'];
  3256. Timer.Restart;
  3257. Timer.StartTime := -1;
  3258. Name := 'Oak';
  3259. Index := 1;
  3260. Tile := Point(3282, 3425);
  3261. AliveIDs := AliveOakIDs;
  3262. DeadIDs := DeadOakIDs;
  3263. Plane := 0;
  3264. end;
  3265. with daLocation.TreeObjects[2] do begin
  3266. Offset := [0, 0, 200];
  3267. TileOffset := [0, 0];
  3268. Options := ['Chop down'];
  3269. Timer.Restart;
  3270. Timer.StartTime := -1;
  3271. Name := 'Oak';
  3272. Index := 2;
  3273. Tile := Point(3277, 3437);
  3274. AliveIDs := AliveOakIDs;
  3275. DeadIDs := DeadOakIDs;
  3276. Plane := 0;
  3277. end;
  3278. end;
  3279. 22:begin
  3280. daLocation.ID := 22;
  3281.  
  3282. daLocation.RunDirections := ['rand'];
  3283.  
  3284. setLength(daLocation.Logs, 1);
  3285. daLocation.Logs[0].ID := 1515;
  3286.  
  3287. daLocation.Name := 'Varrock East Yews (pray)';
  3288.  
  3289. daLocation.TreeLocations := [Point(3249, 3473)];
  3290.  
  3291. setLength(daLocation.TreeObjects, 1)
  3292. with daLocation.TreeObjects[0] do begin
  3293. Offset := [0, 0, 200];
  3294. TileOffset := [0, 0];
  3295. Options := ['Chop down'];
  3296. Timer.Restart;
  3297. Timer.StartTime := -1;
  3298. Name := 'Yew';
  3299. Index := 0;
  3300. Tile := Point(3249, 3473);
  3301. AliveIDs := AliveYewIDs;
  3302. DeadIDs := DeadYewIDs;
  3303. Plane := 0;
  3304. end;
  3305. end;
  3306. 23:begin
  3307. daLocation.ID := 23;
  3308.  
  3309. daLocation.RunDirections := ['rand'];
  3310.  
  3311. setLength(daLocation.Logs, 1);
  3312. daLocation.Logs[0].ID := 1515;
  3313.  
  3314. daLocation.Name := 'Varrock East Yews';
  3315.  
  3316. daLocation.TreeLocations := [Point(3271, 3471)];
  3317.  
  3318. daLocation.isFar := true;
  3319.  
  3320. setLength(daLocation.TreeObjects, 3)
  3321. with daLocation.TreeObjects[0] do begin
  3322. Offset := [0, 0, 200];
  3323. TileOffset := [0, 0];
  3324. Options := ['Chop down'];
  3325. Timer.Restart;
  3326. Timer.StartTime := -1;
  3327. Name := 'Yew';
  3328. Index := 0;
  3329. Tile := Point(3271, 3471);
  3330. AliveIDs := AliveYewIDs;
  3331. DeadIDs := DeadYewIDs;
  3332. Plane := 0;
  3333. end;
  3334. with daLocation.TreeObjects[1] do begin
  3335. Offset := [0, 0, 200];
  3336. TileOffset := [0, 0];
  3337. Options := ['Chop down'];
  3338. Timer.Restart;
  3339. Timer.StartTime := -1;
  3340. Name := 'Yew';
  3341. Index := 1;
  3342. Tile := Point(3267, 3494);
  3343. AliveIDs := AliveYewIDs;
  3344. DeadIDs := DeadYewIDs;
  3345. Plane := 0;
  3346. end;
  3347. with daLocation.TreeObjects[2] do begin
  3348. Offset := [0, 0, 200];
  3349. TileOffset := [0, 0];
  3350. Options := ['Chop down'];
  3351. Timer.Restart;
  3352. Timer.StartTime := -1;
  3353. Name := 'Yew';
  3354. Index := 2;
  3355. Tile := Point(3305, 3470);
  3356. AliveIDs := AliveYewIDs;
  3357. DeadIDs := DeadYewIDs;
  3358. Plane := 0;
  3359. end;
  3360. end;
  3361. end;
  3362. end;
  3363. 16..17:begin
  3364. daLocation.canBank := true;
  3365. setLength(daLocation.BankLocations, 1);
  3366. with daLocation.BankLocations[0] do begin
  3367. Offset := [0, 0, 50];
  3368. TileOffset := [0, 0];
  3369. Tile := Point(3012, 3354);
  3370. Options := ['Bank Bank booth'];
  3371. Plane := 0;
  3372. Name := 'Bank';
  3373. end;
  3374.  
  3375. case job of
  3376. 12:begin
  3377. daLocation.ID := 16;
  3378. daLocation.Name := 'Falador Oaks';
  3379.  
  3380. daLocation.RunDirections := ['rand'];
  3381.  
  3382. setLength(daLocation.Logs, 1);
  3383. daLocation.Logs[0].ID := 1521;
  3384.  
  3385. daLocation.TreeLocations := [Point(3001, 3365)];
  3386.  
  3387. setLength(daLocation.TreeObjects, 1)
  3388. with daLocation.TreeObjects[0] do begin
  3389. Offset := [0, 0, 200];
  3390. TileOffset := [0, 0];
  3391. Options := ['Chop down'];
  3392. Timer.Restart;
  3393. Timer.StartTime := -1;
  3394. Name := 'Oak';
  3395. Index := 0;
  3396. Tile := Point(3001, 3367);
  3397. AliveIDs := AliveOakIDs;
  3398. DeadIDs := DeadOakIDs;
  3399. Plane := 0;
  3400. end;
  3401. end;
  3402. 13:begin
  3403. daLocation.ID := 17;
  3404. daLocation.Name := 'Falador Yews';
  3405.  
  3406. daLocation.RunDirections := ['rand'];
  3407.  
  3408. setLength(daLocation.Logs, 1);
  3409. daLocation.Logs[0].ID := 1515;
  3410.  
  3411. daLocation.isFar := true;
  3412.  
  3413. daLocation.PathToBank := [Point(3006, 3317), Point(3006, 3322), Point(3006, 3327), Point(3006, 3332), Point(3006, 3337), Point(3006, 3342), Point(3006, 3347), Point(3006, 3352), Point(3006, 3357), Point(3011, 3359), Point(3013, 3357)];
  3414. daLocation.PathToTree := [Point(3012, 3355), Point(3009, 3359), Point(3008, 3354), Point(3008, 3349), Point(3008, 3344), Point(3008, 3339), Point(3008, 3334), Point(3008, 3329), Point(3008, 3324), Point(3007, 3319), Point(3002, 3319), Point(2998, 3315), Point(2997, 3314)];
  3415. daLocation.TreeLocations := [Point(2997, 3314)];
  3416.  
  3417. setLength(daLocation.TreeObjects, 3)
  3418. with daLocation.TreeObjects[0] do begin
  3419. Offset := [0, 0, 200];
  3420. TileOffset := [0, 0];
  3421. Options := ['Chop down'];
  3422. Timer.Restart;
  3423. Timer.StartTime := -1;
  3424. Name := 'Yew';
  3425. Index := 0;
  3426. Tile := Point(2997, 3312);
  3427. AliveIDs := AliveYewIDs;
  3428. DeadIDs := DeadYewIDs;
  3429. Plane := 0;
  3430. end;
  3431. with daLocation.TreeObjects[1] do begin
  3432. Offset := [0, 0, 200];
  3433. TileOffset := [0, 0];
  3434. Options := ['Chop down'];
  3435. Timer.Restart;
  3436. Timer.StartTime := -1;
  3437. Name := 'Yew';
  3438. Index := 1;
  3439. Tile := Point(3020, 3316);
  3440. AliveIDs := AliveYewIDs;
  3441. DeadIDs := DeadYewIDs;
  3442. Plane := 0;
  3443. end;
  3444. with daLocation.TreeObjects[2] do begin
  3445. Offset := [0, 0, 200];
  3446. TileOffset := [0, 0];
  3447. Options := ['Chop down'];
  3448. Timer.Restart;
  3449. Timer.StartTime := -1;
  3450. Name := 'Yew';
  3451. Index := 2;
  3452. Tile := Point(3042, 3320);
  3453. AliveIDs := AliveYewIDs;
  3454. DeadIDs := DeadYewIDs;
  3455. Plane := 0;
  3456. end;
  3457. end;
  3458. end;
  3459. end;
  3460. 11..12, 14:begin
  3461. daLocation.canBank := true;
  3462. setLength(daLocation.BankLocations, 1);
  3463. with daLocation.BankLocations[0] do begin
  3464. Offset := [0, 0, 50];
  3465. TileOffset := [0, 0];
  3466. Tile := Point(3045, 3234);
  3467. Options := ['Deposit'];
  3468. Plane := 0;
  3469. Name := 'Bank';
  3470. end;
  3471.  
  3472. case job of
  3473. 11:begin
  3474. daLocation.ID := 11;
  3475. daLocation.Name := 'Port Sarim Willows';
  3476.  
  3477. daLocation.RunDirections := ['rand'];
  3478.  
  3479. setLength(daLocation.Logs, 1);
  3480. daLocation.Logs[0].ID := 1519;
  3481.  
  3482. daLocation.PathToBank := [Point(3059, 3252), Point(3054, 3252), Point(3052, 3247), Point(3047, 3246), Point(3042, 3245), Point(3042, 3240), Point(3042, 3235), Point(3045, 3235)];
  3483. daLocation.PathToTree := [Point(3045, 3235), Point(3042, 3239), Point(3042, 3244), Point(3047, 3246), Point(3052, 3247), Point(3054, 3252), Point(3059, 3253)];
  3484. daLocation.TreeLocations := [Point(3059, 3252)];
  3485.  
  3486. setLength(daLocation.TreeObjects, 4)
  3487. with daLocation.TreeObjects[0] do begin
  3488. Offset := [0, 0, 200];
  3489. TileOffset := [0, 0];
  3490. Options := ['Chop down'];
  3491. Timer.Restart;
  3492. Timer.StartTime := -1;
  3493. Name := 'Willow';
  3494. Index := 0;
  3495. Tile := Point(3057, 3255);
  3496. AliveIDs := AliveWillowIDs;
  3497. DeadIDs := DeadWillowIDs;
  3498. Plane := 0;
  3499. end;
  3500. with daLocation.TreeObjects[1] do begin
  3501. Offset := [0, 0, 200];
  3502. TileOffset := [0, 0];
  3503. Options := ['Chop down'];
  3504. Timer.Restart;
  3505. Timer.StartTime := -1;
  3506. Name := 'Willow';
  3507. Index := 1;
  3508. Tile := Point(3062, 3255);
  3509. AliveIDs := AliveWillowIDs;
  3510. DeadIDs := DeadWillowIDs;
  3511. Plane := 0;
  3512. end;
  3513. with daLocation.TreeObjects[2] do begin
  3514. Offset := [0, 0, 200];
  3515. TileOffset := [0, 0];
  3516. Options := ['Chop down'];
  3517. Timer.Restart;
  3518. Timer.StartTime := -1;
  3519. Name := 'Willow';
  3520. Index := 2;
  3521. Tile := Point(3063, 3253);
  3522. AliveIDs := AliveWillowIDs;
  3523. DeadIDs := DeadWillowIDs;
  3524. Plane := 0;
  3525. end;
  3526. with daLocation.TreeObjects[3] do begin
  3527. Offset := [0, 0, 200];
  3528. TileOffset := [0, 0];
  3529. Options := ['Chop down'];
  3530. Timer.Restart;
  3531. Timer.StartTime := -1;
  3532. Name := 'Willow';
  3533. Index := 3;
  3534. Tile := Point(3057, 3252);
  3535. AliveIDs := AliveWillowIDs;
  3536. DeadIDs := DeadWillowIDs;
  3537. Plane := 0;
  3538. end;
  3539. end;
  3540. 14:begin
  3541. daLocation.ID := 14;
  3542. daLocation.Name := 'Rimmington Yews';
  3543.  
  3544. daLocation.RunDirections := ['rand'];
  3545.  
  3546. setLength(daLocation.BankLocations, 1);
  3547. with daLocation.BankLocations[0] do begin
  3548. Offset := [0, 0, 50];
  3549. TileOffset := [0, 0];
  3550. Tile := Point(3045, 3234);
  3551. Options := ['Deposit'];
  3552. Plane := 0;
  3553. Name := 'Bank';
  3554. end;
  3555.  
  3556. setLength(daLocation.Logs, 1);
  3557. daLocation.Logs[0].ID := 1515;
  3558.  
  3559. daLocation.PathToBank := [Point(2935, 3228), Point(2940, 3228), Point(2945, 3229), Point(2950, 3228), Point(2955, 3228), Point(2960, 3227), Point(2965, 3225), Point(2970, 3225), Point(2975, 3225), Point(2980, 3225), Point(2985, 3223), Point(2990, 3223), Point(2995, 3222), Point(3000, 3222), Point(3005, 3219), Point(3009, 3215), Point(3014, 3215), Point(3019, 3217), Point(3024, 3217), Point(3027, 3221), Point(3027, 3226), Point(3027, 3231), Point(3029, 3236), Point(3034, 3236), Point(3039, 3236), Point(3044, 3236), Point(3045, 3235)];
  3560. daLocation.PathToTree := [Point(3045, 3235), Point(3040, 3236), Point(3035, 3236), Point(3030, 3236), Point(3028, 3231), Point(3028, 3226), Point(3028, 3221), Point(3024, 3218), Point(3019, 3218), Point(3014, 3216), Point(3009, 3215), Point(3004, 3215), Point(2999, 3214), Point(2994, 3214), Point(2989, 3213), Point(2984, 3213), Point(2979, 3211), Point(2975, 3214), Point(2971, 3217), Point(2966, 3217), Point(2961, 3217), Point(2956, 3217), Point(2951, 3219), Point(2946, 3220), Point(2943, 3224), Point(2939, 3228), Point(2938, 3229)];
  3561. daLocation.TreeLocations := [Point(2938, 3229)];
  3562.  
  3563. setLength(daLocation.TreeObjects, 4)
  3564. with daLocation.TreeObjects[0] do begin
  3565. Offset := [0, 0, 200];
  3566. TileOffset := [0, 0];
  3567. Options := ['Chop down'];
  3568. Timer.Restart;
  3569. Timer.StartTime := -1;
  3570. Name := 'Yew';
  3571. Index := 0;
  3572. Tile := Point(2936, 3230);
  3573. AliveIDs := AliveYewIDs;
  3574. DeadIDs := DeadYewIDs;
  3575. Plane := 0;
  3576. end;
  3577. with daLocation.TreeObjects[1] do begin
  3578. Offset := [0, 0, 200];
  3579. TileOffset := [0, 0];
  3580. Options := ['Chop down'];
  3581. Timer.Restart;
  3582. Timer.StartTime := -1;
  3583. Name := 'Yew';
  3584. Index := 1;
  3585. Tile := Point(2941, 3233);
  3586. AliveIDs := AliveYewIDs;
  3587. DeadIDs := DeadYewIDs;
  3588. Plane := 0;
  3589. end;
  3590. with daLocation.TreeObjects[2] do begin
  3591. Offset := [0, 0, 200];
  3592. TileOffset := [0, 0];
  3593. Options := ['Chop down'];
  3594. Timer.Restart;
  3595. Timer.StartTime := -1;
  3596. Name := 'Yew';
  3597. Index := 2;
  3598. Tile := Point(2934, 3234);
  3599. AliveIDs := AliveYewIDs;
  3600. DeadIDs := DeadYewIDs;
  3601. Plane := 0;
  3602. end;
  3603. with daLocation.TreeObjects[3] do begin
  3604. Offset := [0, 0, 200];
  3605. TileOffset := [0, 0];
  3606. Options := ['Chop down'];
  3607. Timer.Restart;
  3608. Timer.StartTime := -1;
  3609. Name := 'Yew';
  3610. Index := 3;
  3611. Tile := Point(2935, 3226);
  3612. AliveIDs := AliveYewIDs;
  3613. DeadIDs := DeadYewIDs;
  3614. Plane := 0;
  3615. end;
  3616. end;
  3617. 12:begin
  3618. daLocation.ID := 12;
  3619. daLocation.Name := 'Port Sarim Yews';
  3620.  
  3621. daLocation.RunDirections := ['rand'];
  3622.  
  3623. setLength(daLocation.Logs, 1);
  3624. daLocation.Logs[0].ID := 1515;
  3625.  
  3626. daLocation.TreeLocations := [Point(3054, 3271)];
  3627.  
  3628. setLength(daLocation.TreeObjects, 1)
  3629. with daLocation.TreeObjects[0] do begin
  3630. Offset := [0, 0, 200];
  3631. TileOffset := [0, 0];
  3632. Options := ['Chop down'];
  3633. Timer.Restart;
  3634. Timer.StartTime := -1;
  3635. Name := 'Yew';
  3636. Index := 0;
  3637. Tile := Point(3054, 3271);
  3638. AliveIDs := AliveYewIDs;
  3639. DeadIDs := DeadYewIDs;
  3640. Plane := 0;
  3641. end;
  3642. end;
  3643. end;
  3644. end;
  3645. 13, 15:begin
  3646. daLocation.canBank := true;
  3647. setLength(daLocation.BankNPCs, 1);
  3648. with daLocation.BankNPCs[0] do begin
  3649. Locations := [Point(2949, 3215)];
  3650. Names := [];
  3651. Plane := 0;
  3652. IDs := [516, 517];
  3653. Options := ['Trade'];
  3654. Offset := [0, 0, 50];
  3655. end;
  3656. daLocation.isSell := true;
  3657.  
  3658. case job of
  3659. 13:begin
  3660. daLocation.Name := 'Rimmington Willows (sell)';
  3661. daLocation.ID := 13;
  3662.  
  3663. daLocation.canFletch := true;
  3664. daLocation.fletchPoint := Point(264, 413);
  3665.  
  3666. daLocation.RunDirections := ['rand'];
  3667.  
  3668. setLength(daLocation.Logs, 1);
  3669. daLocation.Logs[0].ID := 1519;
  3670.  
  3671. daLocation.TreeLocations := [Point(2962, 3198)];
  3672.  
  3673. setLength(daLocation.TreeObjects, 4)
  3674. with daLocation.TreeObjects[0] do begin
  3675. Offset := [0, 0, 200];
  3676. TileOffset := [0, 0];
  3677. Options := ['Chop down'];
  3678. Timer.Restart;
  3679. Timer.StartTime := -1;
  3680. Name := 'Willow';
  3681. Index := 0;
  3682. Tile := Point(2962, 3198);
  3683. AliveIDs := AliveWillowIDs;
  3684. DeadIds := DeadWillowIDs;
  3685. Plane := 0;
  3686. end;
  3687. with daLocation.TreeObjects[1] do begin
  3688. Offset := [0, 0, 200];
  3689. TileOffset := [0, 0];
  3690. Options := ['Chop down'];
  3691. Timer.Restart;
  3692. Timer.StartTime := -1;
  3693. Name := 'Willow';
  3694. Index := 1;
  3695. Tile := Point(2963, 3195);
  3696. AliveIDs := AliveWillowIDs;
  3697. DeadIds := DeadWillowIDs;
  3698. Plane := 0;
  3699. end;
  3700. with daLocation.TreeObjects[2] do begin
  3701. Offset := [0, 0, 200];
  3702. TileOffset := [0, 0];
  3703. Options := ['Chop down'];
  3704. Timer.Restart;
  3705. Timer.StartTime := -1;
  3706. Name := 'Willow';
  3707. Index := 2;
  3708. Tile := Point(2966, 3199);
  3709. AliveIDs := AliveWillowIDs;
  3710. DeadIds := DeadWillowIDs;
  3711. Plane := 0;
  3712. end;
  3713. with daLocation.TreeObjects[3] do begin
  3714. Offset := [0, 0, 200];
  3715. TileOffset := [0, 0];
  3716. Options := ['Chop down'];
  3717. Timer.Restart;
  3718. Timer.StartTime := -1;
  3719. Name := 'Willow';
  3720. Index := 3;
  3721. Tile := Point(2961, 3195);
  3722. AliveIDs := AliveWillowIDs;
  3723. DeadIds := DeadWillowIDs;
  3724. Plane := 0;
  3725. end;
  3726. end;
  3727. 15:begin
  3728. daLocation.Name := 'Rimmington Yews (sell)';
  3729. daLocation.ID := 15;
  3730.  
  3731. daLocation.canFletch := true;
  3732. daLocation.fletchPoint := Point(264, 413);
  3733.  
  3734. daLocation.RunDirections := ['rand'];
  3735.  
  3736. setLength(daLocation.Logs, 1);
  3737. daLocation.Logs[0].ID := 1515;
  3738.  
  3739. daLocation.TreeLocations := [Point(2938, 3229)];
  3740.  
  3741. setLength(daLocation.TreeObjects, 4)
  3742. with daLocation.TreeObjects[0] do begin
  3743. Offset := [0, 0, 200];
  3744. TileOffset := [0, 0];
  3745. Options := ['Chop down'];
  3746. Timer.Restart;
  3747. Timer.StartTime := -1;
  3748. Name := 'Yew';
  3749. Index := 0;
  3750. Tile := Point(2936, 3230);
  3751. AliveIDs := AliveYewIDs;
  3752. DeadIDs := DeadYewIDs;
  3753. Plane := 0;
  3754. end;
  3755. with daLocation.TreeObjects[1] do begin
  3756. Offset := [0, 0, 200];
  3757. TileOffset := [0, 0];
  3758. Options := ['Chop down'];
  3759. Timer.Restart;
  3760. Timer.StartTime := -1;
  3761. Name := 'Yew';
  3762. Index := 1;
  3763. Tile := Point(2941, 3233);
  3764. AliveIDs := AliveYewIDs;
  3765. DeadIDs := DeadYewIDs;
  3766. Plane := 0;
  3767. end;
  3768. with daLocation.TreeObjects[2] do begin
  3769. Offset := [0, 0, 200];
  3770. TileOffset := [0, 0];
  3771. Options := ['Chop down'];
  3772. Timer.Restart;
  3773. Timer.StartTime := -1;
  3774. Name := 'Yew';
  3775. Index := 2;
  3776. Tile := Point(2934, 3234);
  3777. AliveIDs := AliveYewIDs;
  3778. DeadIDs := DeadYewIDs;
  3779. Plane := 0;
  3780. end;
  3781. with daLocation.TreeObjects[3] do begin
  3782. Offset := [0, 0, 200];
  3783. TileOffset := [0, 0];
  3784. Options := ['Chop down'];
  3785. Timer.Restart;
  3786. Timer.StartTime := -1;
  3787. Name := 'Yew';
  3788. Index := 3;
  3789. Tile := Point(2935, 3226);
  3790. AliveIDs := AliveYewIDs;
  3791. DeadIDs := DeadYewIDs;
  3792. Plane := 0;
  3793. end;
  3794. end;
  3795. end;
  3796. end;
  3797. 35:begin
  3798. daLocation.ID := 35;
  3799. daLocation.Name := 'Duel Arena Magics';
  3800.  
  3801. daLocation.RunDirections := ['rand'];
  3802.  
  3803. daLocation.canBank := true;
  3804.  
  3805. setLength(daLocation.BankLocations, 1);
  3806. with daLocation.BankLocations[0] do begin
  3807. Offset := [0, 0, 50];
  3808. TileOffset := [0, 0];
  3809. Tile := Point(3381, 3269);
  3810. Options := ['Open', 'Bank'];
  3811. Plane := 0;
  3812. Name := 'Bank';
  3813. end;
  3814.  
  3815. setLength(daLocation.Logs, 1);
  3816. daLocation.Logs[0].ID := 1513;
  3817.  
  3818. daLocation.treeLocations := [Point(3369, 3312)];
  3819. daLocation.pathToTree := [Point(3381, 3268), Point(3386, 3265), Point(3388, 3271), Point(3385, 3276), Point(3384, 3282), Point(3382, 3288), Point(3379, 3293), Point(3373, 3293), Point(3367, 3293), Point(3363, 3295)];
  3820. daLocation.pathToBank := [Point(3363, 3295), Point(3369, 3293), Point(3375, 3293), Point(3379, 3289), Point(3382, 3284), Point(3382, 3278), Point(3385, 3273), Point(3385, 3267), Point(3382, 3269)];
  3821.  
  3822. setLength(daLocation.TreeObjects, 2);
  3823. with daLocation.TreeObjects[0] do begin
  3824. Offset := [0, 0, 200];
  3825. TileOffset := [0, 0];
  3826. Options := ['Chop down'];
  3827. Timer.Restart;
  3828. Timer.StartTime := -1;
  3829. Name := 'Magic';
  3830. Index := 0;
  3831. Tile := Point(3357, 3311);
  3832. AliveIDs := AliveMagicIDs;
  3833. DeadIDs := DeadMagicIDs;
  3834. Plane := 0;
  3835. end;
  3836. with daLocation.TreeObjects[1] do begin
  3837. Offset := [0, 0, 200];
  3838. TileOffset := [0, 0];
  3839. Options := ['Chop down'];
  3840. Timer.Restart;
  3841. Timer.StartTime := -1;
  3842. Name := 'Magic';
  3843. Index := 1;
  3844. Tile := Point(3369, 3312);
  3845. AliveIDs := AliveMagicIDs;
  3846. DeadIDs := DeadMagicIDs;
  3847. Plane := 0;
  3848. end;
  3849. end;
  3850. 18:begin
  3851. daLocation.ID := 18;
  3852. daLocation.Name := 'Edgeville Yews';
  3853.  
  3854. daLocation.canBank := true;
  3855.  
  3856. daLocation.RunDirections := ['rand'];
  3857.  
  3858. setLength(daLocation.BankLocations, 1);
  3859. with daLocation.BankLocations[0] do begin
  3860. Offset := [0, 0, 50];
  3861. TileOffset := [0, 0];
  3862. Tile := Point(3095, 3491);
  3863. Options := ['Bank B'];
  3864. Plane := 0;
  3865. Name := 'Bank';
  3866. end;
  3867.  
  3868. setLength(daLocation.Logs, 1);
  3869. daLocation.Logs[0].ID := 1515;
  3870.  
  3871. daLocation.PathToBank := [Point(3094, 3470), Point(3094, 3475), Point(3094, 3480), Point(3093, 3485), Point(3090, 3489), Point(3093, 3491)];
  3872. daLocation.PathToTree := [Point(3093, 3491), Point(3090, 3487), Point(3093, 3483), Point(3093, 3478), Point(3094, 3473), Point(3093, 3470)];
  3873. daLocation.TreeLocations := [Point(3087, 3471)];
  3874.  
  3875. setLength(daLocation.DoorObjects, 1);
  3876. with daLocation.DoorObjects[0] do begin
  3877. Plane := 0;
  3878. Tile := Point(3091, 3470);
  3879. TileOffset := [0, 0];
  3880. Actions := ['Open'];
  3881. Offset := [62, 0, 100];
  3882. TileEncompass := [Point(3091, 3468), Point(3085, 3468), Point(3085, 3482), Point(3089, 3482), Point(3089, 3473), Point(3091, 3473)];
  3883. end;
  3884.  
  3885. setLength(daLocation.TreeObjects, 2)
  3886. with daLocation.TreeObjects[0] do begin
  3887. Offset := [0, 0, 200];
  3888. TileOffset := [0, 2];
  3889. Options := ['Chop down'];
  3890. Timer.Restart;
  3891. Timer.StartTime := -1;
  3892. Name := 'Yew';
  3893. Index := 0;
  3894. Tile := Point(3086, 3469);
  3895. AliveIDs := AliveYewIDs;
  3896. DeadIDs := DeadYewIDs;
  3897. Plane := 0;
  3898. end;
  3899. with daLocation.TreeObjects[1] do begin
  3900. Offset := [0, 0, 200];
  3901. TileOffset := [0, -2];
  3902. Options := ['Chop down'];
  3903. Timer.Restart;
  3904. Timer.StartTime := -1;
  3905. Name := 'Yew';
  3906. Index := 1;
  3907. Tile := Point(3086, 3481);
  3908. AliveIDs := AliveYewIDs;
  3909. DeadIDs := DeadYewIDs;
  3910. Plane := 0;
  3911. end;
  3912. end;
  3913. 34:begin
  3914. daLocation.ID := 34;
  3915. daLocation.Name := 'Barb. Assault Willows';
  3916.  
  3917. daLocation.RunDirections := ['rand'];
  3918.  
  3919. daLocation.canBank := true;
  3920. setLength(daLocation.BankLocations, 1);
  3921. with daLocation.BankLocations[0] do begin
  3922. Offset := [0, 0, 50];
  3923. TileOffset := [0, 0];
  3924. Tile := Point(2537, 3573);
  3925. Options := ['Bank'];
  3926. Plane := 0;
  3927. Name := 'Bank';
  3928. end;
  3929.  
  3930. setLength(daLocation.Logs, 1);
  3931. daLocation.Logs[0].ID := 1519;
  3932.  
  3933. daLocation.treeLocations := [Point(2520, 3579)];
  3934.  
  3935. setLength(daLocation.TreeObjects, 5)
  3936. with daLocation.TreeObjects[0] do begin
  3937. Offset := [0, 0, 200];
  3938. TileOffset := [0, 0];
  3939. Options := ['Chop down'];
  3940. Timer.Restart;
  3941. Timer.StartTime := -1;
  3942. Name := 'Willow';
  3943. Index := 0;
  3944. Tile := Point(2517, 3598);
  3945. AliveIDs := AliveWillowIDs;
  3946. DeadIds := DeadWillowIDs;
  3947. Plane := 0;
  3948. end;
  3949. with daLocation.TreeObjects[1] do begin
  3950. Offset := [0, 0, 200];
  3951. TileOffset := [0, 0];
  3952. Options := ['Chop down'];
  3953. Timer.Restart;
  3954. Timer.StartTime := -1;
  3955. Name := 'Willow';
  3956. Index := 1;
  3957. Tile := Point(2518, 3577);
  3958. AliveIDs := AliveWillowIDs;
  3959. DeadIds := DeadWillowIDs;
  3960. Plane := 0;
  3961. end;
  3962. with daLocation.TreeObjects[2] do begin
  3963. Offset := [0, 0, 200];
  3964. TileOffset := [0, 0];
  3965. Options := ['Chop down'];
  3966. Timer.Restart;
  3967. Timer.StartTime := -1;
  3968. Name := 'Willow';
  3969. Index := 2;
  3970. Tile := Point(2517, 3579);
  3971. AliveIDs := AliveWillowIDs;
  3972. DeadIds := DeadWillowIDs;
  3973. Plane := 0;
  3974. end;
  3975. with daLocation.TreeObjects[3] do begin
  3976. Offset := [0, 0, 200];
  3977. TileOffset := [0, 0];
  3978. Options := ['Chop down'];
  3979. Timer.Restart;
  3980. Timer.StartTime := -1;
  3981. Name := 'Willow';
  3982. Index := 3;
  3983. Tile := Point(2519, 3581);
  3984. AliveIDs := AliveWillowIDs;
  3985. DeadIds := DeadWillowIDs;
  3986. Plane := 0;
  3987. end;
  3988. with daLocation.TreeObjects[4] do begin
  3989. Offset := [0, 0, 200];
  3990. TileOffset := [0, 0];
  3991. Options := ['Chop down'];
  3992. Timer.Restart;
  3993. Timer.StartTime := -1;
  3994. Name := 'Willow';
  3995. Index := 4;
  3996. Tile := Point(2517, 3582);
  3997. AliveIDs := AliveWillowIDs;
  3998. DeadIds := DeadWillowIDs;
  3999. Plane := 0;
  4000. end;
  4001. end;
  4002. 32..33:begin
  4003. daLocation.canBank := true;
  4004. setLength(daLocation.BankLocations, 1);
  4005. with daLocation.BankLocations[0] do begin
  4006. Offset := [0, 0, 50];
  4007. TileOffset := [0, 0];
  4008. Tile := Point(2447, 3427);
  4009. Options := ['Bank'];
  4010. Plane := 0;
  4011. Name := 'Bank';
  4012. end;
  4013. setLength(daLocation.customTPAs, 1);
  4014. daLocation.customTPAs[0] := [Point(2445, 3435){plane 0 stairs}, Point(2445, 3434){plane 1 stairs}];
  4015.  
  4016. case job of
  4017. 32:begin
  4018. daLocation.ID := 32;
  4019. daLocation.Name := 'Gnome Yews';
  4020.  
  4021. daLocation.RunDirections := ['rand'];
  4022.  
  4023. setLength(daLocation.Logs, 1);
  4024. daLocation.Logs[0].ID := 1515;
  4025.  
  4026. daLocation.TreeLocations := [Point(2441, 3435)];
  4027.  
  4028. setLength(daLocation.TreeObjects, 3)
  4029. with daLocation.TreeObjects[0] do begin
  4030. Offset := [0, 0, 200];
  4031. TileOffset := [0, 0];
  4032. Options := ['Chop down'];
  4033. Timer.Restart;
  4034. Timer.StartTime := -1;
  4035. Name := 'Yew';
  4036. Index := 2;
  4037. Tile := Point(2433, 3426);
  4038. AliveIDs := AliveYewIDs;
  4039. DeadIDs := DeadYewIDs;
  4040. Plane := 0;
  4041. end;
  4042. with daLocation.TreeObjects[1] do begin
  4043. Offset := [0, 0, 200];
  4044. TileOffset := [0, 0];
  4045. Options := ['Chop down'];
  4046. Timer.Restart;
  4047. Timer.StartTime := -1;
  4048. Name := 'Yew';
  4049. Index := 0;
  4050. Tile := Point(2439, 3436);
  4051. AliveIDs := AliveYewIDs;
  4052. DeadIDs := DeadYewIDs;
  4053. Plane := 0;
  4054. end;
  4055. with daLocation.TreeObjects[2] do begin
  4056. Offset := [0, 0, 200];
  4057. TileOffset := [0, 0];
  4058. Options := ['Chop down'];
  4059. Timer.Restart;
  4060. Timer.StartTime := -1;
  4061. Name := 'Yew';
  4062. Index := 1;
  4063. Tile := Point(2433, 3441);
  4064. AliveIDs := AliveYewIDs;
  4065. DeadIDs := DeadYewIDs;
  4066. Plane := 0;
  4067. end;
  4068. end;
  4069. 33:begin
  4070. daLocation.ID := 33;
  4071. daLocation.Name := 'Gnome Yews (2)';
  4072.  
  4073. daLocation.RunDirections := ['rand'];
  4074.  
  4075. setLength(daLocation.Logs, 1);
  4076. daLocation.Logs[0].ID := 1515;
  4077.  
  4078. daLocation.TreeLocations := [Point(2494, 3395)];
  4079.  
  4080. setLength(daLocation.TreeObjects, 4)
  4081. with daLocation.TreeObjects[0] do begin
  4082. Offset := [0, 0, 200];
  4083. TileOffset := [0, 0];
  4084. Options := ['Chop down'];
  4085. Timer.Restart;
  4086. Timer.StartTime := -1;
  4087. Name := 'Yew';
  4088. Index := 2;
  4089. Tile := Point(2493, 3401);
  4090. AliveIDs := AliveYewIDs;
  4091. DeadIDs := DeadYewIDs;
  4092. Plane := 0;
  4093. end;
  4094. with daLocation.TreeObjects[1] do begin
  4095. Offset := [0, 0, 200];
  4096. TileOffset := [0, 0];
  4097. Options := ['Chop down'];
  4098. Timer.Restart;
  4099. Timer.StartTime := -1;
  4100. Name := 'Yew';
  4101. Index := 0;
  4102. Tile := Point(2494, 3395);
  4103. AliveIDs := AliveYewIDs;
  4104. DeadIDs := DeadYewIDs;
  4105. Plane := 0;
  4106. end;
  4107. with daLocation.TreeObjects[2] do begin
  4108. Offset := [0, 0, 200];
  4109. TileOffset := [0, 0];
  4110. Options := ['Chop down'];
  4111. Timer.Restart;
  4112. Timer.StartTime := -1;
  4113. Name := 'Yew';
  4114. Index := 1;
  4115. Tile := Point(2479, 3393);
  4116. AliveIDs := AliveYewIDs;
  4117. DeadIDs := DeadYewIDs;
  4118. Plane := 0;
  4119. end;
  4120. with daLocation.TreeObjects[3] do begin
  4121. Offset := [0, 0, 200];
  4122. TileOffset := [0, 0];
  4123. Options := ['Chop down'];
  4124. Timer.Restart;
  4125. Timer.StartTime := -1;
  4126. Name := 'Yew';
  4127. Index := 3;
  4128. Tile := Point(2489, 3394);
  4129. AliveIDs := AliveYewIDs;
  4130. DeadIDs := DeadYewIDs;
  4131. Plane := 0;
  4132. end;
  4133. end;
  4134. end;
  4135. end;
  4136. 44:begin
  4137. //11764 2490 3414
  4138. //11764 2372 3426 gate closed 2380 3425
  4139. writeln('Gnome Magics are not yet completed.');
  4140. end;
  4141. 5:begin
  4142. daLocation.ID := 5;
  4143. daLocation.Name := 'Lumbridge Yews';
  4144.  
  4145. daLocation.canBank := true;
  4146.  
  4147. daLocation.RunDirections := ['rand'];
  4148.  
  4149. setLength(daLocation.BankLocations, 1);
  4150. with daLocation.BankLocations[0] do begin
  4151. Offset := [0, 0, 50];
  4152. TileOffset := [0, 0];
  4153. Tile := Point(3208, 3221);
  4154. Options := ['Bank B'];
  4155. Plane := 2;
  4156. Name := 'Bank';
  4157. end;
  4158.  
  4159. setLength(daLocation.Logs, 1);
  4160. daLocation.Logs[0].ID := 1515;
  4161.  
  4162. daLocation.TreeLocations := [Point(3248, 3202)];
  4163. daLocation.PathToBank := [Point(3248, 3202), Point(3243, 3201), Point(3238, 3201), Point(3236, 3206), Point(3236, 3211), Point(3234, 3216), Point(3229, 3218), Point(3224, 3218), Point(3219, 3218), Point(3215, 3215), Point(3214, 3210), Point(3209, 3210), Point(3206, 3209)];
  4164. daLocation.PathToTree := [Point(3206, 3210), Point(3211, 3210), Point(3215, 3213), Point(3215, 3218), Point(3220, 3218), Point(3225, 3218), Point(3230, 3218), Point(3232, 3213), Point(3234, 3208), Point(3236, 3203), Point(3241, 3201), Point(3246, 3201), Point(3248, 3201)];
  4165. setLength(daLocation.customTPAs, 1);
  4166. daLocation.customTPAs[0] := [Point(3205, 3208){'Climb-'}];
  4167.  
  4168. setLength(daLocation.TreeObjects, 1)
  4169. with daLocation.TreeObjects[0] do begin
  4170. Offset := [0, 0, 200];
  4171. TileOffset := [0, 0];
  4172. Options := ['Chop down'];
  4173. Timer.Restart;
  4174. Timer.StartTime := -1;
  4175. Name := 'Yew';
  4176. Index := 0;
  4177. Tile := Point(3250, 3202);
  4178. AliveIDs := AliveYewIDs;
  4179. DeadIDs := DeadYewIDs;
  4180. Plane := 0;
  4181. end;
  4182. end;
  4183. 4:begin
  4184. daLocation.ID := 4;
  4185. daLocation.Name := 'North Lum. Willows';
  4186.  
  4187. daLocation.RunDirections := ['rand'];
  4188.  
  4189. daLocation.TreeLocations := [Point(3222, 3306)];
  4190.  
  4191. setLength(daLocation.Logs, 1);
  4192. daLocation.Logs[0].ID := 1519;
  4193.  
  4194. daLocation.canFire := true;
  4195.  
  4196. setLength(daLocation.FireLanes, 3);
  4197. with daLocation.FireLanes[0] do begin
  4198. Plane := 0;
  4199. Length := 23;
  4200. Tile := Point(3243, 3307);
  4201. end;
  4202. with daLocation.FireLanes[1] do begin
  4203. Plane := 0;
  4204. Length := 18;
  4205. Tile := Point(3244, 3308);
  4206. end;
  4207. with daLocation.FireLanes[2] do begin
  4208. Plane := 0;
  4209. Length := 17;
  4210. Tile := Point(3245, 3309);
  4211. end;
  4212.  
  4213. setLength(daLocation.TreeObjects, 3)
  4214. with daLocation.TreeObjects[0] do begin
  4215. Offset := [100, -100, 200];
  4216. TileOffset := [0, 0];
  4217. Options := ['Chop down'];
  4218. Timer.Restart;
  4219. Timer.StartTime := -1;
  4220. Name := 'Willow';
  4221. Index := 0;
  4222. Tile := Point(3220, 3306);
  4223. AliveIDs := AliveWillowIDs;
  4224. DeadIds := DeadWillowIDs;
  4225. Plane := 0;
  4226. end;
  4227. with daLocation.TreeObjects[1] do begin
  4228. Offset := [0, 0, 200];
  4229. TileOffset := [0, 0];
  4230. Options := ['Chop down'];
  4231. Timer.Restart;
  4232. Timer.StartTime := -1;
  4233. Name := 'Willow';
  4234. Index := 1;
  4235. Tile := Point(3221, 3308);
  4236. AliveIDs := AliveWillowIDs;
  4237. DeadIds := DeadWillowIDs;
  4238. Plane := 0;
  4239. end;
  4240. with daLocation.TreeObjects[2] do begin
  4241. Offset := [0, 0, 200];
  4242. TileOffset := [0, 0];
  4243. Options := ['Chop down'];
  4244. Timer.Restart;
  4245. Timer.StartTime := -1;
  4246. Name := 'Willow';
  4247. Index := 2;
  4248. Tile := Point(3222, 3302);
  4249. AliveIDs := AliveWillowIDs;
  4250. DeadIds := DeadWillowIDs;
  4251. Plane := 0;
  4252. end;
  4253. end;
  4254. 3:begin
  4255. daLocation.ID := 3;
  4256. daLocation.Name := 'West Lum. Willows(2)';
  4257.  
  4258. daLocation.RunDirections := ['rand'];
  4259.  
  4260. daLocation.TreeLocations := [Point(3176, 3272)];
  4261.  
  4262. setLength(daLocation.Logs, 1);
  4263. daLocation.Logs[0].ID := 1519;
  4264.  
  4265. daLocation.canFire := true;
  4266.  
  4267. setLength(daLocation.FireLanes, 2);
  4268. with daLocation.FireLanes[0] do begin
  4269. Plane := 0;
  4270. Length := 26;
  4271. Tile := Point(3180, 3263);
  4272. end;
  4273. with daLocation.FireLanes[1] do begin
  4274. Plane := 0;
  4275. Length := 14;
  4276. Tile := Point(3172, 3262);
  4277. end;
  4278.  
  4279. setLength(daLocation.TreeObjects, 4)
  4280. with daLocation.TreeObjects[0] do begin
  4281. Offset := [0, 0, 200];
  4282. TileOffset := [0, 0];
  4283. Options := ['Chop down'];
  4284. Timer.Restart;
  4285. Timer.StartTime := -1;
  4286. Name := 'Willow';
  4287. Index := 0;
  4288. Tile := Point(3167, 3273);
  4289. AliveIDs := AliveWillowIDs;
  4290. DeadIds := DeadWillowIDs;
  4291. Plane := 0;
  4292. end;
  4293. with daLocation.TreeObjects[1] do begin
  4294. Offset := [0, 0, 200];
  4295. TileOffset := [0, 0];
  4296. Options := ['Chop down'];
  4297. Timer.Restart;
  4298. Timer.StartTime := -1;
  4299. Name := 'Willow';
  4300. Index := 1;
  4301. Tile := Point(3164, 3271);
  4302. AliveIDs := AliveWillowIDs;
  4303. DeadIds := DeadWillowIDs;
  4304. Plane := 0;
  4305. end;
  4306. with daLocation.TreeObjects[2] do begin
  4307. Offset := [0, 0, 200];
  4308. TileOffset := [0, 0];
  4309. Options := ['Chop down'];
  4310. Timer.Restart;
  4311. Timer.StartTime := -1;
  4312. Name := 'Willow';
  4313. Index := 2;
  4314. Tile := Point(3162, 3268);
  4315. AliveIDs := AliveWillowIDs;
  4316. DeadIds := DeadWillowIDs;
  4317. Plane := 0;
  4318. end;
  4319. with daLocation.TreeObjects[3] do begin
  4320. Offset := [0, 0, 200];
  4321. TileOffset := [0, 0];
  4322. Options := ['Chop down'];
  4323. Timer.Restart;
  4324. Timer.StartTime := -1;
  4325. Name := 'Willow';
  4326. Index := 3;
  4327. Tile := Point(3165, 3266);
  4328. AliveIDs := AliveWillowIDs;
  4329. DeadIds := DeadWillowIDs;
  4330. Plane := 0;
  4331. end;
  4332. end;
  4333. 2:begin
  4334. daLocation.ID := 2;
  4335. daLocation.Name := 'West Lum. Willows';
  4336.  
  4337. daLocation.RunDirections := ['rand'];
  4338.  
  4339. daLocation.TreeLocations := [Point(3176, 3272)];
  4340.  
  4341. setLength(daLocation.Logs, 1);
  4342. daLocation.Logs[0].ID := 1519;
  4343.  
  4344. daLocation.canFire := true;
  4345.  
  4346. setLength(daLocation.FireLanes, 3);
  4347. with daLocation.FireLanes[0] do begin
  4348. Plane := 0;
  4349. Length := 25;
  4350. Tile := Point(3183, 3276);
  4351. end;
  4352. with daLocation.FireLanes[1] do begin
  4353. Plane := 0;
  4354. Length := 17;
  4355. Tile := Point(3183, 3277);
  4356. end;
  4357. with daLocation.FireLanes[2] do begin
  4358. Plane := 0;
  4359. Length := 13;
  4360. Tile := Point(3171, 3275);
  4361. end;
  4362.  
  4363. setLength(daLocation.TreeObjects, 2)
  4364. with daLocation.TreeObjects[0] do begin
  4365. Offset := [0, 0, 200];
  4366. TileOffset := [0, 0];
  4367. Options := ['Chop down'];
  4368. Timer.Restart;
  4369. Timer.StartTime := -1;
  4370. Name := 'Willow';
  4371. Index := 0;
  4372. Tile := Point(3178, 3274);
  4373. AliveIDs := AliveWillowIDs;
  4374. DeadIds := DeadWillowIDs;
  4375. Plane := 0;
  4376. end;
  4377. with daLocation.TreeObjects[1] do begin
  4378. Offset := [0, 0, 200];
  4379. TileOffset := [0, 0];
  4380. Options := ['Chop down'];
  4381. Timer.Restart;
  4382. Timer.StartTime := -1;
  4383. Name := 'Willow';
  4384. Index := 1;
  4385. Tile := Point(3179, 3271);
  4386. AliveIDs := AliveWillowIDs;
  4387. DeadIds := DeadWillowIDs;
  4388. Plane := 0;
  4389. end;
  4390. end;
  4391. 0..1, 6:begin
  4392. daLocation.canBank := true;
  4393. setLength(daLocation.BankNPCs, 1);
  4394. with daLocation.BankNPCs[0] do begin
  4395. Locations := [Point(3212, 3246)];
  4396. Names := [];
  4397. Plane := 0;
  4398. IDs := [507, 506];
  4399. Offset := [0, 0, 50];
  4400. Options := ['Trade'];
  4401. end;
  4402. daLocation.isSell := true;
  4403.  
  4404. setLength(daLocation.DoorObjects, 1);
  4405. with daLocation.DoorObjects[0] do begin
  4406. TileOffset := [0, 0];
  4407. Plane := 0;
  4408. Actions := ['Open'];
  4409. Tile := Point(3215, 3245);
  4410. Offset := [-62, 0, 100];
  4411. TileEncompass := [Point(3208, 3244), Point(3210, 3242), Point(3212, 3242), Point(3214, 3244), Point(3214, 3249), Point(3212, 3251), Point(3210, 3251), Point(3208, 3249)];
  4412. end;
  4413.  
  4414. case job of
  4415. 0:begin
  4416. daLocation.Name := 'Lumbridge Oaks (sell)';
  4417. daLocation.ID := 0;
  4418.  
  4419. daLocation.canFletch := true;
  4420. daLocation.fletchPoint := Point(264, 413);
  4421. daLocation.TreeLocations := [Point(3206, 3242)];
  4422.  
  4423. daLocation.RunDirections := ['rand'];
  4424.  
  4425. setLength(daLocation.Logs, 1);
  4426. daLocation.Logs[0].ID := 1521;
  4427.  
  4428. setLength(daLocation.TreeObjects, 2)
  4429. with daLocation.TreeObjects[0] do begin
  4430. Offset := [0, 0, 200];
  4431. TileOffset := [0, -2];
  4432. Options := ['Chop down'];
  4433. Timer.Restart;
  4434. Timer.StartTime := -1;
  4435. Name := 'Oak';
  4436. Index := 0;
  4437. Tile := Point(3204, 3247);
  4438. AliveIDs := AliveOakIDs;
  4439. DeadIDs := DeadOakIDs;
  4440. Plane := 0;
  4441. end;
  4442. with daLocation.TreeObjects[1] do begin
  4443. Offset := [0, 0, 200];
  4444. TileOffset := [0, 2];
  4445. Options := ['Chop down'];
  4446. Timer.Restart;
  4447. Timer.StartTime := -1;
  4448. Name := 'Oak';
  4449. Index := 1;
  4450. Tile := Point(3205, 3240);
  4451. AliveIDs := AliveOakIDs;
  4452. DeadIDs := DeadOakIDs;
  4453. Plane := 0;
  4454. end;
  4455. end;
  4456. 1:begin
  4457. daLocation.Name := 'Lumbridge Willows (sell)';
  4458. daLocation.ID := 1;
  4459.  
  4460. daLocation.canFletch := true;
  4461. daLocation.fletchPoint := Point(264, 413);
  4462.  
  4463. setLength(daLocation.Logs, 1);
  4464. daLocation.Logs[0].ID := 1519;
  4465.  
  4466. daLocation.TreeLocations := [Point(3234, 3242)];
  4467.  
  4468. daLocation.RunDirections := ['rand'];
  4469.  
  4470. setLength(daLocation.TreeObjects, 2)
  4471. with daLocation.TreeObjects[0] do begin
  4472. Offset := [62, 62, 200];
  4473. TileOffset := [0, 2];
  4474. Options := ['Chop down'];
  4475. Timer.Restart;
  4476. Timer.StartTime := -1;
  4477. Name := 'Willow';
  4478. Index := 0;
  4479. Tile := Point(3234, 3238);
  4480. AliveIDs := AliveWillowIDs;
  4481. DeadIds := DeadWillowIDs;
  4482. Plane := 0;
  4483. end;
  4484. with daLocation.TreeObjects[1] do begin
  4485. Offset := [-62, 62, 200];
  4486. TileOffset := [-1, -1];
  4487. Options := ['Chop down'];
  4488. Timer.Restart;
  4489. Timer.StartTime := -1;
  4490. Name := 'Willow';
  4491. Index := 1;
  4492. Tile := Point(3234, 3244);
  4493. AliveIDs := AliveWillowIDs;
  4494. DeadIds := DeadWillowIDs;
  4495. Plane := 0;
  4496. end;
  4497. end;
  4498. 6:begin
  4499. daLocation.Name := 'Lumbridge Yews (sell)';
  4500. daLocation.ID := 6;
  4501.  
  4502. daLocation.canFletch := true;
  4503. daLocation.fletchPoint := Point(264, 413);
  4504. daLocation.TreeLocations := [Point(3234, 3244)];
  4505.  
  4506. daLocation.RunDirections := ['rand'];
  4507.  
  4508. setLength(daLocation.Logs, 1);
  4509. daLocation.Logs[0].ID := 1515;
  4510.  
  4511. setLength(daLocation.TreeObjects, 1)
  4512. with daLocation.TreeObjects[0] do begin
  4513. Offset := [0, 0, 200];
  4514. TileOffset := [0, 0];
  4515. Options := ['Chop down'];
  4516. Timer.Restart;
  4517. Timer.StartTime := -1;
  4518. Name := 'Yew';
  4519. Index := 0;
  4520. Tile := Point(3250, 3202);
  4521. AliveIDs := AliveYewIDs;
  4522. DeadIDs := DeadYewIDs;
  4523. Plane := 0;
  4524. end;
  4525. end;
  4526. end;
  4527. end;
  4528. 36:begin
  4529. daLocation.ID := 36;
  4530. daLocation.Name := 'Ape Atoll Teaks';
  4531.  
  4532. daLocation.RunDirections := ['rand'];
  4533.  
  4534. daLocation.TreeLocations := [Point(2774, 2698)];
  4535.  
  4536. setLength(daLocation.Logs, 1);
  4537. daLocation.Logs[0].ID := 6333;
  4538.  
  4539. setLength(daLocation.TreeObjects, 3)
  4540. with daLocation.TreeObjects[0] do begin
  4541. Offset := [0, 0, 200];
  4542. TileOffset := [0, 0];
  4543. Options := ['Chop down'];
  4544. Timer.Restart;
  4545. Timer.StartTime := -1;
  4546. Name := 'Teak';
  4547. Index := 0;
  4548. Tile := Point(2773, 2698);
  4549. AliveIDs := [9036];
  4550. DeadIDs := [9036];
  4551. Plane := 0;
  4552. end;
  4553. with daLocation.TreeObjects[1] do begin
  4554. Offset := [0, 0, 200];
  4555. TileOffset := [0, 0];
  4556. Options := ['Chop down'];
  4557. Timer.Restart;
  4558. Timer.StartTime := -1;
  4559. Name := 'Teak';
  4560. Index := 1;
  4561. Tile := Point(2776, 2698);
  4562. AliveIDs := [9036];
  4563. DeadIDs := [9036];
  4564. Plane := 0;
  4565. end;
  4566. with daLocation.TreeObjects[2] do begin
  4567. Offset := [0, 0, 200];
  4568. TileOffset := [0, 0];
  4569. Options := ['Chop down'];
  4570. Timer.Restart;
  4571. Timer.StartTime := -1;
  4572. Name := 'Teak';
  4573. Index := 2;
  4574. Tile := Point(2773, 2700);
  4575. AliveIDs := [9036];
  4576. DeadIDs := [9036];
  4577. Plane := 0;
  4578. end;
  4579. end;
  4580. 37:begin
  4581. daLocation.ID := 37;
  4582. daLocation.Name := 'Castle Wars Teaks';
  4583.  
  4584. daLocation.RunDirections := ['rand'];
  4585.  
  4586. daLocation.TreeLocations := [Point(2334, 3048)];
  4587.  
  4588. setLength(daLocation.Logs, 1);
  4589. daLocation.Logs[0].ID := 6333;
  4590.  
  4591. daLocation.canFire := true;
  4592. setLength(daLocation.FireLanes, 6);
  4593. with daLocation.FireLanes[0] do begin
  4594. Plane := 0;
  4595. Length := 4;
  4596. Tile := Point(2333, 3051);
  4597. end;
  4598. with daLocation.FireLanes[1] do begin
  4599. Plane := 0;
  4600. Length := 4;
  4601. Tile := Point(2333, 3050);
  4602. end;
  4603. with daLocation.FireLanes[2] do begin
  4604. Plane := 0;
  4605. Length := 6;
  4606. Tile := Point(2336, 3049);
  4607. end;
  4608. with daLocation.FireLanes[3] do begin
  4609. Plane := 0;
  4610. Length := 4;
  4611. Tile :=Point(2334, 3048);
  4612. end;
  4613. with daLocation.FireLanes[4] do begin
  4614. Plane := 0;
  4615. Length := 5;
  4616. Tile := Point(2335, 3047);
  4617. end;
  4618. with daLocation.FireLanes[5] do begin
  4619. Plane := 0;
  4620. Length := 4;
  4621. Tile := Point(2335, 3046);
  4622. end;
  4623.  
  4624. setLength(daLocation.TreeObjects, 1)
  4625. with daLocation.TreeObjects[0] do begin
  4626. Offset := [0, 0, 200];
  4627. TileOffset := [0, 0];
  4628. Options := ['Chop down'];
  4629. Timer.Restart;
  4630. Timer.StartTime := -1;
  4631. Name := 'Teak';
  4632. Index := 0;
  4633. Tile := Point(2335, 3048);
  4634. AliveIDs := [9036];
  4635. DeadIDs := [9037];
  4636. Plane := 0;
  4637. end;
  4638. end;
  4639. 38:begin
  4640. daLocation.ID := 38;
  4641. daLocation.Name := 'Tai Bwo Wannai Teaks';
  4642.  
  4643. daLocation.RunDirections := ['rand'];
  4644.  
  4645. daLocation.TreeLocations := [Point(2827, 3081)];
  4646.  
  4647. setLength(daLocation.Logs, 1);
  4648. daLocation.Logs[0].ID := 6333;
  4649.  
  4650. setLength(daLocation.TreeObjects, 4)
  4651. with daLocation.TreeObjects[0] do begin
  4652. Offset := [0, 0, 200];
  4653. TileOffset := [0, 0];
  4654. Options := ['Chop down'];
  4655. Timer.Restart;
  4656. Timer.StartTime := -1;
  4657. Name := 'Teak';
  4658. Index := 1;
  4659. Tile := Point(2827, 3080);
  4660. AliveIDs := [9036];
  4661. DeadIDs := [9037];
  4662. Plane := 0;
  4663. end;
  4664. with daLocation.TreeObjects[1] do begin
  4665. Offset := [0, 0, 200];
  4666. TileOffset := [0, 0];
  4667. Options := ['Chop down'];
  4668. Timer.Restart;
  4669. Timer.StartTime := -1;
  4670. Name := 'Teak';
  4671. Index := 2;
  4672. Tile := Point(2828, 3082);
  4673. AliveIDs := [9036];
  4674. DeadIDs := [9037];
  4675. Plane := 0;
  4676. end;
  4677. with daLocation.TreeObjects[2] do begin
  4678. Offset := [0, 0, 200];
  4679. TileOffset := [0, 0];
  4680. Options := ['Chop down'];
  4681. Timer.Restart;
  4682. Timer.StartTime := -1;
  4683. Name := 'Teak';
  4684. Index := 0;
  4685. Tile := Point(2828, 3079);
  4686. AliveIDs := [9036];
  4687. DeadIDs := [9037];
  4688. Plane := 0;
  4689. end;
  4690. with daLocation.TreeObjects[3] do begin
  4691. Offset := [0, 0, 200];
  4692. TileOffset := [0, 0];
  4693. Options := ['Chop down'];
  4694. Timer.Restart;
  4695. Timer.StartTime := -1;
  4696. Name := 'Teak';
  4697. Index := 3;
  4698. Tile := Point(2822, 3078);
  4699. AliveIDs := [9036];
  4700. DeadIDs := [9037];
  4701. Plane := 0;
  4702. end;
  4703. end;
  4704. 39:begin
  4705. daLocation.ID := 39;
  4706. daLocation.Name := 'Tai Bwo Wannai Teaks(2)';
  4707.  
  4708. daLocation.RunDirections := ['rand'];
  4709.  
  4710. daLocation.TreeLocations := [Point(2826, 3086)];
  4711.  
  4712. setLength(daLocation.Logs, 1);
  4713. daLocation.Logs[0].ID := 6333;
  4714.  
  4715. setLength(daLocation.TreeObjects, 5)
  4716. with daLocation.TreeObjects[0] do begin
  4717. Offset := [0, 0, 200];
  4718. TileOffset := [0, 0];
  4719. Options := ['Chop down'];
  4720. Timer.Restart;
  4721. Timer.StartTime := -1;
  4722. Name := 'Teak';
  4723. Index := 0;
  4724. Tile := Point(2823, 3088);
  4725. AliveIDs := [9036];
  4726. DeadIDs := [9037];
  4727. Plane := 0;
  4728. end;
  4729. with daLocation.TreeObjects[1] do begin
  4730. Offset := [0, 0, 200];
  4731. TileOffset := [0, 0];
  4732. Options := ['Chop down'];
  4733. Timer.Restart;
  4734. Timer.StartTime := -1;
  4735. Name := 'Teak';
  4736. Index := 1;
  4737. Tile := Point(2825, 3087);
  4738. AliveIDs := [9036];
  4739. DeadIDs := [9037];
  4740. Plane := 0;
  4741. end;
  4742. with daLocation.TreeObjects[2] do begin
  4743. Offset := [0, 0, 200];
  4744. TileOffset := [0, 0];
  4745. Options := ['Chop down'];
  4746. Timer.Restart;
  4747. Timer.StartTime := -1;
  4748. Name := 'Teak';
  4749. Index := 2;
  4750. Tile := Point(2827, 3088);
  4751. AliveIDs := [9036];
  4752. DeadIDs := [9037];
  4753. Plane := 0;
  4754. end;
  4755. with daLocation.TreeObjects[3] do begin
  4756. Offset := [0, 0, 200];
  4757. TileOffset := [0, 0];
  4758. Options := ['Chop down'];
  4759. Timer.Restart;
  4760. Timer.StartTime := -1;
  4761. Name := 'Teak';
  4762. Index := 3;
  4763. Tile := Point(2827, 3085);
  4764. AliveIDs := [9036];
  4765. DeadIDs := [9037];
  4766. Plane := 0;
  4767. end;
  4768. with daLocation.TreeObjects[4] do begin
  4769. Offset := [0, 0, 200];
  4770. TileOffset := [0, 0];
  4771. Options := ['Chop down'];
  4772. Timer.Restart;
  4773. Timer.StartTime := -1;
  4774. Name := 'Teak';
  4775. Index := 4;
  4776. Tile := Point(2826, 3084);
  4777. AliveIDs := [9036];
  4778. DeadIDs := [9037];
  4779. Plane := 0;
  4780. end;
  4781. end;
  4782. 40:begin
  4783. daLocation.ID := 40;
  4784. daLocation.Name := 'Tai Bwo Wannai Mahogany';
  4785.  
  4786. daLocation.RunDirections := ['rand'];
  4787.  
  4788. daLocation.TreeLocations := [Point(2824, 3084)];
  4789.  
  4790. setLength(daLocation.Logs, 1);
  4791. daLocation.Logs[0].ID := 6332;
  4792.  
  4793. setLength(daLocation.TreeObjects, 4)
  4794. with daLocation.TreeObjects[0] do begin
  4795. Offset := [0, 0, 200];
  4796. TileOffset := [0, 0];
  4797. Options := ['Chop down'];
  4798. Timer.Restart;
  4799. Timer.StartTime := -1;
  4800. Name := 'Mahogany';
  4801. Index := 0;
  4802. Tile := Point(2822, 3084);
  4803. AliveIDs := [9034];
  4804. DeadIDs := [9035];
  4805. Plane := 0;
  4806. end;
  4807. with daLocation.TreeObjects[1] do begin
  4808. Offset := [0, 0, 200];
  4809. TileOffset := [0, 0];
  4810. Options := ['Chop down'];
  4811. Timer.Restart;
  4812. Timer.StartTime := -1;
  4813. Name := 'Mahogany';
  4814. Index := 1;
  4815. Tile := Point(2820, 3088);
  4816. AliveIDs := [9034];
  4817. DeadIDs := [9035];
  4818. Plane := 0;
  4819. end;
  4820. with daLocation.TreeObjects[2] do begin
  4821. Offset := [0, 0, 200];
  4822. TileOffset := [0, 0];
  4823. Options := ['Chop down'];
  4824. Timer.Restart;
  4825. Timer.StartTime := -1;
  4826. Name := 'Mahogany';
  4827. Index := 2;
  4828. Tile := Point(2820, 3080);
  4829. AliveIDs := [9034];
  4830. DeadIDs := [9035];
  4831. Plane := 0;
  4832. end;
  4833. with daLocation.TreeObjects[3] do begin
  4834. Offset := [0, 0, 200];
  4835. TileOffset := [0, 0];
  4836. Options := ['Chop down'];
  4837. Timer.Restart;
  4838. Timer.StartTime := -1;
  4839. Name := 'Mahogany';
  4840. Index := 3;
  4841. Tile := Point(2824, 3080);
  4842. AliveIDs := [9034];
  4843. DeadIDs := [9035];
  4844. Plane := 0;
  4845. end;
  4846. end;
  4847. 41:begin
  4848. daLocation.ID := 41;
  4849. setLength(daLocation.customIDs, 1);
  4850. daLocation.customIDs[0] := [1278, 1276, 1286, 1282, 2091, 2092];
  4851. setLength(daLocation.Logs, 1);
  4852. daLocation.Logs[0].ID := 1511;
  4853. daLocation.canFletch := true;
  4854. daLocation.name := 'Powerchop Normals';
  4855. daLocation.fletchPoint := Point(79, 411);
  4856.  
  4857. daLocation.isPower := true;
  4858. end;
  4859. 42:begin
  4860. daLocation.ID := 42;
  4861. setLength(daLocation.customIDs, 1);
  4862. daLocation.customIDs[0] := [7417];
  4863. setLength(daLocation.Logs, 1);
  4864. daLocation.Logs[0].ID := 1521;
  4865. daLocation.canFletch := true;
  4866. daLocation.name := 'Powerchop Oaks';
  4867. daLocation.fletchPoint := Point(264, 413);
  4868.  
  4869. daLocation.isPower := true;
  4870. end;
  4871. 43:begin
  4872. daLocation.ID := 43;
  4873. setLength(daLocation.customIDs, 1);
  4874. daLocation.customIDs[0] := [7480, 7422, 7482, 7424];
  4875. setLength(daLocation.Logs, 1);
  4876. daLocation.Logs[0].ID := 1519;
  4877. daLocation.canFletch := true;
  4878. daLocation.name := 'Powerchop Willows';
  4879. daLocation.fletchPoint := Point(264, 413);
  4880.  
  4881. daLocation.isPower := true;
  4882. end;
  4883. 7:begin
  4884. setLength(daLocation.Logs, 3);
  4885. daLocation.Logs[0].ID := 1511;
  4886. daLocation.Logs[1].ID := 1521;
  4887. daLocation.Logs[2].ID := 1519;
  4888.  
  4889. daLocation.Name := 'Progressive Chopping';
  4890. daLocation.isDynamic := true;
  4891. end;
  4892. 45..50:begin
  4893. daLocation.canBank := true;
  4894. setLength(daLocation.BankLocations, 1);
  4895. with daLocation.BankLocations[0] do begin
  4896. Offset := [0, 0, 50];
  4897. TileOffset := [0, 0];
  4898. Tile := Point(1592, 3475);
  4899. Options := ['Bank'];
  4900. Plane := 0;
  4901. Name := 'Bank';
  4902. end;
  4903.  
  4904. case job of
  4905. 45:begin
  4906. daLocation.ID := 45;
  4907. daLocation.Name := 'WC Guild Yews';
  4908.  
  4909. daLocation.RunDirections := ['rand'];
  4910.  
  4911. daLocation.TreeLocations := [Point(1593, 3487)];
  4912.  
  4913. setLength(daLocation.Logs, 1);
  4914. daLocation.Logs[0].ID := 1515;
  4915.  
  4916. setLength(daLocation.TreeObjects, 9)
  4917. with daLocation.TreeObjects[0] do begin
  4918. Offset := [0, 0, 200];
  4919. TileOffset := [2, 0];
  4920. Options := ['Chop down'];
  4921. Timer.Restart;
  4922. Timer.StartTime := -1;
  4923. Name := 'Yew';
  4924. Index := 0;
  4925. Tile := Point(1591, 3487);
  4926. AliveIDs := AliveYewIds;
  4927. DeadIDs := DeadYewIds;
  4928. Plane := 0;
  4929. end;
  4930. with daLocation.TreeObjects[1] do begin
  4931. Offset := [0, 0, 200];
  4932. TileOffset := [0, -2];
  4933. Options := ['Chop down'];
  4934. Timer.Restart;
  4935. Timer.StartTime := -1;
  4936. Name := 'Yew';
  4937. Index := 1;
  4938. Tile := Point(1596, 3490);
  4939. AliveIDs := AliveYewIds;
  4940. DeadIDs := DeadYewIds;
  4941. Plane := 0;
  4942. end;
  4943. with daLocation.TreeObjects[2] do begin
  4944. Offset := [0, 0, 200];
  4945. TileOffset := [0, 2];
  4946. Options := ['Chop down'];
  4947. Timer.Restart;
  4948. Timer.StartTime := -1;
  4949. Name := 'Yew';
  4950. Index := 2;
  4951. Tile := Point(1596, 3485);
  4952. AliveIDs := AliveYewIds;
  4953. DeadIDs := DeadYewIds;
  4954. Plane := 0;
  4955. end;
  4956. with daLocation.TreeObjects[3] do begin
  4957. Offset := [0, 0, 200];
  4958. TileOffset := [0, -2];
  4959. Options := ['Chop down'];
  4960. Timer.Restart;
  4961. Timer.StartTime := -1;
  4962. Name := 'Yew';
  4963. Index := 3;
  4964. Tile := Point(1591, 3493);
  4965. AliveIDs := AliveYewIds;
  4966. DeadIDs := DeadYewIds;
  4967. Plane := 0;
  4968. end;
  4969. with daLocation.TreeObjects[4] do begin
  4970. Offset := [0, 0, 200];
  4971. TileOffset := [0, -2];
  4972. Options := ['Chop down'];
  4973. Timer.Restart;
  4974. Timer.StartTime := -1;
  4975. Name := 'Yew';
  4976. Index := 4;
  4977. Tile := Point(1596, 3495);
  4978. AliveIDs := AliveYewIds;
  4979. DeadIDs := DeadYewIds;
  4980. Plane := 0;
  4981. end;
  4982. with daLocation.TreeObjects[5] do begin
  4983. Offset := [0, 0, 200];
  4984. TileOffset := [0, 2];
  4985. Options := ['Chop down'];
  4986. Timer.Restart;
  4987. Timer.StartTime := -1;
  4988. Name := 'Yew';
  4989. Index := 5;
  4990. Tile := Point(1586, 3480);
  4991. AliveIDs := AliveYewIds;
  4992. DeadIDs := DeadYewIds;
  4993. Plane := 0;
  4994. end;
  4995. with daLocation.TreeObjects[6] do begin
  4996. Offset := [0, 0, 200];
  4997. TileOffset := [0, -2];
  4998. Options := ['Chop down'];
  4999. Timer.Restart;
  5000. Timer.StartTime := -1;
  5001. Name := 'Yew';
  5002. Index := 6;
  5003. Tile := Point(1584, 3485);
  5004. AliveIDs := AliveYewIds;
  5005. DeadIDs := DeadYewIds;
  5006. Plane := 0;
  5007. end;
  5008. with daLocation.TreeObjects[7] do begin
  5009. Offset := [0, 0, 200];
  5010. TileOffset := [0, -2];
  5011. Options := ['Chop down'];
  5012. Timer.Restart;
  5013. Timer.StartTime := -1;
  5014. Name := 'Yew';
  5015. Index := 7;
  5016. Tile := Point(1587, 3501);
  5017. AliveIDs := AliveYewIds;
  5018. DeadIDs := DeadYewIds;
  5019. Plane := 0;
  5020. end;
  5021. with daLocation.TreeObjects[8] do begin
  5022. Offset := [0, 0, 200];
  5023. TileOffset := [0, -2];
  5024. Options := ['Chop down'];
  5025. Timer.Restart;
  5026. Timer.StartTime := -1;
  5027. Name := 'Yew';
  5028. Index := 7;
  5029. Tile := Point(1582, 3497);
  5030. AliveIDs := AliveYewIds;
  5031. DeadIDs := DeadYewIds;
  5032. Plane := 0;
  5033. end;
  5034. end;
  5035. 46:begin
  5036. daLocation.ID := 46;
  5037. daLocation.Name := 'WC Guild Magics';
  5038.  
  5039. daLocation.RunDirections := ['rand'];
  5040.  
  5041. daLocation.TreeLocations := [Point(1579, 3485)];
  5042.  
  5043. setLength(daLocation.Logs, 1);
  5044. daLocation.Logs[0].ID := 1517;
  5045.  
  5046. setLength(daLocation.TreeObjects, 8)
  5047. with daLocation.TreeObjects[0] do begin
  5048. Offset := [62, 62, 200];
  5049. TileOffset := [2, -1];
  5050. Options := ['Chop down'];
  5051. Timer.Restart;
  5052. Timer.StartTime := -1;
  5053. Name := 'Magic';
  5054. Index := 0;
  5055. Tile := Point(1577, 3485);
  5056. AliveIDs := AliveMagicIds;
  5057. DeadIDs := DeadMagicIds;
  5058. Plane := 0;
  5059. end;
  5060. with daLocation.TreeObjects[1] do begin
  5061. Offset := [62, 62, 200];
  5062. TileOffset := [-1, -1];
  5063. Options := ['Chop down'];
  5064. Timer.Restart;
  5065. Timer.StartTime := -1;
  5066. Name := 'Magic';
  5067. Index := 1;
  5068. Tile := Point(1580, 3485);
  5069. AliveIDs := AliveMagicIds;
  5070. DeadIDs := DeadMagicIds;
  5071. Plane := 0;
  5072. end;
  5073. with daLocation.TreeObjects[2] do begin
  5074. Offset := [62, 62, 200];
  5075. TileOffset := [2, 2];
  5076. Options := ['Chop down'];
  5077. Timer.Restart;
  5078. Timer.StartTime := -1;
  5079. Name := 'Magic';
  5080. Index := 2;
  5081. Tile := Point(1577, 3482);
  5082. AliveIDs := AliveMagicIds;
  5083. DeadIDs := DeadMagicIds;
  5084. Plane := 0;
  5085. end;
  5086. with daLocation.TreeObjects[3] do begin
  5087. Offset := [62, 62, 200];
  5088. TileOffset := [-1, 2];
  5089. Options := ['Chop down'];
  5090. Timer.Restart;
  5091. Timer.StartTime := -1;
  5092. Name := 'Magic';
  5093. Index := 3;
  5094. Tile := Point(1580, 3482);
  5095. AliveIDs := AliveMagicIds;
  5096. DeadIDs := DeadMagicIds;
  5097. Plane := 0;
  5098. end;
  5099. with daLocation.TreeObjects[4] do begin
  5100. Offset := [62, 62, 200];
  5101. TileOffset := [2, 2];
  5102. Options := ['Chop down'];
  5103. Timer.Restart;
  5104. Timer.StartTime := -1;
  5105. Name := 'Magic';
  5106. Index := 4;
  5107. Tile := Point(1577, 3489);
  5108. AliveIDs := AliveMagicIds;
  5109. DeadIDs := DeadMagicIds;
  5110. Plane := 0;
  5111. end;
  5112. with daLocation.TreeObjects[5] do begin
  5113. Offset := [62, 62, 200];
  5114. TileOffset := [-1, 2];
  5115. Options := ['Chop down'];
  5116. Timer.Restart;
  5117. Timer.StartTime := -1;
  5118. Name := 'Magic';
  5119. Index := 5;
  5120. Tile := Point(1580, 3489);
  5121. AliveIDs := AliveMagicIds;
  5122. DeadIDs := DeadMagicIds;
  5123. Plane := 0;
  5124. end;
  5125. with daLocation.TreeObjects[6] do begin
  5126. Offset := [62, 62, 200];
  5127. TileOffset := [2, -1];
  5128. Options := ['Chop down'];
  5129. Timer.Restart;
  5130. Timer.StartTime := -1;
  5131. Name := 'Magic';
  5132. Index := 6;
  5133. Tile := Point(1577, 3492);
  5134. AliveIDs := AliveMagicIds;
  5135. DeadIDs := DeadMagicIds;
  5136. Plane := 0;
  5137. end;
  5138. with daLocation.TreeObjects[7] do begin
  5139. Offset := [62, 62, 200];
  5140. TileOffset := [-1, -1];
  5141. Options := ['Chop down'];
  5142. Timer.Restart;
  5143. Timer.StartTime := -1;
  5144. Name := 'Magic';
  5145. Index := 7;
  5146. Tile := Point(1580, 3492);
  5147. AliveIDs := AliveMagicIds;
  5148. DeadIDs := DeadMagicIds;
  5149. Plane := 0;
  5150. end;
  5151. end;
  5152. 47:begin
  5153. daLocation.ID := 47;
  5154. daLocation.Name := 'WC Guild Redwood';
  5155.  
  5156. daLocation.RunDirections := ['rand'];
  5157.  
  5158. daLocation.TreeLocations := [Point(1567, 3483)];
  5159.  
  5160. setLength(daLocation.customTPAs, 1);
  5161. daLocation.customTPAs[0] := [Point(1566, 3482)]; //ladder
  5162.  
  5163. setLength(daLocation.Logs, 1);
  5164. daLocation.Logs[0].ID := 19669;
  5165.  
  5166. setLength(daLocation.TreeObjects, 2)
  5167. with daLocation.TreeObjects[0] do begin
  5168. Offset := [0, 0, 200];
  5169. TileOffset := [-1, 0];
  5170. Options := ['Cut'];
  5171. Timer.Restart;
  5172. Timer.StartTime := -1;
  5173. Name := 'Redwood';
  5174. Index := 0;
  5175. Tile := Point(1568, 3482);
  5176. AliveIDs := [28859];
  5177. DeadIDs := [28860];
  5178. Plane := 2;
  5179. end;
  5180. with daLocation.TreeObjects[1] do begin
  5181. Offset := [0, 0, 200];
  5182. TileOffset := [-1, 0];
  5183. Options := ['Cut'];
  5184. Timer.Restart;
  5185. Timer.StartTime := -1;
  5186. Name := 'Redwood';
  5187. Index := 1;
  5188. Tile := Point(1568, 3483);
  5189. AliveIDs := [28859];
  5190. DeadIDs := [28860];
  5191. Plane := 2;
  5192. end;
  5193. end;
  5194. 48:begin
  5195. daLocation.ID := 48;
  5196. daLocation.Name := 'WC Guild Redwood(2)';
  5197.  
  5198. daLocation.RunDirections := ['rand'];
  5199.  
  5200. daLocation.TreeLocations := [Point(1567, 3493)];
  5201.  
  5202. setLength(daLocation.customTPAs, 1);
  5203. daLocation.customTPAs[0] := [Point(1566, 3493)]; //ladder
  5204.  
  5205. setLength(daLocation.Logs, 1);
  5206. daLocation.Logs[0].ID := 19669;
  5207.  
  5208. setLength(daLocation.TreeObjects, 2)
  5209. with daLocation.TreeObjects[0] do begin
  5210. Offset := [0, 0, 200];
  5211. TileOffset := [-1, 0];
  5212. Options := ['Cut'];
  5213. Timer.Restart;
  5214. Timer.StartTime := -1;
  5215. Name := 'Redwood';
  5216. Index := 0;
  5217. Tile := Point(1568, 3493);
  5218. AliveIDs := [28859];
  5219. DeadIDs := [28860];
  5220. Plane := 2;
  5221. end;
  5222. with daLocation.TreeObjects[1] do begin
  5223. Offset := [0, 0, 200];
  5224. TileOffset := [-1, 0];
  5225. Options := ['Cut'];
  5226. Timer.Restart;
  5227. Timer.StartTime := -1;
  5228. Name := 'Redwood';
  5229. Index := 1;
  5230. Tile := Point(1568, 3492);
  5231. AliveIDs := [28859];
  5232. DeadIDs := [28860];
  5233. Plane := 2;
  5234. end;
  5235. end;
  5236. 49:begin
  5237. daLocation.ID := 49;
  5238. daLocation.Name := 'WC Guild Redwood(3)';
  5239.  
  5240. daLocation.RunDirections := ['rand'];
  5241.  
  5242. daLocation.TreeLocations := [Point(1574, 3482)];
  5243.  
  5244. setLength(daLocation.customTPAs, 1);
  5245. daLocation.customTPAs[0] := [Point(1575, 3482)]; //ladder
  5246.  
  5247. setLength(daLocation.Logs, 1);
  5248. daLocation.Logs[0].ID := 19669;
  5249.  
  5250. setLength(daLocation.TreeObjects, 2)
  5251. with daLocation.TreeObjects[0] do begin
  5252. Offset := [0, 0, 200];
  5253. TileOffset := [-1, 0];
  5254. Options := ['Cut'];
  5255. Timer.Restart;
  5256. Timer.StartTime := -1;
  5257. Name := 'Redwood';
  5258. Index := 0;
  5259. Tile := Point(1573, 3482);
  5260. AliveIDs := [28859];
  5261. DeadIDs := [28860];
  5262. Plane := 2;
  5263. end;
  5264. with daLocation.TreeObjects[1] do begin
  5265. Offset := [0, 0, 200];
  5266. TileOffset := [-1, 0];
  5267. Options := ['Cut'];
  5268. Timer.Restart;
  5269. Timer.StartTime := -1;
  5270. Name := 'Redwood';
  5271. Index := 1;
  5272. Tile := Point(1573, 3483);
  5273. AliveIDs := [28859];
  5274. DeadIDs := [28860];
  5275. Plane := 2;
  5276. end;
  5277. end;
  5278. 50:begin
  5279. daLocation.ID := 50;
  5280. daLocation.Name := 'WC Guild Redwood(4)';
  5281.  
  5282. daLocation.RunDirections := ['rand'];
  5283.  
  5284. daLocation.TreeLocations := [Point(1574, 3493)];
  5285.  
  5286. setLength(daLocation.customTPAs, 1);
  5287. daLocation.customTPAs[0] := [Point(1575, 3493)]; //ladder
  5288.  
  5289. setLength(daLocation.Logs, 1);
  5290. daLocation.Logs[0].ID := 19669;
  5291.  
  5292. setLength(daLocation.TreeObjects, 2)
  5293. with daLocation.TreeObjects[0] do begin
  5294. Offset := [0, 0, 200];
  5295. TileOffset := [-1, 0];
  5296. Options := ['Cut'];
  5297. Timer.Restart;
  5298. Timer.StartTime := -1;
  5299. Name := 'Redwood';
  5300. Index := 0;
  5301. Tile := Point(1573, 3492);
  5302. AliveIDs := [28859];
  5303. DeadIDs := [28860];
  5304. Plane := 2;
  5305. end;
  5306. with daLocation.TreeObjects[1] do begin
  5307. Offset := [0, 0, 200];
  5308. TileOffset := [-1, 0];
  5309. Options := ['Cut'];
  5310. Timer.Restart;
  5311. Timer.StartTime := -1;
  5312. Name := 'Redwood';
  5313. Index := 1;
  5314. Tile := Point(1573, 3493);
  5315. AliveIDs := [28859];
  5316. DeadIDs := [28860];
  5317. Plane := 2;
  5318. end;
  5319. end;
  5320. end;
  5321. end;
  5322. end;
  5323.  
  5324. for i:=0 to high(DaLocation.Logs) do begin
  5325. daLocation.Logs[i].chopped := 0;
  5326. daLocation.Logs[i].price := getPriceGE(daLocation.Logs[i].ID);
  5327. end;
  5328.  
  5329. for i:=0 to 1000 do begin
  5330. if(not FileExists(ScriptPath+'ineedbot''s AIO Woodcutter proggy '+toStr(i)+'.png'))then begin
  5331. ProggieLocation := ScriptPath+'ineedbot''s AIO Woodcutter proggy '+toStr(i)+'.png';
  5332. break;
  5333. end;
  5334. end;
  5335. doProggy(ProggieLocation);
  5336.  
  5337. if disableBank then
  5338. daLocation.canBank := false;
  5339.  
  5340. if daLocation.canfire and not Reflect.Inv.Contains(TinderIds) then
  5341. daLocation.canfire := false;
  5342.  
  5343. if daLocation.canfletch and not Reflect.Inv.Contains(KnifeIDs) then
  5344. daLocation.canfletch := false;
  5345. end;
  5346.  
  5347. procedure FreeDTMZ;
  5348. begin
  5349. graphicOpti.Free;
  5350. daLogger.Status('Thanks for using ineedbot''s AIO Woodcutter v'+FloatToStr(Version)+'('+floatToStr(fversion)+')'+'! Please post your progress reports! Run time: '+Reflect.Time.msToTime(getTimeRunning(), TIME_FORMAL), []);
  5351. if useStats then
  5352. if statsServer.Commit then
  5353. daLogger.Status('Successfully sent heartbeat to ''stats.grats.pw''.', []);
  5354. end;
  5355.  
  5356. procedure setupPlayer;
  5357. begin
  5358. Reflect.Compass.Make('n');
  5359. Reflect.Compass.MakePitch(10);
  5360. LastXPCheck.restart;
  5361. end;
  5362.  
  5363. procedure _doCount(howManyToCount:integer);
  5364. var _items : TReflectInvItemArray;
  5365. i, h, count: integer;
  5366. begin
  5367. count := 0;
  5368. statsServer.IncreaseVariable('43', 1);
  5369. _items.GetAll;
  5370. for i:=0 to high(_items) do begin
  5371. for h:=0 to high(daLocation.Logs) do
  5372. if (_items[i].GetID = daLocation.Logs[h].ID) and (count < howManyToCount) then begin
  5373. inc(count);
  5374. inc(daLocation.Logs[h].chopped);
  5375.  
  5376. if (pos('logs', lowercase(_items[i].getName)) > 0) then begin
  5377. if (pos('oak', lowercase(_items[i].getName)) > 0) then
  5378. statsServer.IncreaseVariable('30', 1)
  5379. else if (pos('willow', lowercase(_items[i].getName)) > 0) then
  5380. statsServer.IncreaseVariable('31', 1)
  5381. else if (pos('maple', lowercase(_items[i].getName)) > 0) then
  5382. statsServer.IncreaseVariable('32', 1)
  5383. else if (pos('yew', lowercase(_items[i].getName)) > 0) then
  5384. statsServer.IncreaseVariable('33', 1)
  5385. else if (pos('magic', lowercase(_items[i].getName)) > 0) then
  5386. statsServer.IncreaseVariable('34', 1)
  5387. else if (pos('teak', lowercase(_items[i].getName)) > 0) then
  5388. statsServer.IncreaseVariable('131', 1)
  5389. else if (pos('arctic pine', lowercase(_items[i].getName)) > 0) then
  5390. statsServer.IncreaseVariable('136', 1)
  5391. else if (pos('mahogany', lowercase(_items[i].getName)) > 0) then
  5392. statsServer.IncreaseVariable('133', 1)
  5393. else
  5394. statsServer.IncreaseVariable('29', 1);
  5395. end;
  5396. if (pos('logs', lowercase(_items[i].getName)) > 0) then begin
  5397. if (pos('oak', lowercase(_items[i].getName)) > 0) then
  5398. statsServer.IncreaseVariable('24', 1)
  5399. else if (pos('willow', lowercase(_items[i].getName)) > 0) then
  5400. statsServer.IncreaseVariable('25', 1)
  5401. else if (pos('maple', lowercase(_items[i].getName)) > 0) then
  5402. statsServer.IncreaseVariable('26', 1)
  5403. else if (pos('yew', lowercase(_items[i].getName)) > 0) then
  5404. statsServer.IncreaseVariable('27', 1)
  5405. else if (pos('magic', lowercase(_items[i].getName)) > 0) then
  5406. statsServer.IncreaseVariable('28', 1)
  5407. else if (pos('teak', lowercase(_items[i].getName)) > 0) then
  5408. statsServer.IncreaseVariable('132', 1)
  5409. else if (pos('arctic pine', lowercase(_items[i].getName)) > 0) then
  5410. statsServer.IncreaseVariable('135', 1)
  5411. else if (pos('mahogany', lowercase(_items[i].getName)) > 0) then
  5412. statsServer.IncreaseVariable('134', 1)
  5413. else
  5414. statsServer.IncreaseVariable('23', 1);
  5415. end;
  5416. end;
  5417. end;
  5418. end;
  5419.  
  5420. procedure doCount;
  5421. var _items : TReflectInvItemArray;
  5422. i, h : integer;
  5423. begin
  5424. statsServer.IncreaseVariable('43', 1);
  5425. _items.GetAll;
  5426. for i:=0 to high(_items) do begin
  5427. for h:=0 to high(daLocation.Logs) do
  5428. if (_items[i].GetID = daLocation.Logs[h].ID) then begin
  5429. inc(daLocation.Logs[h].chopped);
  5430. if (pos('logs', lowercase(_items[i].getName)) > 0) then begin
  5431. if (pos('oak', lowercase(_items[i].getName)) > 0) then
  5432. statsServer.IncreaseVariable('30', 1)
  5433. else if (pos('willow', lowercase(_items[i].getName)) > 0) then
  5434. statsServer.IncreaseVariable('31', 1)
  5435. else if (pos('maple', lowercase(_items[i].getName)) > 0) then
  5436. statsServer.IncreaseVariable('32', 1)
  5437. else if (pos('yew', lowercase(_items[i].getName)) > 0) then
  5438. statsServer.IncreaseVariable('33', 1)
  5439. else if (pos('magic', lowercase(_items[i].getName)) > 0) then
  5440. statsServer.IncreaseVariable('34', 1)
  5441. else if (pos('teak', lowercase(_items[i].getName)) > 0) then
  5442. statsServer.IncreaseVariable('131', 1)
  5443. else if (pos('arctic pine', lowercase(_items[i].getName)) > 0) then
  5444. statsServer.IncreaseVariable('136', 1)
  5445. else if (pos('mahogany', lowercase(_items[i].getName)) > 0) then
  5446. statsServer.IncreaseVariable('133', 1)
  5447. else
  5448. statsServer.IncreaseVariable('29', 1);
  5449. end;
  5450. end;
  5451. end;
  5452. end;
  5453.  
  5454. procedure doDropping(forced:boolean=false);
  5455. var _items : TReflectInvItemArray;
  5456. i, _id, _slot : integer;
  5457. tB : TBox;
  5458. tP : TPoint;
  5459. firstTim, didFirstInRow : boolean;
  5460. logIDs, dropPattern : TIntegerArray;
  5461. begin
  5462. if not forced then
  5463. doCount;
  5464. updateScreen('Dropping items.');
  5465. doProggy(ProggieLocation);
  5466. firstTim := true;
  5467. logIDs := daLocation.getLogIDs;
  5468. exitMenu;
  5469. dropPattern := [1, 5, 9, 13, 17, 21, 25, 2, 6, 10, 14, 18, 22, 26, 3, 7, 11, 15, 19, 23, 27, 4, 8, 12, 16, 20, 24, 28];
  5470. while ReflectPlayer.isLoggedIn and (firstTim or Reflect.Inv.Contains(logIDs))
  5471. and not ReflectPlayer.IsUnderAttack and not anySlotActivated do begin
  5472. updateScreen('Dropping items.');
  5473. if Reflect.Gametab.CurrentColor <> Gametab_Inventory then
  5474. Reflect.Gametab.Open(Gametab_Inventory);
  5475. randomHandler;
  5476. _items.GetAll(true);
  5477. for i:=0 to high(dropPattern) do begin
  5478. if not ReflectPlayer.isLoggedIn then
  5479. break;
  5480. if ReflectPlayer.IsUnderAttack then
  5481. break;
  5482. if anySlotActivated then
  5483. break;
  5484.  
  5485. _slot := dropPattern[i]-1;
  5486.  
  5487. case _slot of
  5488. 0..3: didFirstInRow := false;
  5489. end;
  5490.  
  5491. _id := _items[_slot].getid;
  5492. if _id <= 0 then
  5493. continue;
  5494. if not itemInSlot(_items[_slot].getinvslot) then
  5495. continue;
  5496.  
  5497. if dropOnly then begin
  5498. if not inIntArray(logIDs, _id) then
  5499. continue;
  5500. end else begin
  5501. if inIntArray(KnifeIDs, _id) then
  5502. continue;
  5503. if inIntArray(ShaftIDs, _id) then
  5504. continue;
  5505. if inIntArray(NestIDs, _id) then
  5506. continue;
  5507. if inIntArray(KnifeIDs, _id) then
  5508. continue;
  5509. if inIntArray(GreeGreeIDs, _id) then
  5510. continue;
  5511. if inIntArray(TradingSticksIDs, _id) then
  5512. continue;
  5513. if inIntArray(TinderIDs, _id) then
  5514. continue;
  5515. if inIntArray(CoinsIDs, _id) then
  5516. continue;
  5517. if inIntArray(AxeIDs, _id) then
  5518. continue;
  5519. end;
  5520.  
  5521. tB := _items[_slot].GetBox;
  5522. getMousePos(tP.x, tP.y);
  5523.  
  5524. if not MouseKeys then begin
  5525. if not PointInBox(tP, tB) then
  5526. Reflect.Mouse.Move(tB);
  5527. fastClick(Mouse_right);
  5528. Reflect.Text.ChooseOption('Drop', 2500);
  5529. end else begin
  5530. if not didFirstInRow then begin
  5531. didFirstInRow := true;
  5532. if not PointInBox(tP, tB) then begin
  5533. Reflect.Mouse.Move(tB);
  5534. getMousePos(tP.x, tP.y);
  5535. end;
  5536. end;
  5537.  
  5538. if not PointInBox(tP, tB) then
  5539. MoveMouse(Reflect.Math.iGaussRange(tb.X1, tb.X2), Reflect.Math.iGaussRange(tb.y1, tb.y2));
  5540.  
  5541. fastClick(Mouse_right);
  5542. Reflect.Text.chooseOptionFast('Drop');
  5543. end;
  5544. end;
  5545. firstTim := false;
  5546. end;
  5547. end;
  5548.  
  5549. procedure doFire;
  5550. var goodLanes : TIntegerArray;
  5551. goodLane, h, activeID, i : integer;
  5552. tP, tP2 : TPoint;
  5553. tB : TBox;
  5554. fail, fail2, fail3 : TreflectTimer;
  5555. _item : TReflectInvItem;
  5556. _obj : TReflectObject;
  5557. logIDs : TIntegerArray;
  5558. begin
  5559. if not daLocation.canFire then
  5560. exit;
  5561.  
  5562. logIDs := daLocation.getLogIDs;
  5563. if not Reflect.Inv.Contains(LogIDs) then
  5564. exit;
  5565.  
  5566. if not Reflect.Inv.Contains(TinderIds) then
  5567. Exit;
  5568.  
  5569. goodLanes := getGoodFireLaneIndices;
  5570. goodLane := -1;
  5571.  
  5572. if high(goodLanes) <= -1 then begin
  5573. doDropping(true);
  5574. exit;
  5575. end;
  5576.  
  5577. if(random(5) = 1) then begin
  5578. goodLane := goodLanes[random(length(goodLanes))];
  5579. end else begin
  5580. for i:=0 to high(goodLanes) do
  5581. if (goodLane = -1) or (Reflect.Tiles.DistanceFromTile(daLocation.FireLanes[goodLanes[i]].Tile) < Reflect.Tiles.DistanceFromTile(daLocation.FireLanes[goodLane].Tile)) then
  5582. goodLane := goodLanes[i];
  5583. end;
  5584.  
  5585. fail.restart;
  5586. while not R_TileOnMS(daLocation.FireLanes[goodLane].Tile, tP) and (fail.Elapsedtime < 30000) do begin
  5587. updateScreen('Going to firelane.');
  5588. ReflectPlayer.BlindWalkMM(daLocation.FireLanes[goodLane].Tile, 5);
  5589. ReflectPlayer.FFlag(0, 2500+random(500));
  5590. sleepScript(500+random(500));
  5591. end;
  5592.  
  5593. goodLanes := getGoodFireLaneIndices;
  5594. goodLane := -1;
  5595.  
  5596. if high(goodLanes) <= -1 then begin
  5597. doDropping(true);
  5598. exit;
  5599. end;
  5600.  
  5601. for i:=0 to high(goodLanes) do
  5602. if (goodLane = -1) or (Reflect.Tiles.DistanceFromTile(daLocation.FireLanes[goodLanes[i]].Tile) < Reflect.Tiles.DistanceFromTile(daLocation.FireLanes[goodLane].Tile)) then
  5603. goodLane := goodLanes[i];
  5604.  
  5605. fail.restart;
  5606. while not Reflect.Tiles.NearTile(daLocation.FireLanes[goodLane].Tile, 1) and R_TileOnMS(daLocation.FireLanes[goodLane].Tile, tP) and (fail.Elapsedtime < 10000) do begin
  5607. updateScreen('Going to firelane tile.');
  5608. R_InteractTile(daLocation.FireLanes[goodLane].Tile, ['Walk']);
  5609. ReflectPlayer.FFlag(0, 5000+random(500));
  5610. sleepScript(500+random(500));
  5611. end;
  5612.  
  5613. tP := Reflect.Tiles.GetGlobalTile;
  5614. if Reflect.Inv.Contains(LogIDs) and Reflect.Inv.Contains(TinderIds) and
  5615. (tP.Y = daLocation.FireLanes[goodLane].Tile.Y) and (tP.X >= daLocation.FireLanes[goodLane].Tile.x-daLocation.FireLanes[goodLane].Length) and
  5616. (tP.X <= daLocation.FireLanes[goodLane].Tile.x) and ReflectPlayer.isLoggedIn and not ReflectPlayer.IsUnderAttack then
  5617. begin
  5618. _Docount(daLocation.FireLanes[goodLane].Length);
  5619. updateScreen('Making fires...');
  5620. randomHandler;
  5621. doProggy(ProggieLocation);
  5622. end;
  5623.  
  5624. while Reflect.Inv.Contains(LogIDs) and Reflect.Inv.Contains(TinderIds) and
  5625. (tP.Y = daLocation.FireLanes[goodLane].Tile.Y) and (tP.X >= daLocation.FireLanes[goodLane].Tile.x-daLocation.FireLanes[goodLane].Length) and
  5626. (tP.X <= daLocation.FireLanes[goodLane].Tile.x) and ReflectPlayer.isLoggedIn and not ReflectPlayer.IsUnderAttack do
  5627. begin
  5628. if Reflect.Gametab.CurrentColor <> Gametab_Inventory then
  5629. Reflect.Gametab.Open(Gametab_Inventory);
  5630.  
  5631. _obj.GetAt(ObjGame, tP);
  5632. if Reflect.Smart.IsNull(_obj.Reference) or not inIntArray(FireIDs, _obj.GetID) then begin
  5633. if not anySlotActivated(true) then begin
  5634. if _item.Find(TinderIds) then begin
  5635. getMousePos(tP2.x, tP2.y);
  5636. tB := _item.getbox;
  5637. if not PointInBox(tP2, tB) then
  5638. reflect.mouse.move(tB, mouse_left)
  5639. else
  5640. fastClick(mouse_left);
  5641. fail2.restart;
  5642. while not anySlotActivated(true) and (fail2.Elapsedtime < 1000) do
  5643. sleepScript(25);
  5644. end;
  5645. end;
  5646.  
  5647. if anySlotActivated(true) then begin
  5648. activeID := getActiveItemID;
  5649. if inIntArray(LogIDs, activeID) then begin
  5650. if _item.Find(TinderIds) then begin
  5651. getMousePos(tP2.x, tP2.y);
  5652. tB := _item.getbox;
  5653. if not PointInBox(tP2, tB) then
  5654. reflect.mouse.move(tB, mouse_left)
  5655. else
  5656. fastClick(mouse_left);
  5657. end;
  5658. end else begin
  5659. if inIntArray(TinderIds, activeID) then begin
  5660. if _item.Find(LogIDs) then begin
  5661. getMousePos(tP2.x, tP2.y);
  5662. tB := _item.getbox;
  5663. if not PointInBox(tP2, tB) then
  5664. reflect.mouse.move(tB, mouse_left)
  5665. else
  5666. fastClick(mouse_left);
  5667. end;
  5668. end else begin
  5669. fixActive;
  5670. end;
  5671. end;
  5672. end;
  5673.  
  5674. fail.restart;
  5675. fail2.restart;
  5676. fail3.restart;
  5677. while Reflect.Tiles.NearTile(tP, 1) and (fail.Elapsedtime < 2500) do begin
  5678. //updateScreen('Making fires...'); //to slow
  5679. //randomHandler;//to slow
  5680. if inIntArray(fireAnimIDs, ReflectPlayer.getAnimation) then
  5681. fail.restart;
  5682. if (fail3.Elapsedtime > 350) then begin //used to stop overlap or false postive with wasactive
  5683. if not anySlotActivated(true) then begin
  5684. if (Reflect.Inv.CountQuantities(LogIDs) > 1){cuz theres a delay until the log disappears} and ((tP.X-1) >= daLocation.FireLanes[goodLane].Tile.x-daLocation.FireLanes[goodLane].Length) then begin
  5685. if _item.Find(TinderIds) then begin
  5686. getMousePos(tP2.x, tP2.y);
  5687. tB := _item.getbox;
  5688. if not PointInBox(tP2, tB) then
  5689. reflect.mouse.move(tB, mouse_left)
  5690. else
  5691. fastClick(mouse_left);
  5692. fail2.restart;
  5693. while not anySlotActivated(true) and (fail2.Elapsedtime < 1000) do
  5694. sleepScript(25);
  5695. end;
  5696. end;
  5697. end;
  5698. if anySlotActivated(true) then begin
  5699. activeID := getActiveItemID;
  5700. if inIntArray(LogIDs, activeID) then begin
  5701. if _item.Find(TinderIds) then begin
  5702. getMousePos(tP2.x, tP2.y);
  5703. tB := _item.getbox;
  5704. if not PointInBox(tP2, tB) then
  5705. reflect.mouse.move(tB);
  5706. end;
  5707. end else begin
  5708. if inIntArray(TinderIds, activeID) then begin
  5709. if _item.Find(LogIDs) then begin
  5710. getMousePos(tP2.x, tP2.y);
  5711. tB := _item.getbox;
  5712. if not PointInBox(tP2, tB) then
  5713. reflect.mouse.move(tB);
  5714. end;
  5715. end else begin
  5716. fixActive;
  5717. end;
  5718. end;
  5719. end;
  5720. end;
  5721. end;
  5722.  
  5723. fail.restart;
  5724. _obj.GetAt(ObjGame, tP);
  5725. while (Reflect.Smart.IsNull(_obj.Reference) or not inIntArray(FireIDs, _obj.GetId)) and (fail.Elapsedtime < 2500) do
  5726. _obj.GetAt(ObjGame, tP);
  5727. tP := Reflect.Tiles.GetGlobalTile;
  5728. end else begin
  5729. for h:=tP.x downto daLocation.FireLanes[goodLane].Tile.X-daLocation.FireLanes[goodLane].Length do begin
  5730. _obj.GetAt(ObjGame, Point(h, tP.y));
  5731. if Reflect.Smart.IsNull(_obj.Reference) or not inIntArray(FireIDs, _obj.GetID) then begin
  5732. tP := Point(h, tP.y);
  5733. break;
  5734. end else begin
  5735. if (h = daLocation.FireLanes[goodLane].Tile.X-daLocation.FireLanes[goodLane].Length) then
  5736. exit;
  5737. end;
  5738. end;
  5739.  
  5740. fail.restart;
  5741. while not R_TileOnMS(tP, tP2) and (fail.Elapsedtime < 30000) do begin
  5742. updateScreen('Going to fire spot...');
  5743. ReflectPlayer.BlindWalkMM(tP, 5);
  5744. ReflectPlayer.FFlag(0, 2500+random(500));
  5745. sleepScript(500+random(500));
  5746. end;
  5747.  
  5748. fail.restart;
  5749. while not Reflect.Tiles.NearTile(tP, 1) and R_TileOnMS(tP, tP2) and (fail.Elapsedtime < 10000) do begin
  5750. updateScreen('Going to fire spot tile...');
  5751. FixActive;
  5752. R_InteractTile(tP, ['Walk']);
  5753. ReflectPlayer.FFlag(0, 5000+random(500));
  5754. sleepScript(500+random(500));
  5755. end;
  5756.  
  5757. updateScreen('Making fires...');
  5758. end;
  5759. end;
  5760. sleepScript(1000+random(1000));
  5761. end;
  5762.  
  5763. procedure doFletch;
  5764. var _item : TReflectInvItem;
  5765. i : integer;
  5766. logIDs : TIntegerArray;
  5767. begin
  5768. if not daLocation.canFletch then
  5769. exit;
  5770.  
  5771. logIDs := daLocation.getLogIDs;
  5772. if not Reflect.Inv.Contains(LogIDs) then
  5773. exit;
  5774.  
  5775. if not Reflect.Inv.Contains(KnifeIDs) then
  5776. exit;
  5777.  
  5778. while ReflectPlayer.IsLoggedIn and Reflect.Inv.Contains(LogIDs) and Reflect.Inv.Contains(KnifeIDs)
  5779. and not ReflectPlayer.IsUnderAttack do begin
  5780. if Reflect.Gametab.CurrentColor <> Gametab_Inventory then
  5781. Reflect.Gametab.Open(Gametab_Inventory);
  5782. UpdateScreen('Going to fletch.');
  5783. if not anySlotActivated then begin
  5784. for i:=0 to high(KnifeIDs) do begin
  5785. if _item.Find(KnifeIDs[i]) then begin
  5786. reflect.mouse.move(_item.getBox, mouse_left);
  5787. sleepScript(500+random(500));
  5788. break;
  5789. end;
  5790. end;
  5791. end;
  5792. if anySlotActivated(true) then begin
  5793. for i:=0 to high(LogIDs) do begin
  5794. if _item.Find(LogIDs[i]) then begin
  5795. reflect.mouse.move(_item.getBox, mouse_left);
  5796. sleepScript(1500+random(500));
  5797. break;
  5798. end;
  5799. end;
  5800. end;
  5801. Reflect.Mouse.Move(daLocation.FletchPoint, 15, 15, mouse_right);
  5802. if Reflect.Text.ChooseOption('Make X') then begin
  5803. sleepScript(750+random(1000));
  5804. Reflect.Keyboard.TypeSend('99', true);
  5805. sleepScript(random(1000));
  5806. if(random(round(AntiAmount/200)) <> 1)then
  5807. Reflect.Antiban.MMouseOffClient('rand');
  5808. sleepScript(1000);
  5809. while ReflectPlayer.IsLoggedIn and ReflectPlayer.isDoingAnim(FletchAnimationIDs, 1000) and
  5810. not ReflectPlayer.IsUnderAttack do begin
  5811. randomHandler;
  5812. FixActive;
  5813. UpdateScreen('Fletching...');
  5814. end;
  5815. end;
  5816. end;
  5817. end;
  5818.  
  5819. procedure goTobank;
  5820. var RsTIle, nearestNPCTile : TPoint;
  5821. i, h : integer;
  5822. nearestBank : BankLocation;
  5823. didPath : boolean;
  5824. label normal;
  5825. begin
  5826. if not daLocation.canBank or ((length(daLocation.BankLocations) = 0) and (length(daLocation.BankNPCs) = 0)) then
  5827. exit;
  5828.  
  5829. if Reflect.Bank.IsOpen or Reflect.Bank.IsPinOpen or Reflect.Bank.IsDepositBoxOpen or Reflect.Shop.IsOpen then
  5830. exit;
  5831.  
  5832. case daLocation.ID of
  5833. 5:begin//lum yew
  5834. if (length(daLocation.PathToBank) <> 0) then begin
  5835. if R_TileOnMM(daLocation.PathToBank[0], RSTile) then begin
  5836. updateScreen('Going to bank.');
  5837. ReflectPlayer.WalkPathMM(daLocation.PathToBank, false);
  5838. ReflectPlayer.FFlag(2+randomRange(-2, 2), 5000+random(500));
  5839. sleepScript(random(1500));
  5840. didPath := true;
  5841. end;
  5842. end;
  5843. while ReflectPlayer.IsLoggedIn and (Reflect.Tiles.GetPlane <> 2) and Reflect.Tiles.NearTile(daLocation.customTPAs[0][0], 100) do begin
  5844. randomHandler;
  5845. if(not R_TileOnMS(daLocation.customTPAs[0][0], rstile))then begin
  5846. UpdateScreen('Going to stairs.');
  5847. ReflectPlayer.BlindWalkMM(daLocation.customTPAs[0][0], 5);
  5848. ReflectPlayer.FFlag(0, 2500+random(500));
  5849. Sleepscript(random(2000));
  5850. end;
  5851. UpdateScreen('Going up stairs.');
  5852. if(R_InteractTile(daLocation.customTPAs[0][0], ['Climb-up']))then begin
  5853. ReflectPlayer.FFlag(0, 2500+random(500));
  5854. Sleepscript(random(2000));
  5855. end;
  5856. end;
  5857. if (Reflect.Tiles.GetPlane = 2) then
  5858. goTo normal;
  5859. end;
  5860. 32..33, 44:begin //gnome
  5861. if (length(daLocation.PathToBank) <> 0) then begin
  5862. if R_TileOnMM(daLocation.PathToBank[0], RSTile) then begin
  5863. updateScreen('Going to bank.');
  5864. ReflectPlayer.WalkPathMM(daLocation.PathToBank, false);
  5865. ReflectPlayer.FFlag(2+randomRange(-2, 2), 5000+random(500));
  5866. sleepScript(random(1500));
  5867. didPath := true;
  5868. end;
  5869. end;
  5870. if Reflect.Tiles.GetPlane = 0 then begin
  5871. if(not R_TileOnMS(daLocation.customTPAs[0][0], rstile))then begin
  5872. UpdateScreen('Going to stairs.');
  5873. ReflectPlayer.BlindWalkMM(daLocation.customTPAs[0][0], 5);
  5874. ReflectPlayer.FFlag(0, 2500+random(500));
  5875. Sleepscript(random(2000));
  5876. end;
  5877. UpdateScreen('Going up stairs.');
  5878. if(R_InteractTile(daLocation.customTPAs[0][0], ['Climb-up']))then begin
  5879. ReflectPlayer.FFlag(0, 2500+random(500));
  5880. Sleepscript(random(2000));
  5881. end;
  5882. end;
  5883. if Reflect.Tiles.GetPlane = 1 then
  5884. goto Normal;
  5885. end;
  5886. 18:begin//edge
  5887. if daLocation.DoorObjects[0].Open(true) then
  5888. goTo normal;
  5889. end;
  5890. 0..1, 6:begin//lumb gen
  5891. if daLocation.DoorObjects[0].Open(false) then
  5892. goTo normal;
  5893. end;
  5894. 47..50:begin //redwood
  5895. if Reflect.Tiles.GetPlane = 2 then begin
  5896. if(not R_TileOnMS(daLocation.customTPAs[0][0], rstile))then begin
  5897. UpdateScreen('Going to ladder.');
  5898. ReflectPlayer.BlindWalkMM(daLocation.customTPAs[0][0], 5);
  5899. ReflectPlayer.FFlag(0, 2500+random(500));
  5900. Sleepscript(random(2000));
  5901. end;
  5902. UpdateScreen('Going down ladder.');
  5903. if(R_InteractTile(daLocation.customTPAs[0][0], ['Climb-down']))then begin
  5904. ReflectPlayer.FFlag(0, 2500+random(500));
  5905. Sleepscript(random(2000));
  5906. end;
  5907. end;
  5908. if Reflect.Tiles.GetPlane = 0 then
  5909. goto Normal;
  5910. end;
  5911. else begin
  5912. normal:
  5913. if (length(daLocation.BankNPCs) = 0) then begin
  5914. nearestBank.Tile.x := -1;
  5915. for i:=0 to high(daLocation.BankLocations) do
  5916. if (Reflect.Tiles.DistanceFromTile(daLocation.BankLocations[i].Tile) < Reflect.Tiles.DistanceFromTile(nearestBank.Tile)) or (nearestBank.Tile.x = -1) then
  5917. nearestBank := daLocation.BankLocations[i];
  5918. if R_TileOnMS(nearestBank.Tile, RSTile, nearestBank.Offset[0], nearestBank.Offset[1], nearestBank.Offset[2]) then
  5919. exit;
  5920. end else begin
  5921. nearestNPCTile.x := -1;
  5922. for i:=0 to high(daLocation.BankNPCs) do
  5923. for h:=0 to high(daLocation.BankNPCs[i].Locations) do
  5924. if (Reflect.Tiles.DistanceFromTile(daLocation.BankNPCs[i].Locations[h]) < Reflect.Tiles.DistanceFromTile(nearestNPCTile)) or (nearestNPCTile.x = -1) then
  5925. nearestNPCTile := daLocation.BankNPCs[i].Locations[h];
  5926. if R_TileOnMS(nearestNPCTile, RSTile) then
  5927. exit;
  5928. end;
  5929.  
  5930. if (length(daLocation.PathToBank) <> 0) and not didPath then begin
  5931. if R_TileOnMM(daLocation.PathToBank[0], RSTile) then begin
  5932. updateScreen('Going to bank.');
  5933. ReflectPlayer.WalkPathMM(daLocation.PathToBank, false);
  5934. ReflectPlayer.FFlag(2+randomRange(-2, 2), 5000+random(500));
  5935. sleepScript(random(1500));
  5936. exit;
  5937. end;
  5938. end;
  5939.  
  5940. if (length(daLocation.BankNPCs) = 0) then begin
  5941. nearestBank.Tile.x := -1;
  5942. for i:=0 to high(daLocation.BankLocations) do
  5943. if (Reflect.Tiles.DistanceFromTile(daLocation.BankLocations[i].Tile) < Reflect.Tiles.DistanceFromTile(nearestBank.Tile)) or (nearestBank.Tile.x = -1) then
  5944. nearestBank := daLocation.BankLocations[i];
  5945.  
  5946. updateScreen('Going to bank.');
  5947. ReflectPlayer.BlindWalkMM(Point(nearestBank.Tile.x + nearestBank.TileOffset[0], nearestBank.Tile.y + nearestBank.TileOffset[1]), 5);
  5948. ReflectPlayer.FFlag(2+randomRange(-2, 2), 5000+random(500));
  5949. sleepScript(random(1500));
  5950. end else begin
  5951. nearestNPCTile.x := -1;
  5952. for i:=0 to high(daLocation.BankNPCs) do
  5953. for h:=0 to high(daLocation.BankNPCs[i].Locations) do
  5954. if (Reflect.Tiles.DistanceFromTile(daLocation.BankNPCs[i].Locations[h]) < Reflect.Tiles.DistanceFromTile(nearestNPCTile)) or (nearestNPCTile.x = -1) then
  5955. nearestNPCTile := daLocation.BankNPCs[i].Locations[h];
  5956.  
  5957. updateScreen('Going to bank npc.');
  5958. ReflectPlayer.BlindWalkMM(nearestNPCTile, 5);
  5959. ReflectPlayer.FFlag(2+randomRange(-2, 2), 5000+random(500));
  5960. sleepScript(random(1500));
  5961. end;
  5962. end;
  5963. end;
  5964. end;
  5965.  
  5966. procedure openBank;
  5967. var RsTIle, nearestNPCTile : TPoint;
  5968. i, h : integer;
  5969. nearestBank : BankLocation;
  5970. nearestNPC : BankNPC;
  5971. timer : TReflectTimer;
  5972. label normal;
  5973. begin
  5974. if not daLocation.canBank or ((length(daLocation.BankLocations) = 0) and (length(daLocation.BankNPCs) = 0)) then
  5975. exit;
  5976.  
  5977. if Reflect.Bank.IsOpen or Reflect.Bank.IsPinOpen or Reflect.Bank.IsDepositBoxOpen or Reflect.Shop.IsOpen then
  5978. exit;
  5979.  
  5980. case daLocation.ID of
  5981. 0..1, 6:begin//lumb gen
  5982. if daLocation.DoorObjects[0].Open(false) then
  5983. goTo normal;
  5984. end;
  5985. 18:begin//edge
  5986. if daLocation.DoorObjects[0].Open(true) then
  5987. goTo normal;
  5988. end;
  5989. else begin
  5990. normal:
  5991. if (length(daLocation.BankNPCs) = 0) then begin
  5992. Reflect.Compass.Make('n');
  5993. Reflect.Compass.MakePitch(10);
  5994.  
  5995. nearestBank.Tile.x := -1;
  5996. for i:=0 to high(daLocation.BankLocations) do
  5997. if (Reflect.Tiles.DistanceFromTile(daLocation.BankLocations[i].Tile) < Reflect.Tiles.DistanceFromTile(nearestBank.Tile)) or (nearestBank.Tile.x = -1) then
  5998. nearestBank := daLocation.BankLocations[i];
  5999.  
  6000. if (Reflect.Tiles.GetPlane <> nearestBank.Plane) then
  6001. exit;
  6002.  
  6003. if not R_TileOnMS(nearestBank.Tile, RSTile, nearestBank.Offset[0], nearestBank.Offset[1], nearestBank.Offset[2]) then begin
  6004. updateScreen('Going to bank.');
  6005. ReflectPlayer.BlindWalkMM(Point(nearestBank.Tile.x + nearestBank.TileOffset[0], nearestBank.Tile.y + nearestBank.TileOffset[1]), 5);
  6006. ReflectPlayer.FFlag(2+randomRange(-2, 2), 5000+random(500));
  6007. sleepScript(random(1500));
  6008. end;
  6009. if R_TileOnMS(nearestBank.Tile, RSTile, nearestBank.Offset[0], nearestBank.Offset[1], nearestBank.Offset[2]) then begin
  6010. updateScreen('Opening bank.');
  6011. if R_InteractTile(nearestBank.Tile, nearestBank.Options, nearestBank.Offset[0], nearestBank.Offset[1], nearestBank.Offset[2], true) then begin
  6012. ReflectPlayer.FFlag(0, 5000+random(500));
  6013. Timer.Restart;
  6014. while not Reflect.Bank.IsOpen and not Reflect.Bank.IsPinOpen and not Reflect.Bank.IsDepositBoxOpen
  6015. and not Reflect.Shop.IsOpen and (timer.ElapsedTime < 2500) do
  6016. sleepScript(50);
  6017. end;
  6018. end;
  6019. end else begin
  6020. nearestNPCTile.x := -1;
  6021. for i:=0 to high(daLocation.BankNPCs) do
  6022. for h:=0 to high(daLocation.BankNPCs[i].Locations) do
  6023. if (Reflect.Tiles.DistanceFromTile(daLocation.BankNPCs[i].Locations[h]) < Reflect.Tiles.DistanceFromTile(nearestNPCTile)) or (nearestNPCTile.x = -1) then begin
  6024. nearestNPCTile := daLocation.BankNPCs[i].Locations[h];
  6025. nearestNPC := daLocation.BankNPCs[i];
  6026. end;
  6027.  
  6028. if (Reflect.Tiles.GetPlane <> nearestNPC.Plane) then
  6029. exit;
  6030.  
  6031. updateScreen('Opening bank npc.');
  6032. if R_TryInteractNPC(nearestNPC.IDs, nearestNPC.Options, 5, nearestNPC.Offset[0], nearestNPC.Offset[1], nearestNPC.Offset[2]) then begin
  6033. ReflectPlayer.FFlag(0, 5000+random(500));
  6034. Timer.Restart;
  6035. while not Reflect.Bank.IsOpen and not Reflect.Bank.IsPinOpen and not Reflect.Bank.IsDepositBoxOpen
  6036. and not Reflect.Shop.IsOpen and (timer.ElapsedTime < 2500) do
  6037. sleepScript(50);
  6038. end;
  6039. end;
  6040. end;
  6041. end;
  6042. end;
  6043.  
  6044. procedure goToTrees;
  6045. var RsTIle, farest : TPoint;
  6046. i : integer;
  6047. didPath : boolean;
  6048. label normal;
  6049. begin
  6050. if length(daLocation.TreeLocations) = 0 then
  6051. exit;
  6052.  
  6053. case daLocation.ID of
  6054. 5:begin//lum yew
  6055. while ReflectPlayer.IsLoggedIn and (Reflect.Tiles.GetPlane <> 0) and Reflect.Tiles.NearTile(daLocation.customTPAs[0][0], 100) do begin
  6056. randomHandler;
  6057. if(not R_TileOnMS(daLocation.customTPAs[0][0], rstile))then begin
  6058. UpdateScreen('Going to stairs.');
  6059. ReflectPlayer.BlindWalkMM(daLocation.customTPAs[0][0], 5);
  6060. ReflectPlayer.FFlag(0, 2500+random(500));
  6061. Sleepscript(random(2000));
  6062. end;
  6063. UpdateScreen('Going down stairs.');
  6064. if(R_InteractTile(daLocation.customTPAs[0][0], ['Climb-down']))then begin
  6065. ReflectPlayer.FFlag(0, 2500+random(500));
  6066. Sleepscript(random(2000));
  6067. end;
  6068. end;
  6069. if (Reflect.Tiles.GetPlane = 0) then
  6070. goTo normal;
  6071. end;
  6072. 32..33, 44:begin //gnome
  6073. if(Reflect.Tiles.GetPlane <> 0) then begin
  6074. if(not R_TileOnMS(daLocation.customTPAs[0][1], rstile))then begin
  6075. UpdateScreen('Going to stairs.');
  6076. ReflectPlayer.BlindWalkMM(daLocation.customTPAs[0][1], 5);
  6077. ReflectPlayer.FFlag(0, 2500+random(500));
  6078. Sleepscript(random(2000));
  6079. end;
  6080. UpdateScreen('Going down stairs.');
  6081. if(R_InteractTile(daLocation.customTPAs[0][1], ['Climb-down']))then begin
  6082. ReflectPlayer.FFlag(0, 2500+random(500));
  6083. Sleepscript(random(2000));
  6084. end;
  6085. end;
  6086. if(Reflect.Tiles.GetPlane = 0) then
  6087. goTO normal;
  6088. end;
  6089. 18:begin//edge
  6090. if daLocation.DoorObjects[0].Open(false) then
  6091. goTo normal;
  6092. end;
  6093. 0..1, 6:begin//lumb gen
  6094. if daLocation.DoorObjects[0].Open(true) then
  6095. goTo normal;
  6096. end;
  6097. 47..50:begin //redwood
  6098. if(Reflect.Tiles.GetPlane <> 2) then begin
  6099. if(not R_TileOnMS(daLocation.customTPAs[0][0], rstile))then begin
  6100. UpdateScreen('Going to ladder.');
  6101. ReflectPlayer.BlindWalkMM(daLocation.customTPAs[0][0], 5);
  6102. ReflectPlayer.FFlag(0, 2500+random(500));
  6103. Sleepscript(random(2000));
  6104. end;
  6105. UpdateScreen('Going up ladder.');
  6106. if(R_InteractTile(daLocation.customTPAs[0][0], ['Climb-up']))then begin
  6107. ReflectPlayer.FFlag(0, 2500+random(500));
  6108. Sleepscript(random(2000));
  6109. end;
  6110. end;
  6111. if(Reflect.Tiles.GetPlane = 2) then
  6112. goTO normal;
  6113. end;
  6114. else begin
  6115. normal:
  6116. if (length(daLocation.PathToTree) <> 0) and not didPath then begin
  6117. if R_TileOnMM(daLocation.PathToTree[0], RSTile) then begin
  6118. updateScreen('Going to trees.');
  6119. ReflectPlayer.WalkPathMM(daLocation.PathToTree, false);
  6120. ReflectPlayer.FFlag(2+randomRange(-2, 2), 5000+random(500));
  6121. sleepScript(random(1500));
  6122. exit;
  6123. end;
  6124. end;
  6125.  
  6126. farest.x := -1;
  6127. for i:=0 to high(daLocation.TreeLocations) do
  6128. if (Reflect.Tiles.DistanceFromTile(daLocation.TreeLocations[i]) > Reflect.Tiles.DistanceFromTile(farest)) or (farest.x = -1) then
  6129. farest := daLocation.TreeLocations[i];
  6130.  
  6131. updateScreen('Going to tree spots.');
  6132. ReflectPlayer.BlindWalkMM(farest, 5);
  6133. ReflectPlayer.FFlag(2+randomRange(-2, 2), 5000+random(500));
  6134. sleepScript(random(1500));
  6135. end;
  6136. end;
  6137. end;
  6138.  
  6139. procedure doBanking;
  6140. var _items : TReflectInvItemArray;
  6141. i, count, _id : integer;
  6142. firstTim : boolean;
  6143. logIDs : TIntegerArray;
  6144. tB : TBox;
  6145. tim : treflecttimer;
  6146. begin
  6147. if not daLocation.canBank then
  6148. exit;
  6149.  
  6150. firstTim := true;
  6151. logIDs := daLocation.getLogIDs;
  6152. if daLocation.isSell then begin
  6153. if not Reflect.Shop.IsOpen then
  6154. exit;
  6155. doCount;
  6156. updateScreen('Selling items.');
  6157. doProggy(ProggieLocation);
  6158. while ReflectPlayer.isLoggedIn and (Reflect.Inv.Contains(LogIDs) or firstTim) and
  6159. Reflect.Shop.IsOpen do begin
  6160. updateScreen('Selling items.');
  6161. _items.GetAll;
  6162. for i:=0 to high(_items) do begin
  6163. if not ReflectPlayer.IsLoggedIn then
  6164. break;
  6165. if not Reflect.Shop.IsOpen then
  6166. break;
  6167.  
  6168. if not itemInSlot(_items[i].getinvslot) then
  6169. continue;
  6170.  
  6171. _id := _items[i].getId;
  6172. if dropOnly then begin
  6173. if not inIntArray(LogIDs, _id) then
  6174. continue;
  6175. end else begin
  6176. if inIntArray(KnifeIDs, _id) then
  6177. continue;
  6178. if inIntArray(AxeIDs, _id) then
  6179. continue;
  6180. if inIntArray(CoinsIDs, _id) then
  6181. continue;
  6182. if inIntArray(ShaftIDs, _id) then
  6183. continue;
  6184. end;
  6185.  
  6186. count := Reflect.Inv.Count;
  6187. tB := _items[i].getbox;
  6188. Reflect.Mouse.Move(tB, mouse_right);
  6189. sleepScript(100+random(100));
  6190. Reflect.Text.ChooseOption('Sell 50');
  6191. tim.restart;
  6192. while (tim.Elapsedtime < 2500) and (Reflect.Inv.Count = count) do
  6193. sleepScript(20 + Random(20));
  6194. sleepScript(500+random(250));
  6195. if pos('highly over-stocked', Reflect.Chat.GetTextOnLine(1)) > 1 then begin
  6196. Reflect.Interfaces.Close(Interface_ShopMenu);
  6197. sleepScript(1000+random(1500));
  6198. doDropping(true);
  6199. exit;
  6200. end;
  6201. end;
  6202. firstTim := false;
  6203. end;
  6204. if(random(2) = 1)then
  6205. Reflect.Interfaces.Close(Interface_ShopMenu);
  6206. sleepScript(random(1500));
  6207. goToTrees;
  6208. end else begin
  6209. if not Reflect.Bank.IsOpen and not Reflect.Bank.IsDepositBoxOpen and not Reflect.Bank.IsPinOpen then
  6210. exit;
  6211.  
  6212. if Reflect.Bank.IsPinOpen then begin
  6213. if length(ReflectPlayer.Pin) = 4 then
  6214. Reflect.Bank.EnterPin(ReflectPlayer.Pin)
  6215. else begin
  6216. Reflect.Bank.Close;
  6217. daLogger.Status('Invalid pin.', []);
  6218. UpdateScreen('Invalid pin.');
  6219. ReflectPlayer.Active := false;
  6220. ReflectPlayer.Logout;
  6221. sleepScript(2500);
  6222. exit;
  6223. end;
  6224. sleepScript(random(2500));
  6225. end;
  6226.  
  6227. if not Reflect.Bank.IsOpen and not Reflect.Bank.IsDepositBoxOpen then
  6228. exit;
  6229. doCount;
  6230. updateScreen('Banking items.');
  6231. doProggy(ProggieLocation);
  6232. while ReflectPlayer.IsLoggedIn and (Reflect.Inv.Contains(LogIDs) or firstTim) and
  6233. (Reflect.Bank.IsOpen or Reflect.Bank.IsDepositBoxOpen) do begin
  6234. updateScreen('Banking items.');
  6235. if not Reflect.Inv.Contains(KnifeIDs) and not Reflect.Inv.Contains(AxeIDs) and
  6236. not Reflect.Inv.Contains(CoinsIDs) and not Reflect.Inv.Contains(ShaftIDs) and (random(2) = 0) then begin
  6237. Reflect.Bank.DepositAll('inv');
  6238. sleepScript(1000+random(1000));
  6239. end else begin
  6240. _items.GetAll;
  6241. for i:=0 to high(_items) do begin
  6242. if not ReflectPlayer.IsLoggedIn then
  6243. break;
  6244. if not Reflect.Bank.IsOpen and not Reflect.Bank.IsDepositBoxOpen then
  6245. break;
  6246.  
  6247. if not itemInSlot(_items[i].getinvslot) then
  6248. continue;
  6249.  
  6250. _id := _items[i].getId;
  6251. if dropOnly then begin
  6252. if not inIntArray(LogIDs, _id) then
  6253. continue;
  6254. end else begin
  6255. if inIntArray(KnifeIDs, _id) then
  6256. continue;
  6257. if inIntArray(AxeIDs, _id) then
  6258. continue;
  6259. if inIntArray(CoinsIDs, _id) then
  6260. continue;
  6261. if inIntArray(ShaftIDs, _id) then
  6262. continue;
  6263. end;
  6264.  
  6265. if not Reflect.Bank.IsDepositBoxOpen then
  6266. tB := _items[i].GetBox
  6267. else
  6268. tB := Reflect.Bank.DepositBoxBox(_items[i].GetInvSlot);
  6269. count := Reflect.Inv.Count;
  6270. Reflect.Mouse.Move(tB, mouse_right);
  6271. sleepScript(100+random(100));
  6272. Reflect.Text.ChooseOption('Deposit-All');
  6273. tim.restart;
  6274. while (tim.Elapsedtime < 2500) and (Reflect.Inv.Count = count) do
  6275. sleepScript(20 + Random(20));
  6276. sleepScript(500+random(250));
  6277. end;
  6278. end;
  6279. firstTim := false;
  6280. end;
  6281. if(random(2) = 1)then
  6282. Reflect.Bank.Close;
  6283.  
  6284. sleepScript(random(1500));
  6285. goToTrees;
  6286. end;
  6287. end;
  6288.  
  6289. function TReflectObject.ToTree:TreeObject;
  6290. begin
  6291. with result do begin
  6292. AliveIDs := [self.GetId];
  6293. DeadIDs := [];
  6294. Options := ['Chop down'];
  6295. TileOffset := [0, 0];
  6296. Tile := self.GetTile;
  6297. Index := 0;
  6298. Name := '';
  6299. Timer.Restart;
  6300. Timer.StartTime := -1;
  6301. if inIntArray([1278, 1276, 7482, 7480, 7424, 7422], self.GetId) then
  6302. Offset := [75, 75, 200]
  6303. else if inIntArray([7417, 7419, 7420], self.GetId) then
  6304. Offset := [150, 150, 250]
  6305. else
  6306. Offset := [0, 0, 100];
  6307. end;
  6308. end;
  6309.  
  6310. procedure chopTree;
  6311. var tempTree : TreeObject;
  6312. rSTile : Tpoint;
  6313. tempObject : TReflectObject;
  6314. i, objectID : integer;
  6315. _objects : TReflectobjecTArray;
  6316. tempTrees : TreeObjectArray;
  6317. begin
  6318. if useFakeWaitTime and wasWorking then begin
  6319. updateScreen('Doing fake ''antiban'' wait.');
  6320. sleepScript(1000+random(7500));
  6321. end;
  6322. if R_DidLevelUp or R_DidLevelUpExtra then begin
  6323. updateScreen('Clicking level up!');
  6324.  
  6325. for i:=0 to 1000 do
  6326. if not FileExists(ScriptPath+'ineedbot''s clicking level up '+toStr(i)+'.png')then
  6327. break;
  6328. doProggy(ScriptPath+'ineedbot''s clicking level up '+toStr(i)+'.png');
  6329.  
  6330. R_DidLevelUp(true);
  6331. R_DidLevelUpExtra(true);
  6332. end;
  6333.  
  6334. case daLocation.ID of
  6335. 18:begin//edge
  6336. if not daLocation.DoorObjects[0].Open(false) then
  6337. exit;
  6338. end;
  6339. 0..1, 6:begin//lum gen
  6340. if not daLocation.DoorObjects[0].Open(true) then
  6341. exit;
  6342. end;
  6343. 5:begin //lum yew
  6344. if Reflect.Tiles.GetPlane <> 0 then begin
  6345. goToTrees;
  6346. exit;
  6347. end;
  6348. end;
  6349. 32..33, 44:begin //gnome
  6350. if Reflect.Tiles.GetPlane <> 0 then begin
  6351. goToTrees;
  6352. exit;
  6353. end;
  6354. end;
  6355. 47..50:begin //redwood
  6356. if Reflect.Tiles.GetPlane <> 2 then begin
  6357. goToTrees;
  6358. exit;
  6359. end;
  6360. end;
  6361. end;
  6362.  
  6363. updateScreen('Looking for tree...');
  6364. tempTree.Tile.X := 0;
  6365.  
  6366. if daLocation.isPower then begin
  6367. wasWorking := false;
  6368. if daLocation.distanceCheck < 1 then
  6369. _objects.GetAll(ObjGame, 30)
  6370. else
  6371. _objects.GetAll2(ObjGame, daLocation.distanceCheck, daLocation.TreeLocations[0]);
  6372. for i:=0 to high(_objects) do begin
  6373. if inIntArray(daLocation.customIDs[0], _objects[i].getId) then begin
  6374. tempTree := _objects[i].ToTree;
  6375. break;
  6376. end;
  6377. end;
  6378. if not tempTree.isValid then
  6379. goToTrees;
  6380. end else begin
  6381. if daLocation.isFar then begin
  6382. wasWorking := false;
  6383. tempTrees := daLocation.TreeObjects.getAliveTrees;
  6384. if length(tempTrees) <> 0 then begin
  6385. tempTree := tempTrees.getClosestTree;
  6386. end else begin
  6387. tempTree := daLocation.TreeObjects.getNextTree(PreviousTree);
  6388. PreviousTree := daLocation.TreeObjects.getClosestTree;
  6389. UpdateScreen('Going to next tree...');
  6390. if tempTree.isValid and not R_TileOnMS(tempTree.Tile, rsTile, tempTree.Offset[0], tempTree.Offset[1], tempTree.Offset[2]) then begin
  6391. ReflectPlayer.BlindWalkMM(Point(tempTree.Tile.x + tempTree.TileOffset[0], tempTree.Tile.y + tempTree.TileOffset[1]), 5);
  6392. ReflectPlayer.FFlag(2+randomRange(-2, 2), 5000+random(500));
  6393. sleepScript(random(1500));
  6394. end;
  6395. end;
  6396. end else begin
  6397. tempTrees := daLocation.TreeObjects.getAliveTrees;
  6398. if length(tempTrees) <> 0 then begin
  6399. tempTree := tempTrees.getClosestTree;
  6400. end else begin
  6401. tempTrees := daLocation.TreeObjects.getDeadTrees;
  6402. if length(tempTrees) <> 0 then begin
  6403. if daLocation.canFire and (daLocation.ID = 42) then begin
  6404. doFire;
  6405. exit;
  6406. end;
  6407. tempTree := daLocation.TreeObjects.getClosestTreeTime;
  6408. if tempTree.isValid then begin
  6409. if not Reflect.Tiles.NearTile(TempTree.Tile, 5) then begin
  6410. ReflectPlayer.BlindWalkMM(Point(tempTree.Tile.x + tempTree.TileOffset[0], tempTree.Tile.y + tempTree.TileOffset[1]), 5);
  6411. ReflectPlayer.FFlag(2+randomRange(-2, 2), 5000+random(500));
  6412. sleepScript(random(1500));
  6413. end;
  6414. tempTree.Tile.X := 0;
  6415. end;
  6416. end else begin
  6417. goToTrees;
  6418. exit;
  6419. end;
  6420. end;
  6421. end;
  6422. end;
  6423.  
  6424. if tempTree.isValid then begin
  6425. PreviousTree := daLocation.TreeObjects.getClosestTree;
  6426. updateScreen('Going to chop tree.');
  6427. if not R_TileOnMS(tempTree.Tile, rsTile, tempTree.Offset[0], tempTree.Offset[1], tempTree.Offset[2]) then begin
  6428. ReflectPlayer.BlindWalkMM(Point(tempTree.Tile.x + tempTree.TileOffset[0], tempTree.Tile.y + tempTree.TileOffset[1]), 5);
  6429. ReflectPlayer.FFlag(2+randomRange(-2, 2), 5000+random(500));
  6430. sleepScript(random(1500));
  6431. end;
  6432.  
  6433. Reflect.Interfaces.CloseAll;
  6434.  
  6435. if R_TileOnMS(tempTree.Tile, rsTile, tempTree.Offset[0], tempTree.Offset[1], tempTree.Offset[2]) then begin
  6436. if UseSpec and (ReflectPlayer.GetSpecPercent >= 100)then begin
  6437. if Reflect.Gametab.CurrentColor <> Gametab_CombatOptions then
  6438. Reflect.Gametab.Open(Gametab_CombatOptions);
  6439. reflect.mouse.move(Point(645, 432), 5, 5);
  6440. FastClick(mouse_left);
  6441. end;
  6442. if R_InteractTile(tempTree.Tile, tempTree.Options, tempTree.Offset[0], tempTree.Offset[1], tempTree.Offset[2]) then begin
  6443. sleepScript(random(1000));
  6444. if(random(round(AntiAmount/200)) <> 0)then
  6445. Reflect.Antiban.MMouseOffClient('Random');
  6446. ReflectPlayer.FFlag(0, 5000+random(500));
  6447. sleepScript(1000+random(1000));
  6448. tempObject.GetAt(ObjGame, tempTree.Tile);
  6449. if not Reflect.Smart.IsNull(tempObject.Reference) then
  6450. objectID := tempObject.GetId
  6451. else
  6452. objectID := -1;
  6453. while ReflectPlayer.IsLoggedIn and inIntArray(TempTree.AliveIDs, objectID) and
  6454. (inIntArray(ChopAnimationIDs, ReflectPlayer.GetAnimation) or apeAtollIsChopping(tempTree.tile, tempTree.AliveIDs)) and
  6455. not Reflect.Inv.IsFull and not ReflectPlayer.IsUnderAttack do
  6456. begin
  6457. randomHandler;
  6458. FixActive;
  6459. UpdateScreen('Chopping tree...');
  6460. wasWorking := true;
  6461. tempObject.GetAt(ObjGame, tempTree.Tile);
  6462. if not Reflect.Smart.IsNull(tempObject.Reference) then
  6463. objectID := tempObject.GetId
  6464. else
  6465. objectID := -1;
  6466. end;
  6467. end;
  6468. end;
  6469. end;
  6470. end;
  6471.  
  6472. procedure runAway;
  6473. var RSTile : TPoint;
  6474. label _random;
  6475. begin
  6476. RsTIle := Reflect.Tiles.GetGlobalTile;
  6477. updateScreen('Running away.');
  6478. if length(daLocation.RunDirections) = 0 then begin
  6479. goto _random;
  6480. end else begin
  6481. case daLocation.RunDirections[random(length(daLocation.RunDirections))] of
  6482. 'n':begin
  6483. ReflectPlayer.BlindWalkMM(point(RsTIle.x, RsTIle.y+15), 5);
  6484. end;
  6485. 's':begin
  6486. ReflectPlayer.BlindWalkMM(point(RsTIle.x, RsTIle.y-15), 5);
  6487. end;
  6488. 'w':begin
  6489. ReflectPlayer.BlindWalkMM(point(RsTIle.x-15, RsTIle.y), 5);
  6490. end;
  6491. 'e':begin
  6492. ReflectPlayer.BlindWalkMM(point(RsTIle.x+15, RsTIle.y), 5);
  6493. end;
  6494. else begin
  6495. _random:
  6496. case random(8) of
  6497. 0:ReflectPlayer.BlindWalkMM(point(RsTIle.x, RsTIle.y-15), 5);
  6498. 1:ReflectPlayer.BlindWalkMM(point(RsTIle.x, RsTIle.y+15), 5);
  6499. 2:ReflectPlayer.BlindWalkMM(point(RsTIle.x+15, RsTIle.y), 5);
  6500. 3:ReflectPlayer.BlindWalkMM(point(RsTIle.x-15, RsTIle.y), 5);
  6501. 4:ReflectPlayer.BlindWalkMM(point(RsTIle.x+15, RsTIle.y-15), 5);
  6502. 5:ReflectPlayer.BlindWalkMM(point(RsTIle.x-15, RsTIle.y+15), 5);
  6503. 6:ReflectPlayer.BlindWalkMM(point(RsTIle.x-15, RsTIle.y-15), 5);
  6504. 7:ReflectPlayer.BlindWalkMM(point(RsTIle.x+15, RsTIle.y+15), 5);
  6505. end;
  6506. end;
  6507. end;
  6508. end;
  6509. ReflectPlayer.FFlag(2+randomRange(-2, 2), 5000+random(500));
  6510. sleepScript(random(1500));
  6511. end;
  6512.  
  6513. procedure doChecks;
  6514. var i, tInt : integer;
  6515. _items : TReflectGroundItemArray;
  6516. rsTile, nestTile : TPoint;
  6517. begin
  6518. UpdateScreen('');
  6519.  
  6520. randomHandler;
  6521. FixActive;
  6522.  
  6523. if daLocation.canfire and not Reflect.Inv.Contains(TinderIds) then
  6524. daLocation.canfire := false;
  6525.  
  6526. if daLocation.canfletch and not Reflect.Inv.Contains(KnifeIDs) then
  6527. daLocation.canfletch := false;
  6528.  
  6529. if(ReflectPlayer.GetRunEnergy >= RunAmount) and not ReflectPlayer.IsRunOn then
  6530. ReflectPlayer.SetRun(true);
  6531.  
  6532. if gItemTim.Elapsedtime > gItemOften then begin
  6533. _items.GetAll(ItemCheckDistance);
  6534. for i:=0 to high(_items) do begin
  6535. nestTile := _items[i].GetTile;
  6536. if inIntArray(NestIDs, _items[i].getId) and not Reflect.Inv.IsFull {and canBank} then begin
  6537. daLogger.Status('Found nest!', []);
  6538. UpdateScreen('Found nest...');
  6539. if not R_TileOnMS(nestTile, RSTile) then begin
  6540. ReflectPlayer.BlindWalkMM(nestTile, 5);
  6541. ReflectPlayer.FFlag(2+randomRange(-2, 2), 5000+random(500));
  6542. sleepScript(random(1500));
  6543. end;
  6544.  
  6545. UpdateScreen('Taking nest...');
  6546. if R_InteractTile(nestTile, ['Take B']) then begin
  6547. inc(Nests);
  6548. statsServer.IncreaseVariable('119', 1);
  6549. ReflectPlayer.FFlag(0, 5000+random(500));
  6550. sleepScript(random(2000));
  6551. end;
  6552. end;
  6553. end;
  6554. gItemTim.restart;
  6555. end;
  6556.  
  6557. if ReflectPlayer.IsUnderAttack then begin
  6558. UpdateScreen('Under attack! Running away to bank.');
  6559. daLogger.Status('Under attack!', []);
  6560. runAway;
  6561. sleepScript(5000+random(2500));
  6562. end;
  6563.  
  6564. if(LastXPCheck.Elapsedtime > 600000) then begin
  6565. if Reflect.Gametab.CurrentColor <> Gametab_Inventory then
  6566. Reflect.Gametab.Open(Gametab_Inventory);
  6567. setupPlayer;
  6568. if(ReflectPlayer.GetSkillExp(SKILL_WOODCUTTING) <= LastXPXP)then begin
  6569. UpdateScreen('No woodcutting XP gained in 10 minutes.');
  6570. daLogger.Error('No woocutting XP gained in 10 minutes.', []);
  6571. LastXPXP := ReflectPlayer.GetSkillExp(SKILL_WOODCUTTING);
  6572. ReflectPlayer.Active := false;
  6573. ReflectPlayer.Logout;
  6574. sleepScript(2500);
  6575. exit;
  6576. end;
  6577. LastXPXP := ReflectPlayer.GetSkillExp(SKILL_WOODCUTTING);
  6578. end;
  6579.  
  6580. if (StatsTimer.Elapsedtime > StatsTime) then begin
  6581. StatsTimer.restart;
  6582. StatsTime := 50000 + random(400000);
  6583. tInt := 0;
  6584. for i:=0 to high(daLocation.Logs) do
  6585. tInt := tInt + (daLocation.Logs[i].price * daLocation.Logs[i].chopped);
  6586.  
  6587. statsServer.IncreaseVariable('80', (ReflectPlayer.GetSkillExp(SKILL_WOODCUTTING)-statsWoodXP));
  6588. statsServer.IncreaseVariable('79', (ReflectPlayer.GetSkillExp(SKILL_FIREMAKING)-statsFireXP));
  6589. statsServer.IncreaseVariable('65', (ReflectPlayer.GetSkillExp(SKILL_FLETCHING)-statsFletchXP));
  6590. if daLocation.canBank and not daLocation.canFire and not daLocation.isSell and not daLocation.canFletch then
  6591. statsServer.IncreaseVariable('44', (tInt - statsProfit));
  6592.  
  6593. statsWoodXP := ReflectPlayer.GetSkillExp(SKILL_WOODCUTTING);
  6594. statsFletchXP := ReflectPlayer.GetSkillExp(SKILL_FLETCHING);
  6595. statsFireXP := ReflectPlayer.GetSkillExp(SKILL_FIREMAKING);
  6596. statsProfit := tInt;
  6597.  
  6598. if useStats then
  6599. if statsServer.Commit then
  6600. daLogger.Status('Successfully sent heartbeat to ''stats.grats.pw''.', []);
  6601. end;
  6602.  
  6603. tInt := 0;
  6604. for i:=0 to high(daLocation.Logs) do
  6605. tInt := tInt + daLocation.Logs[i].chopped;
  6606. if(tInt >= AmountAmount) and (AmountAmount > -1) then begin
  6607. UpdateScreen('Chopped more or equal to given amount to chop.');
  6608. daLogger.Status('Chopped more or equal to given amount to chop.', []);
  6609. ReflectPlayer.Active := false;
  6610. ReflectPlayer.Logout;
  6611. sleepScript(2500);
  6612. exit;
  6613. end;
  6614.  
  6615. if useBreaks then
  6616. doBreakCheck;
  6617. end;
  6618.  
  6619. begin
  6620. showForm;
  6621. if started then begin
  6622. ClearDebug;
  6623. Reflect.Setup;
  6624. Reflect.Smart.Graphics.Clear;
  6625. if not(SmartEnabled(Reflect.Smart.Target)) then
  6626. SmartSetEnabled(Reflect.Smart.Target, false);
  6627. setupINeedFuncs;
  6628. doUpdate;
  6629. if (high(WorldList) > -1) and not ReflectPlayer.isLoggedIn then
  6630. ReflectPlayer.ChangeWorld(WorldList[random(length(WorldList))]);
  6631. nullInt := -1337;//so it runs .create at least once and makes sure script is played logged in
  6632. while not(ReflectPlayer.isLoggedIn) or (nullInt = -1337) do begin
  6633. if ReflectPlayer.Active then begin
  6634. daLogger.Status('Logging player in...', []);
  6635. ReflectPlayer.Login;
  6636. if ReflectPlayer.Active then
  6637. setupPlayer;
  6638. end else begin
  6639. sleepScript(1000);
  6640. end;
  6641. nullInt := 0;
  6642. end;
  6643. setupScript;
  6644. while 1 do begin
  6645. if ReflectPlayer.isLoggedIn then begin
  6646. if daLocation.isDynamic then
  6647. dynChop;
  6648. if Reflect.Inv.IsFull then begin
  6649. if useFakeWaitTime and wasWorking then begin
  6650. updateScreen('Doing fake ''antiban'' wait.');
  6651. sleepScript(1000+random(7500));
  6652. end;
  6653. wasWorking := false;
  6654. if daLocation.canfire then begin
  6655. doFire;
  6656. end else begin
  6657. if daLocation.canFletch then
  6658. doFletch;
  6659. if daLocation.canBank then begin
  6660. goToBank;
  6661. openBank;
  6662. doBanking;
  6663. end else begin
  6664. doDropping(false);
  6665. end;
  6666. end;
  6667. end else begin
  6668. chopTree;
  6669. end;
  6670. doChecks;
  6671. end else begin
  6672. if ReflectPlayer.Active then begin
  6673. if (high(WorldList) > -1) then
  6674. ReflectPlayer.ChangeWorld(WorldList[random(length(WorldList))]);
  6675. daLogger.Status('Logging player in...', []);
  6676. ReflectPlayer.Login;
  6677. if ReflectPlayer.Active then
  6678. setupPlayer;
  6679. end else begin
  6680. sleepScript(1000);
  6681. end;
  6682. end;
  6683. end;
  6684. end;
  6685. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement