root/trunk/AE-go_GameServer/data/scripts/system/handlers/quest/ascension/_2008Ascension.java

10031006
17
package quest.ascension;
17
package quest.ascension;
18
18
19
import java.util.ArrayList;
19
import java.util.ArrayList;
20
import java.util.HashMap;
20
import java.util.List;
21
import java.util.List;
22
import java.util.Map;
21
23
22
import com.aionemu.gameserver.ai.events.Event;
24
import com.aionemu.gameserver.ai.events.Event;
23
import com.aionemu.gameserver.configs.Config;
25
import com.aionemu.gameserver.configs.Config;
...
...
48
{
50
{
49
51
50
	private final static int	questId			= 2008;
52
	private final static int	questId			= 2008;
51
	private int					activePlayerId	= 0;
53
	//TODO [ATracer] - do we really need activePlayer ids in script body ???
52
	private List<Npc>			mobs			= new ArrayList<Npc>();
54
	private Map<Integer, Integer> activePlayers = new HashMap<Integer, Integer>();
55
	private Map<Integer, List<Npc>>			mobs			= new HashMap<Integer, List<Npc>>();
53
	
56
	
54
	@Inject
57
	@Inject
55
	public _2008Ascension(SpawnsData spawnsData)
58
	public _2008Ascension(SpawnsData spawnsData)
...
...
72
	public boolean onKillEvent(QuestEnv env)
75
	public boolean onKillEvent(QuestEnv env)
73
	{
76
	{
74
		Player player = env.getPlayer();
77
		Player player = env.getPlayer();
78
		int instanceId = player.getInstanceId();
75
		QuestState qs = player.getQuestStateList().getQuestState(questId);
79
		QuestState qs = player.getQuestStateList().getQuestState(questId);
76
		if(qs == null || qs.getStatus() != QuestStatus.START)
80
		if(qs == null || qs.getStatus() != QuestStatus.START)
77
			return false;
81
			return false;
...
...
87
			{
91
			{
88
				qs.getQuestVars().setQuestVar(qs.getQuestVars().getQuestVars() + 1);
92
				qs.getQuestVars().setQuestVar(qs.getQuestVars().getQuestVars() + 1);
89
				updateQuestStatus(player, qs);
93
				updateQuestStatus(player, qs);
90
				if(mobs.contains(env.getVisibleObject()))
94
				removeMobToInstance(instanceId, (Npc) env.getVisibleObject());;
91
					mobs.remove(env.getVisibleObject());
92
				return true;
95
				return true;
93
			}
96
			}
94
			else if(var == 54)
97
			else if(var == 54)
95
			{
98
			{
96
				qs.getQuestVars().setQuestVar(5);
99
				qs.getQuestVars().setQuestVar(5);
97
				updateQuestStatus(player, qs);
100
				updateQuestStatus(player, qs);
98
				Monster mob = (Monster) QuestEngine.getInstance().addNewSpawn(320010000, 205041, 301f,
101
				Monster mob = (Monster) QuestEngine.getInstance().addNewSpawn(320010000, instanceId, 205041, 301f,
99
					259f, 205.5f, (byte) 0, false);
102
					259f, 205.5f, (byte) 0, false);
100
				//TODO: Tempt decrease P attack.
103
				//TODO: Tempt decrease P attack.
101
				mob.getGameStats().setStat(StatEnum.MAIN_HAND_POWER, mob.getGameStats().getCurrentStat(StatEnum.MAIN_HAND_POWER)/3 );
104
				mob.getGameStats().setStat(StatEnum.MAIN_HAND_POWER, mob.getGameStats().getCurrentStat(StatEnum.MAIN_HAND_POWER)/3 );
102
				(mob).getAggroList().addDamageHate(player, 1000, 0);
105
				(mob).getAggroList().addDamageHate(player, 1000, 0);
103
				mob.getAi().handleEvent(Event.ATTACKED);
106
				mob.getAi().handleEvent(Event.ATTACKED);
104
				mobs.add(mob);
107
				addMobToInstance(instanceId, mob);
105
				return true;
108
				return true;
106
			}
109
			}
107
		}
110
		}
...
...
133
	public boolean onDialogEvent(QuestEnv env)
136
	public boolean onDialogEvent(QuestEnv env)
134
	{
137
	{
135
		final Player player = env.getPlayer();
138
		final Player player = env.getPlayer();
139
		final int instanceId = player.getInstanceId();
136
		final QuestState qs = player.getQuestStateList().getQuestState(questId);
140
		final QuestState qs = player.getQuestStateList().getQuestState(questId);
137
		if(qs == null)
141
		if(qs == null)
138
			return false;
142
			return false;
...
...
180
							updateQuestStatus(player, qs);
184
							updateQuestStatus(player, qs);
181
							PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject()
185
							PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject()
182
								.getObjectId(), 0));
186
								.getObjectId(), 0));
