Quest Seeker Escort (10365).
This commit is contained in:
parent
954a9681ce
commit
d91c9acb1b
4
trunk/dist/game/data/html/default/33453.htm
vendored
Normal file
4
trunk/dist/game/data/html/default/33453.htm
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Dep:<br>
|
||||
Why did the giants fight against the Gods? If they had stayed peaceful, they would have had all the races under their control...<br>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/32978-01.html
vendored
Normal file
5
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/32978-01.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Sebion:<br>
|
||||
Is that... is it King? Oh, it IS him! It's Kingy-wingy! Aren't you a cute little guy? Oh yes you are.<br>
|
||||
I'm injured, but I can still keep an eye on King while you're gone. I mean, it's not as if I can patrol. Kingy-wingy's going to take a nice little nappy-kins too, aren't you? Oh, yes you are!<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10365_SeekerEscort 32978-02.html">"I'll leave you two to it."</Button>
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/32978-02.html
vendored
Normal file
3
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/32978-02.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Sebion:<br>
|
||||
I'm no use out here, with this injury. I'd better get back to town. King's coming too, aren't you? Say bye-bye, now King! You hear that, adventurer? He practically talks.
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/32978-03.html
vendored
Normal file
4
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/32978-03.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Sebion:<br>
|
||||
I'm planning to take King back to town. He's fine, don't worry.<br>
|
||||
(Quest already completed.)
|
||||
</body></html>
|
8
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/33453-01.htm
vendored
Normal file
8
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/33453-01.htm
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
<html><body>Dep:<br>
|
||||
Sigh... This is not good. All there is left is this kid.<br1>
|
||||
What am I talking about? The Bloodhound! I had 10 when I first came... They all became monster food, and now all I have left is this one... King, say "hi"!<br>
|
||||
(King barks at you.)<br1>
|
||||
King has to survive... It's too much to bear. Help me. King, ask him to help you too.<br1>
|
||||
(King whines at you.)<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10365_SeekerEscort 33453-02.htm">"Er, can I help you?"</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/33453-02.htm
vendored
Normal file
7
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/33453-02.htm
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
<html><body>Dep:<br>
|
||||
Yes. I want you to take King here to somewhere far away... to Sebion!<br>
|
||||
Sebion will be able to take care of King much better than me. Right, King?<br1>
|
||||
(King barks.)<br1>
|
||||
Ha - see! He knows where to find Sebion, could you just follow him and make sure he gets there safe?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10365_SeekerEscort 33453-03.html">"Sure."</Button>
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/33453-03.html
vendored
Normal file
5
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/33453-03.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Dep:<br>
|
||||
Thank you!<br1>
|
||||
<font color="LEVEL">Sebion</font> is in <font color="LEVEL">Exploration Zone 5</font>. You just need to follow King, and he'll guide you to Sebion.<br>
|
||||
Listen, friend. King cannot come back here. You hear that King? You can't come back! It's not safe!
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/33453-04.html
vendored
Normal file
4
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/33453-04.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Dep:<br>
|
||||
Don't take your eyes off King! If he loses you, he'll just come back to me! It's not safe here!<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10365_SeekerEscort SPAWN_BLOODHOUND">"Okay. Got it"</Button>
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/33453-05.html
vendored
Normal file
3
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/33453-05.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Dep:<br>
|
||||
<font color="LEVEL">Sebion</font> is in <font color="LEVEL">Exploration Zone 5</font>. Just follow King and you'll bump into Sebion.
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/33453-06.html
vendored
Normal file
4
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/33453-06.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Dep:<br>
|
||||
How is King doing? I miss his little face...<br>
|
||||
(This quest has already been completed.)
|
||||
</body></html>
|
320
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/Q10365_SeekerEscort.java
vendored
Normal file
320
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/Q10365_SeekerEscort.java
vendored
Normal file
@ -0,0 +1,320 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2015 L2J DataPack
|
||||
*
|
||||
* This file is part of L2J DataPack.
|
||||
*
|
||||
* L2J DataPack 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.
|
||||
*
|
||||
* L2J DataPack 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.Q10365_SeekerEscort;
|
||||
|
||||
import com.l2jserver.gameserver.enums.ChatType;
|
||||
import com.l2jserver.gameserver.model.Location;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.quest.Quest;
|
||||
import com.l2jserver.gameserver.model.quest.QuestState;
|
||||
import com.l2jserver.gameserver.model.quest.State;
|
||||
import com.l2jserver.gameserver.network.NpcStringId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExRotation;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
import com.l2jserver.gameserver.network.serverpackets.NpcSay;
|
||||
import com.l2jserver.gameserver.util.Util;
|
||||
|
||||
/**
|
||||
* Seeker Escort (10365)
|
||||
* @author Mobius
|
||||
*/
|
||||
public final class Q10365_SeekerEscort extends Quest
|
||||
{
|
||||
// NPCs
|
||||
private static final int SEBION = 32978;
|
||||
private static final int BLOODHOUND = 32988;
|
||||
private static final int DEP = 33453;
|
||||
// Locations
|
||||
private static final Location BLOODHOUND_LOC1_SPAWN = new Location(-110579, 238972, -2920);
|
||||
private static final Location BLOODHOUND_LOC2_SPAWN = new Location(-112665, 233944, -3072);
|
||||
private final static Location[] BLOODHOUND_PATH1_COORDS =
|
||||
{
|
||||
new Location(-110579, 238972, -2920),
|
||||
new Location(-110706, 239273, -2920),
|
||||
new Location(-110962, 239513, -2920),
|
||||
new Location(-110988, 239944, -2920),
|
||||
new Location(-110759, 240185, -2920),
|
||||
new Location(-110794, 240551, -2920),
|
||||
new Location(-111028, 240608, -2920),
|
||||
new Location(-111295, 240387, -2920),
|
||||
new Location(-111639, 239897, -2920),
|
||||
new Location(-111948, 239731, -2920),
|
||||
new Location(-112281, 239791, -2920),
|
||||
new Location(-112622, 239901, -2920),
|
||||
new Location(-112705, 240230, -2920),
|
||||
new Location(-112473, 240518, -2920),
|
||||
new Location(-112138, 240510, -2920),
|
||||
new Location(-112022, 240281, -2920),
|
||||
new Location(-112212, 240154, -2920),
|
||||
};
|
||||
private final static Location[] BLOODHOUND_PATH2_COORDS =
|
||||
{
|
||||
new Location(-112665, 233944, -3072),
|
||||
new Location(-112431, 233681, -3096),
|
||||
new Location(-112185, 233480, -3120),
|
||||
new Location(-112117, 233092, -3136),
|
||||
new Location(-112415, 232911, -3096),
|
||||
new Location(-112705, 232543, -3072),
|
||||
new Location(-112505, 232054, -3096),
|
||||
new Location(-112284, 232075, -3104),
|
||||
new Location(-112078, 232350, -3136),
|
||||
new Location(-111685, 232600, -3168),
|
||||
new Location(-111215, 232725, -3224),
|
||||
new Location(-110822, 232470, -3256),
|
||||
new Location(-110769, 232134, -3256),
|
||||
new Location(-111156, 231852, -3224),
|
||||
new Location(-111475, 231982, -3200),
|
||||
new Location(-111672, 231945, -3168),
|
||||
};
|
||||
// Others
|
||||
private static final int MIN_LEVEL = 16;
|
||||
private static final int MAX_LEVEL = 25;
|
||||
|
||||
public Q10365_SeekerEscort()
|
||||
{
|
||||
super(10365, Q10365_SeekerEscort.class.getSimpleName(), "Seeker Escort");
|
||||
addStartNpc(DEP);
|
||||
addTalkId(DEP, SEBION);
|
||||
addSpawnId(BLOODHOUND);
|
||||
addMoveFinishedId(BLOODHOUND);
|
||||
addCondLevel(MIN_LEVEL, MAX_LEVEL, "no_level.html");
|
||||
// addCondCompletedQuest(Q10364_ObligationsOfTheSeeker.class.getSimpleName(), "no_level.html");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "33453-02.htm":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "33453-03.html":
|
||||
{
|
||||
qs.startQuest();
|
||||
qs.setMemoState(2);
|
||||
final L2Npc bloodhound = addSpawn(BLOODHOUND, BLOODHOUND_LOC1_SPAWN, false, 300000);
|
||||
startQuestTimer("MOVE_DELAY", 500, bloodhound, player);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "32978-02.html":
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
giveAdena(player, 65000, true);
|
||||
addExpAndSp(player, 120000, 28);
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SPAWN_BLOODHOUND":
|
||||
{
|
||||
qs.setMemoState(2);
|
||||
final L2Npc bloodhound = addSpawn(BLOODHOUND, BLOODHOUND_LOC1_SPAWN, false, 300000);
|
||||
startQuestTimer("MOVE_DELAY", 500, bloodhound, player);
|
||||
break;
|
||||
}
|
||||
case "CHECK_PLAYER":
|
||||
{
|
||||
final L2PcInstance owner = npc.getSummoner().getActingPlayer();
|
||||
if (owner != null)
|
||||
{
|
||||
if (npc.calculateDistance(owner, false, false) < 180)
|
||||
{
|
||||
npc.getVariables().set("FAIL_COUNT", 0);
|
||||
final int loc_index = npc.getVariables().getInt("MOVE_INDEX", -1) + 1;
|
||||
if (loc_index > 0)
|
||||
{
|
||||
if (qs.isMemoState(2))
|
||||
{
|
||||
if (loc_index == 16)
|
||||
{
|
||||
showOnScreenMsg(player, NpcStringId.YOU_MUST_MOVE_TO_EXPLORATION_AREA_5_IN_ORDER_TO_CONTINUE, ExShowScreenMessage.TOP_CENTER, 5000);
|
||||
startQuestTimer("DELETE_NPC", 3000, npc, owner);
|
||||
startQuestTimer("NEXT_AREA", 7000, npc, owner);
|
||||
break;
|
||||
}
|
||||
npc.getVariables().set("MOVE_INDEX", loc_index);
|
||||
addMoveToDesire(npc, BLOODHOUND_PATH1_COORDS[loc_index], 0);
|
||||
}
|
||||
else if (qs.isMemoState(3))
|
||||
{
|
||||
if (loc_index == 16)
|
||||
{
|
||||
qs.setCond(2);
|
||||
startQuestTimer("DELETE_NPC", 3000, npc, owner);
|
||||
break;
|
||||
}
|
||||
npc.getVariables().set("MOVE_INDEX", loc_index);
|
||||
addMoveToDesire(npc, BLOODHOUND_PATH2_COORDS[loc_index], 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
final int failCount = npc.getVariables().getInt("FAIL_COUNT", 0);
|
||||
npc.getVariables().set("FAIL_COUNT", failCount + 1);
|
||||
|
||||
if (failCount >= 30)
|
||||
{
|
||||
qs.setMemoState(1);
|
||||
showOnScreenMsg(player, NpcStringId.KING_HAS_RETURNED_TO_DEF_RETURN_TO_DEF_AND_START_AGAIN, ExShowScreenMessage.TOP_CENTER, 5000);
|
||||
npc.deleteMe();
|
||||
break;
|
||||
}
|
||||
startQuestTimer("CHECK_PLAYER", 1000, npc, owner);
|
||||
|
||||
if (getRandom(100) < 10)
|
||||
{
|
||||
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), NpcStringId.RUFF_RUFF_RRRRRR));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
npc.deleteMe();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "MOVE_DELAY":
|
||||
{
|
||||
if (qs.isMemoState(2))
|
||||
{
|
||||
npc.setSummoner(player);
|
||||
npc.setIsRunning(true);
|
||||
npc.broadcastInfo();
|
||||
addMoveToDesire(npc, BLOODHOUND_PATH1_COORDS[0], 0);
|
||||
npc.getVariables().set("MOVE_INDEX", 0);
|
||||
break;
|
||||
}
|
||||
else if (qs.isMemoState(3))
|
||||
{
|
||||
npc.setSummoner(player);
|
||||
npc.setIsRunning(true);
|
||||
npc.broadcastInfo();
|
||||
addMoveToDesire(npc, BLOODHOUND_PATH2_COORDS[0], 0);
|
||||
npc.getVariables().set("MOVE_INDEX", 0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "DELETE_NPC":
|
||||
{
|
||||
npc.deleteMe();
|
||||
break;
|
||||
}
|
||||
case "NEXT_AREA":
|
||||
{
|
||||
qs.setMemoState(3);
|
||||
final L2Npc bloodhound = addSpawn(BLOODHOUND, BLOODHOUND_LOC2_SPAWN, false, 300000);
|
||||
player.teleToLocation(BLOODHOUND_LOC2_SPAWN);
|
||||
startQuestTimer("MOVE_DELAY", 1000, bloodhound, player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMoveFinished(L2Npc npc)
|
||||
{
|
||||
final L2PcInstance owner = npc.getSummoner().getActingPlayer();
|
||||
|
||||
if (owner != null)
|
||||
{
|
||||
showOnScreenMsg(owner, NpcStringId.CATCH_UP_TO_KING_HE_S_WAITING, ExShowScreenMessage.TOP_CENTER, 5000);
|
||||
npc.setHeading(Util.calculateHeadingFrom(npc, owner));
|
||||
npc.broadcastPacket(new ExRotation(npc.getObjectId(), npc.getHeading()));
|
||||
startQuestTimer("CHECK_PLAYER", 1000, npc, owner);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, true);
|
||||
String htmltext = null;
|
||||
|
||||
switch (qs.getState())
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
if (npc.getId() == DEP)
|
||||
{
|
||||
htmltext = "33453-01.htm";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (npc.getId() == DEP)
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
if (qs.isMemoState(1))
|
||||
{
|
||||
htmltext = "33453-04.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "33453-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
else if (npc.getId() == SEBION)
|
||||
{
|
||||
if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "32978-01.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
if (npc.getId() == SEBION)
|
||||
{
|
||||
htmltext = "32978-03.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "33453-06.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
}
|
4
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/no_level.html
vendored
Normal file
4
trunk/dist/game/data/scripts/quests/Q10365_SeekerEscort/no_level.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Dep:<br>
|
||||
I can't just give King to anybody!<br>
|
||||
(Only characters between level 16 and 25 can take this quest.)
|
||||
</body></html>
|
@ -201,6 +201,7 @@ import quests.Q10334_ReportingTheStatusOfWindmillHill.Q10334_ReportingTheStatusO
|
||||
import quests.Q10335_RequestToFindSakum.Q10335_RequestToFindSakum;
|
||||
import quests.Q10336_DividedSakumKanilov.Q10336_DividedSakumKanilov;
|
||||
import quests.Q10338_SeizeYourDestiny.Q10338_SeizeYourDestiny;
|
||||
import quests.Q10365_SeekerEscort.Q10365_SeekerEscort;
|
||||
import quests.Q10390_KekropusLetter.Q10390_KekropusLetter;
|
||||
import quests.Q10393_KekropusLetter_AClueCompleted.Q10393_KekropusLetter_AClueCompleted;
|
||||
import quests.Q10397_KekropusLetter_ASuspiciousBadge.Q10397_KekropusLetter_ASuspiciousBadge;
|
||||
@ -420,6 +421,7 @@ public class QuestMasterHandler
|
||||
Q10335_RequestToFindSakum.class,
|
||||
Q10336_DividedSakumKanilov.class,
|
||||
Q10338_SeizeYourDestiny.class,
|
||||
Q10365_SeekerEscort.class,
|
||||
Q10390_KekropusLetter.class,
|
||||
Q10393_KekropusLetter_AClueCompleted.class,
|
||||
Q10397_KekropusLetter_ASuspiciousBadge.class,
|
||||
|
@ -2192,7 +2192,7 @@
|
||||
</speed>
|
||||
<hit_time>500</hit_time>
|
||||
</stats>
|
||||
<status attackable="false" />
|
||||
<status attackable="false" talkable="false" targetable="false" />
|
||||
<skill_list>
|
||||
<skill id="4416" level="4" />
|
||||
</skill_list>
|
||||
|
Loading…
Reference in New Issue
Block a user