View difference between Paste ID: mH9nWVDz and
SHOW: | | - or go back to the newest paste.
1-
1+
import java.awt.event.*;
2
import java.awt.*;
3
import java.util.*;
4
import java.io.*;
5
import java.nio.channels.*;
6
import java.net.*;
7
import java.util.List;
8
import java.util.logging.Level;
9
import java.lang.reflect.Method;
10
import javax.accessibility.*;
11
import javax.swing.*;
12
import org.rsbot.*;
13
import org.rsbot.bot.Bot;
14
import org.rsbot.script.*;
15
import org.rsbot.script.wrappers.*;
16
import org.rsbot.event.listeners.*;
17
import org.rsbot.event.events.ServerMessageEvent;
18
import org.rsbot.util.ScreenshotUtil;
19
import javax.imageio.ImageIO;
20
21
@ScriptManifest(authors = { "Conderoga" }, keywords = "Woodcutting", name = "Conderoga's Chopper", version = 1.25,description = "Chops trees and stuff.")
22
/*UpdateLog:
23
   v1.00 - New Combined Script
24
   v1.01 - New GUI, Added Grand Exchange Ivy
25
   v1.02 - Added Taverly and Yanille Ivy, Willow Chopping in Draynor
26
   v1.03 - Nothing really..
27
   v1.04 - Added Seer's Village yew and maple chopping, new walking method, Ardougne and Varrock Palace Ivy
28
   v1.05 - Walking fixes and autoupdate
29
   v1.06 - More options with autoupdate, tweaked banking and walking
30
   v1.07 - Fixed Maple Chopping, added mage training area magics and Falador yews
31
   v1.08 - Fixed Falador Yew Chopping and banking problems in Seer's village
32
   v1.09 - Improved Tree Clicking, added Mouse Hovering, new paint, falador ivy locations
33
   v1.10 - Quick walking, banking, and animation fixes
34
   v1.11 - Added Timeout feature to get rid of script stopping error
35
   v1.12 - Failed attempt at fixing stuff
36
   v1.13 - Fixed walking problems, added cool mouse stuff.
37
   v1.14 - Added Draynor Yews - new Walking Method - Fixed Mage Training Area Problems
38
   v1.15 - Fixed lag issues added breaking antiban fixed Draynor yews improved mouse hover
39
   v1.16 - Reverted to old version of walking, added Tree Gnome Stronghold Yews
40
   v1.17 - Lag gone for good, fixed south falador and edgeville, Merry Christmas!
41
   v1.18 - Fixed lots of problems
42
   v1.19 - Fixed South Falador Banking problems, Draynor Yew banking, Catherby Bee Hive error
43
   v1.20 - Fixed small banking errors and errors in South Falador Yews
44
   v1.21 - Added Failsafe for banking problems, shortened break length
45
   v1.22 - Fixed walking methods, fixed Mage Training magics, added Port Salim Willows and Draynor Oaks
46
   v1.23 - Added failsafe fixed run issues
47
   v1.24 - Fixed new Tree ids in Port Sarim, Rimmington and South Falador
48
   v1.25 - Fixed Edgeville banking, Seer's Village yews screw up, Rimmington Sticking error, South Falador tree bug
49
 */
