Removed quests that no longer exist.
This commit is contained in:
parent
aefcebc5e0
commit
edcefadfed
@ -20,7 +20,6 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.l2jmobius.gameserver.enums.QuestSound;
|
||||
import com.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||
@ -28,7 +27,6 @@ import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import com.l2jmobius.gameserver.model.quest.State;
|
||||
|
||||
import quests.Q00140_ShadowFoxPart2.Q00140_ShadowFoxPart2;
|
||||
import quests.Q00998_FallenAngelSelect.Q00998_FallenAngelSelect;
|
||||
|
||||
/**
|
||||
* Shadow Fox - 3 (141)
|
||||
@ -107,12 +105,6 @@ public class Q00141_ShadowFoxPart3 extends Quest
|
||||
addExpAndSp(player, 278005, 17058);
|
||||
}
|
||||
st.exitQuest(false, true);
|
||||
|
||||
final Quest q = QuestManager.getInstance().getQuest(Q00998_FallenAngelSelect.class.getSimpleName());
|
||||
if (q != null)
|
||||
{
|
||||
q.newQuestState(player).setState(State.STARTED);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
htmltext = null;
|
||||
|
@ -1,5 +0,0 @@
|
||||
<html><body>Jerian:<br>
|
||||
Hm... Are you here to face Ranku and Demon Prince?<br>
|
||||
You may want to listen to what I have to say.<br>
|
||||
<a action="bypass -h Quest Q00279_TargetOfOpportunity 32302-03.htm">Listen carefully.</a>
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Jerian:<br>
|
||||
Hm... Are you here to face Ranku and Demon Prince?<br>
|
||||
Trust me, if I were you, I'd improve myself a little more first. Call it a little friendly advice on the house.<br>
|
||||
(Only characters level 82 or above can take this quest.)
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Jerian:<br>
|
||||
The <font color="LEVEL">Teleport Device</font> was created in order to transport visitors up to Ranku and Demon Prince instantly. It may sound strange, but it works rather well.<br>
|
||||
<a action="bypass -h Quest Q00279_TargetOfOpportunity 32302-04.htm">"So there is a way to move up the tower quickly."</a>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Jerian:<br>
|
||||
Yes, there is a way to break through the Force Field. You need to defeat four particular beasts in a particular order to harness their aura and fool the Tower of Infinitum into believing you to be one of its denizens.<br>
|
||||
<a action="bypass -h Quest Q00279_TargetOfOpportunity 32302-05.html">Continue listening.</a>
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Jerian:<br>
|
||||
Alright, here's what you need to do. Defeat the <font color="LEVEL">Cosmic Scout, Cosmic Watcher, Cosmic Priest, and Cosmic Lord</font>. You will pick up a <font color="LEVEL">fragment of their essence</font> after defeating them. Assemble these parts and you will have a Seal Breaker, a stone that will allow you to travel directly to Ranku and Demon Prince by fooling the Tower's Seal into thinking you a devil.<br>
|
||||
Bring the parts to me and I can convert them. Do you wish to enter now?<br>
|
||||
<a action="bypass -h Quest Q00279_TargetOfOpportunity enter">"Yes, let me go inside."</a>
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Jerian:<br>
|
||||
Defeat the <font color="LEVEL">Cosmic Scout, Cosmic Watcher, Cosmic Priest, and Cosmic Lord</font>. You will pick up a <font color="LEVEL">fragment of their essence</font> after defeating them. Assemble these parts and you will have a Seal Breaker, a stone that will allow you to travel directly to Ranku and Demon Prince by fooling the Tower's Seal into thinking you a devil.<br>
|
||||
Bring the parts to me and I can convert them.<br>
|
||||
<a action="bypass -h Quest Q00279_TargetOfOpportunity enter">"Yes, let me go inside."</a>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Jerian:<br>
|
||||
I hope you didn't come all the way back to me just to assemble the Seal Breaker. Ah well, you're here and I don't mind the visit, company is always pleasant. Give me the fragments and I'll make you a Seal Breaker.<br>
|
||||
<a action="bypass -h Quest Q00279_TargetOfOpportunity 32302-08.html">Hand over the fragments.</a>
|
||||
</body></html>
|
@ -1,6 +0,0 @@
|
||||
<html><body>Jerian:<br>
|
||||
Wait a moment, please...<br>
|
||||
<font color="LEVEL">(As Jerian chants a spell you've never heard, the four fragments begin to float in the air rotating around one another until coming together in a bright flash. When the light fades, you see a red and blue stone floating back into Jerian's hands. It is a complete Seal Breaker.)</font><br>
|
||||
Here, it is complete. Remember though, you can only use it once. When you pass through the Force Field, it will shatter.<br>
|
||||
Good bye and good luck.
|
||||
</body></html>
|
@ -1,157 +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.Q00279_TargetOfOpportunity;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.l2jmobius.Config;
|
||||
import com.l2jmobius.gameserver.enums.QuestSound;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import com.l2jmobius.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* Target of Opportunity (279)
|
||||
* @author GKR
|
||||
*/
|
||||
public final class Q00279_TargetOfOpportunity extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int JERIAN = 32302;
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
22373,
|
||||
22374,
|
||||
22375,
|
||||
22376
|
||||
};
|
||||
// Items
|
||||
private static final int[] SEAL_COMPONENTS =
|
||||
{
|
||||
15517,
|
||||
15518,
|
||||
15519,
|
||||
15520
|
||||
};
|
||||
private static final int[] SEAL_BREAKERS =
|
||||
{
|
||||
15515,
|
||||
15516
|
||||
};
|
||||
|
||||
public Q00279_TargetOfOpportunity()
|
||||
{
|
||||
super(279);
|
||||
addStartNpc(JERIAN);
|
||||
addTalkId(JERIAN);
|
||||
addKillId(MONSTERS);
|
||||
registerQuestItems(SEAL_COMPONENTS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final String htmltext = event;
|
||||
final QuestState st = getQuestState(player, false);
|
||||
if ((st == null) || (player.getLevel() < 82))
|
||||
{
|
||||
return getNoQuestMsg(player);
|
||||
}
|
||||
|
||||
if (event.equalsIgnoreCase("32302-05.html"))
|
||||
{
|
||||
st.startQuest();
|
||||
st.set("progress", "1");
|
||||
}
|
||||
else if (event.equalsIgnoreCase("32302-08.html") && (st.getInt("progress") == 1) && hasQuestItems(player, SEAL_COMPONENTS[0]) && hasQuestItems(player, SEAL_COMPONENTS[1]) && hasQuestItems(player, SEAL_COMPONENTS[2]) && hasQuestItems(player, SEAL_COMPONENTS[3]))
|
||||
{
|
||||
giveItems(player, SEAL_BREAKERS[0], 1);
|
||||
giveItems(player, SEAL_BREAKERS[1], 1);
|
||||
st.exitQuest(true, true);
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
|
||||
{
|
||||
final L2PcInstance pl = getRandomPartyMember(player, "progress", "1");
|
||||
final int idx = Arrays.binarySearch(MONSTERS, npc.getId());
|
||||
if ((pl == null) || (idx < 0))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
final QuestState st = getQuestState(pl, false);
|
||||
if (getRandom(1000) < (int) (311 * Config.RATE_QUEST_DROP))
|
||||
{
|
||||
if (!hasQuestItems(pl, SEAL_COMPONENTS[idx]))
|
||||
{
|
||||
giveItems(pl, SEAL_COMPONENTS[idx], 1);
|
||||
if (haveAllExceptThis(st, idx))
|
||||
{
|
||||
st.setCond(2, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(pl, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
final QuestState st = getQuestState(player, true);
|
||||
if (st == null)
|
||||
{
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
if (st.getState() == State.CREATED)
|
||||
{
|
||||
htmltext = (player.getLevel() >= 82) ? "32302-01.htm" : "32302-02.html";
|
||||
}
|
||||
else if ((st.getState() == State.STARTED) && (st.getInt("progress") == 1))
|
||||
{
|
||||
htmltext = (hasQuestItems(player, SEAL_COMPONENTS[0]) && hasQuestItems(player, SEAL_COMPONENTS[1]) && hasQuestItems(player, SEAL_COMPONENTS[2]) && hasQuestItems(player, SEAL_COMPONENTS[3])) ? "32302-07.html" : "32302-06.html";
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
private static final boolean haveAllExceptThis(QuestState st, int idx)
|
||||
{
|
||||
for (int i = 0; i < SEAL_COMPONENTS.length; i++)
|
||||
{
|
||||
if (i == idx)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!hasQuestItems(st.getPlayer(), SEAL_COMPONENTS[i]))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
<html><body>Guard Rath:<br>
|
||||
The population of lizardmen on the north side of Oren is mysteriously growing. This must be related to the increase in the power of evil since the release of Antharas. There have been wild rumors of ghastly ceremonies held in the forest at night! The lizardmen are most likely under the direct control of Shilen, and these rituals no doubt strengthen the power of Antharas.....<br>
|
||||
In the midst of all this turmoil, the guild has asked me to make the roads safe for trade! No doubt they feel that their village is threatened.<br>
|
||||
But this is Oren Territory, and there will be problems if we send regular troops in... The captain has ordered me to mobilize mercenaries to stabilize the area. Will you join us?<br>
|
||||
<a action="bypass -h Quest Q00300_HuntingLetoLizardman 30126-03.htm">"I'll do it."</a>
|
||||
</body></html>
|
@ -1,6 +0,0 @@
|
||||
<html><body>Guard Rath:<br>
|
||||
The population of lizardmen north of Oren is mysteriously growing. This must be related to the increase in the power of evil since the release of Antharas. There have been wild rumors of ghastly ceremonies held in the forest at night! The lizardmen are most likely under the direct control of Shilen, and these rituals no doubt strengthen the power of Antharas.....<br>
|
||||
In the midst of all this turmoil, the guild has asked me to make the roads safe for trade! No doubt they feel that their village is threatened.<br>
|
||||
But this is Oren Territory, and there will be problems if we send regular troops in... The captain has ordered me to mobilize mercenaries to stabilize the area, but I'm afraid you're not up to the job.<br>
|
||||
(This quest may only be undertaken by characters of level 34 or above.)
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Guard Rath:<br>
|
||||
Destroy the lizardmen and take their bracelets as proof of your victory.<br>
|
||||
Kill the <font color="LEVEL">Leto Lizardmen, Leto Lizardman Archers, Leto Lizardman Soldiers, Leto Lizardman Overlords', Leto Lizardman Warriors</font> and so on. Don't attack their shaman! It might cause them to stop the ritual before our investigation is complete. The ritual must not end until our investigation is complete!<br>
|
||||
The guild had already sent me a reward for 60 bracelets. I'll give it to you as soon as you earn it.
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Guard Rath:<br>
|
||||
Please try harder! You must get rid of those filthy lizardmen who threaten trade between Aden and Oren.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Guard Rath:<br>
|
||||
You're finished? Good work, but we're not done with those vile creatures yet! I'm sure the plains will be swarming with lizardmen again in a few short weeks. Now, let me count those bracelets.<br>
|
||||
<a action="bypass -h Quest Q00300_HuntingLetoLizardman 30126-06.html">"They're all there!"</a>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Guard Rath:<br>
|
||||
Feel free to come back and help us anytime! The life of a mercenary may not pay well, but it has its rewards! Please accept this token of our appreciation.
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Guard Rath:<br>
|
||||
I don't think so! You haven't brought enough! Bring 60 if you want a reward!
|
||||
</body></html>
|
@ -1,182 +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.Q00300_HuntingLetoLizardman;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.l2jmobius.gameserver.enums.QuestSound;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import com.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import com.l2jmobius.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* Hunting Leto Lizardman (300)
|
||||
* @author ivantotov
|
||||
*/
|
||||
public final class Q00300_HuntingLetoLizardman extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int RATH = 30126;
|
||||
// Items
|
||||
private static final int BRACELET_OF_LIZARDMAN = 7139;
|
||||
private static final ItemHolder REWARD_ADENA = new ItemHolder(Inventory.ADENA_ID, 30000);
|
||||
private static final ItemHolder REWARD_ANIMAL_BONE = new ItemHolder(1872, 50);
|
||||
private static final ItemHolder REWARD_ANIMAL_SKIN = new ItemHolder(1867, 50);
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 34;
|
||||
private static final int REQUIRED_BRACELET_COUNT = 60;
|
||||
// Monsters
|
||||
private static final Map<Integer, Integer> MOBS_SAC = new HashMap<>();
|
||||
|
||||
static
|
||||
{
|
||||
MOBS_SAC.put(20577, 360); // Leto Lizardman
|
||||
MOBS_SAC.put(20578, 390); // Leto Lizardman Archer
|
||||
MOBS_SAC.put(20579, 410); // Leto Lizardman Soldier
|
||||
MOBS_SAC.put(20580, 790); // Leto Lizardman Warrior
|
||||
MOBS_SAC.put(20582, 890); // Leto Lizardman Overlord
|
||||
}
|
||||
|
||||
public Q00300_HuntingLetoLizardman()
|
||||
{
|
||||
super(300);
|
||||
addStartNpc(RATH);
|
||||
addTalkId(RATH);
|
||||
addKillId(MOBS_SAC.keySet());
|
||||
registerQuestItems(BRACELET_OF_LIZARDMAN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState st = getQuestState(player, false);
|
||||
if (st == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "30126-03.htm":
|
||||
{
|
||||
if (st.isCreated())
|
||||
{
|
||||
st.startQuest();
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "30126-06.html":
|
||||
{
|
||||
if (getQuestItemsCount(player, BRACELET_OF_LIZARDMAN) >= REQUIRED_BRACELET_COUNT)
|
||||
{
|
||||
takeItems(player, BRACELET_OF_LIZARDMAN, -1);
|
||||
final int rand = getRandom(1000);
|
||||
if (rand < 500)
|
||||
{
|
||||
giveItems(player, REWARD_ADENA);
|
||||
}
|
||||
else if (rand < 750)
|
||||
{
|
||||
giveItems(player, REWARD_ANIMAL_SKIN);
|
||||
}
|
||||
else if (rand < 1000)
|
||||
{
|
||||
giveItems(player, REWARD_ANIMAL_BONE);
|
||||
}
|
||||
st.exitQuest(true, true);
|
||||
htmltext = event;
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "30126-07.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
|
||||
{
|
||||
final L2PcInstance partyMember = getRandomPartyMember(player, 1);
|
||||
if (partyMember != null)
|
||||
{
|
||||
final QuestState st = getQuestState(partyMember, false);
|
||||
if (st.isCond(1) && (getRandom(1000) < MOBS_SAC.get(npc.getId())))
|
||||
{
|
||||
giveItems(partyMember, BRACELET_OF_LIZARDMAN, 1);
|
||||
if (getQuestItemsCount(partyMember, BRACELET_OF_LIZARDMAN) == REQUIRED_BRACELET_COUNT)
|
||||
{
|
||||
st.setCond(2, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
playSound(partyMember, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, player, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
final QuestState st = getQuestState(player, true);
|
||||
if (st == null)
|
||||
{
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30126-01.htm" : "30126-02.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
switch (st.getCond())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
htmltext = "30126-04.html";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (getQuestItemsCount(player, BRACELET_OF_LIZARDMAN) >= REQUIRED_BRACELET_COUNT)
|
||||
{
|
||||
htmltext = "30126-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
You do not meet the requirements for taking on this mission.<br>
|
||||
(Only noblesse characters above level 75 who have completed a third class transfer can undertake this quest.)
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
If you receive a mission involving challenging the Olympiad before you enter the Grand Olympiad, you can receive additional rewards. If you're qualified, why don't you try making the challenge?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00551_OlympiadStarter 31688-03.html">Accept</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00551_OlympiadStarter 31688-02.htm">"Can you tell me more?"</Button>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
There is a reward for entering 10 games. But you will receive a reward by participating in 3 games, then in 5 games. You will also get rewared with the <font color="LEVEL">Medal of Honor</font> if you participate in <font color="LEVEL">5 and 10</font> games.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00551_OlympiadStarter 31688-03.html">Accept</Button>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
The mission has been accepted. Please check to see if there are any other missions. Once preparations are complete, challenge the Olympiad.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Quest">See other missions.</Button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
Well done. Please come back tomorrow.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
You have already received the reward for this mission. You should rest before you try again!<br>
|
||||
(This quest can only be undertaken once a day. This quest resets everyday at 6:30 AM.)
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
You did not fulfil the requirements for receiving a reward.<br>
|
||||
You must participate in more than 3 Olympiad matches in order to receive a reward. If you participate 5 times, the reward will increase, and if you participate more than 10 times, you will receive the promised ultimate reward.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
I will give you an incomplete reward. Please remember that once you receive the reward, you cannot take on the mission anymore today. Do you still want to go ahead?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00551_OlympiadStarter 31688-04.html">"Yes please."</Button>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
I will give you an incomplete reward. Please remember that once you receive the reward, you cannot take on the mission anymore today. Do you still want to go ahead?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00551_OlympiadStarter 31688-04.html">"Yes please."</Button>
|
||||
</body></html>
|
@ -1,266 +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.Q00551_OlympiadStarter;
|
||||
|
||||
import com.l2jmobius.gameserver.enums.QuestType;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.olympiad.CompetitionType;
|
||||
import com.l2jmobius.gameserver.model.olympiad.Participant;
|
||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import com.l2jmobius.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* Olympiad Starter (551)
|
||||
* @author Gnacik
|
||||
*/
|
||||
public class Q00551_OlympiadStarter extends Quest
|
||||
{
|
||||
private static final int MANAGER = 31688;
|
||||
|
||||
private static final int CERT_3 = 17238;
|
||||
private static final int CERT_5 = 17239;
|
||||
private static final int CERT_10 = 17240;
|
||||
|
||||
private static final int OLY_CHEST = 17169;
|
||||
private static final int MEDAL_OF_GLORY = 21874;
|
||||
|
||||
public Q00551_OlympiadStarter()
|
||||
{
|
||||
super(551);
|
||||
addStartNpc(MANAGER);
|
||||
addTalkId(MANAGER);
|
||||
registerQuestItems(CERT_3, CERT_5, CERT_10);
|
||||
addOlympiadMatchFinishId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return getNoQuestMsg(player);
|
||||
}
|
||||
String htmltext = event;
|
||||
|
||||
if (event.equalsIgnoreCase("31688-03.html"))
|
||||
{
|
||||
qs.startQuest();
|
||||
}
|
||||
else if (event.equalsIgnoreCase("31688-04.html"))
|
||||
{
|
||||
final long count = getQuestItemsCount(player, CERT_3) + getQuestItemsCount(player, CERT_5);
|
||||
if (count > 0)
|
||||
{
|
||||
giveItems(player, OLY_CHEST, count); // max 2
|
||||
if (count == 2)
|
||||
{
|
||||
giveItems(player, MEDAL_OF_GLORY, 3);
|
||||
}
|
||||
qs.exitQuest(QuestType.DAILY, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = getNoQuestMsg(player);
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOlympiadLose(L2PcInstance loser, CompetitionType type)
|
||||
{
|
||||
if (loser == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
final QuestState qs = getQuestState(loser, false);
|
||||
if ((qs == null) || !qs.isStarted())
|
||||
{
|
||||
return;
|
||||
}
|
||||
final int matches = qs.getInt("matches") + 1;
|
||||
switch (matches)
|
||||
{
|
||||
case 3:
|
||||
{
|
||||
if (!hasQuestItems(loser, CERT_3))
|
||||
{
|
||||
giveItems(loser, CERT_3, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
if (!hasQuestItems(loser, CERT_5))
|
||||
{
|
||||
giveItems(loser, CERT_5, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
if (!hasQuestItems(loser, CERT_10))
|
||||
{
|
||||
giveItems(loser, CERT_10, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
qs.set("matches", String.valueOf(matches));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOlympiadMatchFinish(Participant winner, Participant looser, CompetitionType type)
|
||||
{
|
||||
if (winner != null)
|
||||
{
|
||||
final L2PcInstance player = winner.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isStarted())
|
||||
{
|
||||
final int matches = qs.getInt("matches") + 1;
|
||||
switch (matches)
|
||||
{
|
||||
case 3:
|
||||
{
|
||||
if (!hasQuestItems(player, CERT_3))
|
||||
{
|
||||
giveItems(player, CERT_3, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
if (!hasQuestItems(player, CERT_5))
|
||||
{
|
||||
giveItems(player, CERT_5, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
if (!hasQuestItems(player, CERT_10))
|
||||
{
|
||||
giveItems(player, CERT_10, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
qs.set("matches", String.valueOf(matches));
|
||||
}
|
||||
}
|
||||
|
||||
if (looser == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
final L2PcInstance player = looser.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs == null) || !qs.isStarted())
|
||||
{
|
||||
return;
|
||||
}
|
||||
final int matches = qs.getInt("matches") + 1;
|
||||
switch (matches)
|
||||
{
|
||||
case 3:
|
||||
{
|
||||
if (!hasQuestItems(player, CERT_3))
|
||||
{
|
||||
giveItems(player, CERT_3, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
if (!hasQuestItems(player, CERT_5))
|
||||
{
|
||||
giveItems(player, CERT_5, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
if (!hasQuestItems(player, CERT_10))
|
||||
{
|
||||
giveItems(player, CERT_10, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
qs.set("matches", String.valueOf(matches));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
if (qs == null)
|
||||
{
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
if ((player.getLevel() < 75) || !player.isNoble())
|
||||
{
|
||||
htmltext = "31688-00.htm";
|
||||
}
|
||||
else if (qs.isCreated())
|
||||
{
|
||||
htmltext = "31688-01.htm";
|
||||
}
|
||||
else if (qs.isCompleted())
|
||||
{
|
||||
if (qs.isNowAvailable())
|
||||
{
|
||||
qs.setState(State.CREATED);
|
||||
htmltext = (player.getLevel() < 75) || !player.isNoble() ? "31688-00.htm" : "31688-01.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "31688-05.html";
|
||||
}
|
||||
}
|
||||
else if (qs.isStarted())
|
||||
{
|
||||
final long count = getQuestItemsCount(player, CERT_3) + getQuestItemsCount(player, CERT_5) + getQuestItemsCount(player, CERT_10);
|
||||
if (count == 3)
|
||||
{
|
||||
htmltext = "31688-04.html";
|
||||
giveItems(player, OLY_CHEST, 4);
|
||||
giveItems(player, MEDAL_OF_GLORY, 5);
|
||||
qs.exitQuest(QuestType.DAILY, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "31688-s" + count + ".html";
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
You do not meet the requirements for taking on this mission.<br>
|
||||
(Only noblesse characters above level 75 who have completed a third class transfer can undertake this quest.)
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
While challenging the Olympiad, it is important to widen your level of experience as well. Just by making the challenge, you will receive a small reward. Will you make the challenge?<br>
|
||||
<a action="bypass -h Quest Q00552_OlympiadVeteran 31688-03.html">Accept</a><br>
|
||||
<a action="bypass -h Quest Q00552_OlympiadVeteran 31688-02.htm">"Tell me more."</a>
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
Please participate in all the various categories of matches in the Olympiad. If you participate in each of the <font color="LEVEL">non-class battles, class battles, and group battles 5 times</font>, your mission will be complete.<br>
|
||||
If it is difficult to participate in the three match categories, you can participate in just one category, and you will still receive some reward. If you're still satisfied, you can come to me. But please remember that once you receive the reward, you can't take on the mission again that same day.<br>
|
||||
<a action="bypass -h Quest Q00552_OlympiadVeteran 31688-03.html">Accept</a>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
The mission has been accepted. Please check to see if there are any other missions. Once preparations are complete, challenge the Olympiad.<br>
|
||||
<a action="bypass -h npc_%objectId%_Quest">See other missions.</a>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
Well done. Please come back tomorrow.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
You have already received the reward for this mission. You should rest before you try again!<br>
|
||||
(This quest can only be undertaken once a day. This quest resets everyday at 6:30 AM.)
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
You did not fulfill the requirements for receiving a reward.<br>
|
||||
you must participate at least 5 times in a non-class battle, class battle, or group battle in order to receive the reward. Of course, if you participate in all three categories, you can expect an even greater reward.
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
I will give you an incomplete reward. Please remember that once you receive the reward, you can't take on the mission again today. Still want the reward?<br>
|
||||
<a action="bypass -h Quest Q00552_OlympiadVeteran 31688-04.html">"Yes."</a>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Grand Olympiad Manager:<br>
|
||||
I will give you an incomplete reward. Please remember that once you receive the reward, you cannot take on the mission anymore today. Do you still want to go ahead?<br>
|
||||
<a action="bypass -h Quest Q00552_OlympiadVeteran 31688-04.html">"Yes please."</a>
|
||||
</body></html>
|
@ -1,208 +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.Q00552_OlympiadVeteran;
|
||||
|
||||
import com.l2jmobius.gameserver.enums.QuestType;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.olympiad.CompetitionType;
|
||||
import com.l2jmobius.gameserver.model.olympiad.Participant;
|
||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import com.l2jmobius.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* Olympiad Veteran (552)
|
||||
* @author lion
|
||||
*/
|
||||
public class Q00552_OlympiadVeteran extends Quest
|
||||
{
|
||||
// NPC
|
||||
private static final int MANAGER = 31688;
|
||||
// Items
|
||||
private static final int TEAM_EVENT_CERTIFICATE = 17241;
|
||||
private static final int CLASS_FREE_BATTLE_CERTIFICATE = 17242;
|
||||
private static final int CLASS_BATTLE_CERTIFICATE = 17243;
|
||||
private static final int OLY_CHEST = 17169;
|
||||
|
||||
public Q00552_OlympiadVeteran()
|
||||
{
|
||||
super(552);
|
||||
addStartNpc(MANAGER);
|
||||
addTalkId(MANAGER);
|
||||
registerQuestItems(TEAM_EVENT_CERTIFICATE, CLASS_FREE_BATTLE_CERTIFICATE, CLASS_BATTLE_CERTIFICATE);
|
||||
addOlympiadMatchFinishId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState st = getQuestState(player, false);
|
||||
if (st == null)
|
||||
{
|
||||
return getNoQuestMsg(player);
|
||||
}
|
||||
String htmltext = event;
|
||||
|
||||
if (event.equalsIgnoreCase("31688-03.html"))
|
||||
{
|
||||
st.startQuest();
|
||||
}
|
||||
else if (event.equalsIgnoreCase("31688-04.html"))
|
||||
{
|
||||
final long count = getQuestItemsCount(player, TEAM_EVENT_CERTIFICATE) + getQuestItemsCount(player, CLASS_FREE_BATTLE_CERTIFICATE) + getQuestItemsCount(player, CLASS_BATTLE_CERTIFICATE);
|
||||
|
||||
if (count > 0)
|
||||
{
|
||||
giveItems(player, OLY_CHEST, count);
|
||||
st.exitQuest(QuestType.DAILY, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = getNoQuestMsg(player); // missing items
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOlympiadMatchFinish(Participant winner, Participant looser, CompetitionType type)
|
||||
{
|
||||
if (winner != null)
|
||||
{
|
||||
final L2PcInstance player = winner.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final QuestState st = getQuestState(player, false);
|
||||
if ((st != null) && st.isStarted())
|
||||
{
|
||||
int matches;
|
||||
switch (type)
|
||||
{
|
||||
case CLASSED:
|
||||
{
|
||||
matches = st.getInt("classed") + 1;
|
||||
st.set("classed", String.valueOf(matches));
|
||||
if ((matches == 5) && !hasQuestItems(player, CLASS_BATTLE_CERTIFICATE))
|
||||
{
|
||||
giveItems(player, CLASS_BATTLE_CERTIFICATE, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case NON_CLASSED:
|
||||
{
|
||||
matches = st.getInt("nonclassed") + 1;
|
||||
st.set("nonclassed", String.valueOf(matches));
|
||||
if ((matches == 5) && !hasQuestItems(player, CLASS_FREE_BATTLE_CERTIFICATE))
|
||||
{
|
||||
giveItems(player, CLASS_FREE_BATTLE_CERTIFICATE, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (looser != null)
|
||||
{
|
||||
final L2PcInstance player = looser.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
final QuestState st = getQuestState(player, false);
|
||||
if ((st != null) && st.isStarted())
|
||||
{
|
||||
int matches;
|
||||
switch (type)
|
||||
{
|
||||
case CLASSED:
|
||||
{
|
||||
matches = st.getInt("classed") + 1;
|
||||
st.set("classed", String.valueOf(matches));
|
||||
if (matches == 5)
|
||||
{
|
||||
giveItems(player, CLASS_BATTLE_CERTIFICATE, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case NON_CLASSED:
|
||||
{
|
||||
matches = st.getInt("nonclassed") + 1;
|
||||
st.set("nonclassed", String.valueOf(matches));
|
||||
if (matches == 5)
|
||||
{
|
||||
giveItems(player, CLASS_FREE_BATTLE_CERTIFICATE, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
final QuestState st = getQuestState(player, true);
|
||||
if (st == null)
|
||||
{
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
if ((player.getLevel() < 75) || !player.isNoble())
|
||||
{
|
||||
htmltext = "31688-00.htm";
|
||||
}
|
||||
else if (st.isCreated())
|
||||
{
|
||||
htmltext = "31688-01.htm";
|
||||
}
|
||||
else if (st.isCompleted())
|
||||
{
|
||||
if (st.isNowAvailable())
|
||||
{
|
||||
st.setState(State.CREATED);
|
||||
htmltext = (player.getLevel() < 75) || !player.isNoble() ? "31688-00.htm" : "31688-01.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "31688-05.html";
|
||||
}
|
||||
}
|
||||
else if (st.isStarted())
|
||||
{
|
||||
final long count = getQuestItemsCount(player, TEAM_EVENT_CERTIFICATE) + getQuestItemsCount(player, CLASS_FREE_BATTLE_CERTIFICATE) + getQuestItemsCount(player, CLASS_BATTLE_CERTIFICATE);
|
||||
|
||||
if (count == 3)
|
||||
{
|
||||
htmltext = "31688-04.html";
|
||||
giveItems(player, OLY_CHEST, 4);
|
||||
st.exitQuest(QuestType.DAILY, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "31688-s" + count + ".html";
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
<html><body>Seed Talisman Manager:<br>
|
||||
Have you used a Seed Talisman? Its power relies on the user's ability and will, very clever, very impressive. I can tell you how to make them even stronger. Yes?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00943_FillingTheEnergyOfDestruction 33715-02.htm">"What happened?"</Button>
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Seed Talisman Manager:<br>
|
||||
The Seed Talisman, it cannot be enhanced with just any magic. Because the Talisman's core is so twisted and layered, it can only be fed by something with similar twists.<br1>
|
||||
You must seek the <font color="LEVEL">Core of Twisted Magic</font>. If you bring me this, yes, I can purify it into usable form. Yes?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00943_FillingTheEnergyOfDestruction 33715-03.htm">"I'll give it a try."</Button>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Seed Talisman Manager:<br>
|
||||
Yes! Good good, yes. Many monsters carry the <font color="LEVEL">Core of Twisted Magic</font>.<br1>
|
||||
All you must do is defeat <font color="LEVEL">Istina, Octavis, Baylor, Balok, Ron, Spezion, or Tauti</font>. Any one of them will do, yes yes!
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Seed Talisman Manager:<br>
|
||||
Bring me the <font color="LEVEL">Core of Twisted Magic</font>, yes?<br1>
|
||||
All you must do is defeat <font color="LEVEL">Istina, Octavis, Baylor, Balok, Ron, Spezion, or Tauti</font>. Any one of them will do, yes yes!
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Seed Talisman Manager:<br>
|
||||
Hmm? What is this? A <font color="LEVEL">Core of Twisted Magic</font>! You must want me to purify this, yes yes?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00943_FillingTheEnergyOfDestruction 33715-06.html">"That's what we agreed on."</Button>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Seed Talisman Manager:<br>
|
||||
Ha! Ah! Here it is! The <font color="LEVEL">Energy of Destruction</font>. This can greatly enhance your Seed Talisman, yes yes, though there is no guarantee, of course. That is up to your destiny!<br1>
|
||||
I am here always, so come back tomorrow, yes, and visit, yes yes?
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Seed Talisman Manager:<br>
|
||||
Hmm? What was I saying? Hmm... I'm quite sleepy. Perhaps it is time for my nap....<br>
|
||||
(This quest can be performed only once a day. Check again tomorrow at 6:30 am.)
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Seed Talisman Manager:<br>
|
||||
Hmm? I forgot what I was saying. Who are you?<br>
|
||||
(You must be level 90 or above to start this quest.)
|
||||
</body></html>
|
@ -1,154 +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.Q00943_FillingTheEnergyOfDestruction;
|
||||
|
||||
import com.l2jmobius.gameserver.enums.QuestType;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import com.l2jmobius.gameserver.model.quest.State;
|
||||
|
||||
/**
|
||||
* Filling the Energy of Destruction (943)
|
||||
* @author St3eT
|
||||
*/
|
||||
public final class Q00943_FillingTheEnergyOfDestruction extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int SEED_TALISMAN = 33715;
|
||||
private static final int[] BOSSES =
|
||||
{
|
||||
29195, // Istina (common)
|
||||
29196, // Istina (extreme)
|
||||
29194, // Octavis (common)
|
||||
29212, // Octavis (extreme)
|
||||
25779, // Spezion (normal)
|
||||
25867, // Spezion (extreme)
|
||||
29213, // Baylor
|
||||
29218, // Balok
|
||||
25825, // Ron
|
||||
29236, // Tauti (common)
|
||||
29237, // Tauti (extreme)
|
||||
};
|
||||
// Items
|
||||
private static final int TWISTED_MAGIC = 35668;
|
||||
private static final int ENERGY_OF_DESTRUCTION = 35562;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 90;
|
||||
|
||||
public Q00943_FillingTheEnergyOfDestruction()
|
||||
{
|
||||
super(943);
|
||||
addStartNpc(SEED_TALISMAN);
|
||||
addTalkId(SEED_TALISMAN);
|
||||
addKillId(BOSSES);
|
||||
registerQuestItems(TWISTED_MAGIC);
|
||||
addCondMinLevel(MIN_LEVEL, "33715-08.html");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState st = getQuestState(player, false);
|
||||
|
||||
if (st == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "33715-02.htm":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "33715-03.htm":
|
||||
{
|
||||
st.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "33715-06.html":
|
||||
{
|
||||
st.exitQuest(QuestType.DAILY, true);
|
||||
giveItems(player, ENERGY_OF_DESTRUCTION, 1);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
String htmltext = getNoQuestMsg(player);
|
||||
final QuestState st = getQuestState(player, true);
|
||||
|
||||
if (npc.getId() == SEED_TALISMAN)
|
||||
{
|
||||
switch (st.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = "33715-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
htmltext = st.isCond(1) ? "33715-04.html" : "33715-05.html";
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
if (st.isNowAvailable())
|
||||
{
|
||||
st.setState(State.CREATED);
|
||||
htmltext = "33715-01.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "33715-07.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
|
||||
{
|
||||
executeForEachPlayer(player, npc, isSummon, true, true);
|
||||
return super.onKill(npc, player, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionForEachPlayer(L2PcInstance player, L2Npc npc, boolean isSummon)
|
||||
{
|
||||
final QuestState st = getQuestState(player, true);
|
||||
if ((st != null) && st.isCond(1) && (npc.calculateDistance(player, false, false) <= 1500))
|
||||
{
|
||||
st.setCond(2, true);
|
||||
giveItems(player, TWISTED_MAGIC, 1);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
<html><body>Warehouse Chief Natools:<br>
|
||||
Both of these missions are very important.<br>
|
||||
Not only must they be completed quickly, they also have extensive political ramifications.<br>
|
||||
I do not think you are yet ready to take on so important a responsibility.<br>
|
||||
Perhaps with more training and experience...<br>
|
||||
(Only characters level 38 and above who have completed Shadow Fox - 3 are permitted to undertake either the Fallen Angel - Request of Dusk or the Fallen Angel - Request of Dawn quest.)
|
||||
</body></html>
|
@ -1,9 +0,0 @@
|
||||
<html><body>Warehouse Chief Natools:<br>
|
||||
In the name of Shadow Fox... You must choose now.<br><br>
|
||||
Select either the request of the Temple and the Lords of Dawn, or that of the Preachers of the Wilderness and the Revolutionaries of Dusk...<br>
|
||||
Choose wisely -- once you have made your decision, it cannot be reversed...<br><br>
|
||||
<a action="bypass -h Quest Q00998_FallenAngelSelect 30894-02.html">"I want to hear about the Lords of Dawn and the Temple again."</a><br>
|
||||
<a action="bypass -h Quest Q00998_FallenAngelSelect 30894-03.html">"I want to hear about the Revolutionaries of Dusk again."</a><br><br>
|
||||
<a action="bypass -h Quest Q00998_FallenAngelSelect dawn">"I will accept the request of the Temple and the Lords of Dawn."</a><br>
|
||||
<a action="bypass -h Quest Q00998_FallenAngelSelect dusk">"I will accept the request of the Revolutionaries of Dusk."</a>
|
||||
</body></html>
|
@ -1,9 +0,0 @@
|
||||
<html><body>Warehouse Chief Natools:<br>
|
||||
The Temple and the Rulers of Dawn believe that Einhasad created Humans, and that they are her rightful representatives in this world, with the power to issue commands in her name.<br>
|
||||
They believe that the other gods are inferior to Einhasad, and so their followers should submit to the Temple's leadership in the war against Shilen and the forces of chaos.<br>
|
||||
Unity and order are their chief concerns, and they take a dim view of diversity and individualism.<br>
|
||||
In fact, they believe that only through a unified society built on a rigid hierarchy can justice prevail and the weak be truly protected.<br>
|
||||
Certainly, their argument carries some weight: the weak are daily attacked and exploited, and justice seems but a dream to most...<br>
|
||||
Ultimately, the Temple and the Rulers of Dawn hope for some sort of reborn empire to bring peace and order to the land...<br>
|
||||
<a action="bypass -h Quest Q00998_FallenAngelSelect 30894-01.html">"I will make my decision now."</a>
|
||||
</body></html>
|
@ -1,10 +0,0 @@
|
||||
<html><body>Warehouse Chief Natools:<br>
|
||||
They argue that we should respect diversity....<br>
|
||||
They believe that all power and all living things are equal on this earth, and that the Temple and the Lords should use their power to protect the powerless.<br>
|
||||
Instead, they say, the Temple and the Lords simply exploit the people to protect their own interests and vested rights.<br>
|
||||
They are hypocrites...<br>
|
||||
The Revolutionaries of Dusk believe that true peace is not artificially imposed on society by a central authority, but rather achieved through a harmonious diversity of powers and races.<br>
|
||||
They say that Einhasad did not, in fact, create Humans -- that was a myth fabricated by Shunaiman, and the Temple and Lords of Dawn know the truth but are afraid to reveal it...<br>
|
||||
The Revolutionaries of Dusk are dedicated to finding some crucial piece of evidence that would permanently discredit their foes.<br>
|
||||
<a action="bypass -h Quest Q00998_FallenAngelSelect 30894-01.html">"I am ready to make my decision..."</a>
|
||||
</body></html>
|
@ -1,97 +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.Q00998_FallenAngelSelect;
|
||||
|
||||
import com.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import com.l2jmobius.gameserver.model.quest.State;
|
||||
|
||||
import quests.Q00141_ShadowFoxPart3.Q00141_ShadowFoxPart3;
|
||||
import quests.Q00142_FallenAngelRequestOfDawn.Q00142_FallenAngelRequestOfDawn;
|
||||
import quests.Q00143_FallenAngelRequestOfDusk.Q00143_FallenAngelRequestOfDusk;
|
||||
|
||||
/**
|
||||
* Fallen Angel Select (998 - Custom)<br>
|
||||
* NOTE: This quest is used for start quest 142 or 143
|
||||
* @author Nono
|
||||
*/
|
||||
public class Q00998_FallenAngelSelect extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int NATOOLS = 30894;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 38;
|
||||
|
||||
public Q00998_FallenAngelSelect()
|
||||
{
|
||||
super(998);
|
||||
setIsCustom(true);
|
||||
addStartNpc(NATOOLS);
|
||||
addTalkId(NATOOLS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState st = getQuestState(player, false);
|
||||
if (st == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "30894-01.html":
|
||||
case "30894-02.html":
|
||||
case "30894-03.html":
|
||||
return event;
|
||||
case "dawn":
|
||||
startQuest(Q00142_FallenAngelRequestOfDawn.class.getSimpleName(), player);
|
||||
break;
|
||||
case "dusk":
|
||||
startQuest(Q00143_FallenAngelRequestOfDusk.class.getSimpleName(), player);
|
||||
break;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void startQuest(String name, L2PcInstance player)
|
||||
{
|
||||
final Quest q = QuestManager.getInstance().getQuest(name);
|
||||
if (q != null)
|
||||
{
|
||||
q.newQuestState(player);
|
||||
q.notifyEvent("30894-01.html", null, player);
|
||||
player.getQuestState(getName()).setState(State.COMPLETED);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState st = getQuestState(player, true);
|
||||
final QuestState qs = player.getQuestState(Q00141_ShadowFoxPart3.class.getSimpleName());
|
||||
if ((st == null) || !st.isStarted())
|
||||
{
|
||||
return getNoQuestMsg(player);
|
||||
}
|
||||
return ((player.getLevel() >= MIN_LEVEL) && (qs != null) && qs.isCompleted()) ? "30894-01.html" : "30894-00.html";
|
||||
}
|
||||
}
|
@ -92,9 +92,7 @@ import quests.Q00240_ImTheOnlyOneYouCanTrust.Q00240_ImTheOnlyOneYouCanTrust;
|
||||
import quests.Q00254_LegendaryTales.Q00254_LegendaryTales;
|
||||
import quests.Q00270_TheOneWhoEndsSilence.Q00270_TheOneWhoEndsSilence;
|
||||
import quests.Q00278_HomeSecurity.Q00278_HomeSecurity;
|
||||
import quests.Q00279_TargetOfOpportunity.Q00279_TargetOfOpportunity;
|
||||
import quests.Q00298_LizardmensConspiracy.Q00298_LizardmensConspiracy;
|
||||
import quests.Q00300_HuntingLetoLizardman.Q00300_HuntingLetoLizardman;
|
||||
import quests.Q00307_ControlDeviceOfTheGiants.Q00307_ControlDeviceOfTheGiants;
|
||||
import quests.Q00310_OnlyWhatRemains.Q00310_OnlyWhatRemains;
|
||||
import quests.Q00359_ForASleeplessDeadman.Q00359_ForASleeplessDeadman;
|
||||
@ -138,8 +136,6 @@ import quests.Q00508_AClansReputation.Q00508_AClansReputation;
|
||||
import quests.Q00509_AClansFame.Q00509_AClansFame;
|
||||
import quests.Q00510_AClansPrestige.Q00510_AClansPrestige;
|
||||
import quests.Q00511_AwlUnderFoot.Q00511_AwlUnderFoot;
|
||||
import quests.Q00551_OlympiadStarter.Q00551_OlympiadStarter;
|
||||
import quests.Q00552_OlympiadVeteran.Q00552_OlympiadVeteran;
|
||||
import quests.Q00553_OlympiadUndefeated.Q00553_OlympiadUndefeated;
|
||||
import quests.Q00617_GatherTheFlames.Q00617_GatherTheFlames;
|
||||
import quests.Q00618_IntoTheFlame.Q00618_IntoTheFlame;
|
||||
@ -172,8 +168,6 @@ import quests.Q00904_DragonTrophyAntharas.Q00904_DragonTrophyAntharas;
|
||||
import quests.Q00905_RefinedDragonBlood.Q00905_RefinedDragonBlood;
|
||||
import quests.Q00906_TheCallOfValakas.Q00906_TheCallOfValakas;
|
||||
import quests.Q00907_DragonTrophyValakas.Q00907_DragonTrophyValakas;
|
||||
import quests.Q00943_FillingTheEnergyOfDestruction.Q00943_FillingTheEnergyOfDestruction;
|
||||
import quests.Q00998_FallenAngelSelect.Q00998_FallenAngelSelect;
|
||||
import quests.Q10273_GoodDayToFly.Q10273_GoodDayToFly;
|
||||
import quests.Q10274_CollectingInTheAir.Q10274_CollectingInTheAir;
|
||||
import quests.Q10275_ContainingTheAttributePower.Q10275_ContainingTheAttributePower;
|
||||
@ -417,9 +411,7 @@ public class QuestMasterHandler
|
||||
Q00254_LegendaryTales.class,
|
||||
Q00270_TheOneWhoEndsSilence.class,
|
||||
Q00278_HomeSecurity.class,
|
||||
Q00279_TargetOfOpportunity.class,
|
||||
Q00298_LizardmensConspiracy.class,
|
||||
Q00300_HuntingLetoLizardman.class,
|
||||
Q00307_ControlDeviceOfTheGiants.class,
|
||||
Q00310_OnlyWhatRemains.class,
|
||||
Q00359_ForASleeplessDeadman.class,
|
||||
@ -463,8 +455,6 @@ public class QuestMasterHandler
|
||||
Q00509_AClansFame.class,
|
||||
Q00510_AClansPrestige.class,
|
||||
Q00511_AwlUnderFoot.class,
|
||||
Q00551_OlympiadStarter.class,
|
||||
Q00552_OlympiadVeteran.class,
|
||||
Q00553_OlympiadUndefeated.class,
|
||||
Q00617_GatherTheFlames.class,
|
||||
Q00618_IntoTheFlame.class,
|
||||
@ -497,8 +487,6 @@ public class QuestMasterHandler
|
||||
Q00905_RefinedDragonBlood.class,
|
||||
Q00906_TheCallOfValakas.class,
|
||||
Q00907_DragonTrophyValakas.class,
|
||||
Q00943_FillingTheEnergyOfDestruction.class,
|
||||
Q00998_FallenAngelSelect.class,
|
||||
Q10273_GoodDayToFly.class,
|
||||
Q10274_CollectingInTheAir.class,
|
||||
Q10275_ContainingTheAttributePower.class,
|
||||
|
Loading…
Reference in New Issue
Block a user