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