Yoke of the Past
- ID
- 385
- Название
- Yoke of the Past
- start_npcs_json
- []
- npc_ids_json
- []
- constants_json
- {"ANCIENT_SCROLL":5902,"BLANK_SCROLL":5965}
- Статус разбора
- metadata_only; dynamic Java conditions/rewards retained in source; unresolved starts: ["GATEKEEPER_ZIGGURAT"]
- Источник
- game/data/scripts/quests/Q00385_YokeOfThePast/Q00385_YokeOfThePast.java
NPC квеста
Записей нет.
Условия уровней: выражения из Java
htmltext = (player.getLevel() < 20) ? "02.htm" : "01.htm";
Выдача предметов, адены и опыта: выражения из Java
rewardItems(player, BLANK_SCROLL, count); giveItems(partyMember, ANCIENT_SCROLL, 1);
Квесты содержат динамические условия Java. Выражения выдачи включают промежуточные предметы, варианты и случайные награды; это не гарантированная награда. Константы приведены выше. Полные условия — в исходнике.
Тексты квеста
[01.htm] Gatekeeper Ziggurat: A voice comes out of the sphere in a pleading tone: I was once a human like yourself. A powerful spell perished my body and my very soul was trapped in this place. For several hundred years, I've been working here as a gatekeeper. They have even taken away my memory and therefore I don't even know what kind of person I used to be. The only thing I remember is that I need to open the gate to the Lord of the Seal. "What did you do to deserve this?"
[02.htm] Gatekeeper Ziggurat: The sphere speaks again: I was once a human like yourself. A powerful spell perished my body and my very soul was trapped in this place. For several hundred years, I've been working here as a gatekeeper. They have even taken away my memory and therefore I don't even know what kind of person I used to be. The only thing I remember is that I need to open the gate to the Master of the Seals. I could use your assistance, but you should get more experience first... Then, promise me that you will come back and help me. (This quest may only be undertaken by a character of level 20 and above.)
[03.htm] Gatekeeper Ziggurat: By borrowing the power of Einhasad, Shunaiman, Emperor of the Elmoreden Empire has sealed the power of ancient magic in this place. In order to guard the entrance to this place, the emperor placed a human soul into a sphere and made it into a gatekeeper. I don't remember why he needed a human soul to act as his gatekeeper. Perhaps that was to subjugate it and make it obey the Master of the Seals. However, the power of ancient magic, dormant until now, has started to awaken. My magic power is too weak to restrain them... Therefore, there is something I would like to ask you. "What can I do for you?"
[04.htm] Gatekeeper Ziggurat: The followers of ancient magic possess scrolls of ancient magic containing forbidden magic power. If these scrolls were to fall into the wrong hands, it could cause quite a disturbance. I cannot let this happen. Please recover the scrolls of ancient magic from the ancients in the dungeon... Will you do this for me? "I'll do it." "I think you're hiding something..."
[05.htm] Gatekeeper Ziggurat: Good choice! Now go to the dungeon, slay the guardians of ancient cult and bring back the scrolls of ancient magic. When you bring me the scroll, I will remove the magic power it contains and turn the scroll into a Blank Scroll. A Blank Scroll is the only reward I can offer you. Have you heard of Merchant of Mammon who often appears in the castle area? He will be very interested in a Blank Scroll. You will find out more when you meet him. It won't be easy to find him though... "Tell me more about the guardians of ancient magic."
[06.htm] Gatekeeper Ziggurat: To protect this sacred area from the Crusaders of Light, there are the undead and demons that have been summoned by the shamans of ancient magic who worshop the Goddess of Death. They call themselves by the names of watchman, watcher, sentinel, monk, overlord, priest, archon, inquisitor, guardian, wiseman, royal guard, and preacher. Bear in mind that you should not hurt nephilims, lilims, giants, and lithes. They are the forces of the gods and sacred warriors. So, don't dare to touch them with your sword.
[07.htm] Gatekeeper Ziggurat: So, you've found me out! To be honest with you, I need the magic power contained in the scrolls. This is so that I can be freed from the spell that is binding me to this place! I want so much to be human again! So, I beseech you. Please help me. Please go find the scrolls of ancient magic and bring them back to me. "I will help you."
[08.htm] Gatekeeper Ziggurat: As I said, go into the sacred area, slay the guardians of ancient cult and bring back the Scroll of Ancient Magic. Then I will remove the magic power from the scroll and give you a Blank Scroll as a reward. That is the only reward I can give you. A Blank Scroll will also be helpful to you if you trade with the Merchant of Mammon who appears in the sacred area every once in a while. "I want to quit." "I will bring back the scrolls." "Who are the guardians of ancient cult?"
[09.htm] Gatekeeper Ziggurat: Give me the Scroll of Ancient Magic and step back... ... the light of purification. It is cast on the shadows. The flames of soul... burning up the darkness... It's done. The magic is removed. Here is the Blank Scroll I promised you. This Blank Scroll will be helpful to you when you trade with the Merchant of Mammon who appears in the sacred area once in a while. If you would like to collect more Blank Scrolls, enter the sacred area, slay the guardians of ancient cult and bring me back more scrolls of ancient magic. "I want to quit." "I will bring back more scrolls." "Tell me more about the guardians of ancient cult."
[10.htm] Gatekeeper Ziggurat: Thanks for your help. I hope we'll meet again one day. May the divine blessing of the gods be with you always...
[11.htm] Gatekeeper Ziggurat: Kill the guardians of ancient cult and bring back the scrolls of ancient magic. "Who are the guardians of ancient cult?"
Исходник условий и наград (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.Q00385_YokeOfThePast;
import java.util.HashMap;
import java.util.Map;
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.QuestSound;
import org.l2jmobius.gameserver.mechanics.script.QuestState;
import org.l2jmobius.gameserver.mechanics.script.State;
public class Q00385_YokeOfThePast extends Quest
{
// NPCs
private static final int[] GATEKEEPER_ZIGGURAT =
{
31095,
31096,
31097,
31098,
31099,
31100,
31101,
31102,
31103,
31104,
31105,
31106,
31107,
31108,
31109,
31110,
31114,
31115,
31116,
31117,
31118,
31119,
31120,
31121,
31122,
31123,
31124,
31125,
31126
};
// Item
private static final int ANCIENT_SCROLL = 5902;
// Reward
private static final int BLANK_SCROLL = 5965;
// Drop chances
private static final Map<Integer, Integer> CHANCES = new HashMap<>();
static
{
CHANCES.put(21208, 70000);
CHANCES.put(21209, 80000);
CHANCES.put(21210, 110000);
CHANCES.put(21211, 110000);
CHANCES.put(21213, 140000);
CHANCES.put(21214, 190000);
CHANCES.put(21215, 190000);
CHANCES.put(21217, 240000);
CHANCES.put(21218, 300000);
CHANCES.put(21219, 300000);
CHANCES.put(21221, 370000);
CHANCES.put(21222, 460000);
CHANCES.put(21223, 450000);
CHANCES.put(21224, 500000);
CHANCES.put(21225, 540000);
CHANCES.put(21226, 660000);
CHANCES.put(21227, 640000);
CHANCES.put(21228, 700000);
CHANCES.put(21229, 750000);
CHANCES.put(21230, 910000);
CHANCES.put(21231, 860000);
CHANCES.put(21236, 120000);
CHANCES.put(21237, 140000);
CHANCES.put(21238, 190000);
CHANCES.put(21239, 190000);
CHANCES.put(21240, 220000);
CHANCES.put(21241, 240000);
CHANCES.put(21242, 300000);
CHANCES.put(21243, 300000);
CHANCES.put(21244, 340000);
CHANCES.put(21245, 370000);
CHANCES.put(21246, 460000);
CHANCES.put(21247, 450000);
CHANCES.put(21248, 500000);
CHANCES.put(21249, 540000);
CHANCES.put(21250, 660000);
CHANCES.put(21251, 640000);
CHANCES.put(21252, 700000);
CHANCES.put(21253, 750000);
CHANCES.put(21254, 910000);
CHANCES.put(21255, 860000);
}
public Q00385_YokeOfThePast()
{
super(385, "Yoke of the Past");
registerQuestItems(ANCIENT_SCROLL);
addStartNpc(GATEKEEPER_ZIGGURAT);
addTalkId(GATEKEEPER_ZIGGURAT);
addKillId(CHANCES.keySet());
}
@Override
public String onEvent(String event, Npc npc, Player player)
{
String htmltext = event;
final QuestState st = getQuestState(player, false);
if (st == null)
{
return htmltext;
}
if (event.equals("05.htm"))
{
st.startQuest();
}
else if (event.equals("10.htm"))
{
st.exitQuest(true, true);
}
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:
{
htmltext = (player.getLevel() < 20) ? "02.htm" : "01.htm";
break;
}
case State.STARTED:
{
if (!hasQuestItems(player, ANCIENT_SCROLL))
{
htmltext = "08.htm";
}
else
{
htmltext = "09.htm";
final int count = getQuestItemsCount(player, ANCIENT_SCROLL);
takeItems(player, ANCIENT_SCROLL, -1);
rewardItems(player, BLANK_SCROLL, count);
}
break;
}
}
return htmltext;
}
@Override
public void onKill(Npc npc, Player player, boolean isPet)
{
final QuestState st = getRandomPartyMemberState(player, -1, 3, npc);
if (st == null)
{
return;
}
if (getRandom(1000000) < CHANCES.get(npc.getId()))
{
final Player partyMember = st.getPlayer();
giveItems(partyMember, ANCIENT_SCROLL, 1);
playSound(partyMember, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
}