183
							player.getController().teleportTo(320010000, 457.65f, 426.8f, 230.4f, 0);
187
							int newInstanceId = player.getPosition().getWorld().getNextAvailableInstanceId(320010000);
188
							player.getController().teleportTo(320010000, newInstanceId, 457.65f, 426.8f, 230.4f, 0);
184
							return true;
189
							return true;
185
						}
190
						}
186
					case 10005:
191
					case 10005:
...
...
289
					case 25:
294
					case 25:
290
						if(var == 99)
295
						if(var == 99)
291
						{
296
						{
292
							if(activePlayerId != 0 && activePlayerId != player.getObjectId())
297
							if(activePlayers.get(instanceId) != null && activePlayers.get(instanceId) != player.getObjectId())
293
							{
298
							{
294
								World world = player.getActiveRegion().getWorld();
299
								World world = player.getActiveRegion().getWorld();
295
								Player activePlayer = world.findPlayer(activePlayerId);
300
								Player activePlayer = world.findPlayer(activePlayers.get(instanceId));
296
								if(!(activePlayer == null || !activePlayer.isOnline() || activePlayer.getWorldId() != 310010000))
301
								if(!(activePlayer == null || !activePlayer.isOnline() || activePlayer.getWorldId() != 310010000))
297
									return false;
302
									return false;
298
							}
303
							}
299
							activePlayerId = player.getObjectId();
304
							activePlayers.put(instanceId, player.getObjectId());
300
							for(Npc mob : mobs)
305
							clearMobsInInstance(instanceId);
301
								mob.getController().onDelete();
306
							
302
							mobs.clear();
303
							PacketSendUtility.sendPacket(player, new SM_EMOTION(player, 6, 3001, 0));
307
							PacketSendUtility.sendPacket(player, new SM_EMOTION(player, 6, 3001, 0));
304
							qs.getQuestVars().setQuestVar(50);
308
							qs.getQuestVars().setQuestVar(50);
305
							updateQuestStatus(player, qs);
309
							updateQuestStatus(player, qs);
...
...
309
								{
313
								{
310
									qs.getQuestVars().setQuestVar(51);
314
									qs.getQuestVars().setQuestVar(51);
311
									updateQuestStatus(player, qs);
315
									updateQuestStatus(player, qs);
312
									mobs.add((Monster) QuestEngine.getInstance().addNewSpawn(320010000, 205040,
316
									addMobToInstance(instanceId, (Monster) QuestEngine.getInstance().addNewSpawn(320010000, instanceId, 205040,
313
										294f, 277f, 207f, (byte) 0, false));
317
										294f, 277f, 207f, (byte) 0, false));
314
									mobs.add((Monster) QuestEngine.getInstance().addNewSpawn(320010000, 205040,
318
									addMobToInstance(instanceId, (Monster) QuestEngine.getInstance().addNewSpawn(320010000, instanceId, 205040,
315
										305f, 279f, 206.5f, (byte) 0, false));
319
										305f, 279f, 206.5f, (byte) 0, false));
316
									mobs.add((Monster) QuestEngine.getInstance().addNewSpawn(320010000, 205040,
320
									addMobToInstance(instanceId, (Monster) QuestEngine.getInstance().addNewSpawn(320010000, instanceId, 205040,
317
										298f, 253f, 205.7f, (byte) 0, false));
321
										298f, 253f, 205.7f, (byte) 0, false));
318
									mobs.add((Monster) QuestEngine.getInstance().addNewSpawn(320010000, 205040,
322
									addMobToInstance(instanceId, (Monster) QuestEngine.getInstance().addNewSpawn(320010000, instanceId, 205040,
319
										306f, 251f, 206f, (byte) 0, false));
323
										306f, 251f, 206f, (byte) 0, false));
320
									for(Npc mob : mobs)
324
									List<Npc> monsters = mobs.get(instanceId);
325
									for(Npc mob : monsters)
321
									{
326
									{
322
										//TODO: Tempt decrease P attack.
327
										//TODO: Tempt decrease P attack.
323
										mob.getGameStats().setStat(StatEnum.MAIN_HAND_POWER, mob.getGameStats().getCurrentStat(StatEnum.MAIN_HAND_POWER)/3 );
328
										mob.getGameStats().setStat(StatEnum.MAIN_HAND_POWER, mob.getGameStats().getCurrentStat(StatEnum.MAIN_HAND_POWER)/3 );
...
...
348
	public boolean onLvlUpEvent(QuestEnv env)
353
	public boolean onLvlUpEvent(QuestEnv env)
349
	{
354
	{
350
		Player player = env.getPlayer();
355
		Player player = env.getPlayer();
356
		int instanceId = player.getInstanceId();
351
		QuestState qs = player.getQuestStateList().getQuestState(questId);
357
		QuestState qs = player.getQuestStateList().getQuestState(questId);
352
		if(qs != null)
358
		if(qs != null)
353
		{
359
		{
...
...
356
			int var = qs.getQuestVars().getQuestVars();
362
			int var = qs.getQuestVars().getQuestVars();
357
			if(var == 5 || (var >= 50 && var <= 55))
363
			if(var == 5 || (var >= 50 && var <= 55))
358
			{
364
			{
359
				if(activePlayerId == player.getObjectId() && player.getWorldId() == 320010000)
365
				if(activePlayers.get(instanceId) != null 
366
					&& activePlayers.get(instanceId)== player.getObjectId()
367
					&& player.getWorldId() == 320010000)
360
					return false;
368
					return false;
361
				else
369
				else
362
				{
370
				{
...
...
386
		if(movieId != 152)
394
		if(movieId != 152)
387
			return false;
395
			return false;
388
		Player player = env.getPlayer();
396
		Player player = env.getPlayer();
397
		int instanceId = player.getInstanceId();
389
		QuestState qs = player.getQuestStateList().getQuestState(questId);
398
		QuestState qs = player.getQuestStateList().getQuestState(questId);
390
		if(qs == null || qs.getStatus() != QuestStatus.START || qs.getQuestVars().getQuestVars() != 5)
399
		if(qs == null || qs.getStatus() != QuestStatus.START || qs.getQuestVars().getQuestVars() != 5)
391
			return false;
400
			return false;
392
		mobs.add((Npc) QuestEngine.getInstance().addNewSpawn(320010000, 203550, 301.92999f, 274.26001f, 205.7f, (byte) 0, false));
401
		addMobToInstance(instanceId, (Npc) QuestEngine.getInstance().addNewSpawn(320010000, instanceId, 203550, 301.92999f, 274.26001f, 205.7f, (byte) 0, false));
393
		qs.getQuestVars().setQuestVar(6);
402
		qs.getQuestVars().setQuestVar(6);
394
		updateQuestStatus(player, qs);
403
		updateQuestStatus(player, qs);
395
		return true;
404
		return true;
...
...
405
		sendQuestDialog(player, env.getVisibleObject().getObjectId(), 5);
414
		sendQuestDialog(player, env.getVisibleObject().getObjectId(), 5);
406
		return true;
415
		return true;
407
	}
416
	}
417
	
418
	/**
419
	 * 
420
	 * @param instanceId
421
	 * @param npc
422
	 */
423
	private void addMobToInstance(int instanceId, Npc npc)
424
	{
425
		List<Npc> mobList = mobs.get(instanceId);
426
		if(mobList == null)
427
		{
428
			mobList = new ArrayList<Npc>();
429
			mobs.put(instanceId, mobList);
430
		}
431
		mobList.add(npc);		
432
	}
433
	
434
	/**
435
	 * 
436
	 * @param instanceId
437
	 * @param npc
438
	 */
439
	private void removeMobToInstance(int instanceId, Npc npc)
440
	{
441
		List<Npc> mobList = mobs.get(instanceId);
442
		if(mobList != null && mobList.contains(npc))
443
			mobList.remove(npc);		
444
	}
445
	
446
	/**
447
	 * 
448
	 * @param instanceId
449
	 */
450
	private void clearMobsInInstance(int instanceId)
451
	{
452
		List<Npc> mobList = mobs.get(instanceId);
453
		if(mobList != null)
454
		{
455
			for(Npc npc : mobList)
456
			{
457
				npc.getController().onDelete();
458
			}
459
			mobList.clear();	
460
		}				
461
	}
408
}
462
}