Addition of quests 561 and 580.
Contributed by NightBR.
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
504 Competition for the Bandit Stronghold
|
||||
561 Basic Mission: Harnak Underground Ruins
|
||||
565 Basic Mission: Fairy Settlement - West
|
||||
566 Basic Mission: Fairy Settlement - East
|
||||
567 Basic Mission: Isle of Souls
|
||||
@@ -12,7 +11,6 @@
|
||||
574 Special Mission: Nornil's Garden
|
||||
575 Special Mission: Fortuna
|
||||
576 Special Mission: Defeat Spezion
|
||||
580 Beyond the Memories
|
||||
585 Can't Go Against the Time
|
||||
586 Mutated Creatures
|
||||
587 More Aggressive Operation
|
||||
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Gatekeeper Milia:<br>
|
||||
Are you going to the Ruins of Ye Sagira? I know how to get there.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30006-02.html">"Go on."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Gatekeeper Milia:<br>
|
||||
It is difficult to teleport directly to the Hamak Underground Ruins. You should take a detour. First, you must teleport to the entrance zone of the Ruins of Ye Sagira. I can help you do this. From there, go to the <font color="LEVEL">Ruins of Ye Sagira</font> and then to Exploration Area 1, where you can find Giant's Minion Hadel.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30006-03.html">"Alright."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Gatekeeper Milia:<br>
|
||||
In fact, there is a shortcut. The Sayunes next to me can take you directly to Hadel.<br>
|
||||
It doesn't matter which way you choose as long as it takes you to where you want to go.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30006-04.html">"Alright."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Gatekeeper Milia:<br>
|
||||
I've explained everything I could about teleportation. Make the best use of Gatekeepers to get to where you want. See you!<br>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Gatekeeper Elisa:<br>
|
||||
You want to know how to go to the Hamak Underground Ruins? I see! You must be from the Adventure Guild! I'll fill you in briefly on what us Gatekeepers do and also tell you how to teleport through us.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30848-02.html">"Go on."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Gatekeeper Elisa:<br>
|
||||
We Gatekeepers use magic to Teleport long distances in a short time via the Gates of Time and Space. We've been trained in the Ivory Tower for a long time to learn these abilities.<br>
|
||||
We charge you according to the distance of the teleport, as there are consumables needed for it. However, for adventurers in lower levels, we sometimes waiver the cost.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30848-03.html">"Go on."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Gatekeeper Elisa:<br>
|
||||
However, at least, you have to know in which territory the location is, when you want to go somewhere. Is your final destination the <font color="LEVEL">Hamak Underground Ruins</font>? If you want to get there, you have to go to the <font color="LEVEL">Talking Island Village</font> first.<br>
|
||||
If you are teleporting to a certain quest destination, the location will be at the top of the Teleport List so, it's more convenient. Easy, right? <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30848-04.html">"I understand."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Gatekeeper Elisa:<br>
|
||||
When you're ready, talk to me to experience teleporting. When you get to the Talking Island Village, talk to Milia the Gatekeeper. I wish you success.<br>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
You are the one that the Adventure Guild sent, huh? Do you want to cooperate? No reason to say no.<br>
|
||||
<font color="LEVEL">(To receive "Hamak Underground Ruins", you have to complete Hadel's quest "Beyond the Memories" first.)</font><br>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
Your're the one that Hephah has sent, right? If not, you should go meet Herphah and receive a mission from her before you continue. If you think it doesn't matter, I can continue anyway. Do you want me to continue?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-02.htm">"Sure, no problem!"</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
Herphah thought the best way for you to grow was to carry out missions with us.<br>
|
||||
I agree with her. If you accomplish the missions I give you, I'm sure you'll quickly become more powerful.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-03.htm">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
I know that you're confused. But, you'll understand soon. If you accept the mission, I'll explain right away.<br>
|
||||
Are you interested in further righteous work?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-04.htm">"Alright."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,6 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
So you've already learned about the mission. In that case, you can start it right away, without any more explanation.<br>
|
||||
But if you want to listen to my explanation again, I would be more than happy to tell you. <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-05.html">"Receive the mission."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-09.html">"Hear the explanation again."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
You have to accomplish the task at <font color="LEVEL">Hamak Underground Ruins</font> on <font color="LEVEL">Talking Island</font>. To do so, you need to move to the Ruins of Ye Sagira and talk to Giant's Minion Hadel.<br>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
Welcome back! So, did you do a good job?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-07.html">"Yes, I did."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
Thanks, you've done a great job! I'm sure eveyone in the Adventure Guild will know your name now. If there is another opportunity, we'd love for you to help us again. Good luck and farewell!<br>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
To do the mission, you have to go to <font color="LEVEL">Black Wizard Lapathia</font> at the <font color="LEVEL">Altar of Evil</font>. Do the mission that Lapathia gives. Then, come back to me. <br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
In this world, there are many factions. The factions usually are based on their own regions. Sometimes, they are specialized in specific activities, such as fishing, and wield their influence. If you build relations with a faction and establish an Amity Level, you can conduct activities within the faction and take more missions.<br>
|
||||
Among these factions, I am a part of the <font color="LEVEL">Adventure Guild</font>. When you implement the mission that I gave you, you'll assist the activities of the Adventure Guild. If you do well in the mission from our faction, I'll give you an even better mission.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-10.html">"Gon on."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
The mission I'll give you is to help the task at <font color="LEVEL">Hamak Underground Ruins</font> on <font color="LEVEL">Talking Island</font>.<br>
|
||||
But first, you need to learn how get there.<br>
|
||||
Go to <font color="LEVEL">Gatekeeper Elisa</font>, the Gatekeeper of this town, and she will tell you how to go to the <font color="LEVEL">Hamak Underground Ruins</font>. If you successfully arrive at the ruins, meet Giant's Minion Hadel and listen to him.<br>
|
||||
</body></html>
|
@@ -0,0 +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.Q00561_BasicMissionHarnakUndergroundRuins;
|
||||
|
||||
import com.l2jmobius.gameserver.enums.Faction;
|
||||
import com.l2jmobius.gameserver.enums.QuestType;
|
||||
import com.l2jmobius.gameserver.model.actor.Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
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.serverpackets.ExTutorialShowId;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
|
||||
|
||||
/**
|
||||
* Q00561_BasicMissionHarnakUndergroundRuins
|
||||
* @URL http://l2on.net/en/?c=quests&id=561&game=1
|
||||
* @author NightBR
|
||||
*/
|
||||
public class Q00561_BasicMissionHarnakUndergroundRuins extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int PENNY = 34413;
|
||||
private static final int ELISA = 30848;
|
||||
private static final int MILIA = 30006;
|
||||
private static final int HADEL = 33344;
|
||||
// Rewards
|
||||
private static final long EXP = 115930275;
|
||||
private static final int SP = 115920;
|
||||
private static final int FP = 100; // Faction points
|
||||
private static final int SCROLL_OF_ESCAPE_HARNAK_UNDERGROUND_RUINS = 39496;
|
||||
private static final int SCROLL_OF_ESCAPE_TOWN_OF_ADEN = 48413;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 85;
|
||||
private static final int MAX_LEVEL = 87;
|
||||
|
||||
public Q00561_BasicMissionHarnakUndergroundRuins()
|
||||
{
|
||||
super(561);
|
||||
addStartNpc(PENNY);
|
||||
addTalkId(PENNY, ELISA, MILIA, HADEL);
|
||||
addCondLevel(MIN_LEVEL, MAX_LEVEL, "nolevel.html");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "34413-02.htm":
|
||||
case "34413-03.htm":
|
||||
case "34413-06.html":
|
||||
case "34413-10.html":
|
||||
case "30848-02.html":
|
||||
case "30848-03.html":
|
||||
case "30006-02.html":
|
||||
case "30006-03.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34413-04.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34413-05.html":
|
||||
{
|
||||
qs.setCond(4, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34413-09.html":
|
||||
{
|
||||
// Show Service/Help/Faction System page
|
||||
// TODO: Find the correct Id for player.sendPacket(new ExTutorialShowId(22));
|
||||
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\help_faction.htm", TutorialShowHtml.LARGE_WINDOW));
|
||||
qs.setCond(2, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34413-07.html":
|
||||
{
|
||||
// Rewards
|
||||
giveItems(player, SCROLL_OF_ESCAPE_HARNAK_UNDERGROUND_RUINS, 1);
|
||||
addExpAndSp(player, EXP, SP);
|
||||
addFactionPoints(player, Faction.ADVENTURE_GUILD, FP); // add FP points to ADVENTURE_GUILD Faction
|
||||
qs.exitQuest(QuestType.DAILY, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30848-04.html": // ELISA
|
||||
{
|
||||
// Show Service/Help/Gatekeeper page
|
||||
player.sendPacket(new ExTutorialShowId(55));
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30006-04.html": // MILIA
|
||||
{
|
||||
qs.setCond(4, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
if (npc.getId() == PENNY)
|
||||
{
|
||||
htmltext = "34413-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case PENNY:
|
||||
{
|
||||
if (qs.getCond() == 1)
|
||||
{
|
||||
htmltext = "34413-04.htm";
|
||||
}
|
||||
else if (qs.getCond() == 2)
|
||||
{
|
||||
htmltext = "33509-10.htm";
|
||||
}
|
||||
else if (qs.getCond() == 4)
|
||||
{
|
||||
htmltext = "34413-05.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "34413-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ELISA:
|
||||
{
|
||||
htmltext = "30848-01.html";
|
||||
break;
|
||||
}
|
||||
case MILIA:
|
||||
{
|
||||
htmltext = "30006-01.html";
|
||||
break;
|
||||
}
|
||||
case HADEL:
|
||||
{
|
||||
if (qs.getCond() == 4)
|
||||
{
|
||||
qs.setCond(5, true);
|
||||
htmltext = "33344-01.html";
|
||||
}
|
||||
else if (qs.getCond() == 5)
|
||||
{
|
||||
final QuestState st = player.getQuestState("Q00580_BeyondTheMemories");
|
||||
if ((st != null) && st.isCompleted())
|
||||
{
|
||||
qs.setCond(7, true);
|
||||
giveItems(player, SCROLL_OF_ESCAPE_TOWN_OF_ADEN, 1);
|
||||
htmltext = null;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
|
||||
{
|
||||
if (qs.isNowAvailable())
|
||||
{
|
||||
qs.setState(State.CREATED);
|
||||
htmltext = "34413-01.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
}
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Penny:<br>
|
||||
I don't understand why someone like you is interested in this mission?<br>
|
||||
(Only characters above Lv.85.)
|
||||
</body></html>
|
5
L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-01.htm
vendored
Normal file
5
L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-01.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
So, you are the guy interested in the Hamak Underground Ruins? I should examine your will and knowledge about the challenge first.<br>
|
||||
If you fail my test, I'll send you back.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories 33344-02.htm">"I'm as ready as can be."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
You are the one that the Adventure Guild sent, huh? Do you want to cooperate? No reason to say no.<br>
|
||||
<font color="LEVEL">(To receive "Beyond the Memories" quest, you have to take Penny's quest "Hamak Underground Ruins" first.)</font><br>
|
||||
</body></html>
|
6
L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-02.htm
vendored
Normal file
6
L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-02.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
First of all, you need to know what the Hamak Underground Ruins are.<br>
|
||||
The owner of the ruins, Hamak was a giant of obsession. He killed his wife by locking her up in the labyrinth out of delusional jealousy. The Hamak Underground Ruins are a place where the obsession is enhanced and collected.<br>
|
||||
You need to understand what you're getting yourself into.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories 33344-03.htm">"I got it."</Button>
|
||||
</body></html>
|
5
L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-03.htm
vendored
Normal file
5
L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-03.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
When you enter the ruins, you will fight against the servants of Hamak. They are the ghosts of ancient times and are mere beings beyond memories. However, they are powerful enough to be a threat, as they are influenced by the space that Hamak dominates.<br>
|
||||
You will find yourself in danger. Are you sure you can fight against the existences?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories 33344-04.htm">"It shouldn't be a problem."</Button>
|
||||
</body></html>
|
6
L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-04.htm
vendored
Normal file
6
L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-04.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
Great Now I understand how strong your will and knowledge are.<br>
|
||||
Here's what you need to do. Eliminate <font color="LEVEL">200</font> Ancient Ghosts in the Hamak Underground Ruins.<br>
|
||||
They are the <font color="LEVEL">Krakia Bathus, Krakia Carcass, Krakia Lotus, Rakzan, Weiss Khan, Weiss Ele, Bamonti, Seknus, and Noctum.</font>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories gotoharnak">"Go to the Hamak Underground Ruins."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
Are you done? It's not such an easy place but it looks like you've managed just fine. Am I right to think that? <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories 33344-06.html">"Yes."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
I'm shocked at just how capable you are. If you can, please help us again. Someone as dependable as you is always welcome.<br>
|
||||
</body></html>
|
@@ -0,0 +1,211 @@
|
||||
/*
|
||||
* 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.Q00580_BeyondTheMemories;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.l2jmobius.gameserver.enums.QuestSound;
|
||||
import com.l2jmobius.gameserver.enums.QuestType;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
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 quests.Q00561_BasicMissionHarnakUndergroundRuins.Q00561_BasicMissionHarnakUndergroundRuins;
|
||||
|
||||
/**
|
||||
* Regular Barrier Maintenance (529)
|
||||
* @URL https://l2wiki.com/Regular_Barrier_Maintenance
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00580_BeyondTheMemories extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int START_NPC = 33344; // Giant's Minion Hadel
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
22931, // Krakia Bathus
|
||||
22932, // Krakia Carcass
|
||||
22933, // Krakia Lotus
|
||||
22934, // Rakzan
|
||||
22935, // Weiss Khan
|
||||
22936, // Weiss Ele
|
||||
22937, // Bamonti
|
||||
22938, // Seknus
|
||||
23349, // Noctum
|
||||
22939, // Demonic Bathus
|
||||
22940, // Demonic Carcass
|
||||
22941, // Demonic Lotus
|
||||
22942, // Demonic Rakzan
|
||||
22943, // Demonic Weiss Khan
|
||||
22944, // Demonic Weiss Ele
|
||||
22945, // Demonic Bamonti
|
||||
22946, // Demonic Seknus
|
||||
23350, // Demonic Noctum
|
||||
};
|
||||
// Misc
|
||||
private static final int KILLING_NPCSTRING_ID = NpcStringId.DEFEAT_MONSTERS_IN_THE_UNDERGROUND_RUINS.getId();
|
||||
private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY
|
||||
private static final boolean PARTY_QUEST = true;
|
||||
private static final int KILLING_COND = 1;
|
||||
private static final int FINISH_COND = 2;
|
||||
private static final int MIN_LEVEL = 85;
|
||||
// Location
|
||||
private static final Location HARNAK_UNDERGROUND_RUINS = new Location(-114700, 147909, -7715);
|
||||
// Rewards
|
||||
private static final int EXP = 231860550;
|
||||
private static final int SP = 231840;
|
||||
private static final int ADENA_AMOUNT = 505080;
|
||||
|
||||
public Q00580_BeyondTheMemories()
|
||||
{
|
||||
super(580);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addKillId(MONSTERS);
|
||||
addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
|
||||
addCondStartedQuest(Q00561_BasicMissionHarnakUndergroundRuins.class.getSimpleName(), "33344-01.html");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "33344-02.htm":
|
||||
case "33344-03.htm":
|
||||
{
|
||||
return event;
|
||||
}
|
||||
case "33344-04.htm":
|
||||
{
|
||||
if (qs.isCreated())
|
||||
{
|
||||
qs.startQuest();
|
||||
qs.setCond(KILLING_COND);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "gotoharnak":
|
||||
{
|
||||
// Teleport to Harnak Underground Ruins Inside
|
||||
player.teleToLocation(HARNAK_UNDERGROUND_RUINS);
|
||||
break;
|
||||
}
|
||||
case "33344-06.html":
|
||||
{
|
||||
if (qs.isCond(FINISH_COND))
|
||||
{
|
||||
// Reward.
|
||||
addExpAndSp(player, EXP, SP);
|
||||
giveAdena(player, ADENA_AMOUNT, false);
|
||||
qs.exitQuest(QUEST_TYPE, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return event;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
|
||||
if (npc.getId() == START_NPC)
|
||||
{
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = "33344-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (qs.isCond(KILLING_COND))
|
||||
{
|
||||
htmltext = "33344-04.htm";
|
||||
}
|
||||
else if (qs.isCond(FINISH_COND))
|
||||
{
|
||||
htmltext = "33344-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
if (qs.isNowAvailable())
|
||||
{
|
||||
qs.setState(State.CREATED);
|
||||
htmltext = "33344-01.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false);
|
||||
if ((qs != null) && qs.isCond(KILLING_COND))
|
||||
{
|
||||
final int killedGhosts = qs.getInt("AncientGhosts") + 1;
|
||||
qs.set("AncientGhosts", killedGhosts);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
|
||||
if (killedGhosts >= 200)
|
||||
{
|
||||
qs.setCond(FINISH_COND, true);
|
||||
}
|
||||
sendNpcLogList(killer);
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCond(KILLING_COND))
|
||||
{
|
||||
final Set<NpcLogListHolder> holder = new HashSet<>();
|
||||
holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID, true, qs.getInt("AncientGhosts")));
|
||||
return holder;
|
||||
}
|
||||
return super.getNpcLogList(player);
|
||||
}
|
||||
}
|
@@ -137,9 +137,11 @@ import quests.Q00511_AwlUnderFoot.Q00511_AwlUnderFoot;
|
||||
import quests.Q00512_BladeUnderFoot.Q00512_BladeUnderFoot;
|
||||
import quests.Q00551_OlympiadStarter.Q00551_OlympiadStarter;
|
||||
import quests.Q00553_OlympiadUndefeated.Q00553_OlympiadUndefeated;
|
||||
import quests.Q00561_BasicMissionHarnakUndergroundRuins.Q00561_BasicMissionHarnakUndergroundRuins;
|
||||
import quests.Q00562_BasicMissionAltarOfEvil.Q00562_BasicMissionAltarOfEvil;
|
||||
import quests.Q00563_BasicMissionBloodySwampland.Q00563_BasicMissionBloodySwampland;
|
||||
import quests.Q00564_BasicMissionKartiasLabyrinthSolo.Q00564_BasicMissionKartiasLabyrinthSolo;
|
||||
import quests.Q00580_BeyondTheMemories.Q00580_BeyondTheMemories;
|
||||
import quests.Q00581_ThePurificationRitual.Q00581_ThePurificationRitual;
|
||||
import quests.Q00582_WashBloodWithBlood.Q00582_WashBloodWithBlood;
|
||||
import quests.Q00583_MeaningOfSurvival.Q00583_MeaningOfSurvival;
|
||||
@@ -582,7 +584,7 @@ public class QuestMasterHandler
|
||||
Q00512_BladeUnderFoot.class,
|
||||
Q00551_OlympiadStarter.class,
|
||||
Q00553_OlympiadUndefeated.class,
|
||||
Q00561_BasicMissionHarnakUndergroundRuins.class, // TODO: Not done.
|
||||
Q00561_BasicMissionHarnakUndergroundRuins.class,
|
||||
Q00562_BasicMissionAltarOfEvil.class,
|
||||
Q00563_BasicMissionBloodySwampland.class,
|
||||
Q00564_BasicMissionKartiasLabyrinthSolo.class,
|
||||
@@ -598,7 +600,7 @@ public class QuestMasterHandler
|
||||
Q00574_SpecialMissionNornilsGarden.class, // TODO: Not done.
|
||||
Q00575_SpecialMissionFortuna.class, // TODO: Not done.
|
||||
Q00576_SpecialMissionDefeatSpezion.class, // TODO: Not done.
|
||||
Q00580_BeyondTheMemories.class, // TODO: Not done.
|
||||
Q00580_BeyondTheMemories.class,
|
||||
Q00581_ThePurificationRitual.class, // TODO: Not done.
|
||||
Q00582_WashBloodWithBlood.class, // TODO: Not done.
|
||||
Q00583_MeaningOfSurvival.class, // TODO: Not done.
|
||||
|
@@ -1,36 +0,0 @@
|
||||
/*
|
||||
* 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.not_done;
|
||||
|
||||
import com.l2jmobius.Config;
|
||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00561_BasicMissionHarnakUndergroundRuins extends Quest
|
||||
{
|
||||
private static final int START_NPC = 34413;
|
||||
|
||||
public Q00561_BasicMissionHarnakUndergroundRuins()
|
||||
{
|
||||
super(561);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
|
||||
}
|
||||
}
|
@@ -1,36 +0,0 @@
|
||||
/*
|
||||
* 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.not_done;
|
||||
|
||||
import com.l2jmobius.Config;
|
||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00580_BeyondTheMemories extends Quest
|
||||
{
|
||||
private static final int START_NPC = 33344;
|
||||
|
||||
public Q00580_BeyondTheMemories()
|
||||
{
|
||||
super(580);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
|
||||
}
|
||||
}
|
@@ -4,7 +4,6 @@
|
||||
555 Red Libra Request - Atelia Refinery
|
||||
556 Red Libra Request - Fallen Emperor's Throne
|
||||
557 Red Libra Request - Fall of Etina
|
||||
561 Basic Mission: Harnak Underground Ruins
|
||||
565 Basic Mission: Fairy Settlement - West
|
||||
566 Basic Mission: Fairy Settlement - East
|
||||
567 Basic Mission: Isle of Souls
|
||||
@@ -18,7 +17,6 @@
|
||||
575 Special Mission: Fortuna
|
||||
576 Special Mission: Defeat Spezion
|
||||
577 Basic Mission: Silent Valley
|
||||
580 Beyond the Memories
|
||||
585 Can't Go Against the Time
|
||||
586 Mutated Creatures
|
||||
587 More Aggressive Operation
|
||||
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Gatekeeper Milia:<br>
|
||||
Are you going to the Ruins of Ye Sagira? I know how to get there.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30006-02.html">"Go on."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Gatekeeper Milia:<br>
|
||||
It is difficult to teleport directly to the Hamak Underground Ruins. You should take a detour. First, you must teleport to the entrance zone of the Ruins of Ye Sagira. I can help you do this. From there, go to the <font color="LEVEL">Ruins of Ye Sagira</font> and then to Exploration Area 1, where you can find Giant's Minion Hadel.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30006-03.html">"Alright."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Gatekeeper Milia:<br>
|
||||
In fact, there is a shortcut. The Sayunes next to me can take you directly to Hadel.<br>
|
||||
It doesn't matter which way you choose as long as it takes you to where you want to go.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30006-04.html">"Alright."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Gatekeeper Milia:<br>
|
||||
I've explained everything I could about teleportation. Make the best use of Gatekeepers to get to where you want. See you!<br>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Gatekeeper Elisa:<br>
|
||||
You want to know how to go to the Hamak Underground Ruins? I see! You must be from the Adventure Guild! I'll fill you in briefly on what us Gatekeepers do and also tell you how to teleport through us.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30848-02.html">"Go on."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Gatekeeper Elisa:<br>
|
||||
We Gatekeepers use magic to Teleport long distances in a short time via the Gates of Time and Space. We've been trained in the Ivory Tower for a long time to learn these abilities.<br>
|
||||
We charge you according to the distance of the teleport, as there are consumables needed for it. However, for adventurers in lower levels, we sometimes waiver the cost.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30848-03.html">"Go on."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Gatekeeper Elisa:<br>
|
||||
However, at least, you have to know in which territory the location is, when you want to go somewhere. Is your final destination the <font color="LEVEL">Hamak Underground Ruins</font>? If you want to get there, you have to go to the <font color="LEVEL">Talking Island Village</font> first.<br>
|
||||
If you are teleporting to a certain quest destination, the location will be at the top of the Teleport List so, it's more convenient. Easy, right? <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30848-04.html">"I understand."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Gatekeeper Elisa:<br>
|
||||
When you're ready, talk to me to experience teleporting. When you get to the Talking Island Village, talk to Milia the Gatekeeper. I wish you success.<br>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
You are the one that the Adventure Guild sent, huh? Do you want to cooperate? No reason to say no.<br>
|
||||
<font color="LEVEL">(To receive "Hamak Underground Ruins", you have to complete Hadel's quest "Beyond the Memories" first.)</font><br>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
Your're the one that Hephah has sent, right? If not, you should go meet Herphah and receive a mission from her before you continue. If you think it doesn't matter, I can continue anyway. Do you want me to continue?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-02.htm">"Sure, no problem!"</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
Herphah thought the best way for you to grow was to carry out missions with us.<br>
|
||||
I agree with her. If you accomplish the missions I give you, I'm sure you'll quickly become more powerful.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-03.htm">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
I know that you're confused. But, you'll understand soon. If you accept the mission, I'll explain right away.<br>
|
||||
Are you interested in further righteous work?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-04.htm">"Alright."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,6 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
So you've already learned about the mission. In that case, you can start it right away, without any more explanation.<br>
|
||||
But if you want to listen to my explanation again, I would be more than happy to tell you. <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-05.html">"Receive the mission."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-09.html">"Hear the explanation again."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
You have to accomplish the task at <font color="LEVEL">Hamak Underground Ruins</font> on <font color="LEVEL">Talking Island</font>. To do so, you need to move to the Ruins of Ye Sagira and talk to Giant's Minion Hadel.<br>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
Welcome back! So, did you do a good job?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-07.html">"Yes, I did."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
Thanks, you've done a great job! I'm sure eveyone in the Adventure Guild will know your name now. If there is another opportunity, we'd love for you to help us again. Good luck and farewell!<br>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
To do the mission, you have to go to <font color="LEVEL">Black Wizard Lapathia</font> at the <font color="LEVEL">Altar of Evil</font>. Do the mission that Lapathia gives. Then, come back to me. <br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
In this world, there are many factions. The factions usually are based on their own regions. Sometimes, they are specialized in specific activities, such as fishing, and wield their influence. If you build relations with a faction and establish an Amity Level, you can conduct activities within the faction and take more missions.<br>
|
||||
Among these factions, I am a part of the <font color="LEVEL">Adventure Guild</font>. When you implement the mission that I gave you, you'll assist the activities of the Adventure Guild. If you do well in the mission from our faction, I'll give you an even better mission.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-10.html">"Gon on."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
The mission I'll give you is to help the task at <font color="LEVEL">Hamak Underground Ruins</font> on <font color="LEVEL">Talking Island</font>.<br>
|
||||
But first, you need to learn how get there.<br>
|
||||
Go to <font color="LEVEL">Gatekeeper Elisa</font>, the Gatekeeper of this town, and she will tell you how to go to the <font color="LEVEL">Hamak Underground Ruins</font>. If you successfully arrive at the ruins, meet Giant's Minion Hadel and listen to him.<br>
|
||||
</body></html>
|
@@ -0,0 +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.Q00561_BasicMissionHarnakUndergroundRuins;
|
||||
|
||||
import com.l2jmobius.gameserver.enums.Faction;
|
||||
import com.l2jmobius.gameserver.enums.QuestType;
|
||||
import com.l2jmobius.gameserver.model.actor.Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
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.serverpackets.ExTutorialShowId;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
|
||||
|
||||
/**
|
||||
* Q00561_BasicMissionHarnakUndergroundRuins
|
||||
* @URL http://l2on.net/en/?c=quests&id=561&game=1
|
||||
* @author NightBR
|
||||
*/
|
||||
public class Q00561_BasicMissionHarnakUndergroundRuins extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int PENNY = 34413;
|
||||
private static final int ELISA = 30848;
|
||||
private static final int MILIA = 30006;
|
||||
private static final int HADEL = 33344;
|
||||
// Rewards
|
||||
private static final long EXP = 115930275;
|
||||
private static final int SP = 115920;
|
||||
private static final int FP = 100; // Faction points
|
||||
private static final int SCROLL_OF_ESCAPE_HARNAK_UNDERGROUND_RUINS = 39496;
|
||||
private static final int SCROLL_OF_ESCAPE_TOWN_OF_ADEN = 48413;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 85;
|
||||
private static final int MAX_LEVEL = 87;
|
||||
|
||||
public Q00561_BasicMissionHarnakUndergroundRuins()
|
||||
{
|
||||
super(561);
|
||||
addStartNpc(PENNY);
|
||||
addTalkId(PENNY, ELISA, MILIA, HADEL);
|
||||
addCondLevel(MIN_LEVEL, MAX_LEVEL, "nolevel.html");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "34413-02.htm":
|
||||
case "34413-03.htm":
|
||||
case "34413-06.html":
|
||||
case "34413-10.html":
|
||||
case "30848-02.html":
|
||||
case "30848-03.html":
|
||||
case "30006-02.html":
|
||||
case "30006-03.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34413-04.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34413-05.html":
|
||||
{
|
||||
qs.setCond(4, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34413-09.html":
|
||||
{
|
||||
// Show Service/Help/Faction System page
|
||||
// TODO: Find the correct Id for player.sendPacket(new ExTutorialShowId(22));
|
||||
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\help_faction.htm", TutorialShowHtml.LARGE_WINDOW));
|
||||
qs.setCond(2, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34413-07.html":
|
||||
{
|
||||
// Rewards
|
||||
giveItems(player, SCROLL_OF_ESCAPE_HARNAK_UNDERGROUND_RUINS, 1);
|
||||
addExpAndSp(player, EXP, SP);
|
||||
addFactionPoints(player, Faction.ADVENTURE_GUILD, FP); // add FP points to ADVENTURE_GUILD Faction
|
||||
qs.exitQuest(QuestType.DAILY, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30848-04.html": // ELISA
|
||||
{
|
||||
// Show Service/Help/Gatekeeper page
|
||||
player.sendPacket(new ExTutorialShowId(55));
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30006-04.html": // MILIA
|
||||
{
|
||||
qs.setCond(4, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
if (npc.getId() == PENNY)
|
||||
{
|
||||
htmltext = "34413-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case PENNY:
|
||||
{
|
||||
if (qs.getCond() == 1)
|
||||
{
|
||||
htmltext = "34413-04.htm";
|
||||
}
|
||||
else if (qs.getCond() == 2)
|
||||
{
|
||||
htmltext = "33509-10.htm";
|
||||
}
|
||||
else if (qs.getCond() == 4)
|
||||
{
|
||||
htmltext = "34413-05.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "34413-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ELISA:
|
||||
{
|
||||
htmltext = "30848-01.html";
|
||||
break;
|
||||
}
|
||||
case MILIA:
|
||||
{
|
||||
htmltext = "30006-01.html";
|
||||
break;
|
||||
}
|
||||
case HADEL:
|
||||
{
|
||||
if (qs.getCond() == 4)
|
||||
{
|
||||
qs.setCond(5, true);
|
||||
htmltext = "33344-01.html";
|
||||
}
|
||||
else if (qs.getCond() == 5)
|
||||
{
|
||||
final QuestState st = player.getQuestState("Q00580_BeyondTheMemories");
|
||||
if ((st != null) && st.isCompleted())
|
||||
{
|
||||
qs.setCond(7, true);
|
||||
giveItems(player, SCROLL_OF_ESCAPE_TOWN_OF_ADEN, 1);
|
||||
htmltext = null;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
|
||||
{
|
||||
if (qs.isNowAvailable())
|
||||
{
|
||||
qs.setState(State.CREATED);
|
||||
htmltext = "34413-01.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
}
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Penny:<br>
|
||||
I don't understand why someone like you is interested in this mission?<br>
|
||||
(Only characters above Lv.85.)
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
So, you are the guy interested in the Hamak Underground Ruins? I should examine your will and knowledge about the challenge first.<br>
|
||||
If you fail my test, I'll send you back.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories 33344-02.htm">"I'm as ready as can be."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
You are the one that the Adventure Guild sent, huh? Do you want to cooperate? No reason to say no.<br>
|
||||
<font color="LEVEL">(To receive "Beyond the Memories" quest, you have to take Penny's quest "Hamak Underground Ruins" first.)</font><br>
|
||||
</body></html>
|
@@ -0,0 +1,6 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
First of all, you need to know what the Hamak Underground Ruins are.<br>
|
||||
The owner of the ruins, Hamak was a giant of obsession. He killed his wife by locking her up in the labyrinth out of delusional jealousy. The Hamak Underground Ruins are a place where the obsession is enhanced and collected.<br>
|
||||
You need to understand what you're getting yourself into.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories 33344-03.htm">"I got it."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
When you enter the ruins, you will fight against the servants of Hamak. They are the ghosts of ancient times and are mere beings beyond memories. However, they are powerful enough to be a threat, as they are influenced by the space that Hamak dominates.<br>
|
||||
You will find yourself in danger. Are you sure you can fight against the existences?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories 33344-04.htm">"It shouldn't be a problem."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,6 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
Great Now I understand how strong your will and knowledge are.<br>
|
||||
Here's what you need to do. Eliminate <font color="LEVEL">200</font> Ancient Ghosts in the Hamak Underground Ruins.<br>
|
||||
They are the <font color="LEVEL">Krakia Bathus, Krakia Carcass, Krakia Lotus, Rakzan, Weiss Khan, Weiss Ele, Bamonti, Seknus, and Noctum.</font>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories gotoharnak">"Go to the Hamak Underground Ruins."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
Are you done? It's not such an easy place but it looks like you've managed just fine. Am I right to think that? <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories 33344-06.html">"Yes."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
I'm shocked at just how capable you are. If you can, please help us again. Someone as dependable as you is always welcome.<br>
|
||||
</body></html>
|
@@ -0,0 +1,211 @@
|
||||
/*
|
||||
* 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.Q00580_BeyondTheMemories;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.l2jmobius.gameserver.enums.QuestSound;
|
||||
import com.l2jmobius.gameserver.enums.QuestType;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
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 quests.Q00561_BasicMissionHarnakUndergroundRuins.Q00561_BasicMissionHarnakUndergroundRuins;
|
||||
|
||||
/**
|
||||
* Regular Barrier Maintenance (529)
|
||||
* @URL https://l2wiki.com/Regular_Barrier_Maintenance
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00580_BeyondTheMemories extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int START_NPC = 33344; // Giant's Minion Hadel
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
22931, // Krakia Bathus
|
||||
22932, // Krakia Carcass
|
||||
22933, // Krakia Lotus
|
||||
22934, // Rakzan
|
||||
22935, // Weiss Khan
|
||||
22936, // Weiss Ele
|
||||
22937, // Bamonti
|
||||
22938, // Seknus
|
||||
23349, // Noctum
|
||||
22939, // Demonic Bathus
|
||||
22940, // Demonic Carcass
|
||||
22941, // Demonic Lotus
|
||||
22942, // Demonic Rakzan
|
||||
22943, // Demonic Weiss Khan
|
||||
22944, // Demonic Weiss Ele
|
||||
22945, // Demonic Bamonti
|
||||
22946, // Demonic Seknus
|
||||
23350, // Demonic Noctum
|
||||
};
|
||||
// Misc
|
||||
private static final int KILLING_NPCSTRING_ID = NpcStringId.DEFEAT_MONSTERS_IN_THE_UNDERGROUND_RUINS.getId();
|
||||
private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY
|
||||
private static final boolean PARTY_QUEST = true;
|
||||
private static final int KILLING_COND = 1;
|
||||
private static final int FINISH_COND = 2;
|
||||
private static final int MIN_LEVEL = 85;
|
||||
// Location
|
||||
private static final Location HARNAK_UNDERGROUND_RUINS = new Location(-114700, 147909, -7715);
|
||||
// Rewards
|
||||
private static final int EXP = 231860550;
|
||||
private static final int SP = 231840;
|
||||
private static final int ADENA_AMOUNT = 505080;
|
||||
|
||||
public Q00580_BeyondTheMemories()
|
||||
{
|
||||
super(580);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addKillId(MONSTERS);
|
||||
addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
|
||||
addCondStartedQuest(Q00561_BasicMissionHarnakUndergroundRuins.class.getSimpleName(), "33344-01.html");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "33344-02.htm":
|
||||
case "33344-03.htm":
|
||||
{
|
||||
return event;
|
||||
}
|
||||
case "33344-04.htm":
|
||||
{
|
||||
if (qs.isCreated())
|
||||
{
|
||||
qs.startQuest();
|
||||
qs.setCond(KILLING_COND);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "gotoharnak":
|
||||
{
|
||||
// Teleport to Harnak Underground Ruins Inside
|
||||
player.teleToLocation(HARNAK_UNDERGROUND_RUINS);
|
||||
break;
|
||||
}
|
||||
case "33344-06.html":
|
||||
{
|
||||
if (qs.isCond(FINISH_COND))
|
||||
{
|
||||
// Reward.
|
||||
addExpAndSp(player, EXP, SP);
|
||||
giveAdena(player, ADENA_AMOUNT, false);
|
||||
qs.exitQuest(QUEST_TYPE, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return event;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
|
||||
if (npc.getId() == START_NPC)
|
||||
{
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = "33344-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (qs.isCond(KILLING_COND))
|
||||
{
|
||||
htmltext = "33344-04.htm";
|
||||
}
|
||||
else if (qs.isCond(FINISH_COND))
|
||||
{
|
||||
htmltext = "33344-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
if (qs.isNowAvailable())
|
||||
{
|
||||
qs.setState(State.CREATED);
|
||||
htmltext = "33344-01.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false);
|
||||
if ((qs != null) && qs.isCond(KILLING_COND))
|
||||
{
|
||||
final int killedGhosts = qs.getInt("AncientGhosts") + 1;
|
||||
qs.set("AncientGhosts", killedGhosts);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
|
||||
if (killedGhosts >= 200)
|
||||
{
|
||||
qs.setCond(FINISH_COND, true);
|
||||
}
|
||||
sendNpcLogList(killer);
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCond(KILLING_COND))
|
||||
{
|
||||
final Set<NpcLogListHolder> holder = new HashSet<>();
|
||||
holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID, true, qs.getInt("AncientGhosts")));
|
||||
return holder;
|
||||
}
|
||||
return super.getNpcLogList(player);
|
||||
}
|
||||
}
|
@@ -115,9 +115,11 @@ import quests.Q00511_AwlUnderFoot.Q00511_AwlUnderFoot;
|
||||
import quests.Q00512_BladeUnderFoot.Q00512_BladeUnderFoot;
|
||||
import quests.Q00551_OlympiadStarter.Q00551_OlympiadStarter;
|
||||
import quests.Q00553_OlympiadUndefeated.Q00553_OlympiadUndefeated;
|
||||
import quests.Q00561_BasicMissionHarnakUndergroundRuins.Q00561_BasicMissionHarnakUndergroundRuins;
|
||||
import quests.Q00562_BasicMissionAltarOfEvil.Q00562_BasicMissionAltarOfEvil;
|
||||
import quests.Q00563_BasicMissionBloodySwampland.Q00563_BasicMissionBloodySwampland;
|
||||
import quests.Q00564_BasicMissionKartiasLabyrinthSolo.Q00564_BasicMissionKartiasLabyrinthSolo;
|
||||
import quests.Q00580_BeyondTheMemories.Q00580_BeyondTheMemories;
|
||||
import quests.Q00581_ThePurificationRitual.Q00581_ThePurificationRitual;
|
||||
import quests.Q00582_WashBloodWithBlood.Q00582_WashBloodWithBlood;
|
||||
import quests.Q00583_MeaningOfSurvival.Q00583_MeaningOfSurvival;
|
||||
@@ -511,7 +513,7 @@ public class QuestMasterHandler
|
||||
Q00529_RegularBarrierMaintenance.class, // TODO: Not done.
|
||||
Q00551_OlympiadStarter.class,
|
||||
Q00553_OlympiadUndefeated.class,
|
||||
Q00561_BasicMissionHarnakUndergroundRuins.class, // TODO: Not done.
|
||||
Q00561_BasicMissionHarnakUndergroundRuins.class,
|
||||
Q00562_BasicMissionAltarOfEvil.class,
|
||||
Q00563_BasicMissionBloodySwampland.class,
|
||||
Q00564_BasicMissionKartiasLabyrinthSolo.class,
|
||||
@@ -528,7 +530,7 @@ public class QuestMasterHandler
|
||||
Q00575_SpecialMissionFortuna.class, // TODO: Not done.
|
||||
Q00576_SpecialMissionDefeatSpezion.class, // TODO: Not done.
|
||||
Q00577_BasicMissionSilentValley.class, // TODO: Not done.
|
||||
Q00580_BeyondTheMemories.class, // TODO: Not done.
|
||||
Q00580_BeyondTheMemories.class,
|
||||
Q00581_ThePurificationRitual.class,
|
||||
Q00582_WashBloodWithBlood.class,
|
||||
Q00583_MeaningOfSurvival.class,
|
||||
|
@@ -1,36 +0,0 @@
|
||||
/*
|
||||
* 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.not_done;
|
||||
|
||||
import com.l2jmobius.Config;
|
||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00561_BasicMissionHarnakUndergroundRuins extends Quest
|
||||
{
|
||||
private static final int START_NPC = 34413;
|
||||
|
||||
public Q00561_BasicMissionHarnakUndergroundRuins()
|
||||
{
|
||||
super(561);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
|
||||
}
|
||||
}
|
@@ -1,36 +0,0 @@
|
||||
/*
|
||||
* 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.not_done;
|
||||
|
||||
import com.l2jmobius.Config;
|
||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00580_BeyondTheMemories extends Quest
|
||||
{
|
||||
private static final int START_NPC = 33344;
|
||||
|
||||
public Q00580_BeyondTheMemories()
|
||||
{
|
||||
super(580);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
|
||||
}
|
||||
}
|
@@ -7,7 +7,6 @@
|
||||
557 Red Libra Request - Fall of Etina
|
||||
558 Request from the Red Libra Guild - Sea of Spores
|
||||
559 Request from the Red Libra Guild - Krofin’s Nest
|
||||
561 Basic Mission: Harnak Underground Ruins
|
||||
565 Basic Mission: Fairy Settlement - West
|
||||
566 Basic Mission: Fairy Settlement - East
|
||||
567 Basic Mission: Isle of Souls
|
||||
@@ -22,7 +21,6 @@
|
||||
577 Basic Mission: Silent Valley
|
||||
578 Basic Mission: Cemetery
|
||||
579 Basic Mission: Blazing Swamp
|
||||
580 Beyond the Memories
|
||||
585 Can't Go Against the Time
|
||||
586 Mutated Creatures
|
||||
587 More Aggressive Operation
|
||||
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Gatekeeper Milia:<br>
|
||||
Are you going to the Ruins of Ye Sagira? I know how to get there.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30006-02.html">"Go on."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Gatekeeper Milia:<br>
|
||||
It is difficult to teleport directly to the Hamak Underground Ruins. You should take a detour. First, you must teleport to the entrance zone of the Ruins of Ye Sagira. I can help you do this. From there, go to the <font color="LEVEL">Ruins of Ye Sagira</font> and then to Exploration Area 1, where you can find Giant's Minion Hadel.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30006-03.html">"Alright."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Gatekeeper Milia:<br>
|
||||
In fact, there is a shortcut. The Sayunes next to me can take you directly to Hadel.<br>
|
||||
It doesn't matter which way you choose as long as it takes you to where you want to go.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30006-04.html">"Alright."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Gatekeeper Milia:<br>
|
||||
I've explained everything I could about teleportation. Make the best use of Gatekeepers to get to where you want. See you!<br>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Gatekeeper Elisa:<br>
|
||||
You want to know how to go to the Hamak Underground Ruins? I see! You must be from the Adventure Guild! I'll fill you in briefly on what us Gatekeepers do and also tell you how to teleport through us.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30848-02.html">"Go on."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Gatekeeper Elisa:<br>
|
||||
We Gatekeepers use magic to Teleport long distances in a short time via the Gates of Time and Space. We've been trained in the Ivory Tower for a long time to learn these abilities.<br>
|
||||
We charge you according to the distance of the teleport, as there are consumables needed for it. However, for adventurers in lower levels, we sometimes waiver the cost.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30848-03.html">"Go on."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Gatekeeper Elisa:<br>
|
||||
However, at least, you have to know in which territory the location is, when you want to go somewhere. Is your final destination the <font color="LEVEL">Hamak Underground Ruins</font>? If you want to get there, you have to go to the <font color="LEVEL">Talking Island Village</font> first.<br>
|
||||
If you are teleporting to a certain quest destination, the location will be at the top of the Teleport List so, it's more convenient. Easy, right? <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 30848-04.html">"I understand."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Gatekeeper Elisa:<br>
|
||||
When you're ready, talk to me to experience teleporting. When you get to the Talking Island Village, talk to Milia the Gatekeeper. I wish you success.<br>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
You are the one that the Adventure Guild sent, huh? Do you want to cooperate? No reason to say no.<br>
|
||||
<font color="LEVEL">(To receive "Hamak Underground Ruins", you have to complete Hadel's quest "Beyond the Memories" first.)</font><br>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
Your're the one that Hephah has sent, right? If not, you should go meet Herphah and receive a mission from her before you continue. If you think it doesn't matter, I can continue anyway. Do you want me to continue?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-02.htm">"Sure, no problem!"</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
Herphah thought the best way for you to grow was to carry out missions with us.<br>
|
||||
I agree with her. If you accomplish the missions I give you, I'm sure you'll quickly become more powerful.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-03.htm">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
I know that you're confused. But, you'll understand soon. If you accept the mission, I'll explain right away.<br>
|
||||
Are you interested in further righteous work?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-04.htm">"Alright."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,6 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
So you've already learned about the mission. In that case, you can start it right away, without any more explanation.<br>
|
||||
But if you want to listen to my explanation again, I would be more than happy to tell you. <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-05.html">"Receive the mission."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-09.html">"Hear the explanation again."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
You have to accomplish the task at <font color="LEVEL">Hamak Underground Ruins</font> on <font color="LEVEL">Talking Island</font>. To do so, you need to move to the Ruins of Ye Sagira and talk to Giant's Minion Hadel.<br>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
Welcome back! So, did you do a good job?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-07.html">"Yes, I did."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
Thanks, you've done a great job! I'm sure eveyone in the Adventure Guild will know your name now. If there is another opportunity, we'd love for you to help us again. Good luck and farewell!<br>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
To do the mission, you have to go to <font color="LEVEL">Black Wizard Lapathia</font> at the <font color="LEVEL">Altar of Evil</font>. Do the mission that Lapathia gives. Then, come back to me. <br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
In this world, there are many factions. The factions usually are based on their own regions. Sometimes, they are specialized in specific activities, such as fishing, and wield their influence. If you build relations with a faction and establish an Amity Level, you can conduct activities within the faction and take more missions.<br>
|
||||
Among these factions, I am a part of the <font color="LEVEL">Adventure Guild</font>. When you implement the mission that I gave you, you'll assist the activities of the Adventure Guild. If you do well in the mission from our faction, I'll give you an even better mission.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00561_BasicMissionHarnakUndergroundRuins 34413-10.html">"Gon on."</Button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Adventure Guildsman Penny:<br>
|
||||
The mission I'll give you is to help the task at <font color="LEVEL">Hamak Underground Ruins</font> on <font color="LEVEL">Talking Island</font>.<br>
|
||||
But first, you need to learn how get there.<br>
|
||||
Go to <font color="LEVEL">Gatekeeper Elisa</font>, the Gatekeeper of this town, and she will tell you how to go to the <font color="LEVEL">Hamak Underground Ruins</font>. If you successfully arrive at the ruins, meet Giant's Minion Hadel and listen to him.<br>
|
||||
</body></html>
|
@@ -0,0 +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.Q00561_BasicMissionHarnakUndergroundRuins;
|
||||
|
||||
import com.l2jmobius.gameserver.enums.Faction;
|
||||
import com.l2jmobius.gameserver.enums.QuestType;
|
||||
import com.l2jmobius.gameserver.model.actor.Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
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.serverpackets.ExTutorialShowId;
|
||||
import com.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
|
||||
|
||||
/**
|
||||
* Q00561_BasicMissionHarnakUndergroundRuins
|
||||
* @URL http://l2on.net/en/?c=quests&id=561&game=1
|
||||
* @author NightBR
|
||||
*/
|
||||
public class Q00561_BasicMissionHarnakUndergroundRuins extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int PENNY = 34413;
|
||||
private static final int ELISA = 30848;
|
||||
private static final int MILIA = 30006;
|
||||
private static final int HADEL = 33344;
|
||||
// Rewards
|
||||
private static final long EXP = 115930275;
|
||||
private static final int SP = 115920;
|
||||
private static final int FP = 100; // Faction points
|
||||
private static final int SCROLL_OF_ESCAPE_HARNAK_UNDERGROUND_RUINS = 39496;
|
||||
private static final int SCROLL_OF_ESCAPE_TOWN_OF_ADEN = 48413;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 85;
|
||||
private static final int MAX_LEVEL = 87;
|
||||
|
||||
public Q00561_BasicMissionHarnakUndergroundRuins()
|
||||
{
|
||||
super(561);
|
||||
addStartNpc(PENNY);
|
||||
addTalkId(PENNY, ELISA, MILIA, HADEL);
|
||||
addCondLevel(MIN_LEVEL, MAX_LEVEL, "nolevel.html");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "34413-02.htm":
|
||||
case "34413-03.htm":
|
||||
case "34413-06.html":
|
||||
case "34413-10.html":
|
||||
case "30848-02.html":
|
||||
case "30848-03.html":
|
||||
case "30006-02.html":
|
||||
case "30006-03.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34413-04.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34413-05.html":
|
||||
{
|
||||
qs.setCond(4, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34413-09.html":
|
||||
{
|
||||
// Show Service/Help/Faction System page
|
||||
// TODO: Find the correct Id for player.sendPacket(new ExTutorialShowId(22));
|
||||
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\help_faction.htm", TutorialShowHtml.LARGE_WINDOW));
|
||||
qs.setCond(2, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34413-07.html":
|
||||
{
|
||||
// Rewards
|
||||
giveItems(player, SCROLL_OF_ESCAPE_HARNAK_UNDERGROUND_RUINS, 1);
|
||||
addExpAndSp(player, EXP, SP);
|
||||
addFactionPoints(player, Faction.ADVENTURE_GUILD, FP); // add FP points to ADVENTURE_GUILD Faction
|
||||
qs.exitQuest(QuestType.DAILY, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30848-04.html": // ELISA
|
||||
{
|
||||
// Show Service/Help/Gatekeeper page
|
||||
player.sendPacket(new ExTutorialShowId(55));
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30006-04.html": // MILIA
|
||||
{
|
||||
qs.setCond(4, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
if (npc.getId() == PENNY)
|
||||
{
|
||||
htmltext = "34413-01.htm";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case PENNY:
|
||||
{
|
||||
if (qs.getCond() == 1)
|
||||
{
|
||||
htmltext = "34413-04.htm";
|
||||
}
|
||||
else if (qs.getCond() == 2)
|
||||
{
|
||||
htmltext = "33509-10.htm";
|
||||
}
|
||||
else if (qs.getCond() == 4)
|
||||
{
|
||||
htmltext = "34413-05.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "34413-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ELISA:
|
||||
{
|
||||
htmltext = "30848-01.html";
|
||||
break;
|
||||
}
|
||||
case MILIA:
|
||||
{
|
||||
htmltext = "30006-01.html";
|
||||
break;
|
||||
}
|
||||
case HADEL:
|
||||
{
|
||||
if (qs.getCond() == 4)
|
||||
{
|
||||
qs.setCond(5, true);
|
||||
htmltext = "33344-01.html";
|
||||
}
|
||||
else if (qs.getCond() == 5)
|
||||
{
|
||||
final QuestState st = player.getQuestState("Q00580_BeyondTheMemories");
|
||||
if ((st != null) && st.isCompleted())
|
||||
{
|
||||
qs.setCond(7, true);
|
||||
giveItems(player, SCROLL_OF_ESCAPE_TOWN_OF_ADEN, 1);
|
||||
htmltext = null;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
|
||||
{
|
||||
if (qs.isNowAvailable())
|
||||
{
|
||||
qs.setState(State.CREATED);
|
||||
htmltext = "34413-01.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
}
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Penny:<br>
|
||||
I don't understand why someone like you is interested in this mission?<br>
|
||||
(Only characters above Lv.85.)
|
||||
</body></html>
|
5
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-01.htm
vendored
Normal file
5
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-01.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
So, you are the guy interested in the Hamak Underground Ruins? I should examine your will and knowledge about the challenge first.<br>
|
||||
If you fail my test, I'll send you back.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories 33344-02.htm">"I'm as ready as can be."</Button>
|
||||
</body></html>
|
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-01.html
vendored
Normal file
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-01.html
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
You are the one that the Adventure Guild sent, huh? Do you want to cooperate? No reason to say no.<br>
|
||||
<font color="LEVEL">(To receive "Beyond the Memories" quest, you have to take Penny's quest "Hamak Underground Ruins" first.)</font><br>
|
||||
</body></html>
|
6
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-02.htm
vendored
Normal file
6
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-02.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
First of all, you need to know what the Hamak Underground Ruins are.<br>
|
||||
The owner of the ruins, Hamak was a giant of obsession. He killed his wife by locking her up in the labyrinth out of delusional jealousy. The Hamak Underground Ruins are a place where the obsession is enhanced and collected.<br>
|
||||
You need to understand what you're getting yourself into.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories 33344-03.htm">"I got it."</Button>
|
||||
</body></html>
|
5
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-03.htm
vendored
Normal file
5
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-03.htm
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
When you enter the ruins, you will fight against the servants of Hamak. They are the ghosts of ancient times and are mere beings beyond memories. However, they are powerful enough to be a threat, as they are influenced by the space that Hamak dominates.<br>
|
||||
You will find yourself in danger. Are you sure you can fight against the existences?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories 33344-04.htm">"It shouldn't be a problem."</Button>
|
||||
</body></html>
|
6
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-04.htm
vendored
Normal file
6
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-04.htm
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
Great Now I understand how strong your will and knowledge are.<br>
|
||||
Here's what you need to do. Eliminate <font color="LEVEL">200</font> Ancient Ghosts in the Hamak Underground Ruins.<br>
|
||||
They are the <font color="LEVEL">Krakia Bathus, Krakia Carcass, Krakia Lotus, Rakzan, Weiss Khan, Weiss Ele, Bamonti, Seknus, and Noctum.</font>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories gotoharnak">"Go to the Hamak Underground Ruins."</Button>
|
||||
</body></html>
|
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-05.html
vendored
Normal file
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-05.html
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
Are you done? It's not such an easy place but it looks like you've managed just fine. Am I right to think that? <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00580_BeyondTheMemories 33344-06.html">"Yes."</Button>
|
||||
</body></html>
|
3
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-06.html
vendored
Normal file
3
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00580_BeyondTheMemories/33344-06.html
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<html><body>Giant's Minion Hadel:<br>
|
||||
I'm shocked at just how capable you are. If you can, please help us again. Someone as dependable as you is always welcome.<br>
|
||||
</body></html>
|
@@ -0,0 +1,211 @@
|
||||
/*
|
||||
* 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.Q00580_BeyondTheMemories;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.l2jmobius.gameserver.enums.QuestSound;
|
||||
import com.l2jmobius.gameserver.enums.QuestType;
|
||||
import com.l2jmobius.gameserver.model.Location;
|
||||
import com.l2jmobius.gameserver.model.actor.Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
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 quests.Q00561_BasicMissionHarnakUndergroundRuins.Q00561_BasicMissionHarnakUndergroundRuins;
|
||||
|
||||
/**
|
||||
* Regular Barrier Maintenance (529)
|
||||
* @URL https://l2wiki.com/Regular_Barrier_Maintenance
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00580_BeyondTheMemories extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int START_NPC = 33344; // Giant's Minion Hadel
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
22931, // Krakia Bathus
|
||||
22932, // Krakia Carcass
|
||||
22933, // Krakia Lotus
|
||||
22934, // Rakzan
|
||||
22935, // Weiss Khan
|
||||
22936, // Weiss Ele
|
||||
22937, // Bamonti
|
||||
22938, // Seknus
|
||||
23349, // Noctum
|
||||
22939, // Demonic Bathus
|
||||
22940, // Demonic Carcass
|
||||
22941, // Demonic Lotus
|
||||
22942, // Demonic Rakzan
|
||||
22943, // Demonic Weiss Khan
|
||||
22944, // Demonic Weiss Ele
|
||||
22945, // Demonic Bamonti
|
||||
22946, // Demonic Seknus
|
||||
23350, // Demonic Noctum
|
||||
};
|
||||
// Misc
|
||||
private static final int KILLING_NPCSTRING_ID = NpcStringId.DEFEAT_MONSTERS_IN_THE_UNDERGROUND_RUINS.getId();
|
||||
private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY
|
||||
private static final boolean PARTY_QUEST = true;
|
||||
private static final int KILLING_COND = 1;
|
||||
private static final int FINISH_COND = 2;
|
||||
private static final int MIN_LEVEL = 85;
|
||||
// Location
|
||||
private static final Location HARNAK_UNDERGROUND_RUINS = new Location(-114700, 147909, -7715);
|
||||
// Rewards
|
||||
private static final int EXP = 231860550;
|
||||
private static final int SP = 231840;
|
||||
private static final int ADENA_AMOUNT = 505080;
|
||||
|
||||
public Q00580_BeyondTheMemories()
|
||||
{
|
||||
super(580);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addKillId(MONSTERS);
|
||||
addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
|
||||
addCondStartedQuest(Q00561_BasicMissionHarnakUndergroundRuins.class.getSimpleName(), "33344-01.html");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "33344-02.htm":
|
||||
case "33344-03.htm":
|
||||
{
|
||||
return event;
|
||||
}
|
||||
case "33344-04.htm":
|
||||
{
|
||||
if (qs.isCreated())
|
||||
{
|
||||
qs.startQuest();
|
||||
qs.setCond(KILLING_COND);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "gotoharnak":
|
||||
{
|
||||
// Teleport to Harnak Underground Ruins Inside
|
||||
player.teleToLocation(HARNAK_UNDERGROUND_RUINS);
|
||||
break;
|
||||
}
|
||||
case "33344-06.html":
|
||||
{
|
||||
if (qs.isCond(FINISH_COND))
|
||||
{
|
||||
// Reward.
|
||||
addExpAndSp(player, EXP, SP);
|
||||
giveAdena(player, ADENA_AMOUNT, false);
|
||||
qs.exitQuest(QUEST_TYPE, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return event;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
|
||||
if (npc.getId() == START_NPC)
|
||||
{
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = "33344-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (qs.isCond(KILLING_COND))
|
||||
{
|
||||
htmltext = "33344-04.htm";
|
||||
}
|
||||
else if (qs.isCond(FINISH_COND))
|
||||
{
|
||||
htmltext = "33344-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
if (qs.isNowAvailable())
|
||||
{
|
||||
qs.setState(State.CREATED);
|
||||
htmltext = "33344-01.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player, QUEST_TYPE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false);
|
||||
if ((qs != null) && qs.isCond(KILLING_COND))
|
||||
{
|
||||
final int killedGhosts = qs.getInt("AncientGhosts") + 1;
|
||||
qs.set("AncientGhosts", killedGhosts);
|
||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
|
||||
if (killedGhosts >= 200)
|
||||
{
|
||||
qs.setCond(FINISH_COND, true);
|
||||
}
|
||||
sendNpcLogList(killer);
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCond(KILLING_COND))
|
||||
{
|
||||
final Set<NpcLogListHolder> holder = new HashSet<>();
|
||||
holder.add(new NpcLogListHolder(KILLING_NPCSTRING_ID, true, qs.getInt("AncientGhosts")));
|
||||
return holder;
|
||||
}
|
||||
return super.getNpcLogList(player);
|
||||
}
|
||||
}
|
@@ -114,9 +114,11 @@ import quests.Q00511_AwlUnderFoot.Q00511_AwlUnderFoot;
|
||||
import quests.Q00512_BladeUnderFoot.Q00512_BladeUnderFoot;
|
||||
import quests.Q00551_OlympiadStarter.Q00551_OlympiadStarter;
|
||||
import quests.Q00553_OlympiadUndefeated.Q00553_OlympiadUndefeated;
|
||||
import quests.Q00561_BasicMissionHarnakUndergroundRuins.Q00561_BasicMissionHarnakUndergroundRuins;
|
||||
import quests.Q00562_BasicMissionAltarOfEvil.Q00562_BasicMissionAltarOfEvil;
|
||||
import quests.Q00563_BasicMissionBloodySwampland.Q00563_BasicMissionBloodySwampland;
|
||||
import quests.Q00564_BasicMissionKartiasLabyrinthSolo.Q00564_BasicMissionKartiasLabyrinthSolo;
|
||||
import quests.Q00580_BeyondTheMemories.Q00580_BeyondTheMemories;
|
||||
import quests.Q00581_ThePurificationRitual.Q00581_ThePurificationRitual;
|
||||
import quests.Q00582_WashBloodWithBlood.Q00582_WashBloodWithBlood;
|
||||
import quests.Q00583_MeaningOfSurvival.Q00583_MeaningOfSurvival;
|
||||
@@ -514,7 +516,7 @@ public class QuestMasterHandler
|
||||
Q00551_OlympiadStarter.class,
|
||||
Q00553_OlympiadUndefeated.class,
|
||||
Q00560_HowToOvercomeFear.class, // FIXME: Custom.
|
||||
Q00561_BasicMissionHarnakUndergroundRuins.class, // TODO: Not done.
|
||||
Q00561_BasicMissionHarnakUndergroundRuins.class,
|
||||
Q00562_BasicMissionAltarOfEvil.class,
|
||||
Q00563_BasicMissionBloodySwampland.class,
|
||||
Q00564_BasicMissionKartiasLabyrinthSolo.class,
|
||||
@@ -532,7 +534,7 @@ public class QuestMasterHandler
|
||||
Q00577_BasicMissionSilentValley.class, // TODO: Not done.
|
||||
Q00578_BasicMissionCemetery.class, // TODO: Not done.
|
||||
Q00579_BasicMissionBlazingSwamp.class, // TODO: Not done.
|
||||
Q00580_BeyondTheMemories.class, // TODO: Not done.
|
||||
Q00580_BeyondTheMemories.class,
|
||||
Q00581_ThePurificationRitual.class,
|
||||
Q00582_WashBloodWithBlood.class,
|
||||
Q00583_MeaningOfSurvival.class,
|
||||
|
@@ -1,36 +0,0 @@
|
||||
/*
|
||||
* 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.not_done;
|
||||
|
||||
import com.l2jmobius.Config;
|
||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00561_BasicMissionHarnakUndergroundRuins extends Quest
|
||||
{
|
||||
private static final int START_NPC = 34413;
|
||||
|
||||
public Q00561_BasicMissionHarnakUndergroundRuins()
|
||||
{
|
||||
super(561);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
|
||||
}
|
||||
}
|
@@ -1,36 +0,0 @@
|
||||
/*
|
||||
* 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.not_done;
|
||||
|
||||
import com.l2jmobius.Config;
|
||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00580_BeyondTheMemories extends Quest
|
||||
{
|
||||
private static final int START_NPC = 33344;
|
||||
|
||||
public Q00580_BeyondTheMemories()
|
||||
{
|
||||
super(580);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user