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