Addition of quests 577, 589 and 590.
Contributed by Dmitri.
This commit is contained in:
parent
dfddf3f519
commit
bf65b45c9e
@ -10,7 +10,6 @@
|
||||
573 Special Mission: Proof of Strength (Field Raid)
|
||||
575 Special Mission: Fortuna
|
||||
576 Special Mission: Defeat Spezion
|
||||
577 Basic Mission: Silent Valley
|
||||
585 Can't Go Against the Time
|
||||
586 Mutated Creatures
|
||||
591 Great Ambitions
|
||||
|
@ -0,0 +1,4 @@
|
||||
<html><body>Penny:<br>
|
||||
In order to take on this mission, you must first build more trust with us.<br>
|
||||
<font color="LEVEL">(Only characters with faction level 5 or above with the Blackbird Clan may undertake this quest.)</font><br>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>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 Q00577_BasicMissionSilentValley 34413-02.htm">"Sure, no problem!"</button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Penny:<br>
|
||||
Herphah wants you to do some missions, and I'll chose an appropriate mission depending on your relationship with us at the Adventure Guild.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley 34413-03.htm">"Go on."</button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Penny:<br>
|
||||
Your mission is to assist with the task at the Altar of Evil. If successful, our Adventure Guild will give you additional rewards on top of the mission payment and your relationship with our faction will grow even stronger.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley 34413-04.htm">"Alright."</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Penny:<br>
|
||||
You've already leamed everything you need to know about the mission. By that I mean, how to go to the Altar of Evil. You should be able to start the mission right away without further explanation.<br>
|
||||
But if you want to listen to the explanation again, I'd be happy to tell you.
|
||||
</body></html>
|
@ -0,0 +1,3 @@
|
||||
<html><body>Penny:<br>
|
||||
Good choice. Now, go to <font color="LEVEL">Black Wizard Lapathia</font> at the <font color="LEVEL">Altar of Evil</font> and do the mission that she gives you. When the mission is done, come back to me.
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Penny:<br>
|
||||
Welcome back! So, did you do a good job?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley 34413-07.html">"Yes, I did."</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<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>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley 34413-08.html">"Yes, I did."</Button>
|
||||
</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>Corzet:<br>
|
||||
I asked the Adventure Guild to send an adventurer but didn't expect they would send you. I'd like to see how good you are.<br>
|
||||
<font color="LEVEL">(To do "Basic Mission: Isle of Souls," you must do "Uncover the Secret" and "More Aggressive Operation" through Black Wizard Lapathia.)</font>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley 34424-02.html">"Go on."</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Corzet:<br>
|
||||
You completed all the missions I gave you, meaning that you also completed those of the Adventure Guildsman. Are you going back to the Town of Aden? How?<br>
|
||||
Don't tell me you're going to walk all the way up there. I know a better way.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley 34424-03.html">"Go on."</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Corzet:<br>
|
||||
When setting out for a joumey, veteran adventurers always pack <font color="LEVEL">Scrolls of Escape</font>, it teleports the user immediately to the closest village or to the check point.<br>
|
||||
If you have these useful items, you can move easily after hunting or when you are far away from the village. Since you've been a great help to me, I'll give you the scroll that can teleport you directly to the Town of Aden.
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Corzet:<br>
|
||||
You can use the scroll now or later. Just don't forget to <font color="LEVEL">pack enough Scrolls of Escape once you retum to town</font>.<br>
|
||||
You can easily buy Scrolls of Escape at stores. Be safe until we meet again.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley 34424-05.html">"Go on."</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Corzet:<br>
|
||||
You completed all the missions I gave you, meaning that you also completed those of the Adventure Guildsman. Are you going back to the Town of Aden? How?<br>
|
||||
Don't tell me you're going to walk all the way up there. I know a better way.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley usescroll">"Go on Aden."</Button>
|
||||
</body></html>
|
@ -0,0 +1,214 @@
|
||||
/*
|
||||
* 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.Q00577_BasicMissionSilentValley;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.Faction;
|
||||
import org.l2jmobius.gameserver.enums.QuestType;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* Basic Mission: Silent Valley (577)
|
||||
* @URL https://l2wiki.com/Basic_Mission:_Silent_Valley
|
||||
* @author Dmitri
|
||||
*/
|
||||
public class Q00577_BasicMissionSilentValley extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int PENNY = 34413;
|
||||
private static final int CORZET = 34424;
|
||||
// Rewards
|
||||
private static final int SCROLL_OF_ESCAPE_TOWN_OF_ADEN = 48413;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final int MAX_LEVEL = 97;
|
||||
// Location
|
||||
private static final Location TOWN_OF_ADEN = new Location(146632, 26760, -2213);
|
||||
|
||||
public Q00577_BasicMissionSilentValley()
|
||||
{
|
||||
super(577);
|
||||
addStartNpc(PENNY);
|
||||
addTalkId(PENNY, CORZET);
|
||||
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-07.html":
|
||||
case "33780-02.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34413-04.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "33780-03.html": // CORZET
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "33780-05.html": // CORZET
|
||||
{
|
||||
giveItems(player, SCROLL_OF_ESCAPE_TOWN_OF_ADEN, 1);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "usescroll":
|
||||
{
|
||||
// TODO: force player to use item SCROLL_OF_ESCAPE_TOWN_OF_ADEN
|
||||
player.teleToLocation(TOWN_OF_ADEN); // Town of Aden near Npc Penny - temp solution
|
||||
takeItems(player, SCROLL_OF_ESCAPE_TOWN_OF_ADEN, -1); // remove SOE - temp solution
|
||||
break;
|
||||
}
|
||||
case "34413-08.html":
|
||||
{
|
||||
final StringBuilder str = new StringBuilder("00");
|
||||
checkQuestCompleted(player, str); // Initialize the array with all quests completed
|
||||
|
||||
if (str.indexOf("11") != -1) // verify if all quests completed
|
||||
{
|
||||
addExpAndSp(player, 1793099880L, 1793070);
|
||||
addFactionPoints(player, Faction.ADVENTURE_GUILD, 200); // add FP points to ADVENTURE_GUILD Faction
|
||||
qs.exitQuest(QuestType.DAILY, true);
|
||||
htmltext = event;
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "34413-05.html";
|
||||
}
|
||||
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) && (qs.getCond() <= 2))
|
||||
{
|
||||
htmltext = "34413-05.html";
|
||||
}
|
||||
else if (qs.getCond() == 3)
|
||||
{
|
||||
htmltext = "34413-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CORZET:
|
||||
{
|
||||
if (qs.getCond() == 1)
|
||||
{
|
||||
htmltext = "33780-01.html";
|
||||
}
|
||||
else if (qs.getCond() == 2)
|
||||
{
|
||||
final StringBuilder str = new StringBuilder("00");
|
||||
checkQuestCompleted(player, str); // Initialize the array with all quests completed
|
||||
if (str.indexOf("11") != -1) // verify if all quests completed
|
||||
{
|
||||
qs.setCond(3, true);
|
||||
htmltext = "33780-04.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "33780-03.html";
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
private StringBuilder checkQuestCompleted(PlayerInstance player, StringBuilder string)
|
||||
{
|
||||
int index = 0;
|
||||
final char ch = '1';
|
||||
final QuestState st1 = player.getQuestState("Q00589_ASecretChange");
|
||||
if ((st1 != null) && st1.isCompleted())
|
||||
{
|
||||
index = 0;
|
||||
string.setCharAt(index, ch);
|
||||
}
|
||||
final QuestState st2 = player.getQuestState("Q00590_ToEachTheirOwn");
|
||||
if ((st2 != null) && st2.isCompleted())
|
||||
{
|
||||
index = 1;
|
||||
string.setCharAt(index, ch);
|
||||
}
|
||||
return string;
|
||||
}
|
||||
}
|
@ -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.95-97.)
|
||||
</body></html>
|
3
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-00.htm
vendored
Normal file
3
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-00.htm
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Corzet:<br>
|
||||
Thank you for helping me! Do you think you could come by tomorrow? There's plenty of researching to be done!
|
||||
</body></html>
|
4
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-01.htm
vendored
Normal file
4
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-01.htm
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Corzet:<br>
|
||||
I have to ask you something. Have you seen the huge volume hovering over Giran? Do you know what it is?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00589_ASecretChange 34424-02.htm">Ask what it is about</Button>
|
||||
</body></html>
|
4
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-02.htm
vendored
Normal file
4
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-02.htm
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Corzet:<br>
|
||||
We faced a serious problem... I didn't believe the rumors about the Superion. But they turned out to be successors. You know, only two Emperor Helios and Empress Ramona can control the Superion. Superion is a very serious threat. I instruct you to go to him and scout the situation.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00589_ASecretChange 34424-03.htm">"What is the problem"</Button>
|
||||
</body></html>
|
5
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-03.htm
vendored
Normal file
5
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-03.htm
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Corzet:<br>
|
||||
This is Superion - a fortress soaring in the sky. It was created by the Emperor of the Giants Helios in ancient times, when the Giants were masters of this world.<br>
|
||||
This is a powerful weapon, a source of tremendous power. Who would have thought that it would appear again these days ...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00589_ASecretChange 34424-04.htm">Nod</Button>
|
||||
</body></html>
|
6
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-04.htm
vendored
Normal file
6
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-04.htm
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Corzet:<br>
|
||||
Good. You can always rely on Meldin.<br>
|
||||
Well, it's time for you to go to the Superion. I have already sent my subordinates there to study the situation.<br>
|
||||
I would like to be there myself, but I can't risk the mission, for the success of which many lost their lives.<br>
|
||||
Head to the Superion to find Histi.
|
||||
</body></html>
|
3
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-05.htm
vendored
Normal file
3
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-05.htm
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Corzet:<br>
|
||||
Have you finished the training? Then I will send you to the Superion. Meet there with Histie.
|
||||
</body></html>
|
5
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-06.htm
vendored
Normal file
5
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-06.htm
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Corzet:<br>
|
||||
This is Superion - a fortress soaring in the sky. It was created by the Emperor of the Giants Helios in ancient times, when the Giants were masters of this world.<br>
|
||||
This is a powerful weapon, a source of tremendous power. Who would have thought that it would appear again these days ...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00589_ASecretChange 34424-06.html">Nod</Button>
|
||||
</body></html>
|
6
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-07.htm
vendored
Normal file
6
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-07.htm
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Corzet:<br>
|
||||
Good. You can always rely on Meldin.<br>
|
||||
Well, it's time for you to go to the Superion. I have already sent my subordinates there to study the situation.<br>
|
||||
I would like to be there myself, but I can't risk the mission, for the success of which many lost their lives.<br>
|
||||
Head to the Superion to find Histi.
|
||||
</body></html>
|
@ -0,0 +1,150 @@
|
||||
/*
|
||||
* 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.Q00589_ASecretChange;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.QuestType;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* A Secret Change (589)
|
||||
* @URL https://l2wiki.com/A_Secret_Change
|
||||
* @author Dmitri
|
||||
*/
|
||||
public class Q00589_ASecretChange extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int CORZET = 34424;
|
||||
// Monsters
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
24200,
|
||||
24201,
|
||||
24202,
|
||||
24203,
|
||||
};
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final int MAX_LEVEL = 105;
|
||||
// Items
|
||||
private static final int TRACE_OF_EVIL = 48533; // Quest item: Trace of Evil
|
||||
|
||||
public Q00589_ASecretChange()
|
||||
{
|
||||
super(589);
|
||||
addStartNpc(CORZET);
|
||||
addTalkId(CORZET);
|
||||
addKillId(MONSTERS);
|
||||
registerQuestItems(TRACE_OF_EVIL);
|
||||
addCondLevel(MIN_LEVEL, MAX_LEVEL, "nolevel.html");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
String htmltext = null;
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "34424-03.htm":
|
||||
case "34424-02.htm":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34424-04.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34424-07.html":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
giveAdena(player, 680100, true);
|
||||
addExpAndSp(player, 1793099880L, 1793070);
|
||||
qs.exitQuest(QuestType.DAILY, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
if (npc.getId() == CORZET)
|
||||
{
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = "34424-01.htm";
|
||||
qs.isStarted();
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "34424-05.html";
|
||||
}
|
||||
else if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "34424-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
if (!qs.isNowAvailable())
|
||||
{
|
||||
htmltext = "34424-00.html";
|
||||
break;
|
||||
}
|
||||
qs.setState(State.CREATED);
|
||||
// fallthrough
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
|
||||
if ((qs != null) && qs.isCond(1) && giveItemRandomly(killer, TRACE_OF_EVIL, 1, 250, 1, true))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
}
|
4
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/nolevel.html
vendored
Normal file
4
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00589_ASecretChange/nolevel.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Corzet:<br>
|
||||
I don't understand why someone like you is interested in this mission?<br>
|
||||
(Only characters above Lv.95-105.)
|
||||
</body></html>
|
3
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-00.htm
vendored
Normal file
3
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-00.htm
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Corzet:<br>
|
||||
Thank you for helping me! Do you think you could come by tomorrow? There's plenty of researching to be done!
|
||||
</body></html>
|
4
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-01.htm
vendored
Normal file
4
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-01.htm
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Corzet:<br>
|
||||
I have to ask you something. Have you seen the huge volume hovering over Giran? Do you know what it is?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00590_ToEachTheirOwn 34424-02.htm">Ask what it is about</Button>
|
||||
</body></html>
|
4
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-02.htm
vendored
Normal file
4
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-02.htm
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Corzet:<br>
|
||||
We faced a serious problem... I didn't believe the rumors about the Superion. But they turned out to be successors. You know, only two Emperor Helios and Empress Ramona can control the Superion. Superion is a very serious threat. I instruct you to go to him and scout the situation.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00590_ToEachTheirOwn 34424-03.htm">"What is the problem"</Button>
|
||||
</body></html>
|
5
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-03.htm
vendored
Normal file
5
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-03.htm
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Corzet:<br>
|
||||
This is Superion - a fortress soaring in the sky. It was created by the Emperor of the Giants Helios in ancient times, when the Giants were masters of this world.<br>
|
||||
This is a powerful weapon, a source of tremendous power. Who would have thought that it would appear again these days ...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00590_ToEachTheirOwn 34424-04.htm">Nod</Button>
|
||||
</body></html>
|
6
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-04.htm
vendored
Normal file
6
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-04.htm
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Corzet:<br>
|
||||
Good. You can always rely on Meldin.<br>
|
||||
Well, it's time for you to go to the Superion. I have already sent my subordinates there to study the situation.<br>
|
||||
I would like to be there myself, but I can't risk the mission, for the success of which many lost their lives.<br>
|
||||
Head to the Superion to find Histi.
|
||||
</body></html>
|
3
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-05.htm
vendored
Normal file
3
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-05.htm
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Corzet:<br>
|
||||
Have you finished the training? Then I will send you to the Superion. Meet there with Histie.
|
||||
</body></html>
|
5
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-06.htm
vendored
Normal file
5
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-06.htm
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Corzet:<br>
|
||||
This is Superion - a fortress soaring in the sky. It was created by the Emperor of the Giants Helios in ancient times, when the Giants were masters of this world.<br>
|
||||
This is a powerful weapon, a source of tremendous power. Who would have thought that it would appear again these days ...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00590_ToEachTheirOwn 34424-06.html">Nod</Button>
|
||||
</body></html>
|
6
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-07.htm
vendored
Normal file
6
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-07.htm
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Corzet:<br>
|
||||
Good. You can always rely on Meldin.<br>
|
||||
Well, it's time for you to go to the Superion. I have already sent my subordinates there to study the situation.<br>
|
||||
I would like to be there myself, but I can't risk the mission, for the success of which many lost their lives.<br>
|
||||
Head to the Superion to find Histi.
|
||||
</body></html>
|
@ -0,0 +1,149 @@
|
||||
/*
|
||||
* 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.Q00590_ToEachTheirOwn;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.QuestType;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* To Each Their Own (590)
|
||||
* @URL https://l2wiki.com/To_Each_Their_Own
|
||||
* @author Dmitri
|
||||
*/
|
||||
public class Q00590_ToEachTheirOwn extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int CORZET = 34424;
|
||||
// Monsters
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
24204,
|
||||
24205,
|
||||
24206,
|
||||
};
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final int MAX_LEVEL = 105;
|
||||
// Items
|
||||
private static final int DUST_OF_DESTROYED_DEMON = 48534; // Quest item: Dust of Destroyed Demon
|
||||
|
||||
public Q00590_ToEachTheirOwn()
|
||||
{
|
||||
super(589);
|
||||
addStartNpc(CORZET);
|
||||
addTalkId(CORZET);
|
||||
addKillId(MONSTERS);
|
||||
registerQuestItems(DUST_OF_DESTROYED_DEMON);
|
||||
addCondLevel(MIN_LEVEL, MAX_LEVEL, "nolevel.html");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
String htmltext = null;
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "34424-03.htm":
|
||||
case "34424-02.htm":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34424-04.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34424-07.html":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
giveAdena(player, 680100, true);
|
||||
addExpAndSp(player, 1793099880L, 1793070);
|
||||
qs.exitQuest(QuestType.DAILY, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
if (npc.getId() == CORZET)
|
||||
{
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = "34424-01.htm";
|
||||
qs.isStarted();
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "34424-05.html";
|
||||
}
|
||||
else if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "34424-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
if (!qs.isNowAvailable())
|
||||
{
|
||||
htmltext = "34424-00.html";
|
||||
break;
|
||||
}
|
||||
qs.setState(State.CREATED);
|
||||
// fallthrough
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
|
||||
if ((qs != null) && qs.isCond(1) && giveItemRandomly(killer, DUST_OF_DESTROYED_DEMON, 1, 50, 1, true))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
}
|
4
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/nolevel.html
vendored
Normal file
4
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/nolevel.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Corzet:<br>
|
||||
I don't understand why someone like you is interested in this mission?<br>
|
||||
(Only characters above Lv.95-105.)
|
||||
</body></html>
|
@ -125,6 +125,7 @@ import quests.Q00567_BasicMissionIsleOfSouls.Q00567_BasicMissionIsleOfSouls;
|
||||
import quests.Q00568_SpecialMissionNornilsCave.Q00568_SpecialMissionNornilsCave;
|
||||
import quests.Q00569_BasicMissionSealOfShilen.Q00569_BasicMissionSealOfShilen;
|
||||
import quests.Q00574_SpecialMissionNornilsGarden.Q00574_SpecialMissionNornilsGarden;
|
||||
import quests.Q00577_BasicMissionSilentValley.Q00577_BasicMissionSilentValley;
|
||||
import quests.Q00580_BeyondTheMemories.Q00580_BeyondTheMemories;
|
||||
import quests.Q00581_ThePurificationRitual.Q00581_ThePurificationRitual;
|
||||
import quests.Q00582_WashBloodWithBlood.Q00582_WashBloodWithBlood;
|
||||
@ -132,6 +133,8 @@ import quests.Q00583_MeaningOfSurvival.Q00583_MeaningOfSurvival;
|
||||
import quests.Q00584_NeverSayGoodBye.Q00584_NeverSayGoodBye;
|
||||
import quests.Q00587_MoreAggressiveOperation.Q00587_MoreAggressiveOperation;
|
||||
import quests.Q00588_HeadOnCrash.Q00588_HeadOnCrash;
|
||||
import quests.Q00589_ASecretChange.Q00589_ASecretChange;
|
||||
import quests.Q00590_ToEachTheirOwn.Q00590_ToEachTheirOwn;
|
||||
import quests.Q00600_KeyToTheRefiningProcess.Q00600_KeyToTheRefiningProcess;
|
||||
import quests.Q00617_GatherTheFlames.Q00617_GatherTheFlames;
|
||||
import quests.Q00618_IntoTheFlame.Q00618_IntoTheFlame;
|
||||
@ -466,9 +469,102 @@ import quests.Q10856_SuperionAppears.Q10856_SuperionAppears;
|
||||
import quests.Q10857_SecretTeleport.Q10857_SecretTeleport;
|
||||
import quests.Q10891_AtANewPlace.Q10891_AtANewPlace;
|
||||
import quests.Q10892_RevengeOneStepAtATime.Q10892_RevengeOneStepAtATime;
|
||||
import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange;
|
||||
import quests.custom.Q00590_ToEachTheirOwn.Q00590_ToEachTheirOwn;
|
||||
import quests.not_done.*;
|
||||
import quests.not_done.Q00504_CompetitionForTheBanditStronghold;
|
||||
import quests.not_done.Q00529_RegularBarrierMaintenance;
|
||||
import quests.not_done.Q00570_SpecialMissionKartiasLabyrinthParty;
|
||||
import quests.not_done.Q00571_SpecialMissionProofOfUnityFieldRaid;
|
||||
import quests.not_done.Q00572_SpecialMissionProofOfCourageFieldRaid;
|
||||
import quests.not_done.Q00573_SpecialMissionProofOfStrengthFieldRaid;
|
||||
import quests.not_done.Q00575_SpecialMissionFortuna;
|
||||
import quests.not_done.Q00576_SpecialMissionDefeatSpezion;
|
||||
import quests.not_done.Q00585_CantGoAgainstTheTime;
|
||||
import quests.not_done.Q00586_MutatedCreatures;
|
||||
import quests.not_done.Q00591_GreatAmbitions;
|
||||
import quests.not_done.Q00599_DemonsAndDimensionalEnergy;
|
||||
import quests.not_done.Q00655_AGrandPlanForTamingWildBeasts;
|
||||
import quests.not_done.Q00667_CoveringShilensEyes;
|
||||
import quests.not_done.Q00744_TheAlligatorHunterReturns;
|
||||
import quests.not_done.Q00745_TheOutlawsAreIncoming;
|
||||
import quests.not_done.Q00747_DefendingTheForsakenPlains;
|
||||
import quests.not_done.Q00748_EndlessRevenge;
|
||||
import quests.not_done.Q00749_TiesWithTheGuardians;
|
||||
import quests.not_done.Q00750_SevenFlowers;
|
||||
import quests.not_done.Q00759_TheDwarvenNightmareContinues;
|
||||
import quests.not_done.Q00773_ToCalmTheFlood;
|
||||
import quests.not_done.Q00774_DreamingOfPeace;
|
||||
import quests.not_done.Q00780_UtilizeTheDarknessSeedOfInfinity;
|
||||
import quests.not_done.Q00781_UtilizeTheDarknessSeedOfAnnihilation;
|
||||
import quests.not_done.Q00782_UtilizeTheDarknessSeedOfHellfire;
|
||||
import quests.not_done.Q00789_WaitingForPaagrio;
|
||||
import quests.not_done.Q00824_AttackTheCommandPost;
|
||||
import quests.not_done.Q00836_RequestFromTheBlackbirdClan;
|
||||
import quests.not_done.Q00837_RequestFromTheGiantTrackers;
|
||||
import quests.not_done.Q00838_RequestFromTheMotherTreeGuardians;
|
||||
import quests.not_done.Q00839_RequestFromTheUnworldlyVisitors;
|
||||
import quests.not_done.Q00840_RequestFromTheKingdomsRoyalGuard;
|
||||
import quests.not_done.Q00841_ContaminationContainment;
|
||||
import quests.not_done.Q00843_GiantEvolutionControl;
|
||||
import quests.not_done.Q00846_BuildingUpStrength;
|
||||
import quests.not_done.Q00929_SeekerRescue;
|
||||
import quests.not_done.Q00930_DisparagingThePhantoms;
|
||||
import quests.not_done.Q00985_AdventureGuildsSpecialRequestLv1;
|
||||
import quests.not_done.Q00986_AdventureGuildsSpecialRequestLv2;
|
||||
import quests.not_done.Q00987_AdventureGuildsSpecialRequestLv3;
|
||||
import quests.not_done.Q00988_AdventureGuildsSpecialRequestLv4;
|
||||
import quests.not_done.Q00989_AdventureGuildsSpecialRequestLv5;
|
||||
import quests.not_done.Q10298_WastelandQueen;
|
||||
import quests.not_done.Q10355_BlacksmithsSoul1;
|
||||
import quests.not_done.Q10356_BlacksmithsSoul2;
|
||||
import quests.not_done.Q10373_ExploringTheDimensionSealingTheDimension;
|
||||
import quests.not_done.Q10418_TheImmortalPirateKing;
|
||||
import quests.not_done.Q10457_KefensisIllusion;
|
||||
import quests.not_done.Q10506_DianasRequest;
|
||||
import quests.not_done.Q10529_IvoryTowersResearchSeaOfSporesJournal;
|
||||
import quests.not_done.Q10533_OrfensAmbition;
|
||||
import quests.not_done.Q10535_BlacksmithsSoul3;
|
||||
import quests.not_done.Q10552_ChallengeBalthusKnight;
|
||||
import quests.not_done.Q10553_WhatMattersMoreThanAbility;
|
||||
import quests.not_done.Q10554_GiftForYou;
|
||||
import quests.not_done.Q10555_ChargeAtAntharas;
|
||||
import quests.not_done.Q10556_ForgottenPowerStartOfFate;
|
||||
import quests.not_done.Q10557_NewPowerWindsOfFate;
|
||||
import quests.not_done.Q10558_HiddenInChaos;
|
||||
import quests.not_done.Q10559_BeforeTheGuide;
|
||||
import quests.not_done.Q10563_ControlOfPower;
|
||||
import quests.not_done.Q10564_ProveProgress;
|
||||
import quests.not_done.Q10565_NothingIsImpossible;
|
||||
import quests.not_done.Q10567_SpecialMissionNornilsGarden;
|
||||
import quests.not_done.Q10570_HurrahForKamaelsIndependence;
|
||||
import quests.not_done.Q10572_ToExpelTheEmbryosForces;
|
||||
import quests.not_done.Q10574_SpecialMissionFortuna;
|
||||
import quests.not_done.Q10580_SpecialMissionDefeatSpezion;
|
||||
import quests.not_done.Q10594_FergasonsScheme;
|
||||
import quests.not_done.Q10595_TheDimensionalWarpPart8;
|
||||
import quests.not_done.Q10596_TheDimensionalWarpPart9;
|
||||
import quests.not_done.Q10748_MysteriousSuggestion1;
|
||||
import quests.not_done.Q10749_MysteriousSuggestion2;
|
||||
import quests.not_done.Q10845_BloodyBattleRescueTheSmiths;
|
||||
import quests.not_done.Q10848_TrialsBeforeTheBattle;
|
||||
import quests.not_done.Q10853_ToWeakenTheGiants;
|
||||
import quests.not_done.Q10854_ToSeizeTheFortress;
|
||||
import quests.not_done.Q10858_QueenRamonaControllerOfTheVessel;
|
||||
import quests.not_done.Q10859_OwnTheEarthAndTheHeavens;
|
||||
import quests.not_done.Q10873_ExaltedReachingAnotherLevel;
|
||||
import quests.not_done.Q10874_AgainstTheNewEnemy;
|
||||
import quests.not_done.Q10875_ForReputation;
|
||||
import quests.not_done.Q10876_LeadersGrace;
|
||||
import quests.not_done.Q10877_BreakThroughCrisis;
|
||||
import quests.not_done.Q10879_ExaltedGuideToPower;
|
||||
import quests.not_done.Q10880_TheLastOneStanding;
|
||||
import quests.not_done.Q10881_ForThePride;
|
||||
import quests.not_done.Q10882_VictoryCollection;
|
||||
import quests.not_done.Q10883_ImmortalHonor;
|
||||
import quests.not_done.Q10886_SaviorsPathSearchTheRefinery;
|
||||
import quests.not_done.Q10887_SaviorsPathDemonsAndAtelia;
|
||||
import quests.not_done.Q10888_SaviorsPathDefeatTheEmbryo;
|
||||
import quests.not_done.Q10889_SaviorsPathFallenEmperorsThrone;
|
||||
import quests.not_done.Q10890_SaviorsPathFallOfEtina;
|
||||
import quests.not_done.Q10893_EndOfTwistedFate;
|
||||
|
||||
/**
|
||||
* @author NosBit
|
||||
@ -593,7 +689,7 @@ public class QuestMasterHandler
|
||||
Q00574_SpecialMissionNornilsGarden.class,
|
||||
Q00575_SpecialMissionFortuna.class, // TODO: Not done.
|
||||
Q00576_SpecialMissionDefeatSpezion.class, // TODO: Not done.
|
||||
Q00577_BasicMissionSilentValley.class, // TODO: Not done.
|
||||
Q00577_BasicMissionSilentValley.class,
|
||||
Q00580_BeyondTheMemories.class,
|
||||
Q00581_ThePurificationRitual.class,
|
||||
Q00582_WashBloodWithBlood.class,
|
||||
@ -603,8 +699,8 @@ public class QuestMasterHandler
|
||||
Q00586_MutatedCreatures.class, // TODO: Not done.
|
||||
Q00587_MoreAggressiveOperation.class,
|
||||
Q00588_HeadOnCrash.class,
|
||||
Q00589_ASecretChange.class, // FIXME: Custom.
|
||||
Q00590_ToEachTheirOwn.class, // FIXME: Custom.
|
||||
Q00589_ASecretChange.class,
|
||||
Q00590_ToEachTheirOwn.class,
|
||||
Q00591_GreatAmbitions.class, // TODO: Not done.
|
||||
Q00599_DemonsAndDimensionalEnergy.class, // TODO: Not done.
|
||||
Q00600_KeyToTheRefiningProcess.class,
|
||||
|
@ -1,179 +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.custom.Q00589_ASecretChange;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.QuestType;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
|
||||
/**
|
||||
* A Secret Change (589)
|
||||
* @URL https://l2wiki.com/A_Secret_Change
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00589_ASecretChange extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int START_NPC = 34424;
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
24200,
|
||||
24201,
|
||||
24202,
|
||||
24203,
|
||||
};
|
||||
// Item
|
||||
private static final int MONSTER_DROP = 48533;
|
||||
// Misc
|
||||
private static final int REQUIRED_DROP_COUNT = 250;
|
||||
private static final int KILLING_NPCSTRING_ID = NpcStringId.LV_95_105_A_SECRET_CHANGE_IN_PROGRESS.getId();
|
||||
private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY
|
||||
private static final boolean PARTY_QUEST = false;
|
||||
private static final int KILLING_COND = 1;
|
||||
private static final int FINISH_COND = 2;
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final int MAX_LEVEL = 105;
|
||||
|
||||
public Q00589_ASecretChange()
|
||||
{
|
||||
super(589);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addKillId(MONSTERS);
|
||||
registerQuestItems(MONSTER_DROP);
|
||||
addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
|
||||
addCondMaxLevel(MAX_LEVEL, getNoQuestMsg(null));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "accept.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
break;
|
||||
}
|
||||
case "reward.html":
|
||||
{
|
||||
if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT))
|
||||
{
|
||||
takeItems(player, MONSTER_DROP, -1);
|
||||
// Reward.
|
||||
addExpAndSp(player, 1793099880, 1793070);
|
||||
giveAdena(player, 680100, false);
|
||||
qs.exitQuest(QUEST_TYPE, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
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 = "start.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (qs.isCond(KILLING_COND))
|
||||
{
|
||||
htmltext = "accept.htm";
|
||||
}
|
||||
else if (qs.isCond(FINISH_COND))
|
||||
{
|
||||
htmltext = "finish.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
if (qs.isNowAvailable())
|
||||
{
|
||||
qs.setState(State.CREATED);
|
||||
htmltext = "start.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 PlayerInstance player = qs.getPlayer();
|
||||
if (giveItemRandomly(player, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true))
|
||||
{
|
||||
qs.setCond(FINISH_COND, true);
|
||||
}
|
||||
sendNpcLogList(player);
|
||||
}
|
||||
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, (int) getQuestItemsCount(player, MONSTER_DROP)));
|
||||
return holder;
|
||||
}
|
||||
return super.getNpcLogList(player);
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
You have to hunt monsters in Silent Valley. Hunt <font color="LEVEL">Silence Warrior, Silence Slave, Silence Claw, Silence Witch</font>. You need to gather 250 <font color="LEVEL">Trace of Evil</font>.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
Have you retrieved the items I asked for?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00589_ASecretChange reward.html">"Here are your items."</Button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
Thank you for your assistance.
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
If you have time I have a mission for you.<br1>
|
||||
This area needs to be cleansed.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00589_ASecretChange accept.htm">"Say no more. I accept."</Button>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
On your way here, did you see any investigators? I hope they are okay... Ah, maybe I am not in a position to worry about others. <br>
|
||||
(This quest is for characters level 95 and higher who have completed the "A Secret Change" quest.)
|
||||
</body></html>
|
@ -1,181 +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.custom.Q00590_ToEachTheirOwn;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.QuestType;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
|
||||
import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange;
|
||||
|
||||
/**
|
||||
* To Each Their Own (590)
|
||||
* @URL https://l2wiki.com/To_Each_Their_Own
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00590_ToEachTheirOwn extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int START_NPC = 34424;
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
24204,
|
||||
24205,
|
||||
24206,
|
||||
};
|
||||
// Item
|
||||
private static final int MONSTER_DROP = 48534;
|
||||
// Misc
|
||||
private static final int REQUIRED_DROP_COUNT = 50;
|
||||
private static final int KILLING_NPCSTRING_ID = NpcStringId.LV_95_105_TO_EACH_THEIR_OWN_IN_PROGRESS.getId();
|
||||
private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY
|
||||
private static final boolean PARTY_QUEST = false;
|
||||
private static final int KILLING_COND = 1;
|
||||
private static final int FINISH_COND = 2;
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final int MAX_LEVEL = 105;
|
||||
|
||||
public Q00590_ToEachTheirOwn()
|
||||
{
|
||||
super(590);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addKillId(MONSTERS);
|
||||
registerQuestItems(MONSTER_DROP);
|
||||
addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
|
||||
addCondMaxLevel(MAX_LEVEL, getNoQuestMsg(null));
|
||||
addCondCompletedQuest(Q00589_ASecretChange.class.getSimpleName(), "34424-05.htm");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "accept.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
break;
|
||||
}
|
||||
case "reward.html":
|
||||
{
|
||||
if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT))
|
||||
{
|
||||
takeItems(player, MONSTER_DROP, -1);
|
||||
// Reward.
|
||||
addExpAndSp(player, 1793099880, 1793070);
|
||||
giveAdena(player, 680100, false);
|
||||
qs.exitQuest(QUEST_TYPE, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
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 = "start.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (qs.isCond(KILLING_COND))
|
||||
{
|
||||
htmltext = "accept.htm";
|
||||
}
|
||||
else if (qs.isCond(FINISH_COND))
|
||||
{
|
||||
htmltext = "finish.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
if (qs.isNowAvailable())
|
||||
{
|
||||
qs.setState(State.CREATED);
|
||||
htmltext = "start.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 PlayerInstance player = qs.getPlayer();
|
||||
if (giveItemRandomly(player, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true))
|
||||
{
|
||||
qs.setCond(FINISH_COND, true);
|
||||
}
|
||||
sendNpcLogList(player);
|
||||
}
|
||||
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, (int) getQuestItemsCount(player, MONSTER_DROP)));
|
||||
return holder;
|
||||
}
|
||||
return super.getNpcLogList(player);
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
You have to hunt monsters in Silent Valley. Hunt <font color="LEVEL">Silence Hannibal, Silence Preacle, Silence Phantom</font>. You need to gather 50 <font color="LEVEL">Dust of Destroyed Demon</font>.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
Have you retrieved the items I asked for?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00590_ToEachTheirOwn reward.html">"Here are your items."</Button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
Thank you for your assistance.
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
If you have time I have a mission for you.<br1>
|
||||
This area needs to be cleansed.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00590_ToEachTheirOwn accept.htm">"Say no more. I accept."</Button>
|
||||
</body></html>
|
@ -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 org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00577_BasicMissionSilentValley extends Quest
|
||||
{
|
||||
private static final int START_NPC = 34413;
|
||||
|
||||
public Q00577_BasicMissionSilentValley()
|
||||
{
|
||||
super(577);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
|
||||
}
|
||||
}
|
@ -12,7 +12,6 @@
|
||||
572 Special Mission: Proof of Courage (Field Raid)
|
||||
573 Special Mission: Proof of Strength (Field Raid)
|
||||
576 Special Mission: Defeat Spezion
|
||||
577 Basic Mission: Silent Valley
|
||||
578 Basic Mission: Cemetery
|
||||
579 Basic Mission: Blazing Swamp
|
||||
585 Can't Go Against the Time
|
||||
|
@ -0,0 +1,4 @@
|
||||
<html><body>Penny:<br>
|
||||
In order to take on this mission, you must first build more trust with us.<br>
|
||||
<font color="LEVEL">(Only characters with faction level 5 or above with the Blackbird Clan may undertake this quest.)</font><br>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>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 Q00577_BasicMissionSilentValley 34413-02.htm">"Sure, no problem!"</button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Penny:<br>
|
||||
Herphah wants you to do some missions, and I'll chose an appropriate mission depending on your relationship with us at the Adventure Guild.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley 34413-03.htm">"Go on."</button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Penny:<br>
|
||||
Your mission is to assist with the task at the Altar of Evil. If successful, our Adventure Guild will give you additional rewards on top of the mission payment and your relationship with our faction will grow even stronger.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley 34413-04.htm">"Alright."</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Penny:<br>
|
||||
You've already leamed everything you need to know about the mission. By that I mean, how to go to the Altar of Evil. You should be able to start the mission right away without further explanation.<br>
|
||||
But if you want to listen to the explanation again, I'd be happy to tell you.
|
||||
</body></html>
|
@ -0,0 +1,3 @@
|
||||
<html><body>Penny:<br>
|
||||
Good choice. Now, go to <font color="LEVEL">Black Wizard Lapathia</font> at the <font color="LEVEL">Altar of Evil</font> and do the mission that she gives you. When the mission is done, come back to me.
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Penny:<br>
|
||||
Welcome back! So, did you do a good job?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley 34413-07.html">"Yes, I did."</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<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>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley 34413-08.html">"Yes, I did."</Button>
|
||||
</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>Corzet:<br>
|
||||
I asked the Adventure Guild to send an adventurer but didn't expect they would send you. I'd like to see how good you are.<br>
|
||||
<font color="LEVEL">(To do "Basic Mission: Isle of Souls," you must do "Uncover the Secret" and "More Aggressive Operation" through Black Wizard Lapathia.)</font>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley 34424-02.html">"Go on."</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Corzet:<br>
|
||||
You completed all the missions I gave you, meaning that you also completed those of the Adventure Guildsman. Are you going back to the Town of Aden? How?<br>
|
||||
Don't tell me you're going to walk all the way up there. I know a better way.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley 34424-03.html">"Go on."</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Corzet:<br>
|
||||
When setting out for a joumey, veteran adventurers always pack <font color="LEVEL">Scrolls of Escape</font>, it teleports the user immediately to the closest village or to the check point.<br>
|
||||
If you have these useful items, you can move easily after hunting or when you are far away from the village. Since you've been a great help to me, I'll give you the scroll that can teleport you directly to the Town of Aden.
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Corzet:<br>
|
||||
You can use the scroll now or later. Just don't forget to <font color="LEVEL">pack enough Scrolls of Escape once you retum to town</font>.<br>
|
||||
You can easily buy Scrolls of Escape at stores. Be safe until we meet again.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley 34424-05.html">"Go on."</Button>
|
||||
</body></html>
|
@ -0,0 +1,5 @@
|
||||
<html><body>Corzet:<br>
|
||||
You completed all the missions I gave you, meaning that you also completed those of the Adventure Guildsman. Are you going back to the Town of Aden? How?<br>
|
||||
Don't tell me you're going to walk all the way up there. I know a better way.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00577_BasicMissionSilentValley usescroll">"Go on Aden."</Button>
|
||||
</body></html>
|
@ -0,0 +1,214 @@
|
||||
/*
|
||||
* 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.Q00577_BasicMissionSilentValley;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.Faction;
|
||||
import org.l2jmobius.gameserver.enums.QuestType;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* Basic Mission: Silent Valley (577)
|
||||
* @URL https://l2wiki.com/Basic_Mission:_Silent_Valley
|
||||
* @author Dmitri
|
||||
*/
|
||||
public class Q00577_BasicMissionSilentValley extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int PENNY = 34413;
|
||||
private static final int CORZET = 34424;
|
||||
// Rewards
|
||||
private static final int SCROLL_OF_ESCAPE_TOWN_OF_ADEN = 48413;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final int MAX_LEVEL = 97;
|
||||
// Location
|
||||
private static final Location TOWN_OF_ADEN = new Location(146632, 26760, -2213);
|
||||
|
||||
public Q00577_BasicMissionSilentValley()
|
||||
{
|
||||
super(577);
|
||||
addStartNpc(PENNY);
|
||||
addTalkId(PENNY, CORZET);
|
||||
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-07.html":
|
||||
case "33780-02.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34413-04.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "33780-03.html": // CORZET
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "33780-05.html": // CORZET
|
||||
{
|
||||
giveItems(player, SCROLL_OF_ESCAPE_TOWN_OF_ADEN, 1);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "usescroll":
|
||||
{
|
||||
// TODO: force player to use item SCROLL_OF_ESCAPE_TOWN_OF_ADEN
|
||||
player.teleToLocation(TOWN_OF_ADEN); // Town of Aden near Npc Penny - temp solution
|
||||
takeItems(player, SCROLL_OF_ESCAPE_TOWN_OF_ADEN, -1); // remove SOE - temp solution
|
||||
break;
|
||||
}
|
||||
case "34413-08.html":
|
||||
{
|
||||
final StringBuilder str = new StringBuilder("00");
|
||||
checkQuestCompleted(player, str); // Initialize the array with all quests completed
|
||||
|
||||
if (str.indexOf("11") != -1) // verify if all quests completed
|
||||
{
|
||||
addExpAndSp(player, 1793099880L, 1793070);
|
||||
addFactionPoints(player, Faction.ADVENTURE_GUILD, 200); // add FP points to ADVENTURE_GUILD Faction
|
||||
qs.exitQuest(QuestType.DAILY, true);
|
||||
htmltext = event;
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "34413-05.html";
|
||||
}
|
||||
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) && (qs.getCond() <= 2))
|
||||
{
|
||||
htmltext = "34413-05.html";
|
||||
}
|
||||
else if (qs.getCond() == 3)
|
||||
{
|
||||
htmltext = "34413-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CORZET:
|
||||
{
|
||||
if (qs.getCond() == 1)
|
||||
{
|
||||
htmltext = "33780-01.html";
|
||||
}
|
||||
else if (qs.getCond() == 2)
|
||||
{
|
||||
final StringBuilder str = new StringBuilder("00");
|
||||
checkQuestCompleted(player, str); // Initialize the array with all quests completed
|
||||
if (str.indexOf("11") != -1) // verify if all quests completed
|
||||
{
|
||||
qs.setCond(3, true);
|
||||
htmltext = "33780-04.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "33780-03.html";
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
private StringBuilder checkQuestCompleted(PlayerInstance player, StringBuilder string)
|
||||
{
|
||||
int index = 0;
|
||||
final char ch = '1';
|
||||
final QuestState st1 = player.getQuestState("Q00589_ASecretChange");
|
||||
if ((st1 != null) && st1.isCompleted())
|
||||
{
|
||||
index = 0;
|
||||
string.setCharAt(index, ch);
|
||||
}
|
||||
final QuestState st2 = player.getQuestState("Q00590_ToEachTheirOwn");
|
||||
if ((st2 != null) && st2.isCompleted())
|
||||
{
|
||||
index = 1;
|
||||
string.setCharAt(index, ch);
|
||||
}
|
||||
return string;
|
||||
}
|
||||
}
|
@ -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.95-97.)
|
||||
</body></html>
|
3
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-00.htm
vendored
Normal file
3
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-00.htm
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Corzet:<br>
|
||||
Thank you for helping me! Do you think you could come by tomorrow? There's plenty of researching to be done!
|
||||
</body></html>
|
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-01.htm
vendored
Normal file
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-01.htm
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Corzet:<br>
|
||||
I have to ask you something. Have you seen the huge volume hovering over Giran? Do you know what it is?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00589_ASecretChange 34424-02.htm">Ask what it is about</Button>
|
||||
</body></html>
|
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-02.htm
vendored
Normal file
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-02.htm
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Corzet:<br>
|
||||
We faced a serious problem... I didn't believe the rumors about the Superion. But they turned out to be successors. You know, only two Emperor Helios and Empress Ramona can control the Superion. Superion is a very serious threat. I instruct you to go to him and scout the situation.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00589_ASecretChange 34424-03.htm">"What is the problem"</Button>
|
||||
</body></html>
|
5
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-03.htm
vendored
Normal file
5
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-03.htm
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Corzet:<br>
|
||||
This is Superion - a fortress soaring in the sky. It was created by the Emperor of the Giants Helios in ancient times, when the Giants were masters of this world.<br>
|
||||
This is a powerful weapon, a source of tremendous power. Who would have thought that it would appear again these days ...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00589_ASecretChange 34424-04.htm">Nod</Button>
|
||||
</body></html>
|
6
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-04.htm
vendored
Normal file
6
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-04.htm
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Corzet:<br>
|
||||
Good. You can always rely on Meldin.<br>
|
||||
Well, it's time for you to go to the Superion. I have already sent my subordinates there to study the situation.<br>
|
||||
I would like to be there myself, but I can't risk the mission, for the success of which many lost their lives.<br>
|
||||
Head to the Superion to find Histi.
|
||||
</body></html>
|
3
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-05.htm
vendored
Normal file
3
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-05.htm
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Corzet:<br>
|
||||
Have you finished the training? Then I will send you to the Superion. Meet there with Histie.
|
||||
</body></html>
|
5
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-06.htm
vendored
Normal file
5
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-06.htm
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Corzet:<br>
|
||||
This is Superion - a fortress soaring in the sky. It was created by the Emperor of the Giants Helios in ancient times, when the Giants were masters of this world.<br>
|
||||
This is a powerful weapon, a source of tremendous power. Who would have thought that it would appear again these days ...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00589_ASecretChange 34424-06.html">Nod</Button>
|
||||
</body></html>
|
6
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-07.htm
vendored
Normal file
6
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/34424-07.htm
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Corzet:<br>
|
||||
Good. You can always rely on Meldin.<br>
|
||||
Well, it's time for you to go to the Superion. I have already sent my subordinates there to study the situation.<br>
|
||||
I would like to be there myself, but I can't risk the mission, for the success of which many lost their lives.<br>
|
||||
Head to the Superion to find Histi.
|
||||
</body></html>
|
150
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/Q00589_ASecretChange.java
vendored
Normal file
150
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/Q00589_ASecretChange.java
vendored
Normal file
@ -0,0 +1,150 @@
|
||||
/*
|
||||
* 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.Q00589_ASecretChange;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.QuestType;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* A Secret Change (589)
|
||||
* @URL https://l2wiki.com/A_Secret_Change
|
||||
* @author Dmitri
|
||||
*/
|
||||
public class Q00589_ASecretChange extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int CORZET = 34424;
|
||||
// Monsters
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
24200,
|
||||
24201,
|
||||
24202,
|
||||
24203,
|
||||
};
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final int MAX_LEVEL = 105;
|
||||
// Items
|
||||
private static final int TRACE_OF_EVIL = 48533; // Quest item: Trace of Evil
|
||||
|
||||
public Q00589_ASecretChange()
|
||||
{
|
||||
super(589);
|
||||
addStartNpc(CORZET);
|
||||
addTalkId(CORZET);
|
||||
addKillId(MONSTERS);
|
||||
registerQuestItems(TRACE_OF_EVIL);
|
||||
addCondLevel(MIN_LEVEL, MAX_LEVEL, "nolevel.html");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
String htmltext = null;
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "34424-03.htm":
|
||||
case "34424-02.htm":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34424-04.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34424-07.html":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
giveAdena(player, 680100, true);
|
||||
addExpAndSp(player, 1793099880L, 1793070);
|
||||
qs.exitQuest(QuestType.DAILY, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
if (npc.getId() == CORZET)
|
||||
{
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = "34424-01.htm";
|
||||
qs.isStarted();
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "34424-05.html";
|
||||
}
|
||||
else if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "34424-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
if (!qs.isNowAvailable())
|
||||
{
|
||||
htmltext = "34424-00.html";
|
||||
break;
|
||||
}
|
||||
qs.setState(State.CREATED);
|
||||
// fallthrough
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
|
||||
if ((qs != null) && qs.isCond(1) && giveItemRandomly(killer, TRACE_OF_EVIL, 1, 250, 1, true))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
}
|
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/nolevel.html
vendored
Normal file
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00589_ASecretChange/nolevel.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Corzet:<br>
|
||||
I don't understand why someone like you is interested in this mission?<br>
|
||||
(Only characters above Lv.95-105.)
|
||||
</body></html>
|
3
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-00.htm
vendored
Normal file
3
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-00.htm
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Corzet:<br>
|
||||
Thank you for helping me! Do you think you could come by tomorrow? There's plenty of researching to be done!
|
||||
</body></html>
|
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-01.htm
vendored
Normal file
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-01.htm
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Corzet:<br>
|
||||
I have to ask you something. Have you seen the huge volume hovering over Giran? Do you know what it is?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00590_ToEachTheirOwn 34424-02.htm">Ask what it is about</Button>
|
||||
</body></html>
|
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-02.htm
vendored
Normal file
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-02.htm
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Corzet:<br>
|
||||
We faced a serious problem... I didn't believe the rumors about the Superion. But they turned out to be successors. You know, only two Emperor Helios and Empress Ramona can control the Superion. Superion is a very serious threat. I instruct you to go to him and scout the situation.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00590_ToEachTheirOwn 34424-03.htm">"What is the problem"</Button>
|
||||
</body></html>
|
5
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-03.htm
vendored
Normal file
5
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-03.htm
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Corzet:<br>
|
||||
This is Superion - a fortress soaring in the sky. It was created by the Emperor of the Giants Helios in ancient times, when the Giants were masters of this world.<br>
|
||||
This is a powerful weapon, a source of tremendous power. Who would have thought that it would appear again these days ...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00590_ToEachTheirOwn 34424-04.htm">Nod</Button>
|
||||
</body></html>
|
6
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-04.htm
vendored
Normal file
6
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-04.htm
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Corzet:<br>
|
||||
Good. You can always rely on Meldin.<br>
|
||||
Well, it's time for you to go to the Superion. I have already sent my subordinates there to study the situation.<br>
|
||||
I would like to be there myself, but I can't risk the mission, for the success of which many lost their lives.<br>
|
||||
Head to the Superion to find Histi.
|
||||
</body></html>
|
3
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-05.htm
vendored
Normal file
3
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-05.htm
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Corzet:<br>
|
||||
Have you finished the training? Then I will send you to the Superion. Meet there with Histie.
|
||||
</body></html>
|
5
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-06.htm
vendored
Normal file
5
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-06.htm
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Corzet:<br>
|
||||
This is Superion - a fortress soaring in the sky. It was created by the Emperor of the Giants Helios in ancient times, when the Giants were masters of this world.<br>
|
||||
This is a powerful weapon, a source of tremendous power. Who would have thought that it would appear again these days ...<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00590_ToEachTheirOwn 34424-06.html">Nod</Button>
|
||||
</body></html>
|
6
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-07.htm
vendored
Normal file
6
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/34424-07.htm
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Corzet:<br>
|
||||
Good. You can always rely on Meldin.<br>
|
||||
Well, it's time for you to go to the Superion. I have already sent my subordinates there to study the situation.<br>
|
||||
I would like to be there myself, but I can't risk the mission, for the success of which many lost their lives.<br>
|
||||
Head to the Superion to find Histi.
|
||||
</body></html>
|
@ -0,0 +1,149 @@
|
||||
/*
|
||||
* 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.Q00590_ToEachTheirOwn;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.QuestType;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* To Each Their Own (590)
|
||||
* @URL https://l2wiki.com/To_Each_Their_Own
|
||||
* @author Dmitri
|
||||
*/
|
||||
public class Q00590_ToEachTheirOwn extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int CORZET = 34424;
|
||||
// Monsters
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
24204,
|
||||
24205,
|
||||
24206,
|
||||
};
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final int MAX_LEVEL = 105;
|
||||
// Items
|
||||
private static final int DUST_OF_DESTROYED_DEMON = 48534; // Quest item: Dust of Destroyed Demon
|
||||
|
||||
public Q00590_ToEachTheirOwn()
|
||||
{
|
||||
super(589);
|
||||
addStartNpc(CORZET);
|
||||
addTalkId(CORZET);
|
||||
addKillId(MONSTERS);
|
||||
registerQuestItems(DUST_OF_DESTROYED_DEMON);
|
||||
addCondLevel(MIN_LEVEL, MAX_LEVEL, "nolevel.html");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
String htmltext = null;
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "34424-03.htm":
|
||||
case "34424-02.htm":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34424-04.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "34424-07.html":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
giveAdena(player, 680100, true);
|
||||
addExpAndSp(player, 1793099880L, 1793070);
|
||||
qs.exitQuest(QuestType.DAILY, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
if (npc.getId() == CORZET)
|
||||
{
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = "34424-01.htm";
|
||||
qs.isStarted();
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "34424-05.html";
|
||||
}
|
||||
else if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "34424-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
if (!qs.isNowAvailable())
|
||||
{
|
||||
htmltext = "34424-00.html";
|
||||
break;
|
||||
}
|
||||
qs.setState(State.CREATED);
|
||||
// fallthrough
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
|
||||
if ((qs != null) && qs.isCond(1) && giveItemRandomly(killer, DUST_OF_DESTROYED_DEMON, 1, 50, 1, true))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
}
|
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/nolevel.html
vendored
Normal file
4
L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q00590_ToEachTheirOwn/nolevel.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Corzet:<br>
|
||||
I don't understand why someone like you is interested in this mission?<br>
|
||||
(Only characters above Lv.95-105.)
|
||||
</body></html>
|
@ -125,6 +125,7 @@ import quests.Q00567_BasicMissionIsleOfSouls.Q00567_BasicMissionIsleOfSouls;
|
||||
import quests.Q00568_SpecialMissionNornilsCave.Q00568_SpecialMissionNornilsCave;
|
||||
import quests.Q00569_BasicMissionSealOfShilen.Q00569_BasicMissionSealOfShilen;
|
||||
import quests.Q00574_SpecialMissionNornilsGarden.Q00574_SpecialMissionNornilsGarden;
|
||||
import quests.Q00577_BasicMissionSilentValley.Q00577_BasicMissionSilentValley;
|
||||
import quests.Q00580_BeyondTheMemories.Q00580_BeyondTheMemories;
|
||||
import quests.Q00581_ThePurificationRitual.Q00581_ThePurificationRitual;
|
||||
import quests.Q00582_WashBloodWithBlood.Q00582_WashBloodWithBlood;
|
||||
@ -132,6 +133,8 @@ import quests.Q00583_MeaningOfSurvival.Q00583_MeaningOfSurvival;
|
||||
import quests.Q00584_NeverSayGoodBye.Q00584_NeverSayGoodBye;
|
||||
import quests.Q00587_MoreAggressiveOperation.Q00587_MoreAggressiveOperation;
|
||||
import quests.Q00588_HeadOnCrash.Q00588_HeadOnCrash;
|
||||
import quests.Q00589_ASecretChange.Q00589_ASecretChange;
|
||||
import quests.Q00590_ToEachTheirOwn.Q00590_ToEachTheirOwn;
|
||||
import quests.Q00600_KeyToTheRefiningProcess.Q00600_KeyToTheRefiningProcess;
|
||||
import quests.Q00617_GatherTheFlames.Q00617_GatherTheFlames;
|
||||
import quests.Q00618_IntoTheFlame.Q00618_IntoTheFlame;
|
||||
@ -474,8 +477,6 @@ import quests.Q10900_PathToStrength.Q10900_PathToStrength;
|
||||
import quests.Q10901_AModelAdventurer.Q10901_AModelAdventurer;
|
||||
import quests.custom.Q00529_RegularBarrierMaintenance.Q00529_RegularBarrierMaintenance;
|
||||
import quests.custom.Q00560_HowToOvercomeFear.Q00560_HowToOvercomeFear;
|
||||
import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange;
|
||||
import quests.custom.Q00590_ToEachTheirOwn.Q00590_ToEachTheirOwn;
|
||||
import quests.custom.Q00683_AdventOfKrofinSubspecies.Q00683_AdventOfKrofinSubspecies;
|
||||
import quests.custom.Q00684_DisturbedFields.Q00684_DisturbedFields;
|
||||
import quests.custom.Q10516_UnveiledFafurionTemple.Q10516_UnveiledFafurionTemple;
|
||||
@ -485,7 +486,104 @@ import quests.custom.Q10519_ControllingYourTemper.Q10519_ControllingYourTemper;
|
||||
import quests.custom.Q10520_TempleGuardians.Q10520_TempleGuardians;
|
||||
import quests.custom.Q10529_IvoryTowersResearchFloatingSeaJournal.Q10529_IvoryTowersResearchFloatingSeaJournal;
|
||||
import quests.custom.Q10533_OrfensAmbition.Q10533_OrfensAmbition;
|
||||
import quests.not_done.*;
|
||||
import quests.not_done.Q00504_CompetitionForTheBanditStronghold;
|
||||
import quests.not_done.Q00570_SpecialMissionKartiasLabyrinthParty;
|
||||
import quests.not_done.Q00571_SpecialMissionProofOfUnityFieldRaid;
|
||||
import quests.not_done.Q00572_SpecialMissionProofOfCourageFieldRaid;
|
||||
import quests.not_done.Q00573_SpecialMissionProofOfStrengthFieldRaid;
|
||||
import quests.not_done.Q00576_SpecialMissionDefeatSpezion;
|
||||
import quests.not_done.Q00578_BasicMissionCemetery;
|
||||
import quests.not_done.Q00579_BasicMissionBlazingSwamp;
|
||||
import quests.not_done.Q00585_CantGoAgainstTheTime;
|
||||
import quests.not_done.Q00586_MutatedCreatures;
|
||||
import quests.not_done.Q00591_GreatAmbitions;
|
||||
import quests.not_done.Q00593_BasicMissionPaganTemple;
|
||||
import quests.not_done.Q00594_BasicMissionDimensionalRift;
|
||||
import quests.not_done.Q00595_SpecialMissionRaidersCrossroads;
|
||||
import quests.not_done.Q00596_SpecialMissionDefeatBaylor;
|
||||
import quests.not_done.Q00599_DemonsAndDimensionalEnergy;
|
||||
import quests.not_done.Q00655_AGrandPlanForTamingWildBeasts;
|
||||
import quests.not_done.Q00667_CoveringShilensEyes;
|
||||
import quests.not_done.Q00744_TheAlligatorHunterReturns;
|
||||
import quests.not_done.Q00745_TheOutlawsAreIncoming;
|
||||
import quests.not_done.Q00747_DefendingTheForsakenPlains;
|
||||
import quests.not_done.Q00748_EndlessRevenge;
|
||||
import quests.not_done.Q00749_TiesWithTheGuardians;
|
||||
import quests.not_done.Q00750_SevenFlowers;
|
||||
import quests.not_done.Q00759_TheDwarvenNightmareContinues;
|
||||
import quests.not_done.Q00773_ToCalmTheFlood;
|
||||
import quests.not_done.Q00774_DreamingOfPeace;
|
||||
import quests.not_done.Q00780_UtilizeTheDarknessSeedOfInfinity;
|
||||
import quests.not_done.Q00781_UtilizeTheDarknessSeedOfAnnihilation;
|
||||
import quests.not_done.Q00782_UtilizeTheDarknessSeedOfHellfire;
|
||||
import quests.not_done.Q00789_WaitingForPaagrio;
|
||||
import quests.not_done.Q00824_AttackTheCommandPost;
|
||||
import quests.not_done.Q00836_RequestFromTheBlackbirdClan;
|
||||
import quests.not_done.Q00837_RequestFromTheGiantTrackers;
|
||||
import quests.not_done.Q00838_RequestFromTheMotherTreeGuardians;
|
||||
import quests.not_done.Q00839_RequestFromTheUnworldlyVisitors;
|
||||
import quests.not_done.Q00840_RequestFromTheKingdomsRoyalGuard;
|
||||
import quests.not_done.Q00841_ContaminationContainment;
|
||||
import quests.not_done.Q00843_GiantEvolutionControl;
|
||||
import quests.not_done.Q00846_BuildingUpStrength;
|
||||
import quests.not_done.Q00929_SeekerRescue;
|
||||
import quests.not_done.Q00930_DisparagingThePhantoms;
|
||||
import quests.not_done.Q00985_AdventureGuildsSpecialRequestLv1;
|
||||
import quests.not_done.Q00986_AdventureGuildsSpecialRequestLv2;
|
||||
import quests.not_done.Q00987_AdventureGuildsSpecialRequestLv3;
|
||||
import quests.not_done.Q00988_AdventureGuildsSpecialRequestLv4;
|
||||
import quests.not_done.Q00989_AdventureGuildsSpecialRequestLv5;
|
||||
import quests.not_done.Q10298_WastelandQueen;
|
||||
import quests.not_done.Q10355_BlacksmithsSoul1;
|
||||
import quests.not_done.Q10356_BlacksmithsSoul2;
|
||||
import quests.not_done.Q10373_ExploringTheDimensionSealingTheDimension;
|
||||
import quests.not_done.Q10418_TheImmortalPirateKing;
|
||||
import quests.not_done.Q10457_KefensisIllusion;
|
||||
import quests.not_done.Q10535_BlacksmithsSoul3;
|
||||
import quests.not_done.Q10552_ChallengeBalthusKnight;
|
||||
import quests.not_done.Q10553_WhatMattersMoreThanAbility;
|
||||
import quests.not_done.Q10554_GiftForYou;
|
||||
import quests.not_done.Q10555_ChargeAtAntharas;
|
||||
import quests.not_done.Q10556_ForgottenPowerStartOfFate;
|
||||
import quests.not_done.Q10557_NewPowerWindsOfFate;
|
||||
import quests.not_done.Q10558_HiddenInChaos;
|
||||
import quests.not_done.Q10559_BeforeTheGuide;
|
||||
import quests.not_done.Q10563_ControlOfPower;
|
||||
import quests.not_done.Q10564_ProveProgress;
|
||||
import quests.not_done.Q10565_NothingIsImpossible;
|
||||
import quests.not_done.Q10567_SpecialMissionNornilsGarden;
|
||||
import quests.not_done.Q10570_HurrahForKamaelsIndependence;
|
||||
import quests.not_done.Q10572_ToExpelTheEmbryosForces;
|
||||
import quests.not_done.Q10580_SpecialMissionDefeatSpezion;
|
||||
import quests.not_done.Q10588_SpecialMissionDefeatBaylor;
|
||||
import quests.not_done.Q10594_FergasonsScheme;
|
||||
import quests.not_done.Q10595_TheDimensionalWarpPart8;
|
||||
import quests.not_done.Q10596_TheDimensionalWarpPart9;
|
||||
import quests.not_done.Q10748_MysteriousSuggestion1;
|
||||
import quests.not_done.Q10749_MysteriousSuggestion2;
|
||||
import quests.not_done.Q10845_BloodyBattleRescueTheSmiths;
|
||||
import quests.not_done.Q10848_TrialsBeforeTheBattle;
|
||||
import quests.not_done.Q10853_ToWeakenTheGiants;
|
||||
import quests.not_done.Q10854_ToSeizeTheFortress;
|
||||
import quests.not_done.Q10858_QueenRamonaControllerOfTheVessel;
|
||||
import quests.not_done.Q10859_OwnTheEarthAndTheHeavens;
|
||||
import quests.not_done.Q10873_ExaltedReachingAnotherLevel;
|
||||
import quests.not_done.Q10874_AgainstTheNewEnemy;
|
||||
import quests.not_done.Q10875_ForReputation;
|
||||
import quests.not_done.Q10876_LeadersGrace;
|
||||
import quests.not_done.Q10877_BreakThroughCrisis;
|
||||
import quests.not_done.Q10879_ExaltedGuideToPower;
|
||||
import quests.not_done.Q10880_TheLastOneStanding;
|
||||
import quests.not_done.Q10881_ForThePride;
|
||||
import quests.not_done.Q10882_VictoryCollection;
|
||||
import quests.not_done.Q10883_ImmortalHonor;
|
||||
import quests.not_done.Q10886_SaviorsPathSearchTheRefinery;
|
||||
import quests.not_done.Q10887_SaviorsPathDemonsAndAtelia;
|
||||
import quests.not_done.Q10888_SaviorsPathDefeatTheEmbryo;
|
||||
import quests.not_done.Q10889_SaviorsPathFallenEmperorsThrone;
|
||||
import quests.not_done.Q10890_SaviorsPathFallOfEtina;
|
||||
import quests.not_done.Q10893_EndOfTwistedFate;
|
||||
import quests.not_done.Q10895_RestrainQueenKrosha;
|
||||
|
||||
/**
|
||||
* @author NosBit
|
||||
@ -610,7 +708,7 @@ public class QuestMasterHandler
|
||||
Q00573_SpecialMissionProofOfStrengthFieldRaid.class, // TODO: Not done.
|
||||
Q00574_SpecialMissionNornilsGarden.class,
|
||||
Q00576_SpecialMissionDefeatSpezion.class, // TODO: Not done.
|
||||
Q00577_BasicMissionSilentValley.class, // TODO: Not done.
|
||||
Q00577_BasicMissionSilentValley.class,
|
||||
Q00578_BasicMissionCemetery.class, // TODO: Not done.
|
||||
Q00579_BasicMissionBlazingSwamp.class, // TODO: Not done.
|
||||
Q00580_BeyondTheMemories.class,
|
||||
@ -622,8 +720,8 @@ public class QuestMasterHandler
|
||||
Q00586_MutatedCreatures.class, // TODO: Not done.
|
||||
Q00587_MoreAggressiveOperation.class,
|
||||
Q00588_HeadOnCrash.class,
|
||||
Q00589_ASecretChange.class, // FIXME: Custom.
|
||||
Q00590_ToEachTheirOwn.class, // FIXME: Custom.
|
||||
Q00589_ASecretChange.class,
|
||||
Q00590_ToEachTheirOwn.class,
|
||||
Q00591_GreatAmbitions.class, // TODO: Not done.
|
||||
Q00593_BasicMissionPaganTemple.class, // TODO: Not done.
|
||||
Q00594_BasicMissionDimensionalRift.class, // TODO: Not done.
|
||||
|
@ -1,179 +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.custom.Q00589_ASecretChange;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.QuestType;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
|
||||
/**
|
||||
* A Secret Change (589)
|
||||
* @URL https://l2wiki.com/A_Secret_Change
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00589_ASecretChange extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int START_NPC = 34424;
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
24200,
|
||||
24201,
|
||||
24202,
|
||||
24203,
|
||||
};
|
||||
// Item
|
||||
private static final int MONSTER_DROP = 48533;
|
||||
// Misc
|
||||
private static final int REQUIRED_DROP_COUNT = 250;
|
||||
private static final int KILLING_NPCSTRING_ID = NpcStringId.LV_95_105_A_SECRET_CHANGE_IN_PROGRESS.getId();
|
||||
private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY
|
||||
private static final boolean PARTY_QUEST = false;
|
||||
private static final int KILLING_COND = 1;
|
||||
private static final int FINISH_COND = 2;
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final int MAX_LEVEL = 105;
|
||||
|
||||
public Q00589_ASecretChange()
|
||||
{
|
||||
super(589);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addKillId(MONSTERS);
|
||||
registerQuestItems(MONSTER_DROP);
|
||||
addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
|
||||
addCondMaxLevel(MAX_LEVEL, getNoQuestMsg(null));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "accept.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
break;
|
||||
}
|
||||
case "reward.html":
|
||||
{
|
||||
if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT))
|
||||
{
|
||||
takeItems(player, MONSTER_DROP, -1);
|
||||
// Reward.
|
||||
addExpAndSp(player, 1793099880, 1793070);
|
||||
giveAdena(player, 680100, false);
|
||||
qs.exitQuest(QUEST_TYPE, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
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 = "start.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (qs.isCond(KILLING_COND))
|
||||
{
|
||||
htmltext = "accept.htm";
|
||||
}
|
||||
else if (qs.isCond(FINISH_COND))
|
||||
{
|
||||
htmltext = "finish.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
if (qs.isNowAvailable())
|
||||
{
|
||||
qs.setState(State.CREATED);
|
||||
htmltext = "start.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 PlayerInstance player = qs.getPlayer();
|
||||
if (giveItemRandomly(player, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true))
|
||||
{
|
||||
qs.setCond(FINISH_COND, true);
|
||||
}
|
||||
sendNpcLogList(player);
|
||||
}
|
||||
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, (int) getQuestItemsCount(player, MONSTER_DROP)));
|
||||
return holder;
|
||||
}
|
||||
return super.getNpcLogList(player);
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
You have to hunt monsters in Silent Valley. Hunt <font color="LEVEL">Silence Warrior, Silence Slave, Silence Claw, Silence Witch</font>. You need to gather 250 <font color="LEVEL">Trace of Evil</font>.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
Have you retrieved the items I asked for?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00589_ASecretChange reward.html">"Here are your items."</Button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
Thank you for your assistance.
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
If you have time I have a mission for you.<br1>
|
||||
This area needs to be cleansed.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00589_ASecretChange accept.htm">"Say no more. I accept."</Button>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
On your way here, did you see any investigators? I hope they are okay... Ah, maybe I am not in a position to worry about others. <br>
|
||||
(This quest is for characters level 95 and higher who have completed the "A Secret Change" quest.)
|
||||
</body></html>
|
@ -1,181 +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.custom.Q00590_ToEachTheirOwn;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.QuestType;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
|
||||
import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange;
|
||||
|
||||
/**
|
||||
* To Each Their Own (590)
|
||||
* @URL https://l2wiki.com/To_Each_Their_Own
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00590_ToEachTheirOwn extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int START_NPC = 34424;
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
24204,
|
||||
24205,
|
||||
24206,
|
||||
};
|
||||
// Item
|
||||
private static final int MONSTER_DROP = 48534;
|
||||
// Misc
|
||||
private static final int REQUIRED_DROP_COUNT = 50;
|
||||
private static final int KILLING_NPCSTRING_ID = NpcStringId.LV_95_105_TO_EACH_THEIR_OWN_IN_PROGRESS.getId();
|
||||
private static final QuestType QUEST_TYPE = QuestType.DAILY; // REPEATABLE, ONE_TIME, DAILY
|
||||
private static final boolean PARTY_QUEST = false;
|
||||
private static final int KILLING_COND = 1;
|
||||
private static final int FINISH_COND = 2;
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final int MAX_LEVEL = 105;
|
||||
|
||||
public Q00590_ToEachTheirOwn()
|
||||
{
|
||||
super(590);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addKillId(MONSTERS);
|
||||
registerQuestItems(MONSTER_DROP);
|
||||
addCondMinLevel(MIN_LEVEL, getNoQuestMsg(null));
|
||||
addCondMaxLevel(MAX_LEVEL, getNoQuestMsg(null));
|
||||
addCondCompletedQuest(Q00589_ASecretChange.class.getSimpleName(), "34424-05.htm");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "accept.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
break;
|
||||
}
|
||||
case "reward.html":
|
||||
{
|
||||
if (qs.isCond(FINISH_COND) && (getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT))
|
||||
{
|
||||
takeItems(player, MONSTER_DROP, -1);
|
||||
// Reward.
|
||||
addExpAndSp(player, 1793099880, 1793070);
|
||||
giveAdena(player, 680100, false);
|
||||
qs.exitQuest(QUEST_TYPE, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
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 = "start.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (qs.isCond(KILLING_COND))
|
||||
{
|
||||
htmltext = "accept.htm";
|
||||
}
|
||||
else if (qs.isCond(FINISH_COND))
|
||||
{
|
||||
htmltext = "finish.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
if (qs.isNowAvailable())
|
||||
{
|
||||
qs.setState(State.CREATED);
|
||||
htmltext = "start.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 PlayerInstance player = qs.getPlayer();
|
||||
if (giveItemRandomly(player, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true))
|
||||
{
|
||||
qs.setCond(FINISH_COND, true);
|
||||
}
|
||||
sendNpcLogList(player);
|
||||
}
|
||||
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, (int) getQuestItemsCount(player, MONSTER_DROP)));
|
||||
return holder;
|
||||
}
|
||||
return super.getNpcLogList(player);
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
You have to hunt monsters in Silent Valley. Hunt <font color="LEVEL">Silence Hannibal, Silence Preacle, Silence Phantom</font>. You need to gather 50 <font color="LEVEL">Dust of Destroyed Demon</font>.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
Have you retrieved the items I asked for?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00590_ToEachTheirOwn reward.html">"Here are your items."</Button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
Thank you for your assistance.
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Corzet:<br>
|
||||
If you have time I have a mission for you.<br1>
|
||||
This area needs to be cleansed.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00590_ToEachTheirOwn accept.htm">"Say no more. I accept."</Button>
|
||||
</body></html>
|
@ -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 org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class Q00577_BasicMissionSilentValley extends Quest
|
||||
{
|
||||
private static final int START_NPC = 34413;
|
||||
|
||||
public Q00577_BasicMissionSilentValley()
|
||||
{
|
||||
super(577);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user