50
51
public class CChop extends Script implements PaintListener, ServerMessageListener, MouseListener{
52
53
private boolean guiWait = true;
54
private boolean guiExit = true;
55
private String location;
56
private RSTile tree1, tree2, tree3, tree4, tree5, tree6, tree7;
57
private RSTile [] treesToBank;
58
private RSTile [] bankToTrees;
59
private boolean tree1Status, tree2Status, tree3Status, tree4Status, tree5Status, tree6Status, tree7Status;
60
private long tree1TimeDead, tree2TimeDead, tree3TimeDead, tree4TimeDead, tree5TimeDead, tree6TimeDead, tree7TimeDead;
61
private long tree1DeadTime, tree2DeadTime, tree3DeadTime, tree4DeadTime, tree5DeadTime, tree6DeadTime, tree7DeadTime;
62
private long tree1TimeAlive, tree2TimeAlive, tree3TimeAlive, tree4TimeAlive, tree5TimeAlive, tree6TimeAlive, tree7TimeAlive;
63
private long tree1AliveTime, tree2AliveTime, tree3AliveTime, tree4AliveTime, tree5AliveTime, tree6AliveTime, tree7AliveTime;
64
private int nextTree = 0;
65
private int bankerID;
66
private int yewPrice = 0;
67
private int magicPrice = 0;
68
private int willowPrice = 0;
69
private int maplePrice = 0;
70
private int oakPrice = 0;
71
72
public CChopGUI gui;
73
private boolean nearest;
74
private boolean takeBreaks;
75
private boolean breakActive;
76
private int breakLength;
77
private long breakStart;
78
private Point stump1, stump2, stump3, stump4, stump5, stump6, stump7;
79
public int [] BNIDs = {5070, 5071, 5072, 5073, 5074, 5075, 5076, 7413, 11966};
80
public int [] hatchetIDs = {1349, 1351, 1353, 1355, 1357, 1359, 1361, 6739, 13470};
81
private int yewsCut = 0;
82
private int magicsCut = 0;
83
private int ivyCut = 0;
84
private int willowsCut = 0;
85
private int maplesCut = 0;
86
private int oaksCut = 0;
87
private int nests = 0;
88
private boolean full = false;
89
private int startLevel;
90
private int startExp;
91
private int expGained;
92
private int lvlsGained;
93
private long startTime, failSafeTimer;
94
private double startTimeDbl;
95
private long ExpHr;
96
private int safety = 0;
97
private String status;
98
private int tempX = 0;
99
private int tempY = 0;
100
private Point p;
101
private int randomInt;
102
private String version = "v1.25";
103
private String currentVersion = "";
104
private String treeType = ".";
105
private int treeID;
106
private ArrayList<Integer> ivyIDs = new ArrayList<Integer>();
107
private ArrayList<Integer> stumpIDs = new ArrayList<Integer>();
108
private int stumpID;
109
private RSTile bankLocation;
110
private String chopType;
111
private String command;
112
private boolean done = false;
113
private boolean showPaint = true;
114
private boolean fancyPaint = true;
115
private final Image img1 = getImage("http://i263.photobucket.com/albums/ii158/zpogo/Logo.png");
116
private final Image img2 = getImage("http://i263.photobucket.com/albums/ii158/zpogo/Bar.png");
117
private final Image img4 = getImage("http://i263.photobucket.com/albums/ii158/zpogo/EXPback-1copy.png");
118
private Color mouseColor = new Color(51,153,0,255);
119
120
 	public boolean onStart() {
121
	if(checkCurrentVersion())
122
	  log(Color.BLUE, "You have the latest version! :)");
123
      startTime = System.currentTimeMillis();
124
      startTimeDbl = System.currentTimeMillis();
125
      //Credits to Zombieknight for this:-----------------
126
      final int welcome = JOptionPane.showConfirmDialog(null,"Before using my script, would you like to thank me\nby clicking some adverts?","Welcome", JOptionPane.YES_NO_OPTION);
127
	  if (welcome == 0) {
128
		final String message = "<html>Thank you for your support!<br /></html>";
129
		JOptionPane.showMessageDialog(null, message);
130
		openURL("http://adf.ly/317631/agsn");
131
		}
132
	//=================================Yeah, I wrote all the rest of this...
133
134
135
136
      gui = new CChopGUI();
137
      gui.setVisible(true);
138
      while(guiWait)
139
      {
140
        sleep(100);
141
      }
142
      		     return !guiExit;
143
    }
144
 	public void pickUpNest()
145
 {
146
   RSGroundItem o = groundItems.getNearest(BNIDs);
147
   if(o!=null && !inventory.isFull())
148
   {
149
     status = "Nest!";
150
     sleep(random(600,800));
151
    if(o.doAction("Take"))
152
    	nests++;
153
    sleep(random(600,800));
154
   }
155
 }
156
 	public boolean chopCheck()
157
 {
158
 if(!treeType.equals("ivy"))
159
 {
160
   if(players.getMyPlayer().getAnimation()==867||players.getMyPlayer().getAnimation()==2846||players.getMyPlayer().getAnimation()==10251||players.getMyPlayer().getAnimation()==875||players.getMyPlayer().getAnimation()==869)
161
   {status = "Chopping!";
162
    return true;}
163
    else
164
     status = "Not chopping.";
165
 }
166
 else
167
 {
168
 	for(int i = 0; i<5;i++){
169
   if(players.getMyPlayer().getAnimation()==870||players.getMyPlayer().getAnimation()==872||players.getMyPlayer().getAnimation()==10251)
170
   {status = "Chopping!";
171
    return true;}
172
    sleep(random(200,300));
173
     }
174
     status = "Not chopping.";
175
 }
176
 return false;
177
 }
178
 	public void updateStatus()
179
 {
180
 	antiBan(random(1,100));
181
 	boolean temp = chopCheck();
182
 	if(!temp&&!tree7Status&&!tree6Status&&!tree5Status&&!tree4Status&&!tree3Status&&!tree2Status&&!tree1Status)
183
 	{
184
 		status = "Waiting.";
185
 	}
186
 }
187
 	public void setUp()
188
{
189
	status = "Starting up.";
190
	command = location+ " - "+chopType;
191
	if(command.equals("Draynor - Oaks"))
192
	{
193
		treeType = "oaks";
194
		treeID = 1281;
195
		stumpID = 1356;
196
		bankerID = 494;
197
		tree1 = new RSTile(3102,3242);
198
		tree2 = new RSTile(3107,3248);
199
		tree3 = new RSTile(0,0);
200
		tree4 = new RSTile(0,0);
201
		tree5 = new RSTile(0,0);
202
		tree6 = new RSTile(0,0);
203
		tree7 = new RSTile(0,0);
204
205
		treesToBank = new RSTile [3];
206
		bankToTrees = new RSTile [2];
207
208
		treesToBank[0] = new RSTile(3107,3250);
209
		treesToBank[1] = new RSTile(3101,3244);
210
		treesToBank[2] = new RSTile(3092,3244);
211
212
		bankToTrees[0] = new RSTile(3092,3244);
213
		bankToTrees[1] = new RSTile(3101,3244);
214
215
	}
216
	else if(command.equals("Grand Exchange - Yews"))
217
	{
218
		treeType = "yews";
219
		treeID = 1309;
220
		stumpID = 7402;
221
		bankerID = 6533;
222
		tree1 = new RSTile(3205,3504);
223
		tree2 = new RSTile(3210,3504);
224
		tree3 = new RSTile(3222,3503);
225
		tree4 = new RSTile(0,0);
226
		tree5 = new RSTile(0,0);
227
		tree6 = new RSTile(0,0);
228
		tree7 = new RSTile(0,0);
229
230
		treesToBank = new RSTile [6];
231
		bankToTrees = new RSTile [6];
232
233
		bankToTrees[0] = new RSTile(3167, 3489);
234
		bankToTrees[1] = new RSTile(3173, 3491);
235
		bankToTrees[2] = new RSTile(3183, 3490);
236
		bankToTrees[3] = new RSTile(3195, 3494);
237
		bankToTrees[4] = new RSTile(3204, 3502);
238
		bankToTrees[5] = new RSTile(3208, 3502);
239
240
		treesToBank[0] = new RSTile(3208, 3502);
241
		treesToBank[1] = new RSTile(3204, 3502);
242
		treesToBank[2] = new RSTile(3195, 3494);
243
		treesToBank[3] = new RSTile(3183, 3490);
244
		treesToBank[4] = new RSTile(3173, 3491);
245
		treesToBank[5] = new RSTile(3167, 3489);
246
	}
247
	else if(command.equals("Edgeville - Yews"))
248
	{
249
		treeType = "yews";
250
		treeID = 1309;
251
		stumpID = 7402;
252
		bankerID = 553;
253
		tree1 = new RSTile(3086,3481);
254
		tree2 = new RSTile(3086,3469);
255
		tree3 = new RSTile(0,0);
256
		tree4 = new RSTile(0,0);
257
		tree5 = new RSTile(0,0);
258
		tree6 = new RSTile(0,0);
259
		tree7 = new RSTile(0,0);
260
261
		treesToBank = new RSTile [5];
262
		bankToTrees = new RSTile [5];
263
264
		bankToTrees[0] = new RSTile(3093, 3490);
265
		bankToTrees[1] = new RSTile(3088, 3487);
266
		bankToTrees[2] = new RSTile(3093, 3482);
267
		bankToTrees[3] = new RSTile(3094, 3476);
268
		bankToTrees[4] = new RSTile(3087, 3475);
269
270
		treesToBank[0] = new RSTile(3087, 3475);
271
		treesToBank[1] = new RSTile(3094, 3476);
272
		treesToBank[2] = new RSTile(3093, 3482);
273
		treesToBank[3] = new RSTile(3088, 3487);
274
		treesToBank[4] = new RSTile(3093, 3490);
275
	}
276
	else if(command.equals("Rimmington - Yews"))
277
	{
278
		treeType = "yews";
279
		treeID = 38755;
280
		stumpID = 38759;
281
		bankerID = 6200;
282
		tree1 = new RSTile(2941,3233);
283
		tree2 = new RSTile(2934,3234);
284
		tree3 = new RSTile(2926,3229);
285
		tree4 = new RSTile(2935,3226);
286
		tree5 = new RSTile(0,0);
287
		tree6 = new RSTile(0,0);
288
		tree7 = new RSTile(0,0);
289
290
		treesToBank = new RSTile [14];
291
		bankToTrees = new RSTile [14];
292
293
294
		bankToTrees[0] = new RSTile(3047, 3236);
295
		bankToTrees[1] = new RSTile(3037, 3235);
296
		bankToTrees[2] = new RSTile(3027, 3241);
297
		bankToTrees[3] = new RSTile(3016, 3242);
298
		bankToTrees[4] = new RSTile(3004, 3238);
299
		bankToTrees[5] = new RSTile(2993, 3235);
300
		bankToTrees[6] = new RSTile(2988, 3225);
301
		bankToTrees[7] = new RSTile(2979, 3223);
302
		bankToTrees[8] = new RSTile(2969, 3223);
303
		bankToTrees[9] = new RSTile(2959, 3223);
304
		bankToTrees[10] = new RSTile(2950, 3228);
305
		bankToTrees[11] = new RSTile(2942, 3230);
306
		bankToTrees[12] = new RSTile(2938, 3231);
307
		bankToTrees[13] = new RSTile(2930, 3233);
308
309
		treesToBank = walking.reversePath(bankToTrees);
310
311
	}
312
	else if(command.equals("Catherby - Yews"))
313
	{
314
		treeType = "yews";
315
		treeID = 1309;
316
		stumpID = 7402;
317
		if(random(1,2)==1)
318
		bankerID = 494;
319
		else
320
		bankerID = 495;
321
322
		tree1 = new RSTile(2766,3428);
323
		tree2 = new RSTile(2760,3428);
324
		tree3 = new RSTile(2761,3432);
325
		tree4 = new RSTile(2771,3438);
326
		tree5 = new RSTile(2756,3431);
327
		tree6 = new RSTile(2758,3434);
328
		tree7 = new RSTile(2755,3434);
329
330
		treesToBank = new RSTile [5];
331
		bankToTrees = new RSTile [5];
332
333
334
		bankToTrees[0] = new RSTile(2809, 3440);
335
		bankToTrees[1] = new RSTile(2801, 3434);
336
		bankToTrees[2] = new RSTile(2789, 3436);
337
		bankToTrees[3] = new RSTile(2777, 3436);
338
		bankToTrees[4] = new RSTile(2767, 3431);
339
340
		treesToBank[0] = new RSTile(2767, 3431);
341
		treesToBank[1] = new RSTile(2777, 3436);
342
		treesToBank[2] = new RSTile(2789, 3436);
343
		treesToBank[3] = new RSTile(2801, 3434);
344
		treesToBank[4] = new RSTile(2809, 3440);
345
	}
346
	else if(command.equals("Seer's Village - Yews"))
347
	{
348
		treeType = "yews";
349
		treeID = 1309;
350
		stumpID = 7402;
351
		bankerID = 495;
352
		tree1 = new RSTile(2715,3460);
353
		tree2 = new RSTile(2706,3460);
354
		tree3 = new RSTile(2706,3465);
355
		tree4 = new RSTile(0,0);
356
		tree5 = new RSTile(0,0);
357
		tree6 = new RSTile(0,0);
358
		tree7 = new RSTile(0,0);
359
360
		treesToBank = new RSTile [4];
361
		bankToTrees = new RSTile [4];
362
363
364
		bankToTrees[0] = new RSTile(2726, 3493);
365
		bankToTrees[1] = new RSTile(2724, 3483);
366
		bankToTrees[2] = new RSTile(2723, 3474);
367
		bankToTrees[3] = new RSTile(2714, 3462);
368
369
		treesToBank[0] = new RSTile(2714, 3462);
370
		treesToBank[1] = new RSTile(2723, 3474);
371
		treesToBank[2] = new RSTile(2724, 3483);
372
		treesToBank[3] = new RSTile(2726, 3493);
373
	}
374
	else if(command.equals("South Falador - Yews"))
375
	{
376
		treeType = "yews";
377
		treeID = 38755;
378
		stumpID = 38759;
379
		bankerID = 6200;
380
		tree1 = new RSTile(2999,3315);
381
		tree2 = new RSTile(3017,3322);
382
		tree3 = new RSTile(3047,3318);
383
		tree4 = new RSTile(0,0);
384
		tree5 = new RSTile(0,0);
385
		tree6 = new RSTile(0,0);
386
		tree7 = new RSTile(0,0);
387
388
		treesToBank = new RSTile [9];
389
		bankToTrees = new RSTile [6];
390
391
392
		bankToTrees[0] = new RSTile(3012, 3356);
393
		bankToTrees[1] = new RSTile(3006, 3357);
394
		bankToTrees[2] = new RSTile(3006, 3346);
395
		bankToTrees[3] = new RSTile(3006, 3339);
396
		bankToTrees[4] = new RSTile(3006, 3331);
397
		bankToTrees[5] = new RSTile(3007, 3322);
398
399
400
401
		treesToBank[0] = new RSTile(3040, 3320);
402
		treesToBank[1] = new RSTile(3028, 3321);
403
		treesToBank[2] = new RSTile(3016, 3320);
404
		treesToBank[3] = new RSTile(3007, 3322);
405
		treesToBank[4] = new RSTile(3006, 3331);
406
		treesToBank[5] = new RSTile(3006, 3339);
407
		treesToBank[6] = new RSTile(3006, 3346);
408
		treesToBank[7] = new RSTile(3006, 3357);
409
		treesToBank[8] = new RSTile(3012, 3356);
410
	}
411
	else if(command.equals("Draynor - Yews"))
412
	{
413
		treeType = "yews";
414
		treeID = 1309;
415
		stumpID = 7402;
416
		bankerID = 494;
417
		tree1 = new RSTile(3147,3255);
418
		tree2 = new RSTile(3152,3231);
419
		tree3 = new RSTile(3166,3220);
420
		tree4 = new RSTile(3185,3227);
421
		tree5 = new RSTile(0,0);
422
		tree6 = new RSTile(0,0);
423
		tree7 = new RSTile(0,0);
424
425
		treesToBank = new RSTile [19];
426
		bankToTrees = new RSTile [7];
427
428
		treesToBank[0] = new RSTile(3185,3227);
429
		treesToBank[1] = new RSTile(3177,3226);
430
		treesToBank[2] = new RSTile(3172,3226);
431
		treesToBank[3] = new RSTile(3166,3222);
432
		treesToBank[4] = new RSTile(3161,3227);
433
		treesToBank[5] = new RSTile(3158,3232);
434
		treesToBank[6] = new RSTile(3153,3239);
435
		treesToBank[7] = new RSTile(3152,3245);
436
		treesToBank[8] = new RSTile(3147,3252);
437
		treesToBank[9] = new RSTile(3146,3244);
438
		treesToBank[10] = new RSTile(3147,3235);
439
		treesToBank[11] = new RSTile(3145,3230);
440
		treesToBank[12] = new RSTile(3137,3228);
441
		treesToBank[13] = new RSTile(3126,3226);
442
		treesToBank[14] = new RSTile(3119,3226);
443
		treesToBank[15] = new RSTile(3110,3229);
444
		treesToBank[16] = new RSTile(3105,3235);
445
		treesToBank[17] = new RSTile(3101,3242);
446
		treesToBank[18] = new RSTile(3092,3244);
447
448
		bankToTrees[0] = new RSTile(3092,3244);
449
		bankToTrees[1] = new RSTile(3104,3238);
450
		bankToTrees[2] = new RSTile(3114,3229);
451
		bankToTrees[3] = new RSTile(3126,3225);
452
		bankToTrees[4] = new RSTile(3137,3226);
453
		bankToTrees[5] = new RSTile(3144,3229);
454
		bankToTrees[6] = new RSTile(3150,3231);
455
	}
456
	else if(command.equals("Tree Gnome - Yews"))
457
	{
458
		treeType = "yews";
459
		treeID = 1309;
460
		stumpID = 7402;
461
		bankerID = 166;
462
		tree1 = new RSTile(2439,3436);
463
		tree2 = new RSTile(2433,3441);
464
		tree3 = new RSTile(2433,3426);
465
		tree4 = new RSTile(0,0);
466
		tree5 = new RSTile(0,0);
467
		tree6 = new RSTile(0,0);
468
		tree7 = new RSTile(0,0);
469
470
		treesToBank = new RSTile [2];
471
		bankToTrees = new RSTile [2];
472
473
		treesToBank[0] = new RSTile(2442,3438);
474
		treesToBank[1] = new RSTile(2445,3427);
475
476
		bankToTrees[0] = new RSTile(2445,3425);
477
		bankToTrees[1] = new RSTile(2440,3434);
478
479
	}
480
	else if(command.equals("Seer's Village - Maples"))
481
	{
482
		treeType = "maples";
483
		treeID = 1307;
484
		stumpID = 7400;
485
		bankerID = 495;
486
		tree1 = new RSTile(2722,3502);
487
		tree2 = new RSTile(2728,3502);
488
		tree3 = new RSTile(2731,3501);
489
		tree4 = new RSTile(2733,3500);
490
		tree5 = new RSTile(0,0);
491
		tree6 = new RSTile(0,0);
492
		tree7 = new RSTile(0,0);
493
494
		treesToBank = new RSTile [2];
495
		bankToTrees = new RSTile [2];
496
497
		bankToTrees[0] = new RSTile(2726, 3493);
498
		bankToTrees[1] = new RSTile(2729, 3501);
499
500
501
		treesToBank[0] = new RSTile(2729, 3501);
502
		treesToBank[1] = new RSTile(2726, 3493);
503
504
505
	}
506
	else if(command.equals("Seer's Village - Magics"))
507
	{
508
		treeType = "magics";
509
		treeID = 1306;
510
		stumpID = 7401;
511
		bankerID = 495;
512
		tree1 = new RSTile(2697,3424);
513
		tree2 = new RSTile(2692,3425);
514
		tree3 = new RSTile(2691,3428);
515
		tree4 = new RSTile(0,0);
516
		tree5 = new RSTile(0,0);
517
		tree6 = new RSTile(0,0);
518
		tree7 = new RSTile(0,0);
519
520
		treesToBank = new RSTile [9];
521
		bankToTrees = new RSTile [9];
522
523
		bankToTrees[0] = new RSTile(2726, 3493);
524
		bankToTrees[1] = new RSTile(2725, 3487);
525
		bankToTrees[2] = new RSTile(2725, 3477);
526
		bankToTrees[3] = new RSTile(2723, 3466);
527
		bankToTrees[4] = new RSTile(2724, 3456);
528
		bankToTrees[5] = new RSTile(2713, 3449);
529
		bankToTrees[6] = new RSTile(2707, 3439);
530
		bankToTrees[7] = new RSTile(2703, 3429);
531
		bankToTrees[8] = new RSTile(2694, 3424);
532
533
		treesToBank[0] = new RSTile(2694, 3424);
534
		treesToBank[1] = new RSTile(2703, 3429);
535
		treesToBank[2] = new RSTile(2707, 3439);
536
		treesToBank[3] = new RSTile(2713, 3449);
537
		treesToBank[4] = new RSTile(2724, 3456);
538
		treesToBank[5] = new RSTile(2723, 3466);
539
		treesToBank[6] = new RSTile(2725, 3477);
540
		treesToBank[7] = new RSTile(2725, 3487);
541
		treesToBank[8] = new RSTile(2726, 3493);
542
	}
543
	else if(command.equals("Sorcerer's Tower - Magics"))
544
	{
545
		treeType = "magics";
546
		treeID = 1306;
547
		stumpID = 7401;
548
		bankerID = 495;
549
		tree1 = new RSTile(2705,3397);
550
		tree2 = new RSTile(2705,3399);
551
		tree3 = new RSTile(2699,3399);
552
		tree4 = new RSTile(2699,3397);
553
		tree5 = new RSTile(0,0);
554
		tree6 = new RSTile(0,0);
555
		tree7 = new RSTile(0,0);
556
557
		treesToBank = new RSTile [12];
558
		bankToTrees = new RSTile [12];
559
560
		bankToTrees[0] = new RSTile(2726, 3493);
561
		bankToTrees[1] = new RSTile(2725, 3487);
562
		bankToTrees[2] = new RSTile(2725, 3477);
563
		bankToTrees[3] = new RSTile(2723, 3466);
564
		bankToTrees[4] = new RSTile(2724, 3456);
565
		bankToTrees[5] = new RSTile(2713, 3449);
566
		bankToTrees[6] = new RSTile(2707, 3439);
567
		bankToTrees[7] = new RSTile(2703, 3429);
568
		bankToTrees[8] = new RSTile(2709, 3418);
569
		bankToTrees[9] = new RSTile(2715, 3406);
570
		bankToTrees[10] = new RSTile(2714, 3396);
571
		bankToTrees[11] = new RSTile(2701, 3398);
572
573
		treesToBank[0] = new RSTile(2701, 3398);
574
		treesToBank[1] = new RSTile(2714, 3396);
575
		treesToBank[2] = new RSTile(2715, 3406);
576
		treesToBank[3] = new RSTile(2709, 3418);
577
		treesToBank[4] = new RSTile(2703, 3429);
578
		treesToBank[5] = new RSTile(2707, 3439);
579
		treesToBank[6] = new RSTile(2713, 3449);
580
		treesToBank[7] = new RSTile(2724, 3456);
581
		treesToBank[8] = new RSTile(2723, 3466);
582
		treesToBank[9] = new RSTile(2725, 3477);
583
		treesToBank[10] = new RSTile(2725, 3487);
584
		treesToBank[11] = new RSTile(2726, 3493);
585
	}
586
	else if(command.equals("Mage Training Area - Magics"))
587
	{
588
		treeType = "magics";
589
		treeID = 1306;
590
		stumpID = 7401;
591
		bankLocation = new RSTile(3381,3269);
592
593
		tree1 = new RSTile(3357,3312);
594
		tree2 = new RSTile(3369,3312);
595
		tree3 = new RSTile(0,0);
596
		tree4 = new RSTile(0,0);
597
		tree5 = new RSTile(0,0);
598
		tree6 = new RSTile(0,0);
599
		tree7 = new RSTile(0,0);
600
601
		treesToBank = new RSTile [7];
602
		bankToTrees = new RSTile [7];
603
604
		bankToTrees[0] = new RSTile(3381, 3268);
605
		bankToTrees[1] = new RSTile(3370, 3266);
606
		bankToTrees[2] = new RSTile(3358, 3265);
607
		bankToTrees[3] = new RSTile(3349, 3274);
608
		bankToTrees[4] = new RSTile(3348, 3282);
609
		bankToTrees[5] = new RSTile(3360, 3287);
610
		bankToTrees[6] = new RSTile(3363, 3298);
611
612
613
		treesToBank[0] = new RSTile(3363, 3298);
614
		treesToBank[1] = new RSTile(3360, 3287);
615
		treesToBank[2] = new RSTile(3348, 3282);
616
		treesToBank[3] = new RSTile(3349, 3274);
617
		treesToBank[4] = new RSTile(3358, 3265);
618
		treesToBank[5] = new RSTile(3370, 3266);
619
		treesToBank[6] = new RSTile(3382, 3268);
620
621
	}
622
	else if(command.equals("Castle Wars - Ivy"))
623
	{
624
		bankLocation = new RSTile(2445,3083);
625
		treeType = "ivy";
626
627
		if(random(1,2)==1)
628
		camera.setAngle(random(1,30));
629
		else
630
		camera.setAngle(random(340,359));
631
632
633
		tree1 = new RSTile(2430,3068);
634
		tree2 = new RSTile(2429,3068);
635
		tree3 = new RSTile(2428,3068);
636
		tree4 = new RSTile(2426,3068);
637
		tree5 = new RSTile(2425,3068);
638
		tree6 = new RSTile(2424,3068);
639
		tree7 = new RSTile(2423,3068);
640
641
		treesToBank = new RSTile [3];
642
		bankToTrees = new RSTile [3];
643
644
645
		bankToTrees[0] = new RSTile(2443, 3084);
646
		bankToTrees[1] = new RSTile(2444, 3073);
647
		bankToTrees[2] = new RSTile(2429, 3068);
648
649
		treesToBank[0] = new RSTile(2429, 3068);
650
		treesToBank[1] = new RSTile(2444, 3073);
651
		treesToBank[2] = new RSTile(2443, 3084);
652
	}
653
654
	else if(command.equals("Grand Exchange - Ivy"))
655
	{
656
		treeType = "ivy";
657
		bankerID = 6533;
658
659
		camera.setAngle(random(170,190));
660
661
662
		tree1 = new RSTile(3219,3498);
663
		tree2 = new RSTile(3218,3498);
664
		tree3 = new RSTile(3217,3498);
665
		tree4 = new RSTile(3216,3498);
666
		tree5 = new RSTile(0,0);
667
		tree6 = new RSTile(0,0);
668
		tree7 = new RSTile(0,0);
669
670
		treesToBank = new RSTile [6];
671
		bankToTrees = new RSTile [6];
672
673
		bankToTrees[0] = new RSTile(3167, 3489);
674
		bankToTrees[1] = new RSTile(3173, 3491);
675
		bankToTrees[2] = new RSTile(3183, 3490);
676
		bankToTrees[3] = new RSTile(3195, 3494);
677
		bankToTrees[4] = new RSTile(3204, 3502);
678
		bankToTrees[5] = new RSTile(3217, 3500);
679
680
		treesToBank[0] = new RSTile(3217, 3500);
681
		treesToBank[1] = new RSTile(3204, 3502);
682
		treesToBank[2] = new RSTile(3195, 3494);
683
		treesToBank[3] = new RSTile(3183, 3490);
684
		treesToBank[4] = new RSTile(3173, 3491);
685
		treesToBank[5] = new RSTile(3167, 3489);
686
	}
687
688
	else if(command.equals("Taverly - Ivy"))
689
	{
690
		treeType = "ivy";
691
		log("Nest banking is unavailable at the Taverly location.");
692
693
		camera.setAngle(random(260,280));
694
695
		tree1 = new RSTile(2943,3416);
696
		tree2 = new RSTile(2943,3417);
697
		tree3 = new RSTile(2943,3418);
698
		tree4 = new RSTile(2943,3419);
699
		tree5 = new RSTile(2943,3420);
700
		tree6 = new RSTile(0,0);
701
		tree7 = new RSTile(0,0);
702
703
	}
704
	else if(command.equals("Yanille - Ivy"))
705
	{
706
		bankerID = 494;
707
		treeType = "ivy";
708
709
		camera.setAngle(random(170,190));
710
711
712
		tree1 = new RSTile(2597,3111);
713
		tree2 = new RSTile(2596,3111);
714
		tree3 = new RSTile(2595,3111);
715
		tree4 = new RSTile(2593,3111);
716
		tree5 = new RSTile(2592,3111);
717
		tree6 = new RSTile(2591,3111);
718
		tree7 = new RSTile(0,0);
719
720
		treesToBank = new RSTile [4];
721
		bankToTrees = new RSTile [4];
722
723
724
		bankToTrees[0] = new RSTile(2613, 3094);
725
		bankToTrees[1] = new RSTile(2616, 3106);
726
		bankToTrees[2] = new RSTile(2603, 3113);
727
		bankToTrees[3] = new RSTile(2597, 3111);
728
729
		treesToBank[0] = new RSTile(2597, 3111);
730
		treesToBank[1] = new RSTile(2603, 3113);
731
		treesToBank[2] = new RSTile(2616, 3106);
732
		treesToBank[3] = new RSTile(2613, 3094);
733
	}
734
	else if(command.equals("Ardougne - Ivy"))
735
	{
736
		bankerID = 494;
737
		treeType = "ivy";
738
739
		camera.setAngle(random(80,100));
740
741
742
		tree1 = new RSTile(2622,3304);
743
		tree2 = new RSTile(2622,3305);
744
		tree3 = new RSTile(2622,3307);
745
		tree4 = new RSTile(2622,3308);
746
		tree5 = new RSTile(2622,3310);
747
		tree6 = new RSTile(0,0);
748
		tree7 = new RSTile(0,0);
749
750
		treesToBank = new RSTile [5];
751
		bankToTrees = new RSTile [5];
752
753
754
		bankToTrees[0] = new RSTile(2614, 3333);
755
		bankToTrees[1] = new RSTile(2607, 3326);
756
		bankToTrees[2] = new RSTile(2607, 3314);
757
		bankToTrees[3] = new RSTile(2614, 3312);
758
		bankToTrees[4] = new RSTile(2622, 3310);
759
760
		treesToBank[0] = new RSTile(2622, 3310);
761
		treesToBank[1] = new RSTile(2614, 3312);
762
		treesToBank[2] = new RSTile(2607, 3314);
763
		treesToBank[3] = new RSTile(2607, 3326);
764
		treesToBank[4] = new RSTile(2614, 3333);
765
	}
766
	else if(command.equals("Varrock Palace - Ivy"))
767
	{
768
		bankerID = 5912;
769
		treeType = "ivy";
770
771
		camera.setAngle(random(250,280));
772
773
774
		tree1 = new RSTile(3233,3456);
775
		tree2 = new RSTile(3233,3457);
776
		tree3 = new RSTile(3233,3459);
777
		tree4 = new RSTile(3233,3460);
778
		tree5 = new RSTile(3233,3461);
779
		tree6 = new RSTile(0,0);
780
		tree7 = new RSTile(0,0);
781
782
		treesToBank = new RSTile [5];
783
		bankToTrees = new RSTile [5];
784
785
786
		bankToTrees[0] = new RSTile(3253, 3420);
787
		bankToTrees[1] = new RSTile(3246, 3431);
788
		bankToTrees[2] = new RSTile(3245, 3441);
789
		bankToTrees[3] = new RSTile(3244, 3454);
790
		bankToTrees[4] = new RSTile(3233, 3460);
791
792
		treesToBank[0] = new RSTile(3233, 3460);
793
		treesToBank[1] = new RSTile(3244, 3454);
794
		treesToBank[2] = new RSTile(3245, 3441);
795
		treesToBank[3] = new RSTile(3246, 3431);
796
		treesToBank[4] = new RSTile(3253, 3420);
797
	}
798
	else if(command.equals("South Falador - Ivy"))
799
	{
800
		bankerID = 6200;
801
		treeType = "ivy";
802
803
		if(random(1,2)==1)
804
		camera.setAngle(random(1,30));
805
		else
806
		camera.setAngle(random(340,359));
807
808
809
		tree1 = new RSTile(3052,3328);
810
		tree2 = new RSTile(3051,3328);
811
		tree3 = new RSTile(3049,3328);
812
		tree4 = new RSTile(3048,3328);
813
		tree5 = new RSTile(3047,3328);
814
		tree6 = new RSTile(3045,3328);
815
		tree7 = new RSTile(3044,3328);
816
817
		treesToBank = new RSTile [10];
818
		bankToTrees = new RSTile [10];
819
820
821
		bankToTrees[0] = new RSTile(3012, 3356);
822
		bankToTrees[1] = new RSTile(3006, 3357);
823
		bankToTrees[2] = new RSTile(3006, 3346);
824
		bankToTrees[3] = new RSTile(3006, 3339);
825
		bankToTrees[4] = new RSTile(3006, 3331);
826
		bankToTrees[5] = new RSTile(3007, 3322);
827
		bankToTrees[6] = new RSTile(3017, 3323);
828
		bankToTrees[7] = new RSTile(3027, 3326);
829
		bankToTrees[8] = new RSTile(3036, 3326);
830
		bankToTrees[9] = new RSTile(3044, 3327);
831
832
		treesToBank[0] = new RSTile(3044, 3327);
833
		treesToBank[1] = new RSTile(3036, 3326);
834
		treesToBank[2] = new RSTile(3027, 3326);
835
		treesToBank[3] = new RSTile(3017, 3323);
836
		treesToBank[4] = new RSTile(3007, 3322);
837
		treesToBank[5] = new RSTile(3006, 3331);
838
		treesToBank[6] = new RSTile(3006, 3339);
839
		treesToBank[7] = new RSTile(3006, 3346);
840
		treesToBank[8] = new RSTile(3006, 3357);
841
		treesToBank[9] = new RSTile(3012, 3356);
842
	}
843
	else if(command.equals("North Falador - Ivy"))
844
	{
845
		bankerID = 6200;
846
		treeType = "ivy";
847
848
849
		camera.setAngle(random(170,190));
850
851
		tree1 = new RSTile(3018,3392);
852
		tree2 = new RSTile(3017,3392);
853
		tree3 = new RSTile(3016,3392);
854
		tree4 = new RSTile(3015,3392);
855
		tree5 = new RSTile(3014,3392);
856
		tree6 = new RSTile(3012,3392);
857
		tree7 = new RSTile(3011,3392);
858
859
		treesToBank = new RSTile [11];
860
		bankToTrees = new RSTile [11];
861
862
863
		bankToTrees[0] = new RSTile(2946, 3368);
864
		bankToTrees[1] = new RSTile(2948, 3376);
865
		bankToTrees[2] = new RSTile(2952, 3381);
866
		bankToTrees[3] = new RSTile(2963, 3386);
867
		bankToTrees[4] = new RSTile(2968, 3397);
868
		bankToTrees[5] = new RSTile(2974, 3397);
869
		bankToTrees[6] = new RSTile(2980, 3397);
870
		bankToTrees[7] = new RSTile(2989, 3397);
871
		bankToTrees[8] = new RSTile(2994, 3396);
872
		bankToTrees[9] = new RSTile(3005, 3397);
873
		bankToTrees[10] = new RSTile(3012, 3393);
874
875
		treesToBank[0] = new RSTile(3012, 3393);
876
		treesToBank[1] = new RSTile(3005, 3397);
877
		treesToBank[2] = new RSTile(2994, 3396);
878
		treesToBank[3] = new RSTile(2989, 3397);
879
		treesToBank[4] = new RSTile(2980, 3397);
880
		treesToBank[5] = new RSTile(2974, 3397);
881
		treesToBank[6] = new RSTile(2968, 3397);
882
		treesToBank[7] = new RSTile(2963, 3386);
883
		treesToBank[8] = new RSTile(2952, 3381);
884
		treesToBank[9] = new RSTile(2948, 3376);
885
		treesToBank[10] = new RSTile(2946, 3368);
886
	}
887
	else if(command.equals("Draynor - Willows"))
888
	{
889
		treeType = "willows";
890
		bankerID = 494;
891
		tree1 = new RSTile(3089,3228);
892
		tree2 = new RSTile(3088,3232);
893
		tree3 = new RSTile(3089,3235);
894
		tree4 = new RSTile(3086,3236);
895
		tree5 = new RSTile(3084,3238);
896
		tree6 = new RSTile(0,0);
897
		tree7 = new RSTile(0,0);
898
899
		treesToBank = new RSTile [2];
900
		bankToTrees = new RSTile [2];
901
902
		bankToTrees[0] = new RSTile(3092, 3245);
903
		bankToTrees[1] = new RSTile(3087, 3237);
904
905
		treesToBank[0] = new RSTile(3090, 3236);
906
		treesToBank[1] = new RSTile(3092, 3245);
907
	}
908
	else if(command.equals("Port Salim - Willows"))
909
	{
910
		treeType = "willows";
911
		tree1 = new RSTile(3062,3263);
912
		tree2 = new RSTile(3065,3258);
913
		tree3 = new RSTile(3062,3253);
914
		tree4 = new RSTile(3058,3251);
915
		tree5 = new RSTile(0,0);
916
		tree6 = new RSTile(0,0);
917
		tree7 = new RSTile(0,0);
918
919
		treesToBank = new RSTile [4];
920
921
		treesToBank[0] = new RSTile(3059, 3252);
922
		treesToBank[1] = new RSTile(3049, 3246);
923
		treesToBank[2] = new RSTile(3042, 3240);
924
		treesToBank[3] = new RSTile(3047, 3236);
925
926
		bankToTrees = walking.reversePath(treesToBank);
927
928
	}
929
	else
930
	{
931
		log("Incorrect combination of chop type / location");
932
	}
933
	if(treeType.equals("ivy"))
934
	{
935
		ivyIDs.add(46318);
936
		ivyIDs.add(46320);
937
		ivyIDs.add(46322);
938
		ivyIDs.add(46324);
939
		stumpIDs.add(46325);
940
		stumpIDs.add(46323);
941
		stumpIDs.add(46321);
942
		stumpIDs.add(46319);
943
	}
944
	if(treeType.equals("willows"))
945
	{
946
		ivyIDs.add(5553);
947
		ivyIDs.add(5552);
948
		ivyIDs.add(5551);
949
		ivyIDs.add(38616);
950
		ivyIDs.add(38627);
951
		stumpIDs.add(5554);
952
		stumpIDs.add(38725);
953
	}
954
	status = "Finished set up.";
955
}
956
	public int floorHeight(){
957
		RSNPC testNPC = npcs.getNearest(bankerID);
958
		if(testNPC!=null)
959
			return 1;
960
		else
961
			return 0;
962
	}
963
 	public void checkTrees()
964
{
965
	RSObject[] check1 = objects.getAllAt(tree1);
966
		for(int i = 0; i< check1.length; i++)
967
		{
968
		    if(check1[i].getID()==stumpID&&tree1Status)
969
			{	tree1Status = false;
970
				tree1DeadTime = System.currentTimeMillis();
971
				tree1TimeAlive = -1;
972
			}
973
			else if(check1[i].getID()==treeID&&!tree1Status)
974
			{	tree1Status = true;
975
				tree1AliveTime = System.currentTimeMillis();
976
				tree1TimeDead = -1;
977
			}
978
			else if(check1[i].getID()==treeID)
979
			{	tree1Status = true;
980
				tree1TimeAlive = System.currentTimeMillis()-tree1AliveTime;}
981
			else if(check1[i].getID()==stumpID)
982
			{	tree1Status = false;
983
				tree1TimeDead = System.currentTimeMillis()-tree1DeadTime;}
984
		}
985
	RSObject[] check2 = objects.getAllAt(tree2);
986
		for(int i = 0; i< check2.length; i++)
987
		{
988
			if(check2[i].getID()==stumpID&&tree2Status)
989
			{	tree2Status = false;
990
				tree2DeadTime = System.currentTimeMillis();
991
				tree2TimeAlive = -1;
992
			}
993
			else if(check2[i].getID()==treeID&&!tree2Status)
994
			{	tree2Status = true;
995
				tree2AliveTime = System.currentTimeMillis();
996
				tree2TimeDead = -1;
997
			}
998
			else if(check2[i].getID()==treeID)
999
			{	tree2Status = true;
1000
				tree2TimeAlive = System.currentTimeMillis()-tree2AliveTime;}
1001
			else if(check2[i].getID()==stumpID)
1002
			{	tree2Status = false;
1003
				tree2TimeDead = System.currentTimeMillis()-tree2DeadTime;}
1004
		}
1005
	if(tree3.getX()!=0)
1006
	{
1007
	RSObject[] check3 = objects.getAllAt(tree3);
1008
	{
1009
		for(int i = 0; i< check3.length; i++)
1010
		{
1011
			if(check3[i].getID()==stumpID&&tree3Status)
1012
			{	tree3Status = false;
1013
				tree3DeadTime = System.currentTimeMillis();
1014
				tree3TimeAlive = -1;
1015
			}
1016
			else if(check3[i].getID()==treeID&&!tree3Status)
1017
			{	tree3Status = true;
1018
				tree3AliveTime = System.currentTimeMillis();
1019
				tree3TimeDead = -1;
1020
			}
1021
			else if(check3[i].getID()==treeID)
1022
			{	tree3Status = true;
1023
				tree3TimeAlive = System.currentTimeMillis()-tree3AliveTime;}
1024
			else if(check3[i].getID()==stumpID)
1025
			{	tree3Status = false;
1026
				tree3TimeDead = System.currentTimeMillis()-tree3DeadTime;}
1027
		}
1028
	}
1029
	}
1030
	else
1031
	{
1032
		tree3Status=false;
1033
		tree3TimeDead = 0;
1034
		tree3TimeAlive = 0;
1035
	}
1036
	if(tree4.getX()!=0)
1037
	{
1038
		RSObject[] check4 = objects.getAllAt(tree4);
1039
	{
1040
		for(int i = 0; i< check4.length; i++)
1041
		{
1042
			if(check4[i].getID()==stumpID&&tree4Status)
1043
			{	tree4Status = false;
1044
				tree4DeadTime = System.currentTimeMillis();
1045
				tree4TimeAlive = -1;
1046
			}
1047
			else if(check4[i].getID()==treeID&&!tree4Status)
1048
			{	tree4Status = true;
1049
				tree4AliveTime = System.currentTimeMillis();
1050
				tree4TimeDead = -1;
1051
			}
1052
			else if(check4[i].getID()==treeID)
1053
			{	tree4Status = true;
1054
				tree4TimeAlive = System.currentTimeMillis()-tree4AliveTime;}
1055
			else if(check4[i].getID()==stumpID)
1056
			{	tree4Status = false;
1057
				tree4TimeDead = System.currentTimeMillis()-tree4DeadTime;}
1058
		}
1059
	}
1060
	}
1061
	else
1062
	{
1063
		tree4Status=false;
1064
		tree4TimeDead = 0;
1065
		tree4TimeAlive = 0;
1066
	}
1067
	if(tree5.getX()!=0)
1068
	{
1069
		RSObject[] check5 = objects.getAllAt(tree5);
1070
	{
1071
		for(int i = 0; i< check5.length; i++)
1072
		{
1073
			if(check5[i].getID()==stumpID&&tree5Status)
1074
			{	tree5Status = false;
1075
				tree5DeadTime = System.currentTimeMillis();
1076
				tree5TimeAlive = -1;
1077
			}
1078
			else if(check5[i].getID()==treeID&&!tree5Status)
1079
			{	tree5Status = true;
1080
				tree5AliveTime = System.currentTimeMillis();
1081
				tree5TimeDead = -1;
1082
			}
1083
			else if(check5[i].getID()==treeID)
1084
			{	tree5Status = true;
1085
				tree5TimeAlive = System.currentTimeMillis()-tree5AliveTime;}
1086
			else if(check5[i].getID()==stumpID)
1087
			{	tree5Status = false;
1088
				tree5TimeDead = System.currentTimeMillis()-tree5DeadTime;}
1089
		}
1090
	}
1091
	}
1092
	else
1093
	{
1094
		tree5Status=false;
1095
		tree5TimeDead = 0;
1096
		tree5TimeAlive = 0;
1097
	}
1098
	if(tree6.getX()!=0)
1099
	{
1100
		RSObject[] check6 = objects.getAllAt(tree6);
1101
	{
1102
		for(int i = 0; i< check6.length; i++)
1103
		{
1104
			if(check6[i].getID()==stumpID&&tree6Status)
1105
			{	tree6Status = false;
1106
				tree6DeadTime = System.currentTimeMillis();
1107
				tree6TimeAlive = -1;
1108
			}
1109
			else if(check6[i].getID()==treeID&&!tree6Status)
1110
			{	tree6Status = true;
1111
				tree6AliveTime = System.currentTimeMillis();
1112
				tree6TimeDead = -1;
1113
			}
1114
			else if(check6[i].getID()==treeID)
1115
			{	tree6Status = true;
1116
				tree6TimeAlive = System.currentTimeMillis()-tree6AliveTime;}
1117
			else if(check6[i].getID()==stumpID)
1118
			{	tree6Status = false;
1119
				tree6TimeDead = System.currentTimeMillis()-tree6DeadTime;}
1120
		}
1121
	}
1122
	}
1123
	else
1124
	{
1125
		tree6Status=false;
1126
		tree6TimeDead = 0;
1127
		tree6TimeAlive = 0;
1128
	}
1129
	if(tree7.getX()!=0)
1130
	{
1131
		RSObject[] check7 = objects.getAllAt(tree7);
1132
	{
1133
		for(int i = 0; i< check7.length; i++)
1134
		{
1135
			if(check7[i].getID()==stumpID&&tree7Status)
1136
			{	tree7Status = false;
1137
				tree7DeadTime = System.currentTimeMillis();
1138
				tree7TimeAlive = -1;
1139
			}
1140
			else if(check7[i].getID()==treeID&&!tree7Status)
1141
			{	tree7Status = true;
1142
				tree7AliveTime = System.currentTimeMillis();
1143
				tree7TimeDead = -1;
1144
			}
1145
			else if(check7[i].getID()==treeID)
1146
			{	tree7Status = true;
1147
				tree7TimeAlive = System.currentTimeMillis()-tree7AliveTime;}
1148
			else if(check7[i].getID()==stumpID)
1149
			{	tree7Status = false;
1150
				tree7TimeDead = System.currentTimeMillis()-tree7DeadTime;}
1151
		}
1152
	}
1153
	}
1154
	else
1155
	{
1156
		tree7Status=false;
1157
		tree7TimeDead = 0;
1158
		tree7TimeAlive = 0;
1159
	}
1160
}
1161
 	public void checkIvy()
1162
 {
1163
 	RSObject[] check1 = objects.getAllAt(tree1);
1164
		for(int i = 0; i< check1.length; i++)
1165
		{
1166
		    if(stumpIDs.contains(check1[i].getID())&&tree1Status)
1167
			{	tree1Status = false;
1168
				tree1DeadTime = System.currentTimeMillis();
1169
				tree1TimeAlive = -1;
1170
			}
1171
			else if(ivyIDs.contains(check1[i].getID())&&!tree1Status)
1172
			{	tree1Status = true;
1173
				tree1AliveTime = System.currentTimeMillis();
1174
				tree1TimeDead = -1;
1175
			}
1176
			else if(ivyIDs.contains(check1[i].getID()))
1177
			{	tree1Status = true;
1178
				tree1TimeAlive = System.currentTimeMillis()-tree1AliveTime;}
1179
			else if(stumpIDs.contains(check1[i].getID()))
1180
			{	tree1Status = false;
1181
				tree1TimeDead = System.currentTimeMillis()-tree1DeadTime;}
1182
		}
1183
	RSObject[] check2 = objects.getAllAt(tree2);
1184
		for(int i = 0; i< check2.length; i++)
1185
		{
1186
			if(stumpIDs.contains(check2[i].getID())&&tree2Status)
1187
			{	tree2Status = false;
1188
				tree2DeadTime = System.currentTimeMillis();
1189
				tree2TimeAlive = -1;
1190
			}
1191
			else if(ivyIDs.contains(check2[i].getID())&&!tree2Status)
1192
			{	tree2Status = true;
1193
				tree2AliveTime = System.currentTimeMillis();
1194
				tree2TimeDead = -1;
1195
			}
1196
			else if(ivyIDs.contains(check2[i].getID()))
1197
			{	tree2Status = true;
1198
				tree2TimeAlive = System.currentTimeMillis()-tree2AliveTime;}
1199
			else if(stumpIDs.contains(check2[i].getID()))
1200
			{	tree2Status = false;
1201
				tree2TimeDead = System.currentTimeMillis()-tree2DeadTime;}
1202
		}
1203
	if(tree3.getX()!=0)
1204
	{
1205
	RSObject[] check3 = objects.getAllAt(tree3);
1206
	{
1207
		for(int i = 0; i< check3.length; i++)
1208
		{
1209
			if(stumpIDs.contains(check3[i].getID())&&tree3Status)
1210
			{	tree3Status = false;
1211
				tree3DeadTime = System.currentTimeMillis();
1212
				tree3TimeAlive = -1;
1213
			}
1214
			else if(ivyIDs.contains(check3[i].getID())&&!tree3Status)
1215
			{	tree3Status = true;
1216
				tree3AliveTime = System.currentTimeMillis();
1217
				tree3TimeDead = -1;
1218
			}
1219
			else if(ivyIDs.contains(check3[i].getID()))
1220
			{	tree3Status = true;
1221
				tree3TimeAlive = System.currentTimeMillis()-tree3AliveTime;}
1222
			else if(stumpIDs.contains(check3[i].getID()))
1223
			{	tree3Status = false;
1224
				tree3TimeDead = System.currentTimeMillis()-tree3DeadTime;}
1225
		}
1226
	}
1227
	}
1228
	else
1229
	{
1230
		tree3Status=false;
1231
		tree3TimeDead = 0;
1232
		tree3TimeAlive = 0;
1233
	}
1234
	if(tree4.getX()!=0)
1235
	{
1236
		RSObject[] check4 = objects.getAllAt(tree4);
1237
	{
1238
		for(int i = 0; i< check4.length; i++)
1239
		{
1240
			if(stumpIDs.contains(check4[i].getID())&&tree4Status)
1241
			{	tree4Status = false;
1242
				tree4DeadTime = System.currentTimeMillis();
1243
				tree4TimeAlive = -1;
1244
			}
1245
			else if(ivyIDs.contains(check4[i].getID())&&!tree4Status)
1246
			{	tree4Status = true;
1247
				tree4AliveTime = System.currentTimeMillis();
1248
				tree4TimeDead = -1;
1249
			}
1250
			else if(ivyIDs.contains(check4[i].getID()))
1251
			{	tree4Status = true;
1252
				tree4TimeAlive = System.currentTimeMillis()-tree4AliveTime;}
1253
			else if(stumpIDs.contains(check4[i].getID()))
1254
			{	tree4Status = false;
1255
				tree4TimeDead = System.currentTimeMillis()-tree4DeadTime;}
1256
		}
1257
	}
1258
	}
1259
	else
1260
	{
1261
		tree4Status=false;
1262
		tree4TimeDead = 0;
1263
		tree4TimeAlive = 0;
1264
	}
1265
	if(tree5.getX()!=0)
1266
	{
1267
		RSObject[] check5 = objects.getAllAt(tree5);
1268
	{
1269
		for(int i = 0; i< check5.length; i++)
1270
		{
1271
			if(stumpIDs.contains(check5[i].getID())&&tree5Status)
1272
			{	tree5Status = false;
1273
				tree5DeadTime = System.currentTimeMillis();
1274
				tree5TimeAlive = -1;
1275
			}
1276
			else if(ivyIDs.contains(check5[i].getID())&&!tree5Status)
1277
			{	tree5Status = true;
1278
				tree5AliveTime = System.currentTimeMillis();
1279
				tree5TimeDead = -1;
1280
			}
1281
			else if(ivyIDs.contains(check5[i].getID()))
1282
			{	tree5Status = true;
1283
				tree5TimeAlive = System.currentTimeMillis()-tree5AliveTime;}
1284
			else if(stumpIDs.contains(check5[i].getID()))
1285
			{	tree5Status = false;
1286
				tree5TimeDead = System.currentTimeMillis()-tree5DeadTime;}
1287
		}
1288
	}
1289
	}
1290
	else
1291
	{
1292
		tree5Status=false;
1293
		tree5TimeDead = 0;
1294
		tree5TimeAlive = 0;
1295
	}
1296
	if(tree6.getX()!=0)
1297
	{
1298
		RSObject[] check6 = objects.getAllAt(tree6);
1299
	{
1300
		for(int i = 0; i< check6.length; i++)
1301
		{
1302
			if(stumpIDs.contains(check6[i].getID())&&tree6Status)
1303
			{	tree6Status = false;
1304
				tree6DeadTime = System.currentTimeMillis();
1305
				tree6TimeAlive = -1;
1306
			}
1307
			else if(ivyIDs.contains(check6[i].getID())&&!tree6Status)
1308
			{	tree6Status = true;
1309
				tree6AliveTime = System.currentTimeMillis();
1310
				tree6TimeDead = -1;
1311
			}
1312
			else if(ivyIDs.contains(check6[i].getID()))
1313
			{	tree6Status = true;
1314
				tree6TimeAlive = System.currentTimeMillis()-tree6AliveTime;}
1315
			else if(stumpIDs.contains(check6[i].getID()))
1316
			{	tree6Status = false;
1317
				tree6TimeDead = System.currentTimeMillis()-tree6DeadTime;}
1318
		}
1319
	}
1320
	}
1321
	else
1322
	{
1323
		tree6Status=false;
1324
		tree6TimeDead = 0;
1325
		tree6TimeAlive = 0;
1326
	}
1327
	if(tree7.getX()!=0)
1328
	{
1329
		RSObject[] check7 = objects.getAllAt(tree7);
1330
	{
1331
		for(int i = 0; i< check7.length; i++)
1332
		{
1333
			if(stumpIDs.contains(check7[i].getID())&&tree7Status)
1334
			{	tree7Status = false;
1335
				tree7DeadTime = System.currentTimeMillis();
1336
				tree7TimeAlive = -1;
1337
			}
1338
			else if(ivyIDs.contains(check7[i].getID())&&!tree7Status)
1339
			{	tree7Status = true;
1340
				tree7AliveTime = System.currentTimeMillis();
1341
				tree7TimeDead = -1;
1342
			}
1343
			else if(ivyIDs.contains(check7[i].getID()))
1344
			{	tree7Status = true;
1345
				tree7TimeAlive = System.currentTimeMillis()-tree7AliveTime;}
1346
			else if(stumpIDs.contains(check7[i].getID()))
1347
			{	tree7Status = false;
1348
				tree7TimeDead = System.currentTimeMillis()-tree7DeadTime;}
1349
		}
1350
	}
1351
	}
1352
	else
1353
	{
1354
		tree7Status=false;
1355
		tree7TimeDead = 0;
1356
		tree7TimeAlive = 0;
1357
	}
1358
1359
 }
1360
 	public void calculateNextTree()
1361
 {
1362
 	if(!tree7Status&&!tree6Status&&!tree5Status&&!tree4Status&&!tree3Status&&!tree2Status&&!tree1Status)
1363
 {
1364
 	long num = -2;
1365
 	int index = -1;
1366
 	long [] temp = {tree1TimeDead,tree2TimeDead,tree3TimeDead,tree4TimeDead,tree5TimeDead,tree6TimeDead,tree7TimeDead};
1367
 	for(int i =0; i < temp.length; i++)
1368
 	{
1369
 		if(temp[i]>=num)
1370
 		{index = i;
1371
 		num = temp[i];
1372
 		}
1373
 	}
1374
 	nextTree = index+1;
1375
 }
1376
 else if(nearest){
1377
 	RSTile [] trees = {tree1, tree2, tree3, tree4, tree5, tree6, tree7};
1378
 	int [] distances = new int [7];
1379
 	boolean [] temp = {tree1Status,tree2Status,tree3Status,tree4Status,tree5Status,tree6Status,tree7Status};
1380
 	for(int i = 0; i<temp.length;i++)
1381
 		if(temp[i])
1382
 			distances[i] = distanceTo(trees[i]);
1383
 		else
1384
 			distances[i] = 500;
1385
 	int min = 500;
1386
 	int index = -1;
1387
 	if(!status.equals("Chopping!")){
1388
 	for(int i =0; i<distances.length;i++)
1389
 		if(distances[i]<min)
1390
 		{index = i;
1391
 		min  = distances[i];
1392
 		}
1393
 	}
1394
 	else{
1395
 		min=499;
1396
 		int index2 = -1;
1397
 		for(int i =0; i<distances.length;i++){
1398
 		if(distances[i]<min&&min==499)
1399
 		{index2 = i;
1400
 		min  = distances[i];
1401
 		}
1402
 		else if(distances[i]<min&&min!=499)
1403
 		{
1404
 		index=index2;
1405
 		index2=i;
1406
 		}
1407
 		}
1408
 	}
1409
 	nextTree = index+1;
1410
 }
1411
 else{
1412
 	long num = -2;
1413
 	int index = -1;
1414
 	long [] temp = {tree1TimeAlive,tree2TimeAlive,tree3TimeAlive,tree4TimeAlive,tree5TimeAlive,tree6TimeAlive,tree7TimeAlive};
1415
 	if(!status.equals("Chopping!")){
1416
 	for(int i =0; i < temp.length; i++)
1417
 	{
1418
 		if(temp[i]>=num)
1419
 		{index = i;
1420
 		num = temp[i];
1421
 		}
1422
 	}
1423
 	}
1424
 	else{
1425
 	int index2 = -1;
1426
 	for(int i =0; i < temp.length; i++){
1427
 	if(temp[i]>=num&&num==-2)
1428
 	{
1429
 		index2 = i;
1430
 		num = temp[i];
1431
 	}
1432
 	else if(temp[i]>=num)
1433
 	{
1434
 		index=index2;
1435
 		index2=i;
1436
 	}
1437
 	}
1438
 	}
1439
 	nextTree = index+1;
1440
 }
1441
 }
1442
 	public RSObject getNextTree()
1443
 {
1444
 	if(!treeType.equals("ivy")&&!treeType.equals("willows"))
1445
 	{
1446
 	RSObject [] temp = new RSObject [10];
1447
 	if(nextTree==1)
1448
 	temp = objects.getAllAt(tree1);
1449
 	if(nextTree==2)
1450
 	temp = objects.getAllAt(tree2);
1451
 	if(nextTree==3)
1452
 	temp = objects.getAllAt(tree3);
1453
 	if(nextTree==4)
1454
 	temp = objects.getAllAt(tree4);
1455
 	if(nextTree==5)
1456
 	temp = objects.getAllAt(tree5);
1457
 	if(nextTree==6)
1458
 	temp = objects.getAllAt(tree6);
1459
 	if(nextTree==7)
1460
 	temp = objects.getAllAt(tree7);
1461
 	for(int i = 0; i<temp.length;i++)
1462
 		if(temp[i].getID()==treeID)
1463
 			return temp[i];
1464
 	}
1465
 	else
1466
 	{
1467
 	RSObject [] temp = new RSObject [10];
1468
 	if(nextTree==1)
1469
 	temp = objects.getAllAt(tree1);
1470
 	if(nextTree==2)
1471
 	temp = objects.getAllAt(tree2);
1472
 	if(nextTree==3)
1473
 	temp = objects.getAllAt(tree3);
1474
 	if(nextTree==4)
1475
 	temp = objects.getAllAt(tree4);
1476
 	if(nextTree==5)
1477
 	temp = objects.getAllAt(tree5);
1478
 	if(nextTree==6)
1479
 	temp = objects.getAllAt(tree6);
1480
 	if(nextTree==7)
1481
 	temp = objects.getAllAt(tree7);
1482
 	for(int i = 0; i<temp.length;i++)
1483
 		if(ivyIDs.contains(temp[i].getID()))
1484
 			return temp[i];
1485
 	}
1486
 	return null;
1487
 }
1488
 	public RSTile getMidTile(RSTile tile1, RSTile tile2)
1489
 {
1490
 	int x1 = tile1.getX();
1491
 	int y1 = tile1.getY();
1492
 	int x2 = tile2.getX();
1493
 	int y2 = tile2.getY();
1494
1495
 	return new RSTile((int)(x1+x2)/2,(int)(y1+y2)/2);
1496
 }
1497
 	public void moveToNextTree()
1498
 {
1499
 	status = "Moving to tree: "+nextTree;
1500
 	RSTile [] trees = {tree1,tree2,tree3,tree4,tree5,tree6,tree7};
1501
 	RSTile tileToWalkTo = getMidTile(players.getMyPlayer().getLocation(),trees[nextTree-1]);
1502
 	if(!walking.isRunEnabled()&&walking.getEnergy()>20){
1503
 	 	walking.setRun(true);
1504
 	 	sleep(random(600,800));
1505
 	 	}
1506
 if(command.equals("South Falador - Yews")||command.equals("Draynor - Yews"))
1507
 {
1508
 	moveToNextTreeLong();
1509
 }
1510
 else if(command.equals("Edgeville - Yews")){
1511
 	if(nextTree == 1&& calc.tileOnMap(tree1))
1512
 	tileToWalkTo = new RSTile(tree1.getX(),tree1.getY()-2);
1513
 	if(nextTree == 2&& calc.tileOnMap(tree2))
1514
 	tileToWalkTo = new RSTile(tree2.getX(),tree2.getY()+2);
1515
 }
1516
 else if(command.equals("Grand Exchange - Yews")){
1517
 	if(nextTree == 1&& calc.tileOnMap(tree1))
1518
 	tileToWalkTo = new RSTile(tree1.getX()+2,tree1.getY());
1519
 	if(nextTree == 2&& calc.tileOnMap(tree2))
1520
 	tileToWalkTo = new RSTile(tree2.getX(),tree2.getY());
1521
 	if(nextTree == 3&& calc.tileOnMap(tree3))
1522
 	tileToWalkTo = new RSTile(tree3.getX()-2,tree2.getY());
1523
 }
1524
 else if(command.equals("Catherby - Yews")){
1525
 	if(nextTree == 1&& calc.tileOnMap(tree1))
1526
 	tileToWalkTo = new RSTile(tree1.getX(),tree1.getY()-2);
1527
 	if(nextTree == 2&& calc.tileOnMap(tree2))
1528
 	tileToWalkTo = new RSTile(tree2.getX(),tree2.getY()-2);
1529
 	if(nextTree == 3&& calc.tileOnMap(tree3))
1530
 	tileToWalkTo = new RSTile(tree3.getX(),tree3.getY()-2);
1531
 	if(nextTree == 4&& calc.tileOnMap(tree4))
1532
 	tileToWalkTo = new RSTile(tree4.getX(),tree4.getY()-2);
1533
 	if(nextTree == 5&& calc.tileOnMap(tree5))
1534
 	tileToWalkTo = new RSTile(tree5.getX(),tree5.getY()-2);
1535
  	if(nextTree == 6&& calc.tileOnMap(tree6))
1536
 	tileToWalkTo = new RSTile(tree6.getX(),tree6.getY()-2);
1537
 	if(nextTree == 7&& calc.tileOnMap(tree7))
1538
 	tileToWalkTo = new RSTile(tree7.getX(),tree7.getY()-2);
1539
 }
1540
  else if(command.equals( "Catherby - Yews")){
1541
 	if(nextTree == 1&& calc.tileOnMap(tree1))
1542
 	tileToWalkTo = new RSTile(tree1.getX(),tree1.getY()+2);
1543
 	if(nextTree == 2&& calc.tileOnMap(tree2))
1544
 	tileToWalkTo = new RSTile(tree2.getX(),tree2.getY()+2);
1545
 	if(nextTree == 3&& calc.tileOnMap(tree3))
1546
 	tileToWalkTo = new RSTile(tree3.getX(),tree3.getY()-2);
1547
 }
1548
 else{
1549
 	if(nextTree == 1&& calc.tileOnMap(tree1))
1550
 	tileToWalkTo = tree1;
1551
 	if(nextTree == 2&& calc.tileOnMap(tree2))
1552
 	tileToWalkTo = tree2;
1553
 	if(nextTree == 3&& calc.tileOnMap(tree3))
1554
 	tileToWalkTo = tree3;
1555
 	if(nextTree == 4&& calc.tileOnMap(tree4))
1556
 	tileToWalkTo = tree4;
1557
 	if(nextTree == 5&& calc.tileOnMap(tree5))
1558
 	tileToWalkTo = tree5;
1559
 	if(nextTree == 6&& calc.tileOnMap(tree6))
1560
 	tileToWalkTo = tree6;
1561
 	if(nextTree == 7&& calc.tileOnMap(tree7))
1562
 	tileToWalkTo = tree7;
1563
 }
1564
 if(!command.equals("South Falador - Yews")&&!command.equals("Draynor - Yews"))
1565
 {
1566
 boolean didClick = false;
1567
 	if(calc.tileOnScreen(tileToWalkTo)&&!command.equals("Mage Training Area - Magics"))
1568
 	{if(walking.walkTileOnScreen(tileToWalkTo))
1569
 			didClick=true;}
1570
 	else
1571
 		if(walking.walkTileMM(tileToWalkTo))
1572
 			didClick= true;
1573
 	if(command.equals("Mage Training Area - Magics")&&didClick)
1574
 		while(getMyPlayer().isMoving())
1575
 			sleep(random(600,800));
1576
 	sleep(random(600,800));
1577
 	if(didClick){
1578
 	long start = System.currentTimeMillis();
1579
 	while (!playerIsNear(trees[nextTree-1],4)) {
1580
 	if(System.currentTimeMillis()-start>2000)
1581
 		break;
1582
 	if(System.currentTimeMillis()-start>random(600,800)&&!getMyPlayer().isMoving())
1583
 		walking.walkTileMM(tileToWalkTo);
1584
	sleep(random(100, 200));
1585
	}
1586
	if(!playerIsNear(trees[nextTree-1],4)) //try again
1587
		walking.walkTileMM(tileToWalkTo);
1588
 	}
1589
 }
1590
 }
1591
 	public void moveToNextTreeLong()
1592
 	{
1593
 		RSTile[] trees = {tree1,tree2,tree3,tree4,tree5,tree6,tree7};
1594
 		long start = System.currentTimeMillis();
1595
 		if(location.equals("South Falador")){
1596
 			RSTile[] p1to3 = { tree1, new RSTile(3007, 3318), tree2, new RSTile(3030, 3321), new RSTile(3038,3321), tree3 };
1597
 			RSTile[] p3to1 = walking.reversePath(p1to3);
1598
 			RSTile[] p1to2 = { tree1,new RSTile(3007, 3318), tree2};
1599
 			RSTile[] p2to1 = walking.reversePath(p1to2);
1600
 			RSTile[] p2to3 = { tree2,new RSTile(3030, 3321),new RSTile(3038,3321), tree3 };
1601
 			RSTile[] p3to2 = walking.reversePath(p2to3);
1602
1603
 			RSTile[][] paths = {p1to3,p3to1,p1to2,p2to1,p2to3,p3to2};
1604
1605
 			int choice = -1;
1606
 			if(nextTree ==1 && !atTrees())
1607
 				choice = 1;
1608
 			if(nextTree ==1 && atTrees())
1609
 				choice = 3;
1610
 			else if(nextTree == 2 && playerIsNear(tree3,4))
1611
 				choice = 5;
1612
 			else if(nextTree == 2 && playerIsNear(tree1,4))
1613
 				choice = 2;
1614
 			else if(nextTree == 3)
1615
 				choice = 0;
1616
 			else if(nextTree == 2)
1617
 				choice = 2;
1618
1619
 			if(choice>=0){
1620
 			status = "Moving to tree: "+nextTree;
1621
 			int lastTileToWalkTo = -1;
1622
 			int tempTileToWalkTo = walkPath(paths[choice]);
1623
 			boolean clickedLastTile = false;
1624
 			while(!playerIsNear(trees[nextTree-1],4)&&System.currentTimeMillis()-start<20000){
1625
 				boolean clicked = false;
1626
       		tempTileToWalkTo = walkPath(paths[choice]);
1627
       		if(!clickedLastTile){
1628
       			if(tempTileToWalkTo>lastTileToWalkTo){
1629
       			if(calc.tileOnScreen(paths[choice][tempTileToWalkTo])){
1630
       				if(!walking.walkTileOnScreen(paths[choice][tempTileToWalkTo]))
1631
       					if(walking.walkTileMM(paths[choice][tempTileToWalkTo],1,1))
1632
       						clicked = true;
1633
       					else
1634
       						clicked = false;
1635
       				else
1636
       					clicked = true;
1637
       			}
1638
       			else
1639
       				clicked = walking.walkTileMM(paths[choice][tempTileToWalkTo],1,1);
1640
       		}
1641
1642
1643
       		if(clicked){
1644
       			lastTileToWalkTo = tempTileToWalkTo;
1645
       			if(tempTileToWalkTo==paths[choice].length-1)
1646
       					{
1647
       						clickedLastTile = true;
1648
       					}
1649
       				}
1650
       		}
1651
       		sleep(random(200, 300));
1652
 			}
1653
 			}
1654
 		}
1655
 	   if(location.equals("Draynor")){
1656
 	   		RSTile[] p1to2 = {tree1,new RSTile(3149,3244),tree2};
1657
 	   		RSTile[] p2to1 = walking.reversePath(p1to2);
1658
			RSTile[] p2to3 = {tree2,new RSTile(3161,3222), tree3};
1659
			RSTile[] p3to2 = walking.reversePath(p2to3);
1660
			RSTile[] p3to4 = {tree3, new RSTile(3176,3224), tree4};
1661
			RSTile[] p4to3 = walking.reversePath(p3to4);
1662
			RSTile[] p2to4 = {tree2, new RSTile(3162,3227), new RSTile(3171,3227),tree4};
1663
			RSTile[] p4to2 = walking.reversePath(p2to4);
1664
			RSTile[] p1to3 = {tree1, new RSTile(3151,3248), new RSTile(3153,3241), new RSTile(3161,3228),tree3};
1665
			RSTile[] p3to1 = walking.reversePath(p1to3);
1666
			RSTile[] p1to4 = {tree1, new RSTile(3156,3244), new RSTile(3165,3235), new RSTile(3175,3229), tree4};
1667
			RSTile[] p4to1 = walking.reversePath(p1to4);
1668
1669
			RSTile[][] paths = {p1to2,p2to1,p2to3,p3to2,p3to4,p4to3,p2to4,p4to2,p1to3,p3to1,p1to4,p4to1};
1670
1671
			int choice = -1;
1672
			status = "Moving to tree: "+nextTree;
1673
			if(nextTree ==1 && playerIsNear(tree3,4))
1674
 				choice = 9;
1675
 			else if(nextTree == 1 && playerIsNear(tree2,4))
1676
 				choice = 1;
1677
 			else if(nextTree == 2 && playerIsNear(tree3,4))
1678
 				choice = 3;
1679
 			else if(nextTree == 2 && playerIsNear(tree1,4))
1680
 				choice = 0;
1681
 			else if(nextTree == 3 && playerIsNear(tree1,4))
1682
 				choice = 8;
1683
 			else if(nextTree == 3 && playerIsNear(tree2,4))
1684
 				choice = 2;
1685
 			else if(nextTree == 4 && playerIsNear(tree3,4))
1686
 				choice = 4;
1687
 			else if(nextTree == 3 && playerIsNear(tree4,4))
1688
 				choice = 5;
1689
 			else if(nextTree == 4 && playerIsNear(tree2,4))
1690
 				choice = 6;
1691
 			else if(nextTree == 2 && playerIsNear(tree4,4))
1692
 				choice = 7;
1693
 			else if(nextTree == 4 && playerIsNear(tree1,4))
1694
 				choice = 10;
1695
 			else if(nextTree == 1 && playerIsNear(tree4,4))
1696
 				choice = 11;
1697
 			else if(playerIsNear(new RSTile(3149,3237),4))
1698
 				choice = 0;
1699
 			else if(playerIsNear(new RSTile(3161,3222),4))
1700
 				choice = 2;
1701
 			else if(playerIsNear(new RSTile(3176,3224),4))
1702
 				choice = 4;
1703
 			else if(playerIsNear(new RSTile(3171,3227),4)||playerIsNear(new RSTile(3162,3227),4))
1704
 				choice = 6;
1705
 			else if(playerIsNear(new RSTile(3151,3248),4)||playerIsNear(new RSTile(3153,3241),4)||playerIsNear(new RSTile(3161,3228),4))
1706
 				choice = 8;
1707
 			else if(playerIsNear(new RSTile(3156,3240),4)||playerIsNear(new RSTile(3166,3232),4)||playerIsNear(new RSTile(3176,3229),4))
1708
 				choice = 10;
1709
1710
1711
1712
			if(choice>=0){
1713
			int lastTileToWalkTo = -1;
1714
 			int tempTileToWalkTo = walkPath(paths[choice]);
1715
 			boolean clickedLastTile = false;
1716
 			while(!playerIsNear(trees[nextTree-1],4)&&System.currentTimeMillis()-start<20000){
1717
 				boolean clicked = false;
1718
       		tempTileToWalkTo = walkPath(paths[choice]);
1719
       		if(!clickedLastTile){
1720
       		if(tempTileToWalkTo>lastTileToWalkTo){
1721
       			if(calc.tileOnScreen(paths[choice][tempTileToWalkTo])){
1722
       				if(!walking.walkTileOnScreen(paths[choice][tempTileToWalkTo]))
1723
       					if(walking.walkTileMM(paths[choice][tempTileToWalkTo],1,1))
1724
       						clicked = true;
1725
       					else
1726
       						clicked = false;
1727
       				else
1728
       					clicked = true;
1729
       			}
1730
       			else
1731
       				clicked = walking.walkTileMM(paths[choice][tempTileToWalkTo],1,1);
1732
1733
       		}
1734
       		if(clicked){
1735
       			lastTileToWalkTo = tempTileToWalkTo;
1736
       			if(tempTileToWalkTo==paths[choice].length-1)
1737
       					{
1738
       						clickedLastTile = true;
1739
       					}
1740
       			}
1741
       		}
1742
       		sleep(random(200, 300));
1743
 			}
1744
 			}
1745
 	   }
1746
 	}
1747
 	public void chop(boolean secondTry)
1748
{
1749
	safety = 1;
1750
	RSObject treeToChop = getNextTree();
1751
	RSModel m = treeToChop.getModel();
1752
1753
1754
1755
   	if(!secondTry&&treeType.equals("ivy")){
1756
1757
   	if(command.equals("Castle Wars - Ivy")||command.equals("South Falador - Ivy"))
1758
   	{
1759
   		int tempNum = random(1,2);
1760
		if(tempNum==1)
1761
		camera.setAngle(random(1,30));
1762
		if(tempNum==2)
1763
		camera.setAngle(random(340,359));
1764
   	}
1765
   	if(command.equals("Grand Exchange - Ivy")||command.equals("Yanille - Ivy")||command.equals("North Falador - Ivy"))
1766
   	{
1767
   		camera.setAngle(random(170,190));
1768
   	}
1769
   	if(command.equals("Taverly - Ivy")||command.equals("Varrock Palace - Ivy"))
1770
   	{
1771
   		camera.setAngle(random(260,280));
1772
   	}
1773
   	if(command.equals("Ardougne - Ivy"))
1774
   	{
1775
   		camera.setAngle(random(80,100));
1776
   	}
1777
   	}
1778
   	Point temp = m.getPoint();
1779
    mouse.move(temp);
1780
   	if(treeType.equals("yews"))
1781
   	menu.doAction("Chop down Yew");
1782
   	else if(treeType.equals("magics"))
1783
   	menu.doAction("Chop down Magic tree");
1784
   	else if(treeType.equals("ivy"))
1785
   	menu.doAction("Chop Ivy");
1786
   	else if(treeType.equals("willows"))
1787
    menu.doAction("Chop down Willow");
1788
   	else if(treeType.equals("maples"))
1789
   	menu.doAction("Chop down Maple tree");
1790
	else if(treeType.equals("oaks"))
1791
	menu.doAction("Chop down Oak");
1792
1793
    sleep(random(600,800));
1794
   	while (players.getMyPlayer().isMoving()) {
1795
						sleep(random(100, 200));
1796
	}
1797
	if(!chopCheck()&&!secondTry)
1798
		chop(true);
1799
}
1800
	public void hoverMouse(){
1801
		if(!players.getMyPlayer().isMoving()){
1802
		RSTile [] trees = {tree1,tree2,tree3,tree4,tree5,tree6,tree7};
1803
		if(calc.tileOnScreen(trees[nextTree-1])){
1804
		Point temp = calc.tileToScreen(trees[nextTree-1]);
1805
		try{
1806
		if(temp.getY()-50>1)
1807
		mouse.move(new Point((int)temp.getX(),(int)temp.getY()-50),1,1);
1808
		else
1809
		mouse.move(new Point((int)temp.getX(),(int)temp.getY()),1,1);
1810
		}catch(Exception e){};
1811
		}
1812
		}
1813
	}
1814
 	public boolean atBank(){
1815
	boolean temp = false;
1816
	if(command.equals("Grand Exchange - Yews")||command.equals("Grand Exchange - Ivy"))
1817
	{
1818
	if(getMyPlayer().getLocation().getX()<3171&&getMyPlayer().getLocation().getX()>=3167)
1819
		temp=true;
1820
	else
1821
		return false;
1822
	if(getMyPlayer().getLocation().getY()>=3486&&getMyPlayer().getLocation().getY()<=3492)
1823
		return true;
1824
	}
1825
	if(command.equals("Edgeville - Yews"))
1826
	{
1827
	if(getMyPlayer().getLocation().getX()<3096&&getMyPlayer().getLocation().getX()>=3091)
1828
		temp=true;
1829
	else
1830
		return false;
1831
	if(getMyPlayer().getLocation().getY()>=3488&&getMyPlayer().getLocation().getY()<=3494)
1832
		return true;
1833
	}
1834
	if(command.equals("South Falador - Yews")||command.equals("South Falador - Ivy"))
1835
	{
1836
	if(getMyPlayer().getLocation().getX()<3016&&getMyPlayer().getLocation().getX()>=3010)
1837
		temp=true;
1838
	else
1839
		return false;
1840
	if(getMyPlayer().getLocation().getY()>=3355&&getMyPlayer().getLocation().getY()<=3359)
1841
		return true;
1842
	}
1843
	if(command.equals("Rimmington - Yews")||command.equals("Port Salim - Willows")){
1844
		return (getMyPlayer().getLocation().getX()>=3045&&getMyPlayer().getLocation().getY()<=3237&&getMyPlayer().getLocation().getY()>=3234);
1845
	}
1846
1847
	if(command.equals("Catherby - Yews"))
1848
	{
1849
	if(getMyPlayer().getLocation().getX()<=2811&&getMyPlayer().getLocation().getX()>=2807)
1850
		temp=true;
1851
	else
1852
		return false;
1853
	if(getMyPlayer().getLocation().getY()>=3439&&getMyPlayer().getLocation().getY()<=3441)
1854
		return true;
1855
	}
1856
	if(command.equals("Tree Gnome - Yews"))
1857
	{
1858
	if(getMyPlayer().getLocation().getX()<=2446&&getMyPlayer().getLocation().getX()>=2445)
1859
		temp=true;
1860
	else
1861
		return false;
1862
	if(getMyPlayer().getLocation().getY()>=3423&&getMyPlayer().getLocation().getY()<=3428)
1863
		return true;
1864
	}
1865
	if(location.equals("Seer's Village")||command.equals("Sorcerer's Tower - Magics"))
1866
	{
1867
	if(getMyPlayer().getLocation().getX()>=2724&&getMyPlayer().getLocation().getX()<=2728)
1868
		temp=true;
1869
	else
1870
		return false;
1871
	if(getMyPlayer().getLocation().getY()>=3491&&getMyPlayer().getLocation().getY()<=3495)
1872
		return true;
1873
	}
1874
	if(command.equals("Mage Training Area - Magics"))
1875
	{
1876
	return playerIsNear(bankLocation,5);
1877
	}
1878
	if(command.equals("Castle Wars - Ivy"))
1879
	{
1880
	if(getMyPlayer().getLocation().getX()<2445&&getMyPlayer().getLocation().getX()>=3086)
1881
		temp=true;
1882
	else
1883
		return false;
1884
	if(getMyPlayer().getLocation().getY()>=3083&&getMyPlayer().getLocation().getY()<=3086)
1885
		return true;
1886
	}
1887
	if(command.equals("Yanille - Ivy"))
1888
	{
1889
	if(getMyPlayer().getLocation().getX()<2614&&getMyPlayer().getLocation().getX()>=2611)
1890
		temp=true;
1891
	else
1892
		return false;
1893
	if(getMyPlayer().getLocation().getY()>=3092&&getMyPlayer().getLocation().getY()<=3095)
1894
		return true;
1895
	}
1896
	if(command.equals("Ardougne - Ivy"))
1897
	{
1898
	if(getMyPlayer().getLocation().getX()<2616&&getMyPlayer().getLocation().getX()>=2613)
1899
		temp=true;
1900
	else
1901
		return false;
1902
	if(getMyPlayer().getLocation().getY()>=3332&&getMyPlayer().getLocation().getY()<=3334)
1903
		return true;
1904
	}
1905
	if(command.equals("Varrock Palace - Ivy"))
1906
	{
1907
	if(getMyPlayer().getLocation().getX()<3255&&getMyPlayer().getLocation().getX()>=3250)
1908
		temp=true;
1909
	else
1910
		return false;
1911
	if(getMyPlayer().getLocation().getY()>=3252&&getMyPlayer().getLocation().getY()<=3422)
1912
		return true;
1913
	}
1914
	if(command.equals("North Falador - Ivy"))
1915
	{
1916
	if(getMyPlayer().getLocation().getX()<2948&&getMyPlayer().getLocation().getX()>=2944)
1917
		temp=true;
1918
	else
1919
		return false;
1920
	if(getMyPlayer().getLocation().getY()>=3368&&getMyPlayer().getLocation().getY()<=3371)
1921
		return true;
1922
	}
1923
	if(location.equals("Draynor"))
1924
	{
1925
	if(getMyPlayer().getLocation().getX()<3094&&getMyPlayer().getLocation().getX()>=3092)
1926
		temp=true;
1927
	else
1928
		return false;
1929
	if(getMyPlayer().getLocation().getY()>=3244&&getMyPlayer().getLocation().getY()<=3246)
1930
		return true;
1931
	}
1932
	return false;
1933
}
1934
 	public boolean atTrees()
1935
{
1936
	boolean temp = false;
1937
	if(command.equals("Draynor - Oaks"))
1938
		return playerIsNear(tree1,4)||playerIsNear(tree2,4);
1939
	if(command.equals("Grand Exchange - Yews"))
1940
	{
1941
	if(getMyPlayer().getLocation().getX()>=3203&&getMyPlayer().getLocation().getX()<=3222)
1942
		temp=true;
1943
	else
1944
		return false;
1945
	if(getMyPlayer().getLocation().getY()>=3500&&getMyPlayer().getLocation().getY()<=3505)
1946
		return true;
1947
	}
1948
	if(command.equals("Edgeville - Yews"))
1949
	{
1950
	if(getMyPlayer().getLocation().getX()<3090&&getMyPlayer().getLocation().getX()>=3085)
1951
		temp=true;
1952
	else
1953
		return false;
1954
	if(getMyPlayer().getLocation().getY()>=3468&&getMyPlayer().getLocation().getY()<=3482)
1955
		return true;
1956
	}
1957
	if(command.equals("Rimmington - Yews"))
1958
	{
1959
	if(getMyPlayer().getLocation().getX()<2946&&getMyPlayer().getLocation().getX()>=2923)
1960
		temp=true;
1961
	else
1962
		return false;
1963
	if(getMyPlayer().getLocation().getY()>=3223&&getMyPlayer().getLocation().getY()<=3242)
1964
		return true;
1965
	}
1966
	if(command.equals("Catherby - Yews"))
1967
	{
1968
	if(getMyPlayer().getLocation().getX()<2769&&getMyPlayer().getLocation().getX()>=2751)
1969
		temp=true;
1970
	else
1971
		return false;
1972
	if(getMyPlayer().getLocation().getY()>=3427&&getMyPlayer().getLocation().getY()<=3438)
1973
		return true;
1974
	}
1975
	if(command.equals("Seer's Village - Yews"))
1976
	{
1977
	if(getMyPlayer().getLocation().getX()<2717&&getMyPlayer().getLocation().getX()>=2712)
1978
		temp=true;
1979
	else
1980
		return false;
1981
	if(getMyPlayer().getLocation().getY()>=3462&&getMyPlayer().getLocation().getY()<=3464)
1982
		return true;
1983
	}
1984
	if(command.equals("South Falador - Yews"))
1985
	{
1986
	if(getMyPlayer().getLocation().getX()<3010&&getMyPlayer().getLocation().getX()>=3004)
1987
		temp=true;
1988
	else
1989
		return false;
1990
	if(getMyPlayer().getLocation().getY()>=3317&&getMyPlayer().getLocation().getY()<=3325)
1991
		return true;
1992
	}
1993
	if(command.equals("Draynor - Yews"))
1994
	{
1995
		return playerIsNear(tree2,5);
1996
	}
1997
	if(command.equals("Tree Gnome - Yews"))
1998
	{
1999
		return floorHeight()==0&&playerIsNear(new RSTile (2444,3434),5);
2000
	}
2001
	if(command.equals("Seer's Village - Magics"))
2002
	{
2003
	if(getMyPlayer().getLocation().getX()>=2690&&getMyPlayer().getLocation().getX()<=2699)
2004
		temp=true;
2005
	else
2006
		return false;
2007
	if(getMyPlayer().getLocation().getY()>=3422&&getMyPlayer().getLocation().getY()<=3426)
2008
		return true;
2009
	}
2010
	if(command.equals("Sorcerer's Tower - Magics"))
2011
	{
2012
	if(getMyPlayer().getLocation().getX()<=2704&&getMyPlayer().getLocation().getX()>=2700)
2013
		temp=true;
2014
	else
2015
		return false;
2016
	if(getMyPlayer().getLocation().getY()>=3396&&getMyPlayer().getLocation().getY()<=3400)
2017
		return true;
2018
	}
2019
	if(command.equals("Mage Training Area - Magics"))
2020
	{
2021
	if(getMyPlayer().getLocation().getX()<=3365&&getMyPlayer().getLocation().getX()>=3361)
2022
		temp=true;
2023
	else
2024
		return false;
2025
	if(getMyPlayer().getLocation().getY()>=3296&&getMyPlayer().getLocation().getY()<=3300)
2026
		return true;
2027
	}
2028
	if(command.equals("Castle Wars - Ivy"))
2029
	{
2030
	if(getMyPlayer().getLocation().getX()<2431&&getMyPlayer().getLocation().getX()>=2423)
2031
		temp=true;
2032
	else
2033
		return false;
2034
	if(getMyPlayer().getLocation().getY()>=3067&&getMyPlayer().getLocation().getY()<=3068)
2035
		return true;
2036
	}
2037
	if(command.equals("Grand Exchange - Ivy"))
2038
	{
2039
	if(getMyPlayer().getLocation().getX()<3220&&getMyPlayer().getLocation().getX()>=3215)
2040
		temp=true;
2041
	else
2042
		return false;
2043
	if(getMyPlayer().getLocation().getY()>=3498&&getMyPlayer().getLocation().getY()<=3502)
2044
		return true;
2045
	}
2046
	if(command.equals("Yanille - Ivy"))
2047
	{
2048
	if(getMyPlayer().getLocation().getX()<2599&&getMyPlayer().getLocation().getX()>=2594)
2049
		temp=true;
2050
	else
2051
		return false;
2052
	if(getMyPlayer().getLocation().getY()>=3111&&getMyPlayer().getLocation().getY()<=3112)
2053
		return true;
2054
	}
2055
	if(command.equals("Ardougne - Ivy"))
2056
	{
2057
	if(getMyPlayer().getLocation().getX()<2624&&getMyPlayer().getLocation().getX()>=2622)
2058
		temp=true;
2059
	else
2060
		return false;
2061
	if(getMyPlayer().getLocation().getY()>=3304&&getMyPlayer().getLocation().getY()<=3310)
2062
		return true;
2063
	}
2064
	if(command.equals("Varrock Palace - Ivy"))
2065
	{
2066
	if(getMyPlayer().getLocation().getX()<3234&&getMyPlayer().getLocation().getX()>=3232)
2067
		temp=true;
2068
	else
2069
		return false;
2070
	if(getMyPlayer().getLocation().getY()>=3456&&getMyPlayer().getLocation().getY()<=3461)
2071
		return true;
2072
	}
2073
	if(command.equals("South Falador - Ivy"))
2074
	{
2075
	if(getMyPlayer().getLocation().getX()<3053&&getMyPlayer().getLocation().getX()>=3044)
2076
		temp=true;
2077
	else
2078
		return false;
2079
	if(getMyPlayer().getLocation().getY()>=3326&&getMyPlayer().getLocation().getY()<=3328)
2080
		return true;
2081
	}
2082
	if(command.equals("North Falador - Ivy"))
2083
	{
2084
	if(getMyPlayer().getLocation().getX()<3019&&getMyPlayer().getLocation().getX()>=3010)
2085
		temp=true;
2086
	else
2087
		return false;
2088
	if(getMyPlayer().getLocation().getY()>=3392&&getMyPlayer().getLocation().getY()<=3394)
2089
		return true;
2090
	}
2091
	if(command.equals("Draynor - Willows"))
2092
	{
2093
	if(getMyPlayer().getLocation().getX()<3092&&getMyPlayer().getLocation().getX()>=3083)
2094
		temp=true;
2095
	else
2096
		return false;
2097
	if(getMyPlayer().getLocation().getY()>=3233&&getMyPlayer().getLocation().getY()<=3239)
2098
		return true;
2099
	}
2100
	if(command.equals("Port Salim - Willows"))
2101
	{
2102
	if(getMyPlayer().getLocation().getX()<3064&&getMyPlayer().getLocation().getX()>=3056)
2103
		temp=true;
2104
	else
2105
		return false;
2106
	if(getMyPlayer().getLocation().getY()>=3250&&getMyPlayer().getLocation().getY()<=3256)
2107
		return true;
2108
	}
2109
	if(command.equals("Seer's Village - Maples"))
2110
	{
2111
	if(getMyPlayer().getLocation().getX()<2731&&getMyPlayer().getLocation().getX()>=2727)
2112
		temp=true;
2113
	else
2114
		return false;
2115
	if(getMyPlayer().getLocation().getY()>=3499&&getMyPlayer().getLocation().getY()<=3502)
2116
		return true;
2117
	}
2118
	return false;
2119
}
2120
	public void gate()
2121
   {
2122
   	if(calc.tileToScreen(new RSTile(3348,3279)).x!=-1)
2123
 	{
2124
 		RSObject gate = getGate();
2125
 		while(isGateClosed()){
2126
 			status = "Opening gate.";
2127
 			walking.walkTileMM(new RSTile(3348,3279),1,1);
2128
			RSModel m = gate.getModel();
2129
			Point temp = m.getPoint();
2130
			mouse.move(temp,1,1);
2131
			if(menu.doAction("Open Gate"))
2132
			status = "Gate opened.";
2133
			sleep(random(1000,1200));
2134
 		}
2135
 	}
2136
   }
2137
  	public boolean isGateClosed()
2138
  {
2139
 		RSObject [] test = objects.getAllAt(new RSTile(3348,3279));
2140
 		for(int i = 0; i<test.length;i++)
2141
 		{
2142
 			if(test[i].getID()==27852){
2143
 			return true;
2144
 			}
2145
 		}
2146
 		return false;
2147
  }
2148
  	public RSObject getGate(){
2149
  		RSObject [] test = objects.getAllAt(new RSTile(3348,3279));
2150
 		RSObject gate = null;
2151
 		for(int i = 0; i<test.length;i++)
2152
 		{
2153
 			if(test[i].getID()==27852){
2154
 			gate = test[i];
2155
 			}
2156
 		}
2157
 		return gate;
2158
  }
2159
 	public void walkToBank(){
2160
 	long startTime = System.currentTimeMillis();
2161
 	status = "Walking to bank.";
2162
 	if(random(1,3)==2)
2163
 	camera.setPitch(true);
2164
 	int lastTileToWalkTo = -1;
2165
 	int tempTileToWalkTo = 0;
2166
 	boolean clickedLastTile = false;
2167
 	while(!atBank())
2168
 	{
2169
 		if(!walking.isRunEnabled()&&walking.getEnergy()>20){
2170
 	 	 	walking.setRun(true);
2171
 	 	 	sleep(random(600,800));
2172
 	 	 	}
2173
 	status = "Walking to bank..";
2174
 	if(command.equals("Mage Training Area - Magics"))
2175
 	{
2176
 		gate();
2177
 	}
2178
 	if(command.equals("Rimmington - Yews"))
2179
 	{
2180
 		if(!getMyPlayer().isMoving()&&(playerIsNear(new RSTile(2933,3236),3)||playerIsNear(tree4,3)))
2181
 			{walking.walkTileMM(treesToBank[0],1,1);
2182
 			sleep(random(600,800));
2183
 			while(getMyPlayer().isMoving())
2184
 			sleep(random(100,200));}
2185
 	}
2186
 	if(command.equals("South Falador - Yews"))
2187
 	{
2188
 		if(playerIsNear(tree3,4))
2189
 		{
2190
 		walking.walkTileMM(new RSTile(3030,3321),1,1);
2191
 		while(calc.tileToMinimap(tree2).getX()==-1){
2192
						sleep(random(100, 200));
2193
		}
2194
		walking.walkTileMM(tree2,1,1);
2195
		sleep(random(1200,1500));
2196
 		while (players.getMyPlayer().isMoving()) {
2197
						sleep(random(100, 200));
2198
		}
2199
 		}
2200
 	}
2201
 	if(command.equals("Tree Gnome - Yews"))
2202
 	{
2203
 		if(floorHeight()==0)
2204
 		{
2205
 			if(!playerIsNear(new RSTile(2444,3434),4))
2206
 			{
2207
 				walking.walkTileMM(new RSTile(2444,3434));
2208
 				while(getMyPlayer().isMoving())
2209
 					sleep(random(100,200));
2210
 			}
2211
 			else{
2212
 			for(int inc = 0; inc<3;inc++){
2213
 			RSObject stairs = null;
2214
 			RSObject [] tester = objects.getAllAt(new RSTile(2446,3435));
2215
 			for(int i = 0; i<tester.length;i++)
2216
 			{
2217
 				if(tester[i].getID()==1742)
2218
 					stairs = tester[i];
2219
 			}
2220
 			if(stairs!=null){
2221
 				RSModel m = stairs.getModel();
2222
 				Point toClick = m.getPoint();
2223
 				mouse.move(toClick);
2224
 				mouse.click(true);
2225
 				sleep(random(1000,1500));
2226
 			}
2227
 			}
2228
 			if(floorHeight()==1)
2229
 				break;
2230
 			}
2231
 		}
2232
 	}
2233
 	if(command.equals("Grand Exchange - Yews")){
2234
 		if(playerIsNear(tree3,5)){
2235
 			walking.walkTileMM(tree2);
2236
 			sleep(random(600,800));
2237
 		}
2238
 	}
2239
2240
 		if(!getMyPlayer().isMoving()){
2241
 			sleep(random(600,800));
2242
 			if(!getMyPlayer().isMoving())
2243
 				lastTileToWalkTo=-1;
2244
 		}
2245
 			boolean clicked = false;
2246
       		tempTileToWalkTo = walkPath(treesToBank);
2247
       		if(tempTileToWalkTo>lastTileToWalkTo){
2248
       				if(walking.walkTileMM(treesToBank[tempTileToWalkTo],1,1))
2249
       						clicked = true;
2250
       				sleep(random(400,500));
2251
       				if(getMyPlayer().isMoving())
2252
       					clicked = true;
2253
       		}
2254
       		if(clicked){
2255
       			lastTileToWalkTo = tempTileToWalkTo;
2256
       		}
2257
       		sleep(random(200, 300));
2258
 	}
2259
 	}
2260
	public boolean compareTiles(RSTile t1, RSTile t2){
2261
		return t1.getX()==t2.getX()&&t1.getY()==t2.getY();
2262
	}
2263
	public int walkPath(RSTile [] path)
2264
  	{
2265
  		//if(playerIsNear(path[path.length-2],5))
2266
  		//	walking.walkTileMM(path[path.length-1],1,1);
2267
  		//else{
2268
  		int temp = 0;
2269
  		boolean nearSomething = false;
2270
  		for(int i = 0; i<path.length;i++)
2271
  		{
2272
  			if(playerIsNear(path[i],5))
2273
  			{
2274
  			nearSomething = true;
2275
  			temp = i+1;
2276
  			antiBan(random(1,200));
2277
  			for(int j = i; j<path.length; j++)
2278
  			{
2279
  				if(calc.tileToMinimap(path[j]).x<0)
2280
  				{
2281
  					temp=j-1;
2282
  					break;
2283
  				}
2284
  				if(j==path.length-1&&calc.tileToMinimap(path[j]).x>0)
2285
  				{
2286
  					temp=j;
2287
  					break;
2288
  				}
2289
  			}
2290
  			return temp;
2291
  			}
2292
  		}
2293
  		if(!nearSomething){
2294
  			RSTile tempTileToCompare = walking.nextTile(path);
2295
  			for(int i = 0; i<path.length;i++)
2296
  			{
2297
  				if(compareTiles(path[i],tempTileToCompare))
2298
  					return i;
2299
  			}
2300
2301
  		}
2302
  		return 0;
2303
  	}
2304
	public RSItem[] getNestLocations()
2305
	{
2306
		RSItem [] inv = inventory.getItems();
2307
		int length = 0;
2308
		for(int i = 0; i<inv.length;i++)
2309
			for(int j = 0; j<BNIDs.length;j++)
2310
				if(inv[i].getID()==BNIDs[j])
2311
					length++;
2312
		RSItem [] toReturn  = new RSItem [length];
2313
		int index = 0;
2314
		for(int i = 0; i<inv.length;i++)
2315
			for(int j = 0; j<BNIDs.length;j++)
2316
				if(inv[i].getID()==BNIDs[j])
2317
					toReturn[index++] = inv[i];
2318
			return toReturn;
2319
	}
2320
 	public void bank(boolean npc){
2321
 		mouse.setSpeed(random(7,8));
2322
 		if(command.equals("Rimmington - Yews")||command.equals("Port Salim - Willows")){
2323
 			mouse.setSpeed(random(7,8));
2324
 			boolean tryAgain = true;
2325
 			while(inventory.isFull()){
2326
 				tryAgain = true;
2327
 					while(tryAgain) {
2328
 						status = "Opening bank.";
2329
 						RSObject [] test = objects.getAllAt(new RSTile(3047,3237));
2330
 						RSObject bankBox = null;
2331
 						for(int i = 0; i<test.length;i++)
2332
 							if(test[i].getID()==36788)
2333
 								bankBox = test[i];
2334
 						RSModel m = bankBox.getModel();
2335
 						Point p = m.getPoint();
2336
 						mouse.move(p,1,1);
2337
 						if(menu.doAction("Deposit Bank deposit box"))
2338
 							tryAgain = false;
2339
 					}
2340
 				sleep(random(3000,4000));
2341
 	status = "Depositing.";
2342
  	RSItem[] tempArray = getNestLocations();
2343
  	if(tempArray.length!=0)
2344
  	{
2345
  		for(int i = 0; i < tempArray.length;i++)
2346
  			tempArray[i].doAction("Deposit Bird's nest");
2347
  	}
2348
  	bank.depositAllExcept(hatchetIDs);
2349
  	}
2350
2351
    }
2352
 	else 	if(npc)
2353
 	{
2354
 	RSNPC banker = npcs.getNearest(bankerID);
2355
 	if(banker!=null)
2356
    {
2357
    	do{
2358
    	while(!bank.isOpen()) {
2359
    	camera.setAngle(random(1,359));
2360
    	status = "Opening bank.";
2361
    	if(location.equals("Grand Exchange")||location.equals("Draynor")){
2362
   		mouse.move(banker.getModel().getPoint(),1,1);
2363
   		mouse.click(false);
2364
   		menu.doAction("Bank banker");
2365
   		sleep(random(600,800));
2366
   		}
2367
   		if(!bank.isOpen())
2368
       	bank.open();
2369
    	}
2370
    	if(inventory.getCount(hatchetIDs)>0)
2371
    	{status = "Depositing.";
2372
    	RSItem[] tempArray = getNestLocations();
2373
    	if(tempArray.length!=0)
2374
    	{
2375
    		for(int i = 0; i < tempArray.length;i++)
2376
    			tempArray[i].doAction("Deposit Bird's nest");
2377
    	}
2378
    	bank.depositAllExcept(hatchetIDs);}
2379
    	else
2380
    	{
2381
    	status = "Depositing All.";
2382
    	bank.depositAll();
2383
    	sleep(random(600,800));
2384
    	antiBan(random(100,200));
2385
    	}
2386
    	} while(inventory.isFull());
2387
    	full = inventory.isFull();
2388
    	bank.close();
2389
    }
2390
    else
2391
    log("Can't find banker.");
2392
 	}
2393
 	else
2394
 	{
2395
 	RSTile banker = bankLocation;
2396
 	if(calc.tileOnScreen(banker))
2397
 	{
2398
 	do{
2399
 		while(!bank.isOpen()){
2400
    	status = "Opening bank.";
2401
    	mouse.move(calc.tileToScreen(banker));
2402
    	sleep(random(600,800));
2403
    	mouse.click(false);
2404
    	menu.doAction("Bank");
2405
    	sleep(random(1000,2000));
2406
 		}
2407
    	if(inventory.getCount(hatchetIDs)>0)
2408
    	{status = "Depositing.";
2409
    	RSItem[] tempArray = getNestLocations();
2410
    	if(tempArray.length!=0)
2411
    	{
2412
    		for(int i = 0; i < tempArray.length;i++)
2413
    			tempArray[i].doAction("Deposit Bird's nest");
2414
    	}
2415
    	bank.depositAllExcept(hatchetIDs);}
2416
    	else
2417
    	{
2418
    	status = "Depositing All.";
2419
    	bank.depositAll();
2420
    	}
2421
    	sleep(random(1000,2000));
2422
    	} while(inventory.isFull());
2423
    	full = inventory.isFull();
2424
 	}
2425
 	else
2426
 	log("Can't find banker.");
2427
 }
2428
 }
2429
 	public void walkToTrees(){
2430
 		long startTime = System.currentTimeMillis();
2431
 		status = "Walking to trees.";
2432
 		int lastTileToWalkTo = -1;
2433
 		int tempTileToWalkTo = walkPath(bankToTrees);
2434
 		boolean clickedLastTile = false;
2435
 		while(!atTrees()){
2436
 			if(!walking.isRunEnabled()&&walking.getEnergy()>20){
2437
 		 	 	walking.setRun(true);
2438
 		 	 	sleep(random(600,800));
2439
 		 	 	}
2440
 			status = "Walking to trees.";
2441
 			if(command.equals("Mage Training Area - Magics")){
2442
 				gate();
2443
 			}
2444
 			if(command.equals("Tree Gnome - Yews")){
2445
 				if(floorHeight()==1){
2446
 					if(!playerIsNear(new RSTile(2445,3433),5)){
2447
 						walking.walkTileMM(new RSTile(2445,3433));
2448
 						while(getMyPlayer().isMoving())
2449
 							sleep(random(100,200));
2450
 					}
2451
 					else{
2452
 						RSObject temp = objects.getNearest(1744);
2453
 						if(temp!=null)
2454
 							mouse.move(temp.getModel().getPoint());
2455
 						mouse.click(true);
2456
 						sleep(random(600,800));
2457
 					}
2458
 				}
2459
 			}
2460
 			if(!getMyPlayer().isMoving()){
2461
 				sleep(random(600,800));
2462
 				if(!getMyPlayer().isMoving())
2463
 						lastTileToWalkTo=-1;
2464
 			}
2465
 			boolean clicked = false;
2466
 			tempTileToWalkTo = walkPath(bankToTrees);
2467
 			if(tempTileToWalkTo>lastTileToWalkTo){
2468
 				if(walking.walkTileMM(bankToTrees[tempTileToWalkTo],1,1))
2469
 					clicked = true;
2470
 				sleep(random(400,500));
2471
   				if(getMyPlayer().isMoving())
2472
   					clicked = true;
2473
 				}
2474
 			if(clicked){
2475
 				lastTileToWalkTo = tempTileToWalkTo;
2476
 			}
2477
 			sleep(random(200, 300));
2478
		}
2479
 	}
2480
 	public void doBank(int num)
2481
{	if(num==0)
2482
	{
2483
	walkToBank();
2484
	sleep(random(600,800));
2485
	}
2486
	if(!command.equals("Castle Wars - Ivy")&&!command.equals("Mage Training Area - Magics"))
2487
	bank(true);
2488
	else
2489
	bank(false);
2490
	sleep(random(600,800));
2491
	walkToTrees();
2492
	sleep(random(600,800));
2493
}
2494
 	public void serverMessageRecieved(final ServerMessageEvent a){
2495
    final String serverString = a.getMessage();
2496
    if (serverString.toLowerCase().contains("you get some yew logs"))
2497
      yewsCut++;
2498
    else if (serverString.toLowerCase().contains("you get some magic logs"))
2499
      magicsCut++;
2500
    else if(serverString.toLowerCase().contains("your inventory is too full to hold any more logs"))
2501
      full = true;
2502
    else if(serverString.toLowerCase().contains("you successfully chop away some ivy"))
2503
      ivyCut++;
2504
    else if(serverString.toLowerCase().contains("you get some willow logs"))
2505
      willowsCut++;
2506
    else if(serverString.toLowerCase().contains("you get some maple logs"))
2507
      maplesCut++;
2508
  }
2509
  	public boolean playerIsNear(RSTile tile, int d)
2510
  	{
2511
  		return (Math.abs(getMyPlayer().getLocation().getX()-tile.getX())<d&&Math.abs(getMyPlayer().getLocation().getY()-tile.getY())<d);
2512
  	}
2513
  	public boolean checkCurrentVersion()
2514
  	{
2515
  		try{
2516
  			URL checkPage = new URL("http://www.conderogascripts.99k.org/CChopVersion.txt");
2517
  			BufferedReader reader = new BufferedReader(new InputStreamReader(new BufferedInputStream(checkPage.openConnection().getInputStream())));
2518
  			currentVersion = reader.readLine().trim();
2519
  			reader.close();
2520
  		} catch (Exception E){};
2521
  		if(currentVersion.equals(version))
2522
  		return true;
2523
  		else{
2524
  		log(Color.RED, "Your version of the script is out of date.");}
2525
  		return false;
2526
  	}
2527
  	public boolean update()
2528
  	{
2529
  		try{
2530
2531
  	saveUrl("http://www.conderogascripts.99k.org/CChop.txt","CChop.java");
2532
2533
2534
  	log("Update was successful. The new CChop.java file is wherever your RSBot file is.");
2535
  	log("Copy the file into your RSBot/Scripts/Sources folder, compile, and restart the script.");
2536
  	stopScript();
2537
  	}catch(Exception e){log("Update was unsuccessful."); return false;};
2538
  	return true;
2539
  	}
2540
  	public void saveUrl(String urlString, String filename) throws MalformedURLException, IOException
2541
    {
2542
        BufferedInputStream in = null;
2543
        FileOutputStream fout = null;
2544
        try
2545
        {
2546
                in = new BufferedInputStream(new URL(urlString).openStream());
2547
                fout = new FileOutputStream(filename);
2548
2549
                byte data[] = new byte[1024];
2550
                int count;
2551
                while ((count = in.read(data, 0, 1024)) != -1)
2552
                {
2553
                        fout.write(data, 0, count);
2554
                }
2555
        }
2556
        finally
2557
        {
2558
                if (in != null)
2559
                        in.close();
2560
                if (fout != null)
2561
                        fout.close();
2562
        }
2563
    }
2564
    public void mouseExited(MouseEvent e) {
2565
    }
2566
    public void mouseEntered(MouseEvent e) {
2567
    }
2568
    public void mouseReleased(MouseEvent e) {
2569
    	mouseColor = new Color(51,153,0,255);
2570
    }
2571
    public void mousePressed(MouseEvent e) {
2572
    	mouseColor = new Color(255,0,0,100);
2573
    }
2574
    public void mouseClicked(MouseEvent e) {
2575
    p = e.getPoint();
2576
        if(showPaint && p.getX()>447&&p.getX()<513&& p.getY()>458&&p.getY()<473)
2577
            showPaint = false;
2578
        else if(!showPaint && p.getX()>447&&p.getX()<513&& p.getY()>458&&p.getY()<473)
2579
            showPaint = true;
2580
        else if(showPaint && fancyPaint && p.getX()>397&&p.getX()<448&& p.getY()>458&&p.getY()<473)
2581
        	fancyPaint = false;
2582
        else if(showPaint && !fancyPaint && p.getX()>397&&p.getX()<448&& p.getY()>458&&p.getY()<473)
2583
        	fancyPaint = true;
2584
    mouseColor = new Color(255,0,0,100);
2585
    }
2586
    public int distanceTo(RSTile test){
2587
    	RSTile myLoc = players.getMyPlayer().getLocation();
2588
    	return (int)Math.pow(Math.pow(test.getY()-myLoc.getY(),2)+Math.pow(test.getX()-myLoc.getX(),2),.5);
2589
    }
2590
    public int distanceBetween(RSTile t1, RSTile t2){
2591
    	return (int)Math.pow(Math.pow(t1.getY()-t2.getY(),2)+Math.pow(t1.getX()-t2.getX(),2),.5);
2592
    }
2593
    public ArrayList<RSTile> fixPath(ArrayList<RSTile> path){
2594
    	boolean madeSwap = false;
2595
    	do{
2596
    		madeSwap = false;
2597
    		for(int i = 0; i<path.size()-1;i++)
2598
    			if(distanceBetween(path.get(i),path.get(i+1))>7){
2599
    				path.add(i+1,getMidTile(path.get(i),path.get(i+1)));
2600
    				madeSwap = true;
2601
    			}
2602
    	}while(madeSwap);
2603
    	return path;
2604
    }
2605
    public void getUnstuck(){
2606
    	log("Stuck! Moving to Closest Tree/Bank");
2607
    	RSTile [] trees = {tree1,tree2,tree3,tree4,tree5,tree6,tree7};
2608
    	int [] distances  = new int [8];
2609
    	for(int i = 0;i < 7;i++)
2610
    		distances[i] = distanceTo(trees[i]);
2611
    	if(treesToBank.length>0)
2612
    		distances[7] = distanceTo(treesToBank[treesToBank.length-1]);
2613
    	else
2614
    		distances[7] = 9999;
2615
    	int min = 9998;
2616
    	int minIndex = -1;
2617
    	for(int i = 0; i < distances.length;i++){
2618
    		if(distances[i]<min){
2619
    			min = distances[i];
2620
    			minIndex = i;
2621
    		}
2622
    	}
2623
    	//log("Moving to: "+minIndex);
2624
    	RSTile toWalkTo = (minIndex==7) ? treesToBank[treesToBank.length-1] : trees[minIndex];
2625
    	ArrayList<RSTile> path = new ArrayList<RSTile>();
2626
    	path.add(getMyPlayer().getLocation());
2627
    	path.add(toWalkTo);
2628
    	path = fixPath(path);
2629
    	RSTile [] toWalk = new RSTile [path.size()];
2630
    	for(int i = 0; i<path.size();i++)
2631
    		toWalk[i] = path.get(i);
2632
    	//log("Path Length: "+path.size());
2633
    	long start = System.currentTimeMillis();
2634
    	int lastTileToWalkTo = -1;
2635
			int tempTileToWalkTo = walkPath(toWalk);
2636
			boolean clickedLastTile = false;
2637
			while(!playerIsNear(toWalkTo,5)&&System.currentTimeMillis()-start<20000){
2638
				boolean clicked = false;
2639
   		tempTileToWalkTo = walkPath(toWalk);
2640
   		if(!clickedLastTile){
2641
   		if(tempTileToWalkTo>lastTileToWalkTo){
2642
   			if(calc.tileOnScreen(toWalk[tempTileToWalkTo])){
2643
   				if(!walking.walkTileOnScreen(toWalk[tempTileToWalkTo]))
2644
   					if(walking.walkTileMM(toWalk[tempTileToWalkTo],1,1))
2645
   						clicked = true;
2646
   					else
2647
   						clicked = false;
2648
   				else
2649
   					clicked = true;
2650
   			}
2651
   			else
2652
   				clicked = walking.walkTileMM(toWalk[tempTileToWalkTo],1,1);
2653
2654
   		}
2655
   		if(clicked){
2656
   			lastTileToWalkTo = tempTileToWalkTo;
2657
   			if(tempTileToWalkTo==toWalk.length-1)
2658
   					{
2659
   						clickedLastTile = true;
2660
   					}
2661
   			}
2662
   		}
2663
   		sleep(random(200, 300));
2664
			}
2665
    }
2666
    public static int getGEValue(String name, int id){
2667
    	try{
2668
    		String [] temp = name.split(" ");
2669
    		String newName = "";
2670
    		for(int i = 0; i<temp.length; i++)
2671
    			if(i==temp.length-1)
2672
    				newName+=temp[i];
2673
    			else
2674
    				newName+="_"+temp[i];
2675
    		URL url = new URL("http://services.runescape.com/m=itemdb_rs/"+newName+"/viewitem.ws?obj="+id);
2676
    		InputStream is = url.openStream();
2677
    		InputStreamReader isr = new InputStreamReader(is);
2678
    		BufferedReader br = new BufferedReader(isr);
2679
    		String line;
2680
    		String num = "";
2681
    		while((line=br.readLine())!=null){
2682
    			if(line.contains("Current guide price:"))
2683
    			 num = line;
2684
    		}
2685
    		System.out.println(num);
2686
    		if(num.length()<29)
2687
    			return -1;
2688
    		else{
2689
    			num = num.substring(28);
2690
    			num = num.replaceAll(",", "");
2691
    			return Integer.parseInt(num);
2692
    		}
2693
2694
    		}catch(Exception e){
2695
    			return -1;
2696
    		}
2697
    		}
2698
//LOOP====================================================================================================================
2699
	public int loop() {
2700
        try{
2701
        if(safety<1)
2702
          {
2703
          	if(!game.isFixed())
2704
          		for(int i = 0; i<3;i++)
2705
          		log("For best results, please set your window mode to 'fixed'.");
2706
          	setUp();
2707
          	log("Chopping Command: "+command);
2708
          	if(treeType.equals("yews")||treeType.equals("magics")||treeType.equals("willows")||treeType.equals("maples")||treeType.equals("oaks"))
2709
          	{
2710
          	status = "Looking up GE data.";
2711
          	log("Looking up log prices...");
2712
          	if(treeType.equals("yews"))
2713
          		{
2714
          			for(int i = 0; i < 3; i++)
2715
          				{yewPrice = getGEValue("Yew logs",1515);
2716
          				if(yewPrice!=-1)
2717
          					break;
2718
          				}
2719
          			log("Yew log price: "+yewPrice);
2720
          		}
2721
           	else if(treeType.equals("magics"))
2722
           		{
2723
           			for(int i = 0; i < 3; i++){
2724
          				magicPrice = getGEValue("Magic logs",1513);
2725
           			if(magicPrice!=-1)
2726
      					break;
2727
           		}
2728
          			log("Magic logs price: "+magicPrice);
2729
           		}
2730
           	else if(treeType.equals("willows"))
2731
           		{
2732
           			for(int i = 0; i < 3; i++){
2733
          				willowPrice = getGEValue("Willow logs",1519);
2734
           			if(willowPrice!=-1)
2735
      					break;
2736
           		}
2737
          			log("Willow logs price: "+willowPrice);
2738
           		}
2739
           	else if(treeType.equals("maples"))
2740
           		{
2741
           			for(int i = 0; i < 3; i++){
2742
          				maplePrice = getGEValue("Maple logs",1517);
2743
           			if(maplePrice!=-1)
2744
      					break;
2745
           		}
2746
           			log("Maple logs price: "+maplePrice);
2747
           		}
2748
           	else if(treeType.equals("oaks"))
2749
       		{
2750
       			for(int i = 0; i < 3; i++){
2751
      				oakPrice = getGEValue("Oak logs",1521);
2752
       			if(oakPrice!=-1)
2753
  					break;
2754
       		}
2755
       			log("Oak logs price: "+oakPrice);
2756
       		}
2757
           		camera.setPitch(true);
2758
          	}
2759
          	else
2760
          		camera.setPitch(false);
2761
          safety=1;
2762
          full = inventory.isFull();
2763
          if(!full&&atBank())
2764
          	while(!atTrees())
2765
          		walkToTrees();
2766
          if(full&&atBank())
2767
          	doBank(1);
2768
          if(full&&atTrees())
2769
          	doBank(0);
2770
         }
2771
2772
          RSTile [] trees = {tree1,tree2,tree3,tree4,tree5,tree6,tree7};
2773
		  mouse.setSpeed(random(5,8));
2774
          antiBan(random(1,120));
2775
          updateStatus();
2776
		  full = inventory.isFull();
2777
2778
          if(!full) //NEST PICKUP
2779
          pickUpNest();
2780
		  if(full&&!atBank())
2781
		  {
2782
		  	walkToBank();
2783
		  }
2784
		  else if(!full&&atBank()){
2785
			  walkToTrees();
2786
		  }
2787
		  else if(full) //BANK
2788
		  {
2789
		  	if(!location.equals("Taverly"))
2790
		  	doBank(0);
2791
		  }
2792
		  if(status.equals("Chopping!"))
2793
		  {
2794
		  	if(safety<3)
2795
		  	{hoverMouse();
2796
		  	safety++;
2797
		  	}
2798
		  }
2799
          else if(status.equals("Not chopping.")||status.contains("Moving to tree"))
2800
          {
2801
          	long tempTimer = System.currentTimeMillis();
2802
          	while(!getNextTree().isOnScreen()&&System.currentTimeMillis()-tempTimer<5000)
2803
          	moveToNextTree();
2804
          	if(!getNextTree().isOnScreen()){
2805
          	  //log("else");
2806
          	  if(!getMyPlayer().isMoving()&&failSafeTimer==0)
2807
          		  failSafeTimer = System.currentTimeMillis();
2808
          	  if(!getMyPlayer().isMoving()&&System.currentTimeMillis()-failSafeTimer>10000){
2809
          		  getUnstuck();
2810
          		  failSafeTimer = 0;
2811
          	  }
2812
          	}
2813
            chop(false);
2814
          }
2815
          else if(status.equals("Waiting."))
2816
          {
2817
          	if(safety==3)
2818
          	{
2819
          	long tempTimer = System.currentTimeMillis();
2820
          	while(!playerIsNear(trees[nextTree-1],4))
2821
          		moveToNextTree();
2822
          	if(!chopType.equals("ivy"))
2823
          	camera.turnToTile(trees[nextTree-1]);
2824
          	camera.setPitch(random(20,50));
2825
          	}
2826
          	if(safety<5)
2827
          		hoverMouse();
2828
          	safety++;
2829
          }
2830
          else{
2831
2832
          }
2833
        }
2834
    catch (Exception e){/*log("Error: "+e);
2835
    	log(e.getMessage()+"");*/}
2836
    return random(300,500);
2837
    }
2838
//LOOP====================================================================================================================
2839
    public void antiBan(int rand){
2840
	status += "(AB)";
2841
	mouse.setSpeed(random(7,8));
2842
	if(rand==1)
2843
      if(random(1, 8) == 2)
2844
            mouse.moveRandomly(900,1200);
2845
   if(rand==2)
2846
      if(random(1, 8) == 2)
2847
            mouse.moveRandomly(400,800);
2848
   if(rand==3)
2849
      if(random(1, 8) == 2)
2850
            mouse.moveRandomly(200,700);
2851
2852
   if(rand==4) //THIS CHECKS THE WOODCUTTING STAT
2853
      if(random(1, 12) == 2)
2854
        {
2855
            game.openTab(game.TAB_STATS);
2856
            sleep(random(600,800));
2857
            mouse.move(random(681, 690), random(365, 370),0,0);
2858
            sleep(random(1900,2000));
2859
            game.openTab(game.TAB_INVENTORY);
2860
        }
2861
   if(rand==5) //THIS CLICKS THE XP BUTTON UNDER THE COMPASS
2862
   	  if(random(1, 12) == 2 && game.isFixed())
2863
   	  {
2864
   	  	mouse.move(random(527, 540), random(58, 65),0,0);
2865
   	  	sleep(random(800,1000));
2866
   	  	mouse.click(true);
2867
   	  	mouse.moveRandomly(20,50);
2868
   	  	sleep(random(1000,1500));
2869
   	  }
2870
   if(takeBreaks)
2871
   if(rand==6)
2872
   	 if(random(1,6)==2){
2873
   	 	if(random(1,2)==1)
2874
   	 	mouse.moveRandomly(50,75);
2875
   	 	breakActive = true;
2876
   	 	breakLength = random(5,13);
2877
   	 	breakStart = System.currentTimeMillis();
2878
   	 	sleep(breakLength*1000);
2879
   	 	breakActive = false;
2880
   	 }
2881
   	  if(rand==7) //RANDOM SPIN
2882
       if(random(1, 3) == 2)
2883
       {int r = random(1,2);
2884
       	camera.setAngle(random(1,359));
2885
       	if(r!=1)
2886
        camera.setPitch(random(1,99));}
2887
2888
     if(rand==8) //THIS CHECKS A RANDOM TAB
2889
      if(random(1, 4) == 2)
2890
        {
2891
        	int[] tabs = {0,2,3,5,6,7,9,10,11,12,13,14,15};
2892
            game.openTab(tabs[random(0,tabs.length-1)]);
2893
            mouse.moveRandomly(175,200);
2894
            sleep(random(1600,1800));
2895
            sleep(random(900,1000));
2896
2897
        }
2898
     if(rand==9)
2899
     	if(random(1,10)==2)
2900
     	mouse.moveOffScreen();
2901
     status=status.substring(0,status.indexOf('('));
2902
2903
}
2904
    public void onRepaint(Graphics g)
2905
    {
2906
        if(game.isLoggedIn())
2907
         {
2908
         	try{
2909
         	if(breakActive){
2910
         		g.setColor(new Color(0,0,0,100));
2911
         		g.fillRect(0,0,764,501);
2912
         		g.setColor(new Color(255,0,0));
2913
         		long timeLeft = (breakLength*1000)-(System.currentTimeMillis()-breakStart);
2914
         		long secondsLeft=timeLeft/1000;
2915
         		timeLeft-=secondsLeft*1000;
2916
         		String toOutput = "";
2917
         		if(timeLeft<10)
2918
         			toOutput = "00"+timeLeft;
2919
         		else if(timeLeft<100)
2920
         			toOutput = "0"+timeLeft;
2921
         		else
2922
         			toOutput = ""+timeLeft;
2923
2924
         		timeLeft-=secondsLeft*1000;
2925
         		g.drawString("Script will resume in: "+secondsLeft+":"+toOutput,50,200);
2926
         	}
2927
         	if(!treeType.equals("ivy")&&!treeType.equals(".")&&!treeType.equals("willows"))
2928
          		checkTrees();
2929
          	else
2930
          		checkIvy();
2931
          	calculateNextTree();
2932
         	if(startExp==0)
2933
          		{
2934
            		startExp = skills.getCurrentExp(skills.getIndex("woodcutting"));
2935
            		startLevel = skills.getCurrentLevel(skills.getIndex("woodcutting"));
2936
          		}
2937
           	lvlsGained = skills.getCurrentLevel(skills.getIndex("woodcutting")) - startLevel;
2938
           	expGained =  skills.getCurrentExp(skills.getIndex("woodcutting")) - startExp;
2939
		   	long expToLvl = skills.getExpToNextLevel(skills.getIndex("woodcutting"));
2940
       		//setting up the time
2941
          	long ms = System.currentTimeMillis() - startTime;
2942
          	double ms2 = System.currentTimeMillis() - startTimeDbl;
2943
        	long hours = ms/3600000;
2944
         	ms = ms-(hours*3600000);
2945
        	long minutes = ms/60000;
2946
          	ms = ms-(minutes*60000);
2947
         	long seconds =  ms/1000;
2948
          	long time2Lvl = 0;
2949
    		long time2LvlHrs = 0;
2950
			long time2LvlMins = 0;
2951
    		long time2LvlSec = 0;
2952
    		if(ms2!=0&&expGained!=0){
2953
    		time2Lvl = (long)(expToLvl/(expGained/(ms2/3600000))*3600000);
2954
    		time2LvlHrs = time2Lvl/3600000;
2955
    		time2Lvl -= time2LvlHrs*3600000;
2956
    		time2LvlMins = time2Lvl/60000;
2957
    		time2Lvl -= time2LvlMins*60000;
2958
   	 		time2LvlSec = time2Lvl/1000;
2959
   			}
2960
   			yewsCut = expGained/175;
2961
   			magicsCut = expGained/250;
2962
   			ivyCut = (int)((expGained+1)/332.5);
2963
   			willowsCut = (int)((expGained+1)/67.5);
2964
   			maplesCut = expGained/100;
2965
   			oaksCut = (int)((expGained+1)/37.5);
2966
2967
         	if(fancyPaint)
2968
         	{
2969
					if(showPaint){
2970
        			onRepaint2(g,true);
2971
2972
                //Text Color and Output
2973
                g.setColor(new Color(0,0,0,255));
2974
                g.setFont(new Font("Comic Sans MS", Font.PLAIN, 12));
2975
                g.drawString("  "+version,450,360);
2976
            	g.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
2977
                g.drawString("Levels Gained: "+lvlsGained,16,40);
2978
                if(treeType.equals("yews"))
2979
                g.drawString("Yews Chopped: "+yewsCut,395,22);
2980
                else if(treeType.equals("magics"))
2981
                g.drawString("Magics Chopped: "+magicsCut,395,22);
2982
                else if(treeType.equals("ivy"))
2983
                g.drawString("Ivy Chopped: "+ivyCut,395,22);
2984
                else if(treeType.equals("willows"))
2985
                g.drawString("Willows Chopped: "+willowsCut,395,22);
2986
                else if(treeType.equals("maples"))
2987
                g.drawString("Maples Chopped: "+maplesCut,395,22);
2988
                else if(treeType.equals("oaks"))
2989
                g.drawString("Oaks Chopped: "+oaksCut,395,22);
2990
                g.drawString("Exp Gained: "+expGained,16,55);
2991
                g.drawString("Time Running: "+hours+":"+minutes+":"+seconds,16,97);
2992
2993
		        //Determine Length:
2994
		        double difference = skills.XP_TABLE[skills.getCurrentLevel(skills.getIndex("woodcutting"))+1]-skills.XP_TABLE[skills.getCurrentLevel(skills.getIndex("woodcutting"))];
2995
	        	double barLength = ((difference-expToLvl)/difference)*512;
2996
2997
	        	  //Progress Bar
2998
	        	g.setColor(new Color(255,0,0,255));
2999
                g.fillRoundRect(4,320,512,18,8,8); //Bar background
3000
                g.setColor(new Color(51,153,0,255)); //GREEN
3001
                g.fillRoundRect(4,320,(int)barLength,18,4,4);
3002
                g.setColor(new Color(0,0,0,255));
3003
                g.drawString(skills.getPercentToNextLevel(skills.getIndex("woodcutting"))+"% to: "+(skills.getCurrentLevel(skills.getIndex("woodcutting"))+1)+" ("+expToLvl+" exp)",215,334);
3004
            	g.setColor(new Color(255,255,255,100));
3005
            	g.fillRoundRect(4,320,512,9,4,4);
3006
3007
3008
                if(ms2!=0)
3009
	        	g.setColor(new Color(0,0,0,255));
3010
                g.drawString("Exp/Hr: "+(int)(expGained/(ms2/3600000)),16,69);
3011
             	g.drawString("Status: "+status,16,22);
3012
3013
             	if(treeType.equals("yews"))
3014
             		{
3015
             		g.drawString("Money Gained: "+yewPrice*yewsCut,154,22);
3016
             		if(ms2!=0)
3017
             			g.drawString("Money/Hr: "+(int)((yewPrice*yewsCut)/(ms2/3600000)),289,22);
3018
             		}
3019
             	else if(treeType.equals("magics"))
3020
             		{
3021
             		g.drawString("Money Gained: "+magicPrice*magicsCut,154,22);
3022
             		if(ms2!=0)
3023
     					g.drawString("Money/Hr: "+(int)((magicPrice*magicsCut)/(ms2/3600000)),289,22);
3024
          	      	}
3025
             	else if(treeType.equals("ivy"))
3026
            	{
3027
             		g.drawString("Nests Collected: "+nests,154,22);
3028
             		if(ms2!=0)
3029
             			g.drawString("Nests/Hr: "+(int)(nests/(ms2/3600000)),289,22);
3030
           	  	}
3031
                else if(treeType.equals("willows"))
3032
                {
3033
                   	g.drawString("Money Gained: "+willowPrice*willowsCut,154,22);
3034
                     if(ms2!=0)
3035
                     	g.drawString("Money/Hr: "+(int)((willowPrice*willowsCut)/(ms2/3600000)),289,22);
3036
                }
3037
                else if(treeType.equals("maples"))
3038
                {
3039
     	           g.drawString("Money Gained: "+maplePrice*maplesCut,154,22);
3040
     	           if(ms2!=0)
3041
     		           g.drawString("Money/Hr: "+(int)((maplePrice*maplesCut)/(ms2/3600000)),289,22);
3042
                }
3043
                else if(treeType.equals("oaks"))
3044
                {
3045
     	           g.drawString("Money Gained: "+oakPrice*oaksCut,154,22);
3046
     	           if(ms2!=0)
3047
     		           g.drawString("Money/Hr: "+(int)((oakPrice*oaksCut)/(ms2/3600000)),289,22);
3048
                }
3049
                g.drawString("Est. Time to Lvl: "+time2LvlHrs+":"+time2LvlMins+":"+time2LvlSec,16,83);
3050
                //Mouse Stuff
3051
                   Point tempPoint = mouse.getLocation();
3052
                   int tempXCoordinate = (int)tempPoint.getX();
3053
                   int tempYCoordinate = (int)tempPoint.getY();
3054
                   g.setColor(mouseColor);
3055
        		   g.drawLine(tempXCoordinate,0,tempXCoordinate,501);
3056
        		   g.drawLine(0,tempYCoordinate,764,tempYCoordinate);
3057
        		   g.fillRect(tempXCoordinate-1,tempYCoordinate-1,3,3);
3058
        		   Color tempColor = new Color(255,0,0,100);
3059
        		   if(mouseColor.equals(tempColor))
3060
        		   	mouseColor=new Color(51,153,0,255);
3061
        	//Stump time drawing
3062
       g.setColor(Color.GREEN);
3063
       stump1 = calc.tileToScreen(tree1);
3064
       stump2 = calc.tileToScreen(tree2);
3065
       stump3 = calc.tileToScreen(tree3);
3066
       stump4 = calc.tileToScreen(tree4);
3067
       stump5 = calc.tileToScreen(tree5);
3068
       stump6 = calc.tileToScreen(tree6);
3069
       stump7 = calc.tileToScreen(tree7);
3070
       //ALIVE TREES
3071
       if(tree1Status&&tree1AliveTime!=0)
3072
       g.drawString((int)(tree1TimeAlive/1000)+"s",(int)stump1.getX(),(int)stump1.getY());
3073
       if(tree2Status&&tree2AliveTime!=0)
3074
       g.drawString((int)(tree2TimeAlive/1000)+"s",(int)stump2.getX(),(int)stump2.getY());
3075
       if(tree3Status&&tree3AliveTime!=0)
3076
       g.drawString((int)(tree3TimeAlive/1000)+"s",(int)stump3.getX(),(int)stump3.getY());
3077
       if(tree4Status&&tree4AliveTime!=0)
3078
       g.drawString((int)(tree4TimeAlive/1000)+"s",(int)stump4.getX(),(int)stump4.getY());
3079
       if(tree5Status&&tree5AliveTime!=0)
3080
       g.drawString((int)(tree5TimeAlive/1000)+"s",(int)stump5.getX(),(int)stump5.getY());
3081
       if(tree6Status&&tree6AliveTime!=0)
3082
       g.drawString((int)(tree6TimeAlive/1000)+"s",(int)stump6.getX(),(int)stump6.getY());
3083
       if(tree7Status&&tree7AliveTime!=0)
3084
       g.drawString((int)(tree7TimeAlive/1000)+"s",(int)stump7.getX(),(int)stump7.getY());
3085
       //DEAD TREES
3086
       g.setColor(Color.MAGENTA);
3087
       if(!tree1Status&&tree1DeadTime!=0)
3088
       g.drawString((int)(tree1TimeDead/1000)+"s",(int)stump1.getX(),(int)stump1.getY());
3089
       if(!tree2Status&&tree2DeadTime!=0)
3090
       g.drawString((int)(tree2TimeDead/1000)+"s",(int)stump2.getX(),(int)stump2.getY());
3091
       if(!tree3Status&&tree3DeadTime!=0)
3092
       g.drawString((int)(tree3TimeDead/1000)+"s",(int)stump3.getX(),(int)stump3.getY());
3093
       if(!tree4Status&&tree4DeadTime!=0)
3094
       g.drawString((int)(tree4TimeDead/1000)+"s",(int)stump4.getX(),(int)stump4.getY());
3095
       if(!tree5Status&&tree5DeadTime!=0)
3096
       g.drawString((int)(tree5TimeDead/1000)+"s",(int)stump5.getX(),(int)stump5.getY());
3097
       if(!tree6Status&&tree6DeadTime!=0)
3098
       g.drawString((int)(tree6TimeDead/1000)+"s",(int)stump6.getX(),(int)stump6.getY());
3099
       if(!tree7Status&&tree7DeadTime!=0)
3100
       g.drawString((int)(tree7TimeDead/1000)+"s",(int)stump7.getX(),(int)stump7.getY());
3101
					}
3102
		else
3103
		{
3104
		g.setColor(new Color(51,153,0,255));
3105
		g.fillRect(448,459,(512-448),(472-459));
3106
		g.setColor(new Color(0,0,0,255));
3107
		g.drawRect(448,459,(512-448),(472-459));
3108
		g.drawString("Hide/Show",450,470);
3109
		}
3110
3111
       }
3112
       else
3113
       {
3114
       	if(showPaint){
3115
       	onRepaint2(g,false);
3116
       	g.setColor(new Color(0, 0, 0, 205));
3117
    	g.fillRoundRect(333, 160, 181, 179, 6, 6);
3118
       	g.setColor(new Color(255,0,0,255));
3119
        g.setFont(new Font("Comic Sans MS", Font.PLAIN, 12));
3120
        g.drawString("Conderoga's Chopper "+version,338,177);
3121
    	g.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
3122
        g.drawString("Levels Gained: "+lvlsGained,344,192);
3123
        if(treeType.equals("yews"))
3124
        g.drawString("Yews Chopped: "+yewsCut,344,207);
3125
        else if(treeType.equals("magics"))
3126
        g.drawString("Magics Chopped: "+magicsCut,344,207);
3127
        else if(treeType.equals("ivy"))
3128
        g.drawString("Ivy Chopped: "+ivyCut,344,207);
3129
        else if(treeType.equals("willows"))
3130
        g.drawString("Willows Chopped: "+willowsCut,344,207);
3131
        else if(treeType.equals("maples"))
3132
        g.drawString("Maples Chopped: "+maplesCut,344,207);
3133
        else if(treeType.equals("oaks"))
3134
        g.drawString("Oaks Chopped: "+oaksCut,344,207);
3135
        g.drawString("Exp Gained: "+expGained,344,222);
3136
        g.drawString("Time Running: "+hours+":"+minutes+":"+seconds,344, 237);
3137
3138
        //Progress Bar
3139
3140
    	g.setColor(new Color(255,0,0,255));
3141
        g.fillRoundRect(344,241,150,20,8,8); //Bar background
3142
        g.setColor(new Color(0,255,0,255)); //GREEN
3143
        g.fillRoundRect(344,241,(int)(skills.getPercentToNextLevel(skills.getIndex("woodcutting"))*1.5),20,8,8);
3144
        g.setColor(new Color(255,255,255,100));
3145
        g.drawString(skills.getPercentToNextLevel(skills.getIndex("woodcutting"))+"% to: "+(skills.getCurrentLevel(skills.getIndex("woodcutting"))+1)+" ("+expToLvl+" exp)",348,256);
3146
    	g.fillRoundRect(345,251,148,10,8,8);
3147
    	g.setColor(new Color(0,0,0,255));
3148
        g.drawString(skills.getPercentToNextLevel(skills.getIndex("woodcutting"))+"% to: "+(skills.getCurrentLevel(skills.getIndex("woodcutting"))+1)+" ("+expToLvl+" exp)",347,255);
3149
        g.setColor(new Color(255,0,0,255));
3150
        if(ms2!=0)
3151
         g.drawString("Exp/Hr: "+(int)(expGained/(ms2/3600000)),344,274);
3152
     g.drawString("Status: "+status,344,289);
3153
3154
     if(treeType.equals("yews"))
3155
     	{
3156
     	g.drawString("Money Gained: "+yewPrice*yewsCut,344,304);
3157
     	if(ms2!=0)
3158
     		g.drawString("Money/Hr: "+(int)((yewPrice*yewsCut)/(ms2/3600000)),344,319);
3159
     	}
3160
     else if(treeType.equals("magics"))
3161
     	{
3162
     	g.drawString("Money Gained: "+magicPrice*magicsCut,344,304);
3163
     	if(ms2!=0)
3164
     		g.drawString("Money/Hr: "+(int)((magicPrice*magicsCut)/(ms2/3600000)),344,319);
3165
     	}
3166
     else if(treeType.equals("ivy"))
3167
     {
3168
     	g.drawString("Nests Collected: "+nests,344,304);
3169
     	if(ms2!=0)
3170
     		g.drawString("Nests/Hr: "+(int)(nests/(ms2/3600000)),344,319);
3171
     }
3172
     else if(treeType.equals("willows"))
3173
     {
3174
     	g.drawString("Money Gained: "+willowPrice*willowsCut,344,304);
3175
     	if(ms2!=0)
3176
     		g.drawString("Money/Hr: "+(int)((willowPrice*willowsCut)/(ms2/3600000)),344,319);
3177
     }
3178
     else if(treeType.equals("maples"))
3179
     {
3180
     	g.drawString("Money Gained: "+maplePrice*maplesCut,344,304);
3181
     	if(ms2!=0)
3182
     		g.drawString("Money/Hr: "+(int)((maplePrice*maplesCut)/(ms2/3600000)),344,319);
3183
     }
3184
     else if(treeType.equals("oaks"))
3185
     {
3186
     	g.drawString("Money Gained: "+oakPrice*oaksCut,344,304);
3187
     	if(ms2!=0)
3188
     		g.drawString("Money/Hr: "+(int)((oakPrice*oaksCut)/(ms2/3600000)),344,319);
3189
     }
3190
     g.drawString("Est. Time to Lvl: "+time2LvlHrs+":"+time2LvlMins+":"+time2LvlSec,344,334);
3191
     //Mouse Stuff
3192
        Point tempPoint = mouse.getLocation();
3193
        int tempXCoordinate = (int)tempPoint.getX();
3194
        int tempYCoordinate = (int)tempPoint.getY();
3195
        g.setColor(new Color(0,255,0,100));
3196
        	g.drawLine(tempXCoordinate,0,tempXCoordinate,501);
3197
        	g.drawLine(0,tempYCoordinate,764,tempYCoordinate);
3198
       //Stump time drawing
3199
       g.setColor(Color.GREEN);
3200
       stump1 = calc.tileToScreen(tree1);
3201
       stump2 = calc.tileToScreen(tree2);
3202
       stump3 = calc.tileToScreen(tree3);
3203
       stump4 = calc.tileToScreen(tree4);
3204
       stump5 = calc.tileToScreen(tree5);
3205
       stump6 = calc.tileToScreen(tree6);
3206
       stump7 = calc.tileToScreen(tree7);
3207
       //ALIVE TREES
3208
       if(tree1Status&&tree1AliveTime!=0)
3209
       g.drawString((int)(tree1TimeAlive/1000)+"s",(int)stump1.getX(),(int)stump1.getY());
3210
       if(tree2Status&&tree2AliveTime!=0)
3211
       g.drawString((int)(tree2TimeAlive/1000)+"s",(int)stump2.getX(),(int)stump2.getY());
3212
       if(tree3Status&&tree3AliveTime!=0)
3213
       g.drawString((int)(tree3TimeAlive/1000)+"s",(int)stump3.getX(),(int)stump3.getY());
3214
       if(tree4Status&&tree4AliveTime!=0)
3215
       g.drawString((int)(tree4TimeAlive/1000)+"s",(int)stump4.getX(),(int)stump4.getY());
3216
       if(tree5Status&&tree5AliveTime!=0)
3217
       g.drawString((int)(tree5TimeAlive/1000)+"s",(int)stump5.getX(),(int)stump5.getY());
3218
       if(tree6Status&&tree6AliveTime!=0)
3219
       g.drawString((int)(tree6TimeAlive/1000)+"s",(int)stump6.getX(),(int)stump6.getY());
3220
       if(tree7Status&&tree7AliveTime!=0)
3221
       g.drawString((int)(tree7TimeAlive/1000)+"s",(int)stump7.getX(),(int)stump7.getY());
3222
       //DEAD TREES
3223
       g.setColor(Color.MAGENTA);
3224
       if(!tree1Status&&tree1DeadTime!=0)
3225
       g.drawString((int)(tree1TimeDead/1000)+"s",(int)stump1.getX(),(int)stump1.getY());
3226
       if(!tree2Status&&tree2DeadTime!=0)
3227
       g.drawString((int)(tree2TimeDead/1000)+"s",(int)stump2.getX(),(int)stump2.getY());
3228
       if(!tree3Status&&tree3DeadTime!=0)
3229
       g.drawString((int)(tree3TimeDead/1000)+"s",(int)stump3.getX(),(int)stump3.getY());
3230
       if(!tree4Status&&tree4DeadTime!=0)
3231
       g.drawString((int)(tree4TimeDead/1000)+"s",(int)stump4.getX(),(int)stump4.getY());
3232
       if(!tree5Status&&tree5DeadTime!=0)
3233
       g.drawString((int)(tree5TimeDead/1000)+"s",(int)stump5.getX(),(int)stump5.getY());
3234
       if(!tree6Status&&tree6DeadTime!=0)
3235
       g.drawString((int)(tree6TimeDead/1000)+"s",(int)stump6.getX(),(int)stump6.getY());
3236
       if(!tree7Status&&tree7DeadTime!=0)
3237
       g.drawString((int)(tree7TimeDead/1000)+"s",(int)stump7.getX(),(int)stump7.getY());
3238
3239
       	}
3240
       	else
3241
       	{
3242
       	g.setColor(new Color(51,153,0,255));
3243
		g.fillRect(448,459,(512-448),(472-459));
3244
		g.setColor(new Color(0,0,0,255));
3245
		g.drawRect(448,459,(512-448),(472-459));
3246
		g.drawString("Hide/Show",450,470);
3247
       	}
3248
       }
3249
       }catch (Exception e){};
3250
    }
3251
    }
3252
	private Image getImage(String url) {
3253
        try {
3254
            return ImageIO.read(new URL(url));
3255
        } catch(IOException e) {
3256
            return null;
3257
        }
3258
    }
3259
    private final Color color1 = new Color(1, 1, 1);
3260
    private final Font font1 = new Font("Arial", 0, 12);
3261
    public void onRepaint2(Graphics g1 , boolean fancy) {
3262
        Graphics2D g = (Graphics2D)g1;
3263
        if(fancy){
3264
        g.drawImage(img1, 342, 350, null);
3265
        g.drawImage(img2, 5, 6, null);
3266
        g.drawImage(img4, 5, 29, null);
3267
        }
3268
        g.setColor(new Color(51,153,0,255));
3269
		g.fillRect(448,459,(512-448),(472-459));
3270
		g.fillRect(398,459,(448-398),(472-459));
3271
		g.setColor(new Color(0,0,0,255));
3272
		g.drawRect(448,459,(512-448),(472-459));
3273
		g.drawRect(398,459,(448-398),(472-459));
3274
		g.drawString("Hide/Show",450,470);
3275
		if(fancy)
3276
		g.drawString("Simple",405,470);
3277
		else
3278
		g.drawString("Adv.",415,470);
3279
		}
3280
    public void onFinish() {
3281
        log("Exp gained: "+expGained);
3282
        log("Levels gained: "+lvlsGained);
3283
        log("Thanks for using Conderoga's Chopper!");
3284
    }
3285
	public void openURL(final String url) { // Credits ZombieKnight
3286
    //who gave credits to Dave who gave credits
3287
    // to
3288
    // some guy who made this.
3289
    final String osName = System.getProperty("os.name");
3290
    try {
3291
      if (osName.startsWith("Mac OS")) {
3292
        final Class<?> fileMgr = Class
3293
            .forName("com.apple.eio.FileManager");
3294
        final Method openURL = fileMgr.getDeclaredMethod("openURL",new Class[]{String.class});
3295
        openURL.invoke(null, new Object[]{url});
3296
      } else if (osName.startsWith("Windows")) {
3297
        Runtime.getRuntime().exec(
3298
            "rundll32 url.dll,FileProtocolHandler " + url);
3299
      } else { // assume Unix or Linux
3300
        final String[] browsers = {"firefox", "opera", "konqueror",
3301
            "epiphany", "mozilla", "netscape"};
3302
        String browser = null;
3303
        for (int count = 0; count < browsers.length && browser == null; count++) {
3304
          if (Runtime.getRuntime().exec(
3305
              new String[]{"which", browsers[count]})
3306
              .waitFor() == 0) {
3307
            browser = browsers[count];
3308
          }
3309
        }
3310
        if (browser == null) {
3311
          throw new Exception("Could not find web browser");
3312
        } else {
3313
          Runtime.getRuntime().exec(new String[]{browser, url});
3314
        }
3315
      }
3316
    } catch (final Exception e) {
3317
    }
3318
  }
3319
   	public class CChopGUI extends JFrame {
3320
		private static final long serialVersionUID = 1L;
3321
		public CChopGUI() {
3322
		initComponents();
3323
		}
3324
3325
	  private void button4ActionPerformed(ActionEvent e)
3326
      	  {
3327
      	  	try{
3328
          	guiWait = false;
3329
       		guiExit = true;
3330
       		dispose();
3331
      	  	}catch(Exception ex){log("WTF?!?");};
3332
          }
3333
3334
      private void button2ActionPerformed(ActionEvent e)
3335
      	  {
3336
      	  	try{
3337
        	location = comboBox2.getSelectedItem().toString();
3338
        	takeBreaks = checkBox1.isSelected();
3339
        	nearest = true;
3340
        	guiExit = false;
3341
        	guiWait = false;
3342
        	dispose();
3343
        	}
3344
      	  	catch(Exception ex){log("WTF?!?1");};
3345
          }
3346
      private void button1ActionPerformed(ActionEvent e)
3347
      {
3348
      	try{
3349
      	 chopType = comboBox1.getSelectedItem().toString();
3350
      	 initializeStage2Components();
3351
      	 }
3352
      	  	catch(Exception ex){log("WTF?!?2");};
3353
      }
3354
      /*private void button3ActionPerformed(ActionEvent e)
3355
      {
3356
      	 initComponents();
3357
      	 chopType = null;
3358
      }*/
3359
	private void initComponents() {
3360
		label1 = new JLabel();
3361
		label2 = new JLabel();
3362
		label3 = new JLabel();
3363
		button1 = new JButton();
3364
		comboBox1 = new JComboBox();
3365
		button4 = new JButton();
3366
3367
3368
		//======== this ========
3369
		setAlwaysOnTop(true);
3370
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
3371
		setFont(new Font("Dialog", Font.PLAIN, 16));
3372
		setResizable(false);
3373
		setTitle("Conderoga's Chopper");
3374
		Container contentPane = getContentPane();
3375
		contentPane.setLayout(null);
3376
3377
		//---- label1 ----
3378
		label1.setText("Conderoga's Chopper Settings");
3379
		label1.setFont(new Font("Comic Sans MS", Font.PLAIN, 20));
3380
		contentPane.add(label1);
3381
		label1.setBounds(25, 15, 315, 39);
3382
3383
		//---- label2 ----
3384
		label2.setText("Version: "+version);
3385
		contentPane.add(label2);
3386
		label2.setBounds(new Rectangle(new Point(25, 50), label2.getPreferredSize()));
3387
3388
		//---- label3 ----
3389
		label3.setText("Select what you wish to chop:");
3390
		label3.setFont(label3.getFont().deriveFont(label3.getFont().getSize() + 2f));
3391
		contentPane.add(label3);
3392
		label3.setBounds(new Rectangle(new Point(10, 105), label3.getPreferredSize()));
3393
3394
		//---- button1 ----
3395
		button1.setText("Confirm and Proceed");
3396
		button1.addActionListener(new ActionListener() {
3397
      public void actionPerformed(ActionEvent e) {
3398
        button1ActionPerformed(e);
3399
      }
3400
    });
3401
		contentPane.add(button1);
3402
		button1.setBounds(85, 145, 195, 35);
3403
3404
		//---- comboBox1 ----
3405
		comboBox1.setMaximumRowCount(6);
3406
		contentPane.add(comboBox1);
3407
		comboBox1.setModel(new DefaultComboBoxModel(new String[] {
3408
3409
    			"Yews",
3410
     			"Magics",
3411
     			"Ivy",
3412
     			"Willows",
3413
     			"Maples",
3414
     			"Oaks"
3415
3416
    	}));
3417
		comboBox1.setBounds(205, 100, 145, 25);
3418
3419
		//---- button4 ----
3420
		button4.setText("Exit");
3421
		button4.addActionListener(new ActionListener() {
3422
      public void actionPerformed(ActionEvent e) {
3423
        button4ActionPerformed(e);
3424
      }
3425
    });
3426
		contentPane.add(button4);
3427
		button4.setBounds(0, 325, 85, 38);
3428
3429
3430
3431
		{ // compute preferred size
3432
			Dimension preferredSize = new Dimension();
3433
			for(int i = 0; i < contentPane.getComponentCount(); i++) {
3434
				Rectangle bounds = contentPane.getComponent(i).getBounds();
3435
				preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width);
3436
				preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height);
3437
			}
3438
			Insets insets = contentPane.getInsets();
3439
			preferredSize.width += insets.right;
3440
			preferredSize.height += insets.bottom;
3441
			contentPane.setMinimumSize(preferredSize);
3442
			contentPane.setPreferredSize(preferredSize);
3443
		}
3444
		pack();
3445
		setLocationRelativeTo(getOwner());
3446
3447
	}
