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