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