3448
	private void initializeStage2Components()
3449
	{
3450
		checkBox1 = new JCheckBox("Take short breaks?",false);
3451
		//checkBox2 = new JCheckBox("Chop nearest?",true);
3452
		label4 = new JLabel();
3453
		comboBox2 = new JComboBox();
3454
		button2 = new JButton();
3455
		label1 = new JLabel();
3456
		label2 = new JLabel();
3457
		button4 = new JButton();
3458
3459
3460
		//======== this ========
3461
		setAlwaysOnTop(true);
3462
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
3463
		setFont(new Font("Dialog", Font.PLAIN, 16));
3464
		setResizable(false);
3465
		setTitle("Conderoga's Chopper");
3466
		Container contentPane = getContentPane();
3467
		contentPane.setLayout(null);
3468
3469
		//---- label1 ----
3470
		label1.setText("Conderoga's Chopper Settings");
3471
		label1.setFont(new Font("Comic Sans MS", Font.PLAIN, 20));
3472
		contentPane.add(label1);
3473
		label1.setBounds(25, 15, 315, 39);
3474
3475
		//---- label2 ----
3476
		label2.setText("Version: "+version);
3477
		contentPane.add(label2);
3478
		label2.setBounds(new Rectangle(new Point(25, 50), label2.getPreferredSize()));
3479
3480
		//---- label4 ----
3481
		label4.setText("Select where you wish to chop:");
3482
		label4.setFont(label4.getFont().deriveFont(label4.getFont().getSize() + 2f));
3483
		contentPane.add(label4);
3484
		label4.setBounds(10, 210, 180, 16);
3485
3486
		//---- comboBox2 ----
3487
		if(chopType.equals("Yews")){
3488
    	comboBox2.setMaximumRowCount(8);
3489
    	comboBox2.setModel(new DefaultComboBoxModel(new String[] {
3490
3491
      "Grand Exchange",
3492
      "Edgeville",
3493
      "Rimmington",
3494
      "Catherby",
3495
      "Seer's Village",
3496
      "South Falador",
3497
      "Draynor",
3498
      "Tree Gnome"
3499
3500
    	}));
3501
    	}
3502
    	else if(chopType.equals("Magics")){
3503
    	comboBox2.setMaximumRowCount(3);
3504
    	comboBox2.setModel(new DefaultComboBoxModel(new String[] {
3505
3506
      "Seer's Village",
3507
      "Sorcerer's Tower",
3508
      "Mage Training Area"
3509
3510
    	}));
3511
    	}
3512
    	else if(chopType.equals("Ivy")){
3513
    	comboBox2.setMaximumRowCount(8);
3514
    	comboBox2.setModel(new DefaultComboBoxModel(new String[] {
3515
3516
      "Castle Wars",
3517
      "Grand Exchange",
3518
      "Taverly",
3519
      "Yanille",
3520
      "Varrock Palace",
3521
      "Ardougne",
3522
      "South Falador",
3523
      "North Falador"
3524
3525
    	}));
3526
    	}
3527
    	else if(chopType.equals("Willows")){
3528
    	comboBox2.setMaximumRowCount(2);
3529
    	comboBox2.setModel(new DefaultComboBoxModel(new String[] {
3530
3531
      "Draynor",
3532
      "Port Salim"
3533
3534
3535
    	}));
3536
    	}
3537
    	else if(chopType.equals("Maples")){
3538
    	comboBox2.setMaximumRowCount(1);
3539
    	comboBox2.setModel(new DefaultComboBoxModel(new String[] {
3540
3541
      "Seer's Village"
3542
3543
3544
    	}));
3545
    	}
3546
    	else if(chopType.equals("Oaks")){
3547
        	comboBox2.setMaximumRowCount(1);
3548
        	comboBox2.setModel(new DefaultComboBoxModel(new String[] {
3549
3550
          "Draynor"
3551
3552
3553
        	}));
3554
        	}
3555
		contentPane.add(comboBox2);
3556
		comboBox2.setBounds(205, 205, 145, 25);
3557
3558
		//---- checkBox1 ----
3559
		checkBox1.setText("Take short breaks?");
3560
		contentPane.add(checkBox1);
3561
		checkBox1.setBounds(new Rectangle(new Point(120, 250), checkBox1.getPreferredSize()));
3562
3563
		//---- checkBox2 ----
3564
		//checkBox2.setText("Chop nearest?");
3565
		//contentPane.add(checkBox2);
3566
		//checkBox2.setBounds(new Rectangle(new Point(120, 270), checkBox1.getPreferredSize()));
3567
3568
		//---- button2 ----
3569
		button2.setText("Start");
3570
		button2.addActionListener(new ActionListener() {
3571
      public void actionPerformed(ActionEvent e) {
3572
        button2ActionPerformed(e);
3573
      }
3574
    });
3575
		contentPane.add(button2);
3576
		button2.setBounds(175, 325, 175, 38);
3577
3578
3579
		/*/---- button3 ----
3580
		button3.setText("Choose Again");
3581
		button3.addActionListener(new ActionListener() {
3582
      public void actionPerformed(ActionEvent e) {
3583
        button2ActionPerformed(e);
3584
      }
3585
    });
3586
		contentPane.add(button3);
3587
		button3.setBounds(85, 325, 130, 38);
3588
		*/
3589
		//---- button4 ----
3590
		button4.setText("Exit");
3591
		button4.addActionListener(new ActionListener() {
3592
      public void actionPerformed(ActionEvent e) {
3593
        button2ActionPerformed(e);
3594
      }
3595
    });
3596
		contentPane.add(button4);
3597
		button4.setBounds(0, 325, 85, 38);
3598
3599
		{ // compute preferred size
3600
			Dimension preferredSize = new Dimension();
3601
			for(int i = 0; i < contentPane.getComponentCount(); i++) {
3602
				Rectangle bounds = contentPane.getComponent(i).getBounds();
3603
				preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width);
3604
				preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height);
3605
			}
3606
			Insets insets = contentPane.getInsets();
3607
			preferredSize.width += insets.right;
3608
			preferredSize.height += insets.bottom;
3609
			contentPane.setMinimumSize(preferredSize);
3610
			contentPane.setPreferredSize(preferredSize);
3611
		}
3612
		pack();
3613
		setLocationRelativeTo(getOwner());
3614
3615
	}
3616
	private JCheckBox checkBox1;
3617
	//private JCheckBox checkBox2;
3618
	private JLabel label1;
3619
	private JLabel label2;
3620
	private JLabel label3;
3621
	private JButton button1;
3622
	private JComboBox comboBox1;
3623
	private JLabel label4;
3624
	private JComboBox comboBox2;
3625
	private JButton button2;
3626
	private JButton button3;
3627
	private JButton button4;
3628
}
3629
}