StoryOfDreya AI improvement.
Contributed by gigilo1968.
This commit is contained in:
		@@ -85,144 +85,94 @@ public class StoryOfFreya extends AbstractInstance
 | 
			
		||||
	{
 | 
			
		||||
		String htmltext = null;
 | 
			
		||||
		final Instance world = npc.getInstanceWorld();
 | 
			
		||||
		
 | 
			
		||||
		if (isInInstance(world))
 | 
			
		||||
		switch (event)
 | 
			
		||||
		{
 | 
			
		||||
			switch (event)
 | 
			
		||||
			case "34172-02.html":
 | 
			
		||||
			case "34172-03.html":
 | 
			
		||||
			{
 | 
			
		||||
				case "34172-02.html":
 | 
			
		||||
				case "34172-03.html":
 | 
			
		||||
				htmltext = event;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case "34172-01.html":
 | 
			
		||||
			{
 | 
			
		||||
				if (!player.isInParty() || !player.getParty().isLeader(player))
 | 
			
		||||
				{
 | 
			
		||||
					htmltext = event;
 | 
			
		||||
					htmltext = "34172-04.html";
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case "34172-01.html":
 | 
			
		||||
				htmltext = event;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case "34172-06.html":
 | 
			
		||||
			{
 | 
			
		||||
				if (!player.isInParty() || !player.getParty().isLeader(player))
 | 
			
		||||
				{
 | 
			
		||||
					if (!player.isInParty() || !player.getParty().isLeader(player))
 | 
			
		||||
					{
 | 
			
		||||
						htmltext = "34172-04.html";
 | 
			
		||||
						break;
 | 
			
		||||
					}
 | 
			
		||||
					htmltext = event;
 | 
			
		||||
					htmltext = "34172-04.html";
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case "34172-06.html":
 | 
			
		||||
				final L2Party party = player.getParty();
 | 
			
		||||
				final List<L2PcInstance> members = party.getMembers();
 | 
			
		||||
				for (L2PcInstance member : members)
 | 
			
		||||
				{
 | 
			
		||||
					if (!player.isInParty() || !player.getParty().isLeader(player))
 | 
			
		||||
					if (member.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
 | 
			
		||||
					{
 | 
			
		||||
						htmltext = "34172-04.html";
 | 
			
		||||
						break;
 | 
			
		||||
						QuestProgress(npc, member);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				htmltext = event;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case "start_story":
 | 
			
		||||
			{
 | 
			
		||||
				player.standUp();
 | 
			
		||||
				enterInstance(player, null, TEMPLATE_ID);
 | 
			
		||||
				if (player.getParty() != null)
 | 
			
		||||
				{
 | 
			
		||||
					for (L2PcInstance member : player.getParty().getMembers())
 | 
			
		||||
					{
 | 
			
		||||
						if (member != player)
 | 
			
		||||
						{
 | 
			
		||||
							member.standUp();
 | 
			
		||||
							member.teleToLocation(player, player.getInstanceWorld());
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case "startInstance":
 | 
			
		||||
			{
 | 
			
		||||
				if (player.isInParty())
 | 
			
		||||
				{
 | 
			
		||||
					final L2Party party = player.getParty();
 | 
			
		||||
					final List<L2PcInstance> members = party.getMembers();
 | 
			
		||||
					for (L2PcInstance member : members)
 | 
			
		||||
					{
 | 
			
		||||
						if (member.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
 | 
			
		||||
						{
 | 
			
		||||
							member.teleToLocation(LABIRYNTH_TELEPORT, world.getTemplateId());
 | 
			
		||||
							world.setStatus(1);
 | 
			
		||||
							QuestProgress(npc, member);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					htmltext = event;
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case "start_story":
 | 
			
		||||
				{
 | 
			
		||||
					player.standUp();
 | 
			
		||||
					enterInstance(player, null, TEMPLATE_ID);
 | 
			
		||||
					if (player.getParty() != null)
 | 
			
		||||
					if (getRandom(10) < 5)
 | 
			
		||||
					{
 | 
			
		||||
						for (L2PcInstance member : player.getParty().getMembers())
 | 
			
		||||
						{
 | 
			
		||||
							if (member != player)
 | 
			
		||||
							{
 | 
			
		||||
								member.standUp();
 | 
			
		||||
								member.teleToLocation(player, player.getInstanceWorld());
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
						world.spawnGroup("knight");
 | 
			
		||||
						world.broadcastPacket(new ExShowScreenMessage(NpcStringId.ICE_KNIGHTS_GOT_IN_DEFEAT_THE_ICE_KNIGHTS, ExShowScreenMessage.TOP_CENTER, 20000, true));
 | 
			
		||||
					}
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case "startInstance":
 | 
			
		||||
				{
 | 
			
		||||
					if (player.isInParty())
 | 
			
		||||
					else
 | 
			
		||||
					{
 | 
			
		||||
						final L2Party party = player.getParty();
 | 
			
		||||
						final List<L2PcInstance> members = party.getMembers();
 | 
			
		||||
						for (L2PcInstance member : members)
 | 
			
		||||
						{
 | 
			
		||||
							if (member.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
 | 
			
		||||
							{
 | 
			
		||||
								member.teleToLocation(LABIRYNTH_TELEPORT, world.getTemplateId());
 | 
			
		||||
								world.setStatus(1);
 | 
			
		||||
								QuestProgress(npc, member);
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
						if (getRandom(10) < 5)
 | 
			
		||||
						{
 | 
			
		||||
							world.spawnGroup("knight");
 | 
			
		||||
							world.broadcastPacket(new ExShowScreenMessage(NpcStringId.ICE_KNIGHTS_GOT_IN_DEFEAT_THE_ICE_KNIGHTS, ExShowScreenMessage.TOP_CENTER, 20000, true));
 | 
			
		||||
						}
 | 
			
		||||
						else
 | 
			
		||||
						{
 | 
			
		||||
							world.spawnGroup("knightSolo");
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case "openDoor":
 | 
			
		||||
				{
 | 
			
		||||
					if (world.isStatus(0))
 | 
			
		||||
					{
 | 
			
		||||
						if (!player.isInParty() || !player.getParty().isLeader(player))
 | 
			
		||||
						{
 | 
			
		||||
							htmltext = "34173-03.html";
 | 
			
		||||
							break;
 | 
			
		||||
						}
 | 
			
		||||
						if (player.isInParty())
 | 
			
		||||
						{
 | 
			
		||||
							final L2Party party = player.getParty();
 | 
			
		||||
							final List<L2PcInstance> members = party.getMembers();
 | 
			
		||||
							for (L2PcInstance member : members)
 | 
			
		||||
							{
 | 
			
		||||
								if ((member == null) || (member.calculateDistance3D(npc) > 300))
 | 
			
		||||
								{
 | 
			
		||||
									htmltext = "34173-02.html";
 | 
			
		||||
									break;
 | 
			
		||||
								}
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
						world.openCloseDoor(world.getTemplateParameters().getInt("1_st_door"), true);
 | 
			
		||||
						startQuestTimer("closeDoor", 60000, npc, null);
 | 
			
		||||
						break;
 | 
			
		||||
					}
 | 
			
		||||
					
 | 
			
		||||
					else if (world.getStatus() > 0)
 | 
			
		||||
					{
 | 
			
		||||
						if (player.getInventory().getInventoryItemCount(ICE_CRYSTAL_SHARD, -1) == 10)
 | 
			
		||||
						{
 | 
			
		||||
							world.openCloseDoor(world.getTemplateParameters().getInt("1_st_door"), true);
 | 
			
		||||
							startQuestTimer("closeDoor", 30000, npc, null);
 | 
			
		||||
							break;
 | 
			
		||||
						}
 | 
			
		||||
						htmltext = "34173-03.html";
 | 
			
		||||
						break;
 | 
			
		||||
						world.spawnGroup("knightSolo");
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				case "closeDoor":
 | 
			
		||||
				{
 | 
			
		||||
					world.openCloseDoor(world.getTemplateParameters().getInt("1_st_door"), false);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case "summerLabirynth":
 | 
			
		||||
				{
 | 
			
		||||
					player.teleToLocation(LABIRYNTH_TELEPORT, world.getTemplateId());
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case "backCastle":
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case "openDoor":
 | 
			
		||||
			{
 | 
			
		||||
				if (world.isStatus(0))
 | 
			
		||||
				{
 | 
			
		||||
					if (!player.isInParty() || !player.getParty().isLeader(player))
 | 
			
		||||
					{
 | 
			
		||||
						htmltext = "34174-01.html";
 | 
			
		||||
						htmltext = "34173-03.html";
 | 
			
		||||
						break;
 | 
			
		||||
					}
 | 
			
		||||
					if (player.isInParty())
 | 
			
		||||
@@ -231,46 +181,92 @@ public class StoryOfFreya extends AbstractInstance
 | 
			
		||||
						final List<L2PcInstance> members = party.getMembers();
 | 
			
		||||
						for (L2PcInstance member : members)
 | 
			
		||||
						{
 | 
			
		||||
							if (member.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
 | 
			
		||||
							if ((member == null) || (member.calculateDistance3D(npc) > 300))
 | 
			
		||||
							{
 | 
			
		||||
								player.teleToLocation(CASTLE_TELEPORT, world.getTemplateId());
 | 
			
		||||
								htmltext = "34173-02.html";
 | 
			
		||||
								break;
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					world.openCloseDoor(world.getTemplateParameters().getInt("1_st_door"), true);
 | 
			
		||||
					startQuestTimer("closeDoor", 60000, npc, null);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case "startFreya":
 | 
			
		||||
				
 | 
			
		||||
				else if (world.getStatus() > 0)
 | 
			
		||||
				{
 | 
			
		||||
					world.despawnGroup("general");
 | 
			
		||||
					playMovie(world.getPlayers(), Movie.EPIC_FREYA_SCENE);
 | 
			
		||||
					startQuestTimer("freyaSpawn", 20000, npc, null);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case "freyaSpawn":
 | 
			
		||||
				{
 | 
			
		||||
					world.spawnGroup("freya");
 | 
			
		||||
					world.broadcastPacket(new OnEventTrigger(FREYA_SNOW, true));
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case "startAttack":
 | 
			
		||||
				{
 | 
			
		||||
					for (final L2Npc nearby : L2World.getInstance().getVisibleObjectsInRange(npc, FriendlyNpcInstance.class, 300))
 | 
			
		||||
					if (player.getInventory().getInventoryItemCount(ICE_CRYSTAL_SHARD, -1) == 10)
 | 
			
		||||
					{
 | 
			
		||||
						if (nearby.getId() == KNIGHT)
 | 
			
		||||
						world.openCloseDoor(world.getTemplateParameters().getInt("1_st_door"), true);
 | 
			
		||||
						startQuestTimer("closeDoor", 30000, npc, null);
 | 
			
		||||
						break;
 | 
			
		||||
					}
 | 
			
		||||
					htmltext = "34173-03.html";
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			case "closeDoor":
 | 
			
		||||
			{
 | 
			
		||||
				world.openCloseDoor(world.getTemplateParameters().getInt("1_st_door"), false);
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case "summerLabirynth":
 | 
			
		||||
			{
 | 
			
		||||
				player.teleToLocation(LABIRYNTH_TELEPORT, world.getTemplateId());
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case "backCastle":
 | 
			
		||||
			{
 | 
			
		||||
				if (!player.isInParty() || !player.getParty().isLeader(player))
 | 
			
		||||
				{
 | 
			
		||||
					htmltext = "34174-01.html";
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				if (player.isInParty())
 | 
			
		||||
				{
 | 
			
		||||
					final L2Party party = player.getParty();
 | 
			
		||||
					final List<L2PcInstance> members = party.getMembers();
 | 
			
		||||
					for (L2PcInstance member : members)
 | 
			
		||||
					{
 | 
			
		||||
						if (member.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
 | 
			
		||||
						{
 | 
			
		||||
							nearby.setIsInvul(true);
 | 
			
		||||
							npc.reduceCurrentHp(1, nearby, null);
 | 
			
		||||
							nearby.reduceCurrentHp(1, npc, null);
 | 
			
		||||
							addAttackDesire(nearby, npc);
 | 
			
		||||
							player.teleToLocation(CASTLE_TELEPORT, world.getTemplateId());
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case "finishInstance":
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case "startFreya":
 | 
			
		||||
			{
 | 
			
		||||
				world.despawnGroup("general");
 | 
			
		||||
				playMovie(world.getPlayers(), Movie.EPIC_FREYA_SCENE);
 | 
			
		||||
				startQuestTimer("freyaSpawn", 20000, npc, null);
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case "freyaSpawn":
 | 
			
		||||
			{
 | 
			
		||||
				world.spawnGroup("freya");
 | 
			
		||||
				world.broadcastPacket(new OnEventTrigger(FREYA_SNOW, true));
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case "startAttack":
 | 
			
		||||
			{
 | 
			
		||||
				for (final L2Npc nearby : L2World.getInstance().getVisibleObjectsInRange(npc, FriendlyNpcInstance.class, 300))
 | 
			
		||||
				{
 | 
			
		||||
					world.finishInstance(0);
 | 
			
		||||
					break;
 | 
			
		||||
					if (nearby.getId() == KNIGHT)
 | 
			
		||||
					{
 | 
			
		||||
						nearby.setIsInvul(true);
 | 
			
		||||
						npc.reduceCurrentHp(1, nearby, null);
 | 
			
		||||
						nearby.reduceCurrentHp(1, npc, null);
 | 
			
		||||
						addAttackDesire(nearby, npc);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case "finishInstance":
 | 
			
		||||
			{
 | 
			
		||||
				world.finishInstance(0);
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return htmltext;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user