Journey to a Settlement
- ID
- 654
- Название
- Journey to a Settlement
- start_npcs_json
- [31453]
- npc_ids_json
- [21294,21295,31453]
- constants_json
- {"ANTELOPE_SKIN":8072,"FORCE_FIELD_REMOVAL_SCROLL":8073,"NAMELESS_SPIRIT":31453,"CANYON_ANTELOPE":21294,"CANYON_ANTELOPE_SLAVE":21295,"DROP_CHANCE":30,"DROP_AMOUNT":1}
- Статус разбора
- metadata_only; dynamic Java conditions/rewards retained in source; unresolved starts: []
- Источник
- game/data/scripts/quests/Q00654_JourneyToASettlement/Q00654_JourneyToASettlement.java
NPC квеста
| ID | Название | Старт квеста | Уровень |
|---|---|---|---|
| 21294 | Canyon Antelope | Нет | 68 |
| 21295 | Canyon Antelope Slave | Нет | 69 |
| 31453 | Nameless Spirit | Да | 70 |
Условия уровней: выражения из Java
htmltext = ((prevSt == null) || !prevSt.isCompleted() || (player.getLevel() < 74)) ? "31453-00.htm" : "31453-01.htm";
Выдача предметов, адены и опыта: выражения из Java
giveItems(player, FORCE_FIELD_REMOVAL_SCROLL, 1); giveItems(player, ANTELOPE_SKIN, DROP_AMOUNT);
Квесты содержат динамические условия Java. Выражения выдачи включают промежуточные предметы, варианты и случайные награды; это не гарантированная награда. Константы приведены выше. Полные условия — в исходнике.
Тексты квеста
[31453-00.htm] Nameless Spirit: What do you want? I have nothing to say to you. (Characters must have achieved at least level 74 and completed the Last Imperial Prince quest before undertaking this quest.)
[31453-01.htm] Nameless Spirit: Oh, hello again! Yes, I spoke with Wigoth, and he assures me that this song is the one! We can now pass through the force field. It brings us one step closer to him, eh? By the way, could you help me put Frintezza to sleep? As I said, we can't eliminate Frintezza completely with our power at its current level... But we can wait until he wakes up and then put him back to sleep before he can act! "I'll help you."
[31453-02.htm] Nameless Spirit: Yes, thank you! Now I'll help you and your friends pass through the force field. By the way, where are your friends? Surely you don't intend to take Frintezza on all by yourself, do you? You should take up to four parties with you. Frintezza's evil power won't be easily defeated! More than 5 parties cannot enter due to the size of the space. You and your friends will need a magic scroll that can temporarily disable the force field so you can pass through. Since you got the password, creating the scroll should be no problem! That is, unless... "Unless...?"
[31453-03.htm] Nameless Spirit: Well... I need a parchment to write the spell on. Go to the Wall of Argos and slaughter the Canyon Antelope or the Canyon Antelope Slave and bring me the Skin of the Antelope! It'll make a lovely parchment! Ah! By the way, once you pass through the force field, only the Command Channel Leader in command of all the parties needs the scroll. Therefore, only one skin is needed.
[31453-04.htm] Nameless Spirit: Go to the Wall of Argos and slaughter the Canyon Antelope or the Canyon Antelope Slave and bring back the Skin of the Antelope? It will make a wonderful parchment. Ah! by the way, when you pass through the force field, only the Command Channel Leader in command of all the parties needs the scroll. Therefore, only one scroll is needed.
[31453-05.htm] Nameless Spirit: Excellent! Now, could you please smooth out the skin? Remove the hair, and smooth out the skin so that it's thin and soft. Just enough for me to write the spell down... "Here it is."
[31453-06.htm] Nameless Spirit: Good job... Now to write down the spell... ....Light turns darkness away, and shines upon the hidden door. All obstacles will disappear and the path to truth will become clear... Alright, it's done. Now, you and your friends go and meet the Imperial Tomb Guide near the entrance of the Imperial Tomb. He'll take you to Frintezza... (Make sure the Command Channel Leader has Frintezza's Magic Force Field Removal Scroll when you meet the Imperial Tomb Guide.)
Исходник условий и наград (Java)
/*
* Copyright (c) 2013 L2jMobius
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
* IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package quests.Q00654_JourneyToASettlement;
import org.l2jmobius.gameserver.entity.actor.Npc;
import org.l2jmobius.gameserver.entity.actor.Player;
import org.l2jmobius.gameserver.mechanics.script.Quest;
import org.l2jmobius.gameserver.mechanics.script.QuestState;
import org.l2jmobius.gameserver.mechanics.script.State;
import quests.Q00119_LastImperialPrince.Q00119_LastImperialPrince;
/**
* @author Skache
*/
public class Q00654_JourneyToASettlement extends Quest
{
// Items
private static final int ANTELOPE_SKIN = 8072;
private static final int FORCE_FIELD_REMOVAL_SCROLL = 8073;
// NPCs
private static final int NAMELESS_SPIRIT = 31453;
private static final int CANYON_ANTELOPE = 21294;
private static final int CANYON_ANTELOPE_SLAVE = 21295;
// Drop
private static final int DROP_CHANCE = 30; // Retail 30%
private static final int DROP_AMOUNT = 1; // Retail 1
public Q00654_JourneyToASettlement()
{
super(654, "Journey to a Settlement");
registerQuestItems(ANTELOPE_SKIN);
addStartNpc(NAMELESS_SPIRIT);
addTalkId(NAMELESS_SPIRIT);
addKillId(CANYON_ANTELOPE, CANYON_ANTELOPE_SLAVE);
}
@Override
public String onEvent(String event, Npc npc, Player player)
{
String htmltext = event;
final QuestState st = getQuestState(player, false);
if (st == null)
{
return htmltext;
}
switch (event)
{
case "31453-02.htm":
{
st.startQuest();
break;
}
case "31453-03.htm":
{
st.setCond(2, true);
break;
}
case "31453-06.htm":
{
takeItems(player, ANTELOPE_SKIN, -1);
giveItems(player, FORCE_FIELD_REMOVAL_SCROLL, 1);
st.exitQuest(true, true);
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, Player player)
{
String htmltext = getNoQuestMsg(player);
final QuestState st = getQuestState(player, true);
switch (st.getState())
{
case State.CREATED:
{
final QuestState prevSt = player.getQuestState(Q00119_LastImperialPrince.class.getSimpleName());
htmltext = ((prevSt == null) || !prevSt.isCompleted() || (player.getLevel() < 74)) ? "31453-00.htm" : "31453-01.htm";
break;
}
case State.STARTED:
{
final int cond = st.getCond();
if (cond == 1)
{
htmltext = "31453-02.htm";
}
else if (cond == 2)
{
htmltext = "31453-04.htm";
}
else if (cond == 3)
{
htmltext = "31453-05.htm";
}
break;
}
}
return htmltext;
}
@Override
public void onKill(Npc npc, Player player, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs == null) || !qs.isCond(2))
{
return;
}
if ((getRandom(100) < DROP_CHANCE))
{
giveItems(player, ANTELOPE_SKIN, DROP_AMOUNT);
qs.setCond(3, true);
}
}
}