Merged with released L2J-Unity files.

This commit is contained in:
mobiusdev
2016-06-12 01:34:09 +00:00
parent e003e87887
commit 635557f5da
18352 changed files with 3245113 additions and 2892959 deletions

View File

@@ -1,5 +1,5 @@
<html><body>Chesha:<br>
All of the people on the Talking Island were killed when the Airborne Island dropped onto Ye Sagira. The dead then became the source of energy for the monsters there...<br>
The monsters may look like the townspeople, but we can't let them just roam around either.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10362_CertificationOfTheSeeker 33449-02.htm">"What should I do?"</Button>
<html><body>Chesha:<br>
All of the people on the Talking Island were killed when the Airborne Island dropped onto Ye Sagira. The dead then became the source of energy for the monsters there...<br>
The monsters may look like the towns people, but we can't let them just roam around either.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10362_CertificationOfTheSeeker 33449-02.htm">"What should I do?"</Button>
</body></html>

View File

@@ -1,6 +1,6 @@
<html><body>Chesha:<br>
Rangers never let emotion get in the way of their work.<br>
Show me what you've got. Know that the monsters were created from the bodies of people sacrificed here, but know that they are gone, and the monsters do not care of their origins.<br>
Can you do as I said?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10362_CertificationOfTheSeeker 33449-03.htm">"I can."</Button>
<html><body>Chesha:<br>
Rangers never let emotion get in the way of their work.<br>
Show me what you've got. Know that the monsters were created from the bodies of people sacrificed here, but know that they are gone, and the monsters do not care of their origins.<br>
Can you do as I said?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10362_CertificationOfTheSeeker 33449-03.htm">"I can."</Button>
</body></html>

View File

@@ -1,5 +1,5 @@
<html><body>Chesha:<br>
Good. I will trust you.<br>
Clear up this horrible situation by killing <font color="LEVEL">10 Husk Stalkers</font> and <font color="LEVEL">5 Husk Crawlers</font> in Exploration Zone 1.<br>
I will see you after the mission is complete.
</body></html>
<html><body>Chesha:<br>
Good. I will trust you.<br>
Clear up this horrible situation by killing <font color="LEVEL">10 Husk Stalkers</font> and <font color="LEVEL">5 Husk Crawlers</font> in Exploration Zone 1. I will see you after the mission is complete.
</body></html>

View File

@@ -1,3 +1,4 @@
<html><body>Chesha:<br>
Defeat <font color="LEVEL">10 Husk Stalkers</font> and <font color="LEVEL">5 Husk Crawlers</font>.<br>
</body></html>
<html><body>Chesha:<br>
Defeat <font color="LEVEL">10 Husk Stalkers</font> and <font color="LEVEL">5 Husk Crawlers</font>.
</body></html>

View File

@@ -1,5 +1,5 @@
<html><body>Chesha:<br>
You've done well...<br>
Listen, Nagel needs someone like you. He's the seeker in <font color="LEVEL">Exploration Region 2</font>. He's too kind to be here, and says he hears things...<br>
Go to him and encourage him as best you can. Oh, and use the <font color="LEVEL">Red</font> <font color="LEVEL">Ye Sagira Teleport Device</font>.
</body></html>
<html><body>Chesha:<br>
You've done well...<br>
Listen, Nagel needs someone like you. He's the seeker in <font color="LEVEL">Exploration Region 2</font>. He's too kind to be here, and says he hears things...<br>
Go to him and encourage him as best you can. Oh, and use the <font color="LEVEL">Red Ye Sagira Teleport Device</font>.
</body></html>

View File

@@ -1,4 +1,4 @@
<html><body>Chesha:<br>
Have you met <font color="LEVEL">Nagel</font> yet? A seeker should find his way...<br>
Nagel is in <font color="LEVEL">Exploration Zone 2</font>. You can use the <font color="LEVEL">Red</font><font color="LEVEL">Sagira Teleportation Device</font> to reach him.
<html><body>Chesha:<br>
Have you met <font color="LEVEL">Nagel</font> yet? A seeker should find his way...<br>
Nagel is in <font color="LEVEL">Exploration Zone 2</font>. You can use the <font color="LEVEL">Red</font><font color="LEVEL">Sagira Teleportation Device</font> to reach him.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Chesha:<br>
You can't let emotions get in the way of your mission as Ranger.<br>
(Only characters who have completed the Ranger's Role quest, and are between levels 10 and 20, may start this quest.)
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Chesha:<br>
Your courage is strong, friend.<br>
(You've already completed the quest)
</body></html>

View File

@@ -1,4 +1,5 @@
<html><body>Chesha:<br>
You can't let emotions get in the way of your mission as a Ranger.<br>
(Only characters who have completed the Ranger's Role quest, and are between levels 10 and 20, may start this quest)
</body></html>
<html><body>Chesha:<br>
Your courage is strong, friend.<br>
(You've already completed the quest.)
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Nagel:<br>
How long will I have to stay here? <br1>
I don't mind the days, but at night, this place gets decidedly creepy. You know that the monsters here were created from the ashes of the dead townspeople, right? You know that they are death personified, and exist only to murder and maim?<br>
Why did you come here?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10362_CertificationOfTheSeeker 33450-02.htm">"Chesha sent me to complete a mission."</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Nagel:<br>
How long will I have to stay here? <br1>
I don't mind the days, but at night, this place gets decidedly creepy. You know that the monsters here were created from the ashes of the dead townspeople, right? You know that they are death personified, and exist only to murder and maim?<br>
Why did you come here?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10362_CertificationOfTheSeeker 33450-02.html">"Chesha sent me to complete a mission."</Button>
</body></html>

View File

@@ -1,6 +1,6 @@
<html><body>Nagel:<br>
Haha! Brilliant!<br>
Well, either Chesha has absolute faith in you, or has something against you.<br>
You know, it's not even the threat of death that scares me anymore. Death's fine. It's the long, drawn out threat of it that drives me insane...<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10362_CertificationOfTheSeeker 33450-03.html">"Then what is it that drives you insane?"</Button>
<html><body>Nagel:<br>
Haha! Brilliant!<br>
Well, either Chesha has absolute faith in you, or has something against you.<br>
You know, it's not even the threat of death that scares me anymore. Death's fine. It's the long, drawn out threat of it that drives me insane...<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10362_CertificationOfTheSeeker 33450-03.htm">"Then what is it that drives you insane?"</Button>
</body></html>

View File

@@ -1,4 +1,4 @@
<html><body>Nagel:<br>
Yes! Do you not hear the crying?<br>
It never ends. It's driving me insane...
<html><body>Nagel:<br>
Yes! Do you not hear the crying?<br>
It never ends. It's driving me insane...
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Nagel:<br>
When can I leave? I'm losing my mind here<br>
(You have already completed the quest.)
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Nagel:<br>
When can I leave? I'm losing my mind here!<br>
(You have already completed the quest)
</body></html>

View File

@@ -1,201 +1,222 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10362_CertificationOfTheSeeker;
import java.util.HashMap;
import java.util.Map;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.ExQuestNpcLogList;
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jmobius.gameserver.util.Util;
import quests.Q10361_RolesOfTheSeeker.Q10361_RolesOfTheSeeker;
/**
* Certification of the Seeker (10362)
* @author spider
*/
public class Q10362_CertificationOfTheSeeker extends Quest
{
// NPCs
private static final int CHESHA = 33449;
private static final int NAGEL = 33450;
// Monsters
private static final int CRAWLER = 22991;
private static final int STALKER = 22992;
private static final Map<Integer, Integer> MOBS_REQUIRED = new HashMap<>();
{
MOBS_REQUIRED.put(CRAWLER, 5);
MOBS_REQUIRED.put(STALKER, 10);
}
// Rewards
private static final int ADENA_REWARD = 43000;
private static final int EXP_REWARD = 50000;
private static final int SP_REWARD = 12;
private static final ItemHolder GLOVES = new ItemHolder(49, 1);
private static final ItemHolder HEALING_POTIONS = new ItemHolder(1060, 50);
// Others
private static final int MIN_LEVEL = 10;
private static final int MAX_LEVEL = 20;
public Q10362_CertificationOfTheSeeker()
{
super(10362, Q10362_CertificationOfTheSeeker.class.getSimpleName(), "Certification of the Seeker");
addStartNpc(CHESHA);
addTalkId(CHESHA, NAGEL);
addKillId(CRAWLER, STALKER);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33449-08.htm");
addCondCompletedQuest(Q10361_RolesOfTheSeeker.class.getSimpleName(), "33449-08.htm");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "33449-02.htm":
{
htmltext = event;
break;
}
case "33449-03.htm": // start the quest
{
qs.startQuest();
qs.set(Integer.toString(CRAWLER), 0);
qs.set(Integer.toString(STALKER), 0);
htmltext = event;
break;
}
case "33450-02.html":
{
htmltext = event;
break;
}
case "33450-03.html": // exit quest
{
giveAdena(player, ADENA_REWARD, true);
addExpAndSp(player, EXP_REWARD, SP_REWARD);
giveItems(player, GLOVES);
giveItems(player, HEALING_POTIONS);
qs.exitQuest(false, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = null;
switch (qs.getState())
{
case State.CREATED:
{
htmltext = npc.getId() == CHESHA ? "33449-01.htm" : getNoQuestMsg(player);
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = npc.getId() == CHESHA ? "33449-04.html" : getNoQuestMsg(player);
}
else if (qs.isCond(2))
{
if (npc.getId() == CHESHA) // mobs defeated
{
htmltext = "33449-05.html";
showOnScreenMsg(player, NpcStringId.USE_THE_YE_SAGIRA_TELEPORT_DEVICE_TO_GO_TO_EXPLORATION_AREA_2, ExShowScreenMessage.TOP_CENTER, 10000);
qs.setCond(3, true);
qs.unset(Integer.toString(CRAWLER));
qs.unset(Integer.toString(STALKER));
}
else
{
htmltext = getNoQuestMsg(player);
}
}
else
{
htmltext = npc.getId() == CHESHA ? "33449-06.html" : "33450-01.html";
}
break;
}
case State.COMPLETED:
{
htmltext = npc.getId() == CHESHA ? "33449-07.htm" : "33450-04.html";
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
if ((qs != null) && qs.isStarted() && qs.isCond(1) && Util.checkIfInRange(1500, npc, qs.getPlayer(), false))
{
int kills = 0;
switch (npc.getId())
{
case CRAWLER:
{
kills = qs.getInt(Integer.toString(CRAWLER));
kills++;
qs.set(Integer.toString(CRAWLER), kills);
break;
}
case STALKER:
{
kills = qs.getInt(Integer.toString(STALKER));
kills++;
qs.set(Integer.toString(STALKER), kills);
break;
}
}
final ExQuestNpcLogList log = new ExQuestNpcLogList(getId());
log.addNpc(CRAWLER, qs.getInt(Integer.toString(CRAWLER)));
log.addNpc(STALKER, qs.getInt(Integer.toString(STALKER)));
killer.sendPacket(log);
if ((qs.getInt(Integer.toString(CRAWLER)) >= MOBS_REQUIRED.get(CRAWLER)) && (qs.getInt(Integer.toString(STALKER)) >= MOBS_REQUIRED.get(STALKER)))
{
qs.setCond(2);
}
}
return super.onKill(npc, killer, isSummon);
}
}
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q10362_CertificationOfTheSeeker;
import java.util.HashSet;
import java.util.Set;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import quests.Q10361_RolesOfTheSeeker.Q10361_RolesOfTheSeeker;
/**
* Certification of The Seeker (10362)
* @author Gladicek
*/
public final class Q10362_CertificationOfTheSeeker extends Quest
{
// NPCs
private static final int CHESHA = 33449;
private static final int NAGEL = 33450;
private static final int STALKER = 22992;
private static final int CRAWLER = 22991;
// Items
private static final int GLOVES = 49;
private static final int HEALING_POTION = 1060;
// Misc
private static final int MIN_LEVEL = 10;
private static final int MAX_LEVEL = 20;
public Q10362_CertificationOfTheSeeker()
{
super(10362);
addStartNpc(CHESHA);
addTalkId(CHESHA, NAGEL);
addKillId(STALKER, CRAWLER);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33449-07.htm");
addCondCompletedQuest(Q10361_RolesOfTheSeeker.class.getSimpleName(), "33449-07.htm");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "33449-02.htm":
case "33450-02.htm":
{
htmltext = event;
break;
}
case "33449-03.htm":
{
qs.startQuest();
qs.setMemoStateEx(STALKER, 0);
qs.setMemoStateEx(CRAWLER, 0);
htmltext = event;
break;
}
case "33450-03.htm":
{
if (qs.isCond(3))
{
giveItems(player, GLOVES, 1);
giveAdena(player, 430, true);
giveItems(player, HEALING_POTION, 50);
addExpAndSp(player, 50000, 12);
qs.exitQuest(false, true);
htmltext = event;
break;
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
int killedStalker = qs.getMemoStateEx(STALKER);
int killedCrawler = qs.getMemoStateEx(CRAWLER);
if (npc.getId() == STALKER)
{
killedStalker++;
if (killedStalker <= 10)
{
qs.setMemoStateEx(STALKER, killedStalker);
sendNpcLogList(killer);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
else if (npc.getId() == CRAWLER)
{
killedCrawler++;
if (killedCrawler <= 5)
{
qs.setMemoStateEx(CRAWLER, killedCrawler);
sendNpcLogList(killer);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if ((killedStalker == 10) && (killedCrawler == 5))
{
qs.setCond(2, true);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player, boolean isSimulated)
{
final QuestState qs = getQuestState(player, true);
String htmltext = null;
switch (qs.getState())
{
case State.CREATED:
{
if (npc.getId() == CHESHA)
{
htmltext = "33449-01.htm";
}
break;
}
case State.STARTED:
{
if (npc.getId() == CHESHA)
{
switch (qs.getCond())
{
case 1:
{
htmltext = "33449-04.htm";
break;
}
case 2:
{
if (!isSimulated)
{
showOnScreenMsg(player, NpcStringId.USE_THE_YE_SAGIRA_TELEPORT_DEVICE_TO_GO_TO_EXPLORATION_AREA_2, ExShowScreenMessage.TOP_CENTER, 4500);
qs.setCond(3, true);
}
htmltext = "33449-05.htm";
break;
}
case 3:
{
htmltext = "33449-06.htm";
break;
}
}
}
else if (npc.getId() == NAGEL)
{
if (qs.isCond(3))
{
htmltext = "33450-01.htm";
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = npc.getId() == CHESHA ? "33449-08.htm" : "33450-04.htm";
break;
}
}
return htmltext;
}
@Override
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance activeChar)
{
final QuestState qs = getQuestState(activeChar, false);
if ((qs != null) && qs.isCond(1))
{
final Set<NpcLogListHolder> npcLogList = new HashSet<>(2);
npcLogList.add(new NpcLogListHolder(STALKER, false, qs.getMemoStateEx(STALKER)));
npcLogList.add(new NpcLogListHolder(CRAWLER, false, qs.getMemoStateEx(CRAWLER)));
return npcLogList;
}
return super.getNpcLogList(activeChar);
}
}