Addition of quest The Dimensional Warp, Part 1 (10801).
Contributed by gigilo1968.
This commit is contained in:
parent
e7ceedbb48
commit
7377b67b70
@ -46,7 +46,6 @@
|
|||||||
10747 The Hero's Journey: Pagan Temple
|
10747 The Hero's Journey: Pagan Temple
|
||||||
10748 Mysterious Suggestion - 1
|
10748 Mysterious Suggestion - 1
|
||||||
10749 Mysterious Suggestion - 2
|
10749 Mysterious Suggestion - 2
|
||||||
10801 The Dimensional Warp, Part 1
|
|
||||||
10802 The Dimensional Warp, Part 2
|
10802 The Dimensional Warp, Part 2
|
||||||
10803 The Dimensional Warp, Part 3
|
10803 The Dimensional Warp, Part 3
|
||||||
10804 The Dimensional Warp, Part 4
|
10804 The Dimensional Warp, Part 4
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Are you trying to enter the Dimensional Warp? It's not a place for people like you.<br>
|
||||||
|
(Only characters Lv. 99 or above may undertake this quest.)
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Have you been inside Dimensional Warp? My job is to send the explorers to the Dimensional Warp, but I don't have enough information here. I'm continuously collecting more, but it's still not enough.<br>
|
||||||
|
I know it won't be easy, but can you do me a favor?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-02.htm">"What is it?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
In the early stages of a Dimensional Warp, <font color="LEVEL">Dimensional Bugbears</font> come out.<br>
|
||||||
|
But we still don't have enough information about them. I need more information about them because people run into them the most.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-03.htm">"How many do you need?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Can we start with 100?<br>
|
||||||
|
They come out often, so it won't be too hard. Thank you!<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-04.htm">"I didn't say yes yet..."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Kill 100 <font color="LEVEL">Dimensional Bugbears</font> and come back to me.
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
We still don't have enough information. That's not enough.<br>
|
||||||
|
Go kill more <font color="LEVEL">Dimensional Bugbears</font>.
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Thank you. This will be enough.<br>
|
||||||
|
Can You give me the information now?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-07.html">"Yup"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Good work. You're almost at the finish line.<br>
|
||||||
|
The reward is better than the last time. Take it.
|
||||||
|
</body></html>
|
@ -0,0 +1,179 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10801_TheDimensionalWarpPart1;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.l2jmobius.Config;
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestSound;
|
||||||
|
import com.l2jmobius.gameserver.model.L2Party;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.State;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Dimensional Warp, Part 1 (10801)
|
||||||
|
* @URL https://l2wiki.com/The_Dimensional_Warp,_Part_1
|
||||||
|
* @author Gigi
|
||||||
|
* @date 2018-09-01 - [12:20:59]
|
||||||
|
*/
|
||||||
|
public class Q10801_TheDimensionalWarpPart1 extends Quest
|
||||||
|
{
|
||||||
|
// NPC
|
||||||
|
private static final int RESED = 33974;
|
||||||
|
// Monsters
|
||||||
|
private static final int DIMENSIONAL_BUGBEAR = 23465;
|
||||||
|
// other
|
||||||
|
private static final int MIN_LEVEL = 99;
|
||||||
|
private static final int DIMENSIONAL_BRACELET_STAGE_1 = 39747;
|
||||||
|
private static final int WARP_CRYSTAL = 39597;
|
||||||
|
|
||||||
|
public Q10801_TheDimensionalWarpPart1()
|
||||||
|
{
|
||||||
|
super(10801);
|
||||||
|
addStartNpc(RESED);
|
||||||
|
addTalkId(RESED);
|
||||||
|
addKillId(DIMENSIONAL_BUGBEAR);
|
||||||
|
addCondMinLevel(MIN_LEVEL, "33974-00.htm");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = null;
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if (qs == null)
|
||||||
|
{
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (event)
|
||||||
|
{
|
||||||
|
case "33974-02.htm":
|
||||||
|
case "33974-03.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33974-04.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33974-07.html":
|
||||||
|
{
|
||||||
|
if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
if (player.getLevel() >= MIN_LEVEL)
|
||||||
|
{
|
||||||
|
addExpAndSp(player, 44442855977L, 0);
|
||||||
|
giveItems(player, DIMENSIONAL_BRACELET_STAGE_1, 1);
|
||||||
|
giveItems(player, WARP_CRYSTAL, 300);
|
||||||
|
qs.exitQuest(false, true);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = getNoQuestLevelRewardMsg(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
htmltext = "33974-01.htm";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
htmltext = (qs.isCond(1)) ? "33974-05.html" : "33974-06.html";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
L2Party party = killer.getParty();
|
||||||
|
if (party != null)
|
||||||
|
{
|
||||||
|
party.getMembers().forEach(p -> onKill(npc, p));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
onKill(npc, killer);
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onKill(L2Npc npc, L2PcInstance killer)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, false);
|
||||||
|
|
||||||
|
if ((qs != null) && qs.isCond(1) && (npc.calculateDistance3D(killer) <= Config.ALT_PARTY_RANGE))
|
||||||
|
{
|
||||||
|
int killedBugbear = qs.getInt("killed_" + DIMENSIONAL_BUGBEAR);
|
||||||
|
if (killedBugbear < 100)
|
||||||
|
{
|
||||||
|
qs.set("killed_" + DIMENSIONAL_BUGBEAR, ++killedBugbear);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
if (killedBugbear >= 100)
|
||||||
|
{
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
sendNpcLogList(killer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
final Set<NpcLogListHolder> holder = new HashSet<>();
|
||||||
|
holder.add(new NpcLogListHolder(DIMENSIONAL_BUGBEAR, false, qs.getInt("killed_" + DIMENSIONAL_BUGBEAR)));
|
||||||
|
return holder;
|
||||||
|
}
|
||||||
|
return super.getNpcLogList(player);
|
||||||
|
}
|
||||||
|
}
|
@ -449,6 +449,7 @@ import quests.Q10797_CrossingFate.Q10797_CrossingFate;
|
|||||||
import quests.Q10798_LettersFromTheQueenDragonValley.Q10798_LettersFromTheQueenDragonValley;
|
import quests.Q10798_LettersFromTheQueenDragonValley.Q10798_LettersFromTheQueenDragonValley;
|
||||||
import quests.Q10799_StrangeThingsAfootInTheValley.Q10799_StrangeThingsAfootInTheValley;
|
import quests.Q10799_StrangeThingsAfootInTheValley.Q10799_StrangeThingsAfootInTheValley;
|
||||||
import quests.Q10800_ReconnaissanceAtDragonValley.Q10800_ReconnaissanceAtDragonValley;
|
import quests.Q10800_ReconnaissanceAtDragonValley.Q10800_ReconnaissanceAtDragonValley;
|
||||||
|
import quests.Q10801_TheDimensionalWarpPart1.Q10801_TheDimensionalWarpPart1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author NosBit
|
* @author NosBit
|
||||||
@ -888,7 +889,8 @@ public class QuestMasterHandler
|
|||||||
Q10797_CrossingFate.class,
|
Q10797_CrossingFate.class,
|
||||||
Q10798_LettersFromTheQueenDragonValley.class,
|
Q10798_LettersFromTheQueenDragonValley.class,
|
||||||
Q10799_StrangeThingsAfootInTheValley.class,
|
Q10799_StrangeThingsAfootInTheValley.class,
|
||||||
Q10800_ReconnaissanceAtDragonValley.class
|
Q10800_ReconnaissanceAtDragonValley.class,
|
||||||
|
Q10801_TheDimensionalWarpPart1.class
|
||||||
};
|
};
|
||||||
|
|
||||||
public static void main(String[] args)
|
public static void main(String[] args)
|
||||||
|
@ -53,7 +53,6 @@
|
|||||||
10747 The Hero's Journey: Pagan Temple
|
10747 The Hero's Journey: Pagan Temple
|
||||||
10748 Mysterious Suggestion - 1
|
10748 Mysterious Suggestion - 1
|
||||||
10749 Mysterious Suggestion - 2
|
10749 Mysterious Suggestion - 2
|
||||||
10801 The Dimensional Warp, Part 1
|
|
||||||
10802 The Dimensional Warp, Part 2
|
10802 The Dimensional Warp, Part 2
|
||||||
10803 The Dimensional Warp, Part 3
|
10803 The Dimensional Warp, Part 3
|
||||||
10804 The Dimensional Warp, Part 4
|
10804 The Dimensional Warp, Part 4
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Are you trying to enter the Dimensional Warp? It's not a place for people like you.<br>
|
||||||
|
(Only characters Lv. 99 or above may undertake this quest.)
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Have you been inside Dimensional Warp? My job is to send the explorers to the Dimensional Warp, but I don't have enough information here. I'm continuously collecting more, but it's still not enough.<br>
|
||||||
|
I know it won't be easy, but can you do me a favor?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-02.htm">"What is it?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
In the early stages of a Dimensional Warp, <font color="LEVEL">Dimensional Bugbears</font> come out.<br>
|
||||||
|
But we still don't have enough information about them. I need more information about them because people run into them the most.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-03.htm">"How many do you need?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Can we start with 100?<br>
|
||||||
|
They come out often, so it won't be too hard. Thank you!<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-04.htm">"I didn't say yes yet..."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Kill 100 <font color="LEVEL">Dimensional Bugbears</font> and come back to me.
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
We still don't have enough information. That's not enough.<br>
|
||||||
|
Go kill more <font color="LEVEL">Dimensional Bugbears</font>.
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Thank you. This will be enough.<br>
|
||||||
|
Can You give me the information now?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-07.html">"Yup"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Good work. You're almost at the finish line.<br>
|
||||||
|
The reward is better than the last time. Take it.
|
||||||
|
</body></html>
|
@ -0,0 +1,179 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10801_TheDimensionalWarpPart1;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.l2jmobius.Config;
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestSound;
|
||||||
|
import com.l2jmobius.gameserver.model.L2Party;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.State;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Dimensional Warp, Part 1 (10801)
|
||||||
|
* @URL https://l2wiki.com/The_Dimensional_Warp,_Part_1
|
||||||
|
* @author Gigi
|
||||||
|
* @date 2018-09-01 - [12:20:59]
|
||||||
|
*/
|
||||||
|
public class Q10801_TheDimensionalWarpPart1 extends Quest
|
||||||
|
{
|
||||||
|
// NPC
|
||||||
|
private static final int RESED = 33974;
|
||||||
|
// Monsters
|
||||||
|
private static final int DIMENSIONAL_BUGBEAR = 23465;
|
||||||
|
// other
|
||||||
|
private static final int MIN_LEVEL = 99;
|
||||||
|
private static final int DIMENSIONAL_BRACELET_STAGE_1 = 39747;
|
||||||
|
private static final int WARP_CRYSTAL = 39597;
|
||||||
|
|
||||||
|
public Q10801_TheDimensionalWarpPart1()
|
||||||
|
{
|
||||||
|
super(10801);
|
||||||
|
addStartNpc(RESED);
|
||||||
|
addTalkId(RESED);
|
||||||
|
addKillId(DIMENSIONAL_BUGBEAR);
|
||||||
|
addCondMinLevel(MIN_LEVEL, "33974-00.htm");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = null;
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if (qs == null)
|
||||||
|
{
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (event)
|
||||||
|
{
|
||||||
|
case "33974-02.htm":
|
||||||
|
case "33974-03.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33974-04.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33974-07.html":
|
||||||
|
{
|
||||||
|
if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
if (player.getLevel() >= MIN_LEVEL)
|
||||||
|
{
|
||||||
|
addExpAndSp(player, 44442855977L, 0);
|
||||||
|
giveItems(player, DIMENSIONAL_BRACELET_STAGE_1, 1);
|
||||||
|
giveItems(player, WARP_CRYSTAL, 300);
|
||||||
|
qs.exitQuest(false, true);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = getNoQuestLevelRewardMsg(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
htmltext = "33974-01.htm";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
htmltext = (qs.isCond(1)) ? "33974-05.html" : "33974-06.html";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
L2Party party = killer.getParty();
|
||||||
|
if (party != null)
|
||||||
|
{
|
||||||
|
party.getMembers().forEach(p -> onKill(npc, p));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
onKill(npc, killer);
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onKill(L2Npc npc, L2PcInstance killer)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, false);
|
||||||
|
|
||||||
|
if ((qs != null) && qs.isCond(1) && (npc.calculateDistance3D(killer) <= Config.ALT_PARTY_RANGE))
|
||||||
|
{
|
||||||
|
int killedBugbear = qs.getInt("killed_" + DIMENSIONAL_BUGBEAR);
|
||||||
|
if (killedBugbear < 100)
|
||||||
|
{
|
||||||
|
qs.set("killed_" + DIMENSIONAL_BUGBEAR, ++killedBugbear);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
if (killedBugbear >= 100)
|
||||||
|
{
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
sendNpcLogList(killer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
final Set<NpcLogListHolder> holder = new HashSet<>();
|
||||||
|
holder.add(new NpcLogListHolder(DIMENSIONAL_BUGBEAR, false, qs.getInt("killed_" + DIMENSIONAL_BUGBEAR)));
|
||||||
|
return holder;
|
||||||
|
}
|
||||||
|
return super.getNpcLogList(player);
|
||||||
|
}
|
||||||
|
}
|
@ -455,6 +455,7 @@ import quests.Q10797_CrossingFate.Q10797_CrossingFate;
|
|||||||
import quests.Q10798_LettersFromTheQueenDragonValley.Q10798_LettersFromTheQueenDragonValley;
|
import quests.Q10798_LettersFromTheQueenDragonValley.Q10798_LettersFromTheQueenDragonValley;
|
||||||
import quests.Q10799_StrangeThingsAfootInTheValley.Q10799_StrangeThingsAfootInTheValley;
|
import quests.Q10799_StrangeThingsAfootInTheValley.Q10799_StrangeThingsAfootInTheValley;
|
||||||
import quests.Q10800_ReconnaissanceAtDragonValley.Q10800_ReconnaissanceAtDragonValley;
|
import quests.Q10800_ReconnaissanceAtDragonValley.Q10800_ReconnaissanceAtDragonValley;
|
||||||
|
import quests.Q10801_TheDimensionalWarpPart1.Q10801_TheDimensionalWarpPart1;
|
||||||
import quests.Q10811_ExaltedOneWhoFacesTheLimit.Q10811_ExaltedOneWhoFacesTheLimit;
|
import quests.Q10811_ExaltedOneWhoFacesTheLimit.Q10811_ExaltedOneWhoFacesTheLimit;
|
||||||
import quests.Q10812_FacingSadness.Q10812_FacingSadness;
|
import quests.Q10812_FacingSadness.Q10812_FacingSadness;
|
||||||
import quests.Q10813_ForGlory.Q10813_ForGlory;
|
import quests.Q10813_ForGlory.Q10813_ForGlory;
|
||||||
@ -928,6 +929,7 @@ public class QuestMasterHandler
|
|||||||
Q10798_LettersFromTheQueenDragonValley.class,
|
Q10798_LettersFromTheQueenDragonValley.class,
|
||||||
Q10799_StrangeThingsAfootInTheValley.class,
|
Q10799_StrangeThingsAfootInTheValley.class,
|
||||||
Q10800_ReconnaissanceAtDragonValley.class,
|
Q10800_ReconnaissanceAtDragonValley.class,
|
||||||
|
Q10801_TheDimensionalWarpPart1.class,
|
||||||
Q10811_ExaltedOneWhoFacesTheLimit.class,
|
Q10811_ExaltedOneWhoFacesTheLimit.class,
|
||||||
Q10812_FacingSadness.class,
|
Q10812_FacingSadness.class,
|
||||||
Q10813_ForGlory.class,
|
Q10813_ForGlory.class,
|
||||||
|
@ -83,7 +83,6 @@
|
|||||||
10731 The Minstrel's Song, Part 6
|
10731 The Minstrel's Song, Part 6
|
||||||
10748 Mysterious Suggestion - 1
|
10748 Mysterious Suggestion - 1
|
||||||
10749 Mysterious Suggestion - 2
|
10749 Mysterious Suggestion - 2
|
||||||
10801 The Dimensional Warp, Part 1
|
|
||||||
10802 The Dimensional Warp, Part 2
|
10802 The Dimensional Warp, Part 2
|
||||||
10803 The Dimensional Warp, Part 3
|
10803 The Dimensional Warp, Part 3
|
||||||
10804 The Dimensional Warp, Part 4
|
10804 The Dimensional Warp, Part 4
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Are you trying to enter the Dimensional Warp? It's not a place for people like you.<br>
|
||||||
|
(Only characters Lv. 99 or above may undertake this quest.)
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Have you been inside Dimensional Warp? My job is to send the explorers to the Dimensional Warp, but I don't have enough information here. I'm continuously collecting more, but it's still not enough.<br>
|
||||||
|
I know it won't be easy, but can you do me a favor?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-02.htm">"What is it?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
In the early stages of a Dimensional Warp, <font color="LEVEL">Dimensional Bugbears</font> come out.<br>
|
||||||
|
But we still don't have enough information about them. I need more information about them because people run into them the most.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-03.htm">"How many do you need?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Can we start with 100?<br>
|
||||||
|
They come out often, so it won't be too hard. Thank you!<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-04.htm">"I didn't say yes yet..."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Kill 100 <font color="LEVEL">Dimensional Bugbears</font> and come back to me.
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
We still don't have enough information. That's not enough.<br>
|
||||||
|
Go kill more <font color="LEVEL">Dimensional Bugbears</font>.
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Thank you. This will be enough.<br>
|
||||||
|
Can You give me the information now?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-07.html">"Yup"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Good work. You're almost at the finish line.<br>
|
||||||
|
The reward is better than the last time. Take it.
|
||||||
|
</body></html>
|
@ -0,0 +1,179 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10801_TheDimensionalWarpPart1;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.l2jmobius.Config;
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestSound;
|
||||||
|
import com.l2jmobius.gameserver.model.L2Party;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.State;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Dimensional Warp, Part 1 (10801)
|
||||||
|
* @URL https://l2wiki.com/The_Dimensional_Warp,_Part_1
|
||||||
|
* @author Gigi
|
||||||
|
* @date 2018-09-01 - [12:20:59]
|
||||||
|
*/
|
||||||
|
public class Q10801_TheDimensionalWarpPart1 extends Quest
|
||||||
|
{
|
||||||
|
// NPC
|
||||||
|
private static final int RESED = 33974;
|
||||||
|
// Monsters
|
||||||
|
private static final int DIMENSIONAL_BUGBEAR = 23465;
|
||||||
|
// other
|
||||||
|
private static final int MIN_LEVEL = 99;
|
||||||
|
private static final int DIMENSIONAL_BRACELET_STAGE_1 = 39747;
|
||||||
|
private static final int WARP_CRYSTAL = 39597;
|
||||||
|
|
||||||
|
public Q10801_TheDimensionalWarpPart1()
|
||||||
|
{
|
||||||
|
super(10801);
|
||||||
|
addStartNpc(RESED);
|
||||||
|
addTalkId(RESED);
|
||||||
|
addKillId(DIMENSIONAL_BUGBEAR);
|
||||||
|
addCondMinLevel(MIN_LEVEL, "33974-00.htm");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = null;
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if (qs == null)
|
||||||
|
{
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (event)
|
||||||
|
{
|
||||||
|
case "33974-02.htm":
|
||||||
|
case "33974-03.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33974-04.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33974-07.html":
|
||||||
|
{
|
||||||
|
if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
if (player.getLevel() >= MIN_LEVEL)
|
||||||
|
{
|
||||||
|
addExpAndSp(player, 44442855977L, 0);
|
||||||
|
giveItems(player, DIMENSIONAL_BRACELET_STAGE_1, 1);
|
||||||
|
giveItems(player, WARP_CRYSTAL, 300);
|
||||||
|
qs.exitQuest(false, true);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = getNoQuestLevelRewardMsg(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
htmltext = "33974-01.htm";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
htmltext = (qs.isCond(1)) ? "33974-05.html" : "33974-06.html";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
L2Party party = killer.getParty();
|
||||||
|
if (party != null)
|
||||||
|
{
|
||||||
|
party.getMembers().forEach(p -> onKill(npc, p));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
onKill(npc, killer);
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onKill(L2Npc npc, L2PcInstance killer)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, false);
|
||||||
|
|
||||||
|
if ((qs != null) && qs.isCond(1) && (npc.calculateDistance3D(killer) <= Config.ALT_PARTY_RANGE))
|
||||||
|
{
|
||||||
|
int killedBugbear = qs.getInt("killed_" + DIMENSIONAL_BUGBEAR);
|
||||||
|
if (killedBugbear < 100)
|
||||||
|
{
|
||||||
|
qs.set("killed_" + DIMENSIONAL_BUGBEAR, ++killedBugbear);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
if (killedBugbear >= 100)
|
||||||
|
{
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
sendNpcLogList(killer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
final Set<NpcLogListHolder> holder = new HashSet<>();
|
||||||
|
holder.add(new NpcLogListHolder(DIMENSIONAL_BUGBEAR, false, qs.getInt("killed_" + DIMENSIONAL_BUGBEAR)));
|
||||||
|
return holder;
|
||||||
|
}
|
||||||
|
return super.getNpcLogList(player);
|
||||||
|
}
|
||||||
|
}
|
@ -421,6 +421,7 @@ import quests.Q10797_CrossingFate.Q10797_CrossingFate;
|
|||||||
import quests.Q10798_LettersFromTheQueenDragonValley.Q10798_LettersFromTheQueenDragonValley;
|
import quests.Q10798_LettersFromTheQueenDragonValley.Q10798_LettersFromTheQueenDragonValley;
|
||||||
import quests.Q10799_StrangeThingsAfootInTheValley.Q10799_StrangeThingsAfootInTheValley;
|
import quests.Q10799_StrangeThingsAfootInTheValley.Q10799_StrangeThingsAfootInTheValley;
|
||||||
import quests.Q10800_ReconnaissanceAtDragonValley.Q10800_ReconnaissanceAtDragonValley;
|
import quests.Q10800_ReconnaissanceAtDragonValley.Q10800_ReconnaissanceAtDragonValley;
|
||||||
|
import quests.Q10801_TheDimensionalWarpPart1.Q10801_TheDimensionalWarpPart1;
|
||||||
import quests.Q10811_ExaltedOneWhoFacesTheLimit.Q10811_ExaltedOneWhoFacesTheLimit;
|
import quests.Q10811_ExaltedOneWhoFacesTheLimit.Q10811_ExaltedOneWhoFacesTheLimit;
|
||||||
import quests.Q10812_FacingSadness.Q10812_FacingSadness;
|
import quests.Q10812_FacingSadness.Q10812_FacingSadness;
|
||||||
import quests.Q10813_ForGlory.Q10813_ForGlory;
|
import quests.Q10813_ForGlory.Q10813_ForGlory;
|
||||||
@ -860,6 +861,7 @@ public class QuestMasterHandler
|
|||||||
Q10798_LettersFromTheQueenDragonValley.class,
|
Q10798_LettersFromTheQueenDragonValley.class,
|
||||||
Q10799_StrangeThingsAfootInTheValley.class,
|
Q10799_StrangeThingsAfootInTheValley.class,
|
||||||
Q10800_ReconnaissanceAtDragonValley.class,
|
Q10800_ReconnaissanceAtDragonValley.class,
|
||||||
|
Q10801_TheDimensionalWarpPart1.class,
|
||||||
Q10811_ExaltedOneWhoFacesTheLimit.class,
|
Q10811_ExaltedOneWhoFacesTheLimit.class,
|
||||||
Q10812_FacingSadness.class,
|
Q10812_FacingSadness.class,
|
||||||
Q10813_ForGlory.class,
|
Q10813_ForGlory.class,
|
||||||
|
@ -152,7 +152,6 @@
|
|||||||
10731 The Minstrel's Song, Part 6
|
10731 The Minstrel's Song, Part 6
|
||||||
10748 Mysterious Suggestion - 1
|
10748 Mysterious Suggestion - 1
|
||||||
10749 Mysterious Suggestion - 2
|
10749 Mysterious Suggestion - 2
|
||||||
10801 The Dimensional Warp, Part 1
|
|
||||||
10802 The Dimensional Warp, Part 2
|
10802 The Dimensional Warp, Part 2
|
||||||
10803 The Dimensional Warp, Part 3
|
10803 The Dimensional Warp, Part 3
|
||||||
10804 The Dimensional Warp, Part 4
|
10804 The Dimensional Warp, Part 4
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Are you trying to enter the Dimensional Warp? It's not a place for people like you.<br>
|
||||||
|
(Only characters Lv. 99 or above may undertake this quest.)
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Have you been inside Dimensional Warp? My job is to send the explorers to the Dimensional Warp, but I don't have enough information here. I'm continuously collecting more, but it's still not enough.<br>
|
||||||
|
I know it won't be easy, but can you do me a favor?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-02.htm">"What is it?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
In the early stages of a Dimensional Warp, <font color="LEVEL">Dimensional Bugbears</font> come out.<br>
|
||||||
|
But we still don't have enough information about them. I need more information about them because people run into them the most.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-03.htm">"How many do you need?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Can we start with 100?<br>
|
||||||
|
They come out often, so it won't be too hard. Thank you!<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-04.htm">"I didn't say yes yet..."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Kill 100 <font color="LEVEL">Dimensional Bugbears</font> and come back to me.
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
We still don't have enough information. That's not enough.<br>
|
||||||
|
Go kill more <font color="LEVEL">Dimensional Bugbears</font>.
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Thank you. This will be enough.<br>
|
||||||
|
Can You give me the information now?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-07.html">"Yup"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Good work. You're almost at the finish line.<br>
|
||||||
|
The reward is better than the last time. Take it.
|
||||||
|
</body></html>
|
@ -0,0 +1,179 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10801_TheDimensionalWarpPart1;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.l2jmobius.Config;
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestSound;
|
||||||
|
import com.l2jmobius.gameserver.model.L2Party;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.State;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Dimensional Warp, Part 1 (10801)
|
||||||
|
* @URL https://l2wiki.com/The_Dimensional_Warp,_Part_1
|
||||||
|
* @author Gigi
|
||||||
|
* @date 2018-09-01 - [12:20:59]
|
||||||
|
*/
|
||||||
|
public class Q10801_TheDimensionalWarpPart1 extends Quest
|
||||||
|
{
|
||||||
|
// NPC
|
||||||
|
private static final int RESED = 33974;
|
||||||
|
// Monsters
|
||||||
|
private static final int DIMENSIONAL_BUGBEAR = 23465;
|
||||||
|
// other
|
||||||
|
private static final int MIN_LEVEL = 99;
|
||||||
|
private static final int DIMENSIONAL_BRACELET_STAGE_1 = 39747;
|
||||||
|
private static final int WARP_CRYSTAL = 39597;
|
||||||
|
|
||||||
|
public Q10801_TheDimensionalWarpPart1()
|
||||||
|
{
|
||||||
|
super(10801);
|
||||||
|
addStartNpc(RESED);
|
||||||
|
addTalkId(RESED);
|
||||||
|
addKillId(DIMENSIONAL_BUGBEAR);
|
||||||
|
addCondMinLevel(MIN_LEVEL, "33974-00.htm");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = null;
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if (qs == null)
|
||||||
|
{
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (event)
|
||||||
|
{
|
||||||
|
case "33974-02.htm":
|
||||||
|
case "33974-03.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33974-04.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33974-07.html":
|
||||||
|
{
|
||||||
|
if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
if (player.getLevel() >= MIN_LEVEL)
|
||||||
|
{
|
||||||
|
addExpAndSp(player, 44442855977L, 0);
|
||||||
|
giveItems(player, DIMENSIONAL_BRACELET_STAGE_1, 1);
|
||||||
|
giveItems(player, WARP_CRYSTAL, 300);
|
||||||
|
qs.exitQuest(false, true);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = getNoQuestLevelRewardMsg(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
htmltext = "33974-01.htm";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
htmltext = (qs.isCond(1)) ? "33974-05.html" : "33974-06.html";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
L2Party party = killer.getParty();
|
||||||
|
if (party != null)
|
||||||
|
{
|
||||||
|
party.getMembers().forEach(p -> onKill(npc, p));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
onKill(npc, killer);
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onKill(L2Npc npc, L2PcInstance killer)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, false);
|
||||||
|
|
||||||
|
if ((qs != null) && qs.isCond(1) && (npc.calculateDistance3D(killer) <= Config.ALT_PARTY_RANGE))
|
||||||
|
{
|
||||||
|
int killedBugbear = qs.getInt("killed_" + DIMENSIONAL_BUGBEAR);
|
||||||
|
if (killedBugbear < 100)
|
||||||
|
{
|
||||||
|
qs.set("killed_" + DIMENSIONAL_BUGBEAR, ++killedBugbear);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
if (killedBugbear >= 100)
|
||||||
|
{
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
sendNpcLogList(killer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
final Set<NpcLogListHolder> holder = new HashSet<>();
|
||||||
|
holder.add(new NpcLogListHolder(DIMENSIONAL_BUGBEAR, false, qs.getInt("killed_" + DIMENSIONAL_BUGBEAR)));
|
||||||
|
return holder;
|
||||||
|
}
|
||||||
|
return super.getNpcLogList(player);
|
||||||
|
}
|
||||||
|
}
|
@ -419,6 +419,7 @@ import quests.Q10797_CrossingFate.Q10797_CrossingFate;
|
|||||||
import quests.Q10798_LettersFromTheQueenDragonValley.Q10798_LettersFromTheQueenDragonValley;
|
import quests.Q10798_LettersFromTheQueenDragonValley.Q10798_LettersFromTheQueenDragonValley;
|
||||||
import quests.Q10799_StrangeThingsAfootInTheValley.Q10799_StrangeThingsAfootInTheValley;
|
import quests.Q10799_StrangeThingsAfootInTheValley.Q10799_StrangeThingsAfootInTheValley;
|
||||||
import quests.Q10800_ReconnaissanceAtDragonValley.Q10800_ReconnaissanceAtDragonValley;
|
import quests.Q10800_ReconnaissanceAtDragonValley.Q10800_ReconnaissanceAtDragonValley;
|
||||||
|
import quests.Q10801_TheDimensionalWarpPart1.Q10801_TheDimensionalWarpPart1;
|
||||||
import quests.Q10811_ExaltedOneWhoFacesTheLimit.Q10811_ExaltedOneWhoFacesTheLimit;
|
import quests.Q10811_ExaltedOneWhoFacesTheLimit.Q10811_ExaltedOneWhoFacesTheLimit;
|
||||||
import quests.Q10812_FacingSadness.Q10812_FacingSadness;
|
import quests.Q10812_FacingSadness.Q10812_FacingSadness;
|
||||||
import quests.Q10813_ForGlory.Q10813_ForGlory;
|
import quests.Q10813_ForGlory.Q10813_ForGlory;
|
||||||
@ -856,6 +857,7 @@ public class QuestMasterHandler
|
|||||||
Q10798_LettersFromTheQueenDragonValley.class,
|
Q10798_LettersFromTheQueenDragonValley.class,
|
||||||
Q10799_StrangeThingsAfootInTheValley.class,
|
Q10799_StrangeThingsAfootInTheValley.class,
|
||||||
Q10800_ReconnaissanceAtDragonValley.class,
|
Q10800_ReconnaissanceAtDragonValley.class,
|
||||||
|
Q10801_TheDimensionalWarpPart1.class,
|
||||||
Q10811_ExaltedOneWhoFacesTheLimit.class,
|
Q10811_ExaltedOneWhoFacesTheLimit.class,
|
||||||
Q10812_FacingSadness.class,
|
Q10812_FacingSadness.class,
|
||||||
Q10813_ForGlory.class,
|
Q10813_ForGlory.class,
|
||||||
|
@ -216,7 +216,6 @@
|
|||||||
10731 The Minstrel's Song, Part 6
|
10731 The Minstrel's Song, Part 6
|
||||||
10748 Mysterious Suggestion - 1
|
10748 Mysterious Suggestion - 1
|
||||||
10749 Mysterious Suggestion - 2
|
10749 Mysterious Suggestion - 2
|
||||||
10801 The Dimensional Warp, Part 1
|
|
||||||
10802 The Dimensional Warp, Part 2
|
10802 The Dimensional Warp, Part 2
|
||||||
10803 The Dimensional Warp, Part 3
|
10803 The Dimensional Warp, Part 3
|
||||||
10804 The Dimensional Warp, Part 4
|
10804 The Dimensional Warp, Part 4
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Are you trying to enter the Dimensional Warp? It's not a place for people like you.<br>
|
||||||
|
(Only characters Lv. 99 or above may undertake this quest.)
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Have you been inside Dimensional Warp? My job is to send the explorers to the Dimensional Warp, but I don't have enough information here. I'm continuously collecting more, but it's still not enough.<br>
|
||||||
|
I know it won't be easy, but can you do me a favor?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-02.htm">"What is it?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
In the early stages of a Dimensional Warp, <font color="LEVEL">Dimensional Bugbears</font> come out.<br>
|
||||||
|
But we still don't have enough information about them. I need more information about them because people run into them the most.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-03.htm">"How many do you need?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Can we start with 100?<br>
|
||||||
|
They come out often, so it won't be too hard. Thank you!<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-04.htm">"I didn't say yes yet..."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Kill 100 <font color="LEVEL">Dimensional Bugbears</font> and come back to me.
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
We still don't have enough information. That's not enough.<br>
|
||||||
|
Go kill more <font color="LEVEL">Dimensional Bugbears</font>.
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Thank you. This will be enough.<br>
|
||||||
|
Can You give me the information now?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-07.html">"Yup"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Good work. You're almost at the finish line.<br>
|
||||||
|
The reward is better than the last time. Take it.
|
||||||
|
</body></html>
|
@ -0,0 +1,179 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10801_TheDimensionalWarpPart1;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.l2jmobius.Config;
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestSound;
|
||||||
|
import com.l2jmobius.gameserver.model.L2Party;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.State;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Dimensional Warp, Part 1 (10801)
|
||||||
|
* @URL https://l2wiki.com/The_Dimensional_Warp,_Part_1
|
||||||
|
* @author Gigi
|
||||||
|
* @date 2018-09-01 - [12:20:59]
|
||||||
|
*/
|
||||||
|
public class Q10801_TheDimensionalWarpPart1 extends Quest
|
||||||
|
{
|
||||||
|
// NPC
|
||||||
|
private static final int RESED = 33974;
|
||||||
|
// Monsters
|
||||||
|
private static final int DIMENSIONAL_BUGBEAR = 23465;
|
||||||
|
// other
|
||||||
|
private static final int MIN_LEVEL = 99;
|
||||||
|
private static final int DIMENSIONAL_BRACELET_STAGE_1 = 39747;
|
||||||
|
private static final int WARP_CRYSTAL = 39597;
|
||||||
|
|
||||||
|
public Q10801_TheDimensionalWarpPart1()
|
||||||
|
{
|
||||||
|
super(10801);
|
||||||
|
addStartNpc(RESED);
|
||||||
|
addTalkId(RESED);
|
||||||
|
addKillId(DIMENSIONAL_BUGBEAR);
|
||||||
|
addCondMinLevel(MIN_LEVEL, "33974-00.htm");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = null;
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if (qs == null)
|
||||||
|
{
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (event)
|
||||||
|
{
|
||||||
|
case "33974-02.htm":
|
||||||
|
case "33974-03.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33974-04.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33974-07.html":
|
||||||
|
{
|
||||||
|
if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
if (player.getLevel() >= MIN_LEVEL)
|
||||||
|
{
|
||||||
|
addExpAndSp(player, 44442855977L, 0);
|
||||||
|
giveItems(player, DIMENSIONAL_BRACELET_STAGE_1, 1);
|
||||||
|
giveItems(player, WARP_CRYSTAL, 300);
|
||||||
|
qs.exitQuest(false, true);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = getNoQuestLevelRewardMsg(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
htmltext = "33974-01.htm";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
htmltext = (qs.isCond(1)) ? "33974-05.html" : "33974-06.html";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
L2Party party = killer.getParty();
|
||||||
|
if (party != null)
|
||||||
|
{
|
||||||
|
party.getMembers().forEach(p -> onKill(npc, p));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
onKill(npc, killer);
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onKill(L2Npc npc, L2PcInstance killer)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, false);
|
||||||
|
|
||||||
|
if ((qs != null) && qs.isCond(1) && (npc.calculateDistance3D(killer) <= Config.ALT_PARTY_RANGE))
|
||||||
|
{
|
||||||
|
int killedBugbear = qs.getInt("killed_" + DIMENSIONAL_BUGBEAR);
|
||||||
|
if (killedBugbear < 100)
|
||||||
|
{
|
||||||
|
qs.set("killed_" + DIMENSIONAL_BUGBEAR, ++killedBugbear);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
if (killedBugbear >= 100)
|
||||||
|
{
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
sendNpcLogList(killer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
final Set<NpcLogListHolder> holder = new HashSet<>();
|
||||||
|
holder.add(new NpcLogListHolder(DIMENSIONAL_BUGBEAR, false, qs.getInt("killed_" + DIMENSIONAL_BUGBEAR)));
|
||||||
|
return holder;
|
||||||
|
}
|
||||||
|
return super.getNpcLogList(player);
|
||||||
|
}
|
||||||
|
}
|
@ -407,6 +407,7 @@ import quests.Q10797_CrossingFate.Q10797_CrossingFate;
|
|||||||
import quests.Q10798_LettersFromTheQueenDragonValley.Q10798_LettersFromTheQueenDragonValley;
|
import quests.Q10798_LettersFromTheQueenDragonValley.Q10798_LettersFromTheQueenDragonValley;
|
||||||
import quests.Q10799_StrangeThingsAfootInTheValley.Q10799_StrangeThingsAfootInTheValley;
|
import quests.Q10799_StrangeThingsAfootInTheValley.Q10799_StrangeThingsAfootInTheValley;
|
||||||
import quests.Q10800_ReconnaissanceAtDragonValley.Q10800_ReconnaissanceAtDragonValley;
|
import quests.Q10800_ReconnaissanceAtDragonValley.Q10800_ReconnaissanceAtDragonValley;
|
||||||
|
import quests.Q10801_TheDimensionalWarpPart1.Q10801_TheDimensionalWarpPart1;
|
||||||
import quests.Q10811_ExaltedOneWhoFacesTheLimit.Q10811_ExaltedOneWhoFacesTheLimit;
|
import quests.Q10811_ExaltedOneWhoFacesTheLimit.Q10811_ExaltedOneWhoFacesTheLimit;
|
||||||
import quests.Q10812_FacingSadness.Q10812_FacingSadness;
|
import quests.Q10812_FacingSadness.Q10812_FacingSadness;
|
||||||
import quests.Q10813_ForGlory.Q10813_ForGlory;
|
import quests.Q10813_ForGlory.Q10813_ForGlory;
|
||||||
@ -832,6 +833,7 @@ public class QuestMasterHandler
|
|||||||
Q10798_LettersFromTheQueenDragonValley.class,
|
Q10798_LettersFromTheQueenDragonValley.class,
|
||||||
Q10799_StrangeThingsAfootInTheValley.class,
|
Q10799_StrangeThingsAfootInTheValley.class,
|
||||||
Q10800_ReconnaissanceAtDragonValley.class,
|
Q10800_ReconnaissanceAtDragonValley.class,
|
||||||
|
Q10801_TheDimensionalWarpPart1.class,
|
||||||
Q10811_ExaltedOneWhoFacesTheLimit.class,
|
Q10811_ExaltedOneWhoFacesTheLimit.class,
|
||||||
Q10812_FacingSadness.class,
|
Q10812_FacingSadness.class,
|
||||||
Q10813_ForGlory.class,
|
Q10813_ForGlory.class,
|
||||||
|
@ -231,7 +231,6 @@
|
|||||||
10731 The Minstrel's Song, Part 6
|
10731 The Minstrel's Song, Part 6
|
||||||
10748 Mysterious Suggestion - 1
|
10748 Mysterious Suggestion - 1
|
||||||
10749 Mysterious Suggestion - 2
|
10749 Mysterious Suggestion - 2
|
||||||
10801 The Dimensional Warp, Part 1
|
|
||||||
10802 The Dimensional Warp, Part 2
|
10802 The Dimensional Warp, Part 2
|
||||||
10803 The Dimensional Warp, Part 3
|
10803 The Dimensional Warp, Part 3
|
||||||
10804 The Dimensional Warp, Part 4
|
10804 The Dimensional Warp, Part 4
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Are you trying to enter the Dimensional Warp? It's not a place for people like you.<br>
|
||||||
|
(Only characters Lv. 99 or above may undertake this quest.)
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Have you been inside Dimensional Warp? My job is to send the explorers to the Dimensional Warp, but I don't have enough information here. I'm continuously collecting more, but it's still not enough.<br>
|
||||||
|
I know it won't be easy, but can you do me a favor?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-02.htm">"What is it?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
In the early stages of a Dimensional Warp, <font color="LEVEL">Dimensional Bugbears</font> come out.<br>
|
||||||
|
But we still don't have enough information about them. I need more information about them because people run into them the most.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-03.htm">"How many do you need?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Can we start with 100?<br>
|
||||||
|
They come out often, so it won't be too hard. Thank you!<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-04.htm">"I didn't say yes yet..."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Kill 100 <font color="LEVEL">Dimensional Bugbears</font> and come back to me.
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
We still don't have enough information. That's not enough.<br>
|
||||||
|
Go kill more <font color="LEVEL">Dimensional Bugbears</font>.
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Thank you. This will be enough.<br>
|
||||||
|
Can You give me the information now?<br>
|
||||||
|
<Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10801_TheDimensionalWarpPart1 33974-07.html">"Yup"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Resed:<br>
|
||||||
|
Good work. You're almost at the finish line.<br>
|
||||||
|
The reward is better than the last time. Take it.
|
||||||
|
</body></html>
|
@ -0,0 +1,179 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10801_TheDimensionalWarpPart1;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.l2jmobius.Config;
|
||||||
|
import com.l2jmobius.gameserver.enums.QuestSound;
|
||||||
|
import com.l2jmobius.gameserver.model.L2Party;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
||||||
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
|
import com.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.Quest;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
|
import com.l2jmobius.gameserver.model.quest.State;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Dimensional Warp, Part 1 (10801)
|
||||||
|
* @URL https://l2wiki.com/The_Dimensional_Warp,_Part_1
|
||||||
|
* @author Gigi
|
||||||
|
* @date 2018-09-01 - [12:20:59]
|
||||||
|
*/
|
||||||
|
public class Q10801_TheDimensionalWarpPart1 extends Quest
|
||||||
|
{
|
||||||
|
// NPC
|
||||||
|
private static final int RESED = 33974;
|
||||||
|
// Monsters
|
||||||
|
private static final int DIMENSIONAL_BUGBEAR = 23465;
|
||||||
|
// other
|
||||||
|
private static final int MIN_LEVEL = 99;
|
||||||
|
private static final int DIMENSIONAL_BRACELET_STAGE_1 = 39747;
|
||||||
|
private static final int WARP_CRYSTAL = 39597;
|
||||||
|
|
||||||
|
public Q10801_TheDimensionalWarpPart1()
|
||||||
|
{
|
||||||
|
super(10801);
|
||||||
|
addStartNpc(RESED);
|
||||||
|
addTalkId(RESED);
|
||||||
|
addKillId(DIMENSIONAL_BUGBEAR);
|
||||||
|
addCondMinLevel(MIN_LEVEL, "33974-00.htm");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = null;
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if (qs == null)
|
||||||
|
{
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (event)
|
||||||
|
{
|
||||||
|
case "33974-02.htm":
|
||||||
|
case "33974-03.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33974-04.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "33974-07.html":
|
||||||
|
{
|
||||||
|
if (qs.isCond(2))
|
||||||
|
{
|
||||||
|
if (player.getLevel() >= MIN_LEVEL)
|
||||||
|
{
|
||||||
|
addExpAndSp(player, 44442855977L, 0);
|
||||||
|
giveItems(player, DIMENSIONAL_BRACELET_STAGE_1, 1);
|
||||||
|
giveItems(player, WARP_CRYSTAL, 300);
|
||||||
|
qs.exitQuest(false, true);
|
||||||
|
htmltext = event;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = getNoQuestLevelRewardMsg(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
htmltext = "33974-01.htm";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
htmltext = (qs.isCond(1)) ? "33974-05.html" : "33974-06.html";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
L2Party party = killer.getParty();
|
||||||
|
if (party != null)
|
||||||
|
{
|
||||||
|
party.getMembers().forEach(p -> onKill(npc, p));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
onKill(npc, killer);
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onKill(L2Npc npc, L2PcInstance killer)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, false);
|
||||||
|
|
||||||
|
if ((qs != null) && qs.isCond(1) && (npc.calculateDistance3D(killer) <= Config.ALT_PARTY_RANGE))
|
||||||
|
{
|
||||||
|
int killedBugbear = qs.getInt("killed_" + DIMENSIONAL_BUGBEAR);
|
||||||
|
if (killedBugbear < 100)
|
||||||
|
{
|
||||||
|
qs.set("killed_" + DIMENSIONAL_BUGBEAR, ++killedBugbear);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
if (killedBugbear >= 100)
|
||||||
|
{
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
sendNpcLogList(killer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
final Set<NpcLogListHolder> holder = new HashSet<>();
|
||||||
|
holder.add(new NpcLogListHolder(DIMENSIONAL_BUGBEAR, false, qs.getInt("killed_" + DIMENSIONAL_BUGBEAR)));
|
||||||
|
return holder;
|
||||||
|
}
|
||||||
|
return super.getNpcLogList(player);
|
||||||
|
}
|
||||||
|
}
|
@ -356,6 +356,7 @@ import quests.Q10797_CrossingFate.Q10797_CrossingFate;
|
|||||||
import quests.Q10798_LettersFromTheQueenDragonValley.Q10798_LettersFromTheQueenDragonValley;
|
import quests.Q10798_LettersFromTheQueenDragonValley.Q10798_LettersFromTheQueenDragonValley;
|
||||||
import quests.Q10799_StrangeThingsAfootInTheValley.Q10799_StrangeThingsAfootInTheValley;
|
import quests.Q10799_StrangeThingsAfootInTheValley.Q10799_StrangeThingsAfootInTheValley;
|
||||||
import quests.Q10800_ReconnaissanceAtDragonValley.Q10800_ReconnaissanceAtDragonValley;
|
import quests.Q10800_ReconnaissanceAtDragonValley.Q10800_ReconnaissanceAtDragonValley;
|
||||||
|
import quests.Q10801_TheDimensionalWarpPart1.Q10801_TheDimensionalWarpPart1;
|
||||||
import quests.Q10811_ExaltedOneWhoFacesTheLimit.Q10811_ExaltedOneWhoFacesTheLimit;
|
import quests.Q10811_ExaltedOneWhoFacesTheLimit.Q10811_ExaltedOneWhoFacesTheLimit;
|
||||||
import quests.Q10812_FacingSadness.Q10812_FacingSadness;
|
import quests.Q10812_FacingSadness.Q10812_FacingSadness;
|
||||||
import quests.Q10813_ForGlory.Q10813_ForGlory;
|
import quests.Q10813_ForGlory.Q10813_ForGlory;
|
||||||
@ -730,6 +731,7 @@ public class QuestMasterHandler
|
|||||||
Q10798_LettersFromTheQueenDragonValley.class,
|
Q10798_LettersFromTheQueenDragonValley.class,
|
||||||
Q10799_StrangeThingsAfootInTheValley.class,
|
Q10799_StrangeThingsAfootInTheValley.class,
|
||||||
Q10800_ReconnaissanceAtDragonValley.class,
|
Q10800_ReconnaissanceAtDragonValley.class,
|
||||||
|
Q10801_TheDimensionalWarpPart1.class,
|
||||||
Q10811_ExaltedOneWhoFacesTheLimit.class,
|
Q10811_ExaltedOneWhoFacesTheLimit.class,
|
||||||
Q10812_FacingSadness.class,
|
Q10812_FacingSadness.class,
|
||||||
Q10813_ForGlory.class,
|
Q10813_ForGlory.class,
|
||||||
|
Loading…
Reference in New Issue
Block a user