An Adventure Begins
- ID
- 8
- Название
- An Adventure Begins
- start_npcs_json
- [30134]
- npc_ids_json
- [30134,30144,30355]
- constants_json
- {"JASMINE":30134,"ROSELYN":30355,"HARNE":30144,"ROSELYN_NOTE":7573,"SOE_GIRAN":7559,"MARK_TRAVELER":7570}
- Статус разбора
- metadata_only; dynamic Java conditions/rewards retained in source; unresolved starts: []
- Источник
- game/data/scripts/quests/Q00008_AnAdventureBegins/Q00008_AnAdventureBegins.java
NPC квеста
Условия уровней: выражения из Java
if ((player.getLevel() >= 3) && (player.getRace() == Race.DARK_ELF))
Выдача предметов, адены и опыта: выражения из Java
giveItems(player, ROSELYN_NOTE, 1); giveItems(player, MARK_TRAVELER, 1); rewardItems(player, SOE_GIRAN, 1);
Квесты содержат динамические условия Java. Выражения выдачи включают промежуточные предметы, варианты и случайные награды; это не гарантированная награда. Константы приведены выше. Полные условия — в исходнике.
Тексты квеста
[30134-01.htm] Gatekeeper Jasmine: You can visit many places through this gate of time and space. My personal favorite, and the most cosmopolitan of all, is Giran Castle Town! You'll find all sorts of people there, searching for adventure and romance. It's like a world unto itself! (This quest may only be undertaken by a Dark Elven character of level 3 and above.)
[30134-02.htm] Gatekeeper Jasmine: You can visit many different places through the gate of time and space. The most cosmopolitan place of all is Giran Castle Town! I wasn't there for long, but I can tell you that it's a very dynamic, vibrant place. There are all sorts of people searching for adventure and romance there. The village is something of a world unto itself! You simply must visit it sometime... "It sounds awesome! Can you send me there?"
[30134-03.htm] Gatekeeper Jasmine: You don't have the money, skills or background to even think of visiting a foreign country through the gate of time and space! You must be an idiot! Believe me, I'm telling you this for your own good! Don't embarrass yourself and your race! You'd certainly make the same mistake that Sentry Roselyn made such a long time ago! Adventure and romance should be left to those who can handle it! It seemed for a while that she had learned from her grievious mistake, but recently she's been showing signs of her old reckless and foolish ways. I guess some people never learn! You cannot travel through this gate. Anyway, according to the rules of our guild, no one may travel to Giran through this gate of time and space.
[30134-04.htm] Gatekeeper Jasmine: What are you waiting for, you fool! Go talk to Sentry Roselyn and see what she has to say about your travels.
[30134-05.htm] Gatekeeper Jasmine: Well, if that's what Magister Harne said, I guess I can't help it. I didn't think Roselyn would blow the whistle! So, what do you want? "As I said, I want to go to Giran."
[30134-06.htm] Gatekeeper Jasmine: I'm afraid Giran may be too much for you right now. I can't send you there from here. If you insist on going there, take this Mark of Traveler and Scroll of Escape to Giran Castle Town. The magic scroll allows you to instantaneously travel to Giran, but remember, it only works once. Use it wisely. When you're read to return, take the Mark of Traveler to Galladucci at his boutique. He'll help you. Among all the Human cities, Giran is, by far, the loudest and most violent. Watch your back and have a safe trip!
[30144-01.htm] Magister Harne: You're not here for training, are you? So what do you want with me? Give her the note from Sentry Roselyn and explain the situation.
[30144-02.htm] Magister Harne: Oh no! Jasmine and Roselyn must both bear the responsibility for their actions this time. Last time I only blamed Jasmine, but it's become clear that they both need to be taught a lesson! You have a stake in this as well, my friend. You should go to Jasmine and give her this message in person! Tell her that she's upset the Tetrarch terribly, and to keep her mouth shut! Can you do that? And, as punishment, she should grant one of your wishes. May the divine blessing of the Mother of the Abyss be with you always!
[30355-01.htm] Sentry Roselyn: Don't you have anything better to do? "Gatekeeper Jasmine told me..."
[30355-02.htm] Sentry Roselyn: Jasmine, you just wait! I feel ashamed, but this is what happened to me a long time ago. How could she say that about her sister! Sounds like she had some words for you, too, the condescending blabbermouth. It's time for us to correct her. Even I can't stay indifferent after hearing that. Please take this note to Magister Harne. It has some great gossip about Jasmine he'd love to hear.
[30355-03.htm] Sentry Roselyn: Hurry child we have no time to waste deliver the note to Magister Harne at once!
Исходник условий и наград (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.Q00008_AnAdventureBegins;
import org.l2jmobius.gameserver.entity.actor.Npc;
import org.l2jmobius.gameserver.entity.actor.Player;
import org.l2jmobius.gameserver.entity.actor.enums.creature.Race;
import org.l2jmobius.gameserver.mechanics.script.Quest;
import org.l2jmobius.gameserver.mechanics.script.QuestState;
import org.l2jmobius.gameserver.mechanics.script.State;
public class Q00008_AnAdventureBegins extends Quest
{
// NPCs
private static final int JASMINE = 30134;
private static final int ROSELYN = 30355;
private static final int HARNE = 30144;
// Items
private static final int ROSELYN_NOTE = 7573;
// Rewards
private static final int SOE_GIRAN = 7559;
private static final int MARK_TRAVELER = 7570;
public Q00008_AnAdventureBegins()
{
super(8, "An Adventure Begins");
registerQuestItems(ROSELYN_NOTE);
addStartNpc(JASMINE);
addTalkId(JASMINE, ROSELYN, HARNE);
}
@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 "30134-03.htm":
{
st.startQuest();
break;
}
case "30355-02.htm":
{
st.setCond(2, true);
giveItems(player, ROSELYN_NOTE, 1);
break;
}
case "30144-02.htm":
{
st.setCond(3, true);
takeItems(player, ROSELYN_NOTE, 1);
break;
}
case "30134-06.htm":
{
giveItems(player, MARK_TRAVELER, 1);
rewardItems(player, SOE_GIRAN, 1);
st.exitQuest(false, 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:
{
if ((player.getLevel() >= 3) && (player.getRace() == Race.DARK_ELF))
{
htmltext = "30134-02.htm";
}
else
{
htmltext = "30134-01.htm";
}
break;
}
case State.STARTED:
{
final int cond = st.getCond();
switch (npc.getId())
{
case JASMINE:
{
if ((cond == 1) || (cond == 2))
{
htmltext = "30134-04.htm";
}
else if (cond == 3)
{
htmltext = "30134-05.htm";
}
break;
}
case ROSELYN:
{
if (cond == 1)
{
htmltext = "30355-01.htm";
}
else if (cond == 2)
{
htmltext = "30355-03.htm";
}
break;
}
case HARNE:
{
if (cond == 2)
{
htmltext = "30144-01.htm";
}
else if (cond == 3)
{
htmltext = "30144-03.htm";
}
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
}