Pagan Temple rework.

Contributed by hlwrave.
This commit is contained in:
MobiusDev
2016-02-06 20:42:32 +00:00
parent dc04ad2d56
commit 4fe92f3e45
47 changed files with 903 additions and 5 deletions

View File

@@ -49505,4 +49505,9 @@ INSERT INTO `spawnlist` VALUES
('19_20', 1, 27529, -4431, 115990, -3344, 0, 0, 0, 45, 0, 0, 0), ('19_20', 1, 27529, -4431, 115990, -3344, 0, 0, 0, 45, 0, 0, 0),
('19_20', 1, 27529, -4381, 116105, -3344, 0, 0, 0, 45, 0, 0, 0), ('19_20', 1, 27529, -4381, 116105, -3344, 0, 0, 0, 45, 0, 0, 0),
('19_20', 1, 27529, -4364, 116856, -3336, 0, 0, 63120, 45, 0, 0, 0), ('19_20', 1, 27529, -4364, 116856, -3336, 0, 0, 63120, 45, 0, 0, 0),
('19_20', 1, 27529, -4272, 116160, -3344, 0, 0, 0, 45, 0, 0, 0); ('19_20', 1, 27529, -4272, 116160, -3344, 0, 0, 0, 45, 0, 0, 0);
-- Hymn of the Soul
INSERT INTO `spawnlist` VALUES ('Gludio Area', 1, 34095, -13920, 123009, -3112, 0, 0, 48000, 60, 0, 0, 0); -- Refugee Neti
INSERT INTO `spawnlist` VALUES ('Oren Area', 1, 34051, 83203, 55347, -1520, 0, 0, 48000, 60, 0, 0, 0); -- Shadai's Disciple Kaysia
INSERT INTO `spawnlist` VALUES ('Pagan Temple', 1, 33803, -16392, -40120, -10750, 16346, 0, 48000, 60, 0, 0, 0); -- Radzen

View File

@@ -0,0 +1,6 @@
<html><body>Priestess of Light Razen:<br>
The power you attained through <font color="LEVEL">Awakening</font> - it is great power, yes, but it is the power of the Giants. <font color="LEVEL">Skills</font> in particular are the essence of the Giants' abilities.<br>
But for Triol the devil, the greatest weapon would be the power of the light bestowed by Einhasad the goddess.<br>
No need to look disappointed or regret Awakening, however. Excluding skills and servitors' abilities, all of your general attacks are imbued with the <font color="LEVEL">power of the light inside you</font>. They will be critical in defeating the pagans.<br>
<button align="left" icon="RETURN" action="bypass -h npc_%objectId%_Chat 0">Back</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Priestess of Light Razen:<br>
You still have the Pagan's Badge I gave you. Show it to the Temple Gatekeeper at the chapel entrance, and he will open the door for you.
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Priestess of Light Razen:<br>
Sometimes, physical strength is nothing. Does this pertain to you?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 1">"Do you have any information that might be useful for me?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 0">"How can I enter the chapel?"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@@ -1,5 +1,5 @@
<html><head><body>Knight Captain Kargos:<br> <html><body>Knight Captain Kargos:<br>
What a strange place for such ominous energy. The village feels like a battlefield!<br> What a strange place for such ominous energy. The village feels like a battlefield!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 0">"Teleport me into the Pagan Temple please."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Quest KargosTeleport">"Teleport me into the Pagan Temple please."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,7 +1,7 @@
<html><body>Resed:<br> <html><body>Resed:<br>
The Dimensional Warp was created when the energy, which brought Faeron to the Material Realm from the Wind Spirit Realm, accumulated in one place. Only a party of <font color="LEVEL">4 or less</font> and at <font color="LEVEL">Lv. 99</font> may enter. Each team requires at least <font color="LEVEL">12 Warp Crystals</font>.<br1> The Dimensional Warp was created when the energy, which brought Faeron to the Material Realm from the Wind Spirit Realm, accumulated in one place. Only a party of <font color="LEVEL">4 or less</font> and at <font color="LEVEL">Lv. 99</font> may enter. Each team requires at least <font color="LEVEL">12 Warp Crystals</font>.<br1>
Rare bracelets and fragments of an ancient tome can be found there. Do you want to go there?<br> Rare bracelets and fragments of an ancient tome can be found there. Do you want to go there?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 0">"Take me to the Dimensional Warp."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Quest DimensionalWarpTeleport">"Take me to the Dimensional Warp."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 906">"I need a Warp Crystal."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 906">"I need a Warp Crystal."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 0">"I want to level up my Dimensional Bracelet."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 0">"I want to level up my Dimensional Bracelet."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 908">"I want to add abilities to my Dimensional Bracelet."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 908">"I want to add abilities to my Dimensional Bracelet."</Button>

View File

@@ -0,0 +1,7 @@
<html><body>Shadai's Disciple Kaysia:<br>
Grandpa Shadai?<br>
After Faeron Village came to the Material Realm, I started wandering around. I was worried at first, but our story spread throughout the continent, so it wasn't that dangerous.<br>
I met Grandpa Toma as I wandered through the continent. He told me how he was also the wandering type, and that he traveled a lot when he was young. He was the one who introduced me to Grandpa Shadai.<br>
Grandpa Shadai said that it would be better for me to learn a skill for when I decided to settle down, and taught me his skills.<br>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h npc_%objectId%_Chat 0">Back</Button>
</body></html>

View File

@@ -0,0 +1,8 @@
<html><body>Shadai's Disciple Kaysia:<br>Oh, hello! I'm Kaysia.<br>
I'm a blacksmith, and I learned from Grandpa Shadai. Well, I'm not a blacksmith officially. I don't really like being tied down in one place. Heh.<br>
However, I did find a strange Atelia piece, so I'm trying to find out more about it and will be staying here for a while.<br>
Even amongst those, <font color="LEVEL">Kelbim's Atelia Fragment</font> is very special. If you can bring me one, I'll work on that <font color="LEVEL">Kelbim's Atelia Fragment</font> and make you a <font color="LEVEL">Kelbim weapon</font>. Not bad, right?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 1">"How do you know Shadia?"</Button>
<font color="LEVEL"><Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 3405100">"I want a Kelbim weapon made with Kelbim's Atelia Fragment."</Button></font>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Refugee Neti:<br>
A group of armed Orcs and Dark Elves came into Gludin. They drove out the guards and captured the people to occupy the village.<br>
They call themselves the <font color="LEVEL">Ashen Shadow Revolutionaries</font>. It looks like the Kingdom doesn't really see them as a threat. But things might get worse if we don't do something.<br>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h npc_%objectId%_Chat 0">Back</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Refugee Neti:<br>
In order to exchange a Shadow weapon for one that can be exchanged, you need <font color="LEVEL">1 +10 Shadow weapon</font> and <font color="LEVEL">10 Shadow Ingots</font>.<br>
You don't have a Shadow weapon, though. Make sure to get one first.
</body></html>

View File

@@ -0,0 +1,9 @@
<html><body>Refugee Neti:<br>
Gludin as been occupied. There are people who have escaped like me, but I'm not sure if the rest of them are safe.<br>
I thought about helping them, but I had to let others know what happened. That's why I came here.<br>
<Button ALIGN=LEFT ICON="Normal" action="bypass -h npc_%objectId%_Chat 1">"What happened in Gludin?"</button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h menu_select?ask=-9991&reply=1">"I'll fight those Ashen Shadow Revolutionaries!"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_exc_multisell 3409500">"I want to exchange a weapon with the Shadow Weapon Coupon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_exc_multisell 3409501">"I want to exchange a Shadow weapon for one that can be exchanged."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/multisell.xsd">
<npcs>
<npc>34051</npc> <!-- Kaysia -->
</npcs>
<item>
<!-- Kelbim's Atelia Fragment -->
<ingredient count="1" id="46079" />
<!-- Crystal (R-grade) -->
<ingredient count="40931" id="17371" />
<!-- Gemstone (R-grade) -->
<ingredient count="3411" id="19440" />
<!-- Kelbim Dagger -->
<production count="1" id="46060" />
</item>
<item>
<!-- Kelbim's Atelia Fragment -->
<ingredient count="1" id="46079" />
<!-- Crystal (R-grade) -->
<ingredient count="40931" id="17371" />
<!-- Gemstone (R-grade) -->
<ingredient count="3411" id="19440" />
<!-- Kelbim Dual Dagger -->
<production count="1" id="46061" />
</item>
<item>
<!-- Kelbim's Atelia Fragment -->
<ingredient count="1" id="46079" />
<!-- Crystal (R-grade) -->
<ingredient count="40931" id="17371" />
<!-- Gemstone (R-grade) -->
<ingredient count="3411" id="19440" />
<!-- Kelbim Bow -->
<production count="1" id="46062" />
</item>
<item>
<!-- Kelbim's Atelia Fragment -->
<ingredient count="1" id="46079" />
<!-- Crystal (R-grade) -->
<ingredient count="40931" id="17371" />
<!-- Gemstone (R-grade) -->
<ingredient count="3411" id="19440" />
<!-- Kelbim Crossbow -->
<production count="1" id="46063" />
</item>
</list>

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<list maintainEnchantment="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/multisell.xsd">
<npcs>
<npc>34095</npc> <!-- Refugee Neti -->
</npcs>
<item>
<ingredient count="1" id="46317" />
<ingredient count="1" id="46337" />
<production count="1" id="46327" />
</item>
<item>
<ingredient count="1" id="46318" />
<ingredient count="1" id="46337" />
<production count="1" id="46318" />
</item>
<item>
<ingredient count="1" id="46319" />
<ingredient count="1" id="46337" />
<production count="1" id="46319" />
</item>
<item>
<ingredient count="1" id="46320" />
<ingredient count="1" id="46337" />
<production count="1" id="46320" />
</item>
<item>
<ingredient count="1" id="46321" />
<ingredient count="1" id="46337" />
<production count="1" id="46321" />
</item>
<item>
<ingredient count="1" id="46322" />
<ingredient count="1" id="46337" />
<production count="1" id="46322" />
</item>
<item>
<ingredient count="1" id="46323" />
<ingredient count="1" id="46337" />
<production count="1" id="46323" />
</item>
<item>
<ingredient count="1" id="46324" />
<ingredient count="1" id="46337" />
<production count="1" id="46324" />
</item>
<item>
<ingredient count="1" id="46325" />
<ingredient count="1" id="46337" />
<production count="1" id="46325" />
</item>
<item>
<ingredient count="1" id="46326" />
<ingredient count="1" id="46337" />
<production count="1" id="46326" />
</item>
</list>

View File

@@ -67,10 +67,12 @@ ai/npc/Teleports/AnghelWaterfallPortal/AnghelWaterfallPortal.java
ai/npc/Teleports/CrumaTower/CrumaTower.java ai/npc/Teleports/CrumaTower/CrumaTower.java
ai/npc/Teleports/DarkOmens/DarkOmens.java ai/npc/Teleports/DarkOmens/DarkOmens.java
ai/npc/Teleports/DelusionTeleport/DelusionTeleport.java ai/npc/Teleports/DelusionTeleport/DelusionTeleport.java
ai/npc/Teleports/DimensionalWarpTeleport/DimensionalWarpTeleport.java
ai/npc/Teleports/ElrokiTeleporters/ElrokiTeleporters.java ai/npc/Teleports/ElrokiTeleporters/ElrokiTeleporters.java
ai/npc/Teleports/GainakUndergroundEntrance/GainakUndergroundEntrance.java ai/npc/Teleports/GainakUndergroundEntrance/GainakUndergroundEntrance.java
ai/npc/Teleports/GiantServant/GiantServant.java ai/npc/Teleports/GiantServant/GiantServant.java
ai/npc/Teleports/GrandBossTeleporters/GrandBossTeleporters.java ai/npc/Teleports/GrandBossTeleporters/GrandBossTeleporters.java
ai/npc/Teleports/KargosTeleport/KargosTeleport.java
ai/npc/Teleports/Klemis/Klemis.java ai/npc/Teleports/Klemis/Klemis.java
ai/npc/Teleports/MithrilMinesTeleporter/MithrilMinesTeleporter.java ai/npc/Teleports/MithrilMinesTeleporter/MithrilMinesTeleporter.java
ai/npc/Teleports/NewbieTravelToken/NewbieTravelToken.java ai/npc/Teleports/NewbieTravelToken/NewbieTravelToken.java

View File

@@ -0,0 +1,74 @@
/*
* 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 ai.npc.Teleports.DimensionalWarpTeleport;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import ai.npc.AbstractNpcAI;
/**
* @author hlwrave
*/
final class DimensionalWarpTeleport extends AbstractNpcAI
{
// NPC
private final static int RESED = 33974;
// Misc
private final static int MIN_LEVEL = 99;
// Items
private final static int WARP_CRYSTAL = 39597;
private final static int WARP_CRYSTAL_COUNT = 3;
// Location
private final static Location DIMENSIONAL_WARP = new Location(-76785, -217420, 4016);
private DimensionalWarpTeleport()
{
super(DimensionalWarpTeleport.class.getSimpleName(), "ai/npc/Teleports");
addStartNpc(RESED);
addTalkId(RESED);
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
if ((hasQuestItems(player, WARP_CRYSTAL)) && (player.getLevel() >= MIN_LEVEL) && (getQuestItemsCount(player, WARP_CRYSTAL) >= WARP_CRYSTAL_COUNT) && (player.isAwaken()))
{
takeItems(player, WARP_CRYSTAL, 3);
player.teleToLocation(DIMENSIONAL_WARP);
}
else if (player.getLevel() < MIN_LEVEL)
{
return "no_level.htm";
}
else if (getQuestItemsCount(player, WARP_CRYSTAL) < WARP_CRYSTAL_COUNT)
{
return "no_item.htm";
}
else
{
return "non_awakened.htm";
}
return super.onTalk(npc, player);
}
public static void main(String[] args)
{
new DimensionalWarpTeleport();
}
}

View File

@@ -0,0 +1,3 @@
<html><body>Resed:<br>
You must have a <font color="LEVEL">3</font> Warp Crystal , in order to teleport Dimensional Warp.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Resed:<br>
I do not believe our paths are meant to cross here. Perhaps later down the road.<br>
(Only characters Lv. 99. or Above)
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Resed:<br>
Sorry, I can't teleoprt you to Dimensional Warp. Come back when you have Awakened to it.
</body></html>

View File

@@ -0,0 +1,68 @@
/*
* 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 ai.npc.Teleports.KargosTeleport;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import ai.npc.AbstractNpcAI;
/**
* @author hlwrave
*/
final class KargosTeleport extends AbstractNpcAI
{
// NPC
private final static int KARGOS = 33821;
// Items
private final static int PAGAN_MARK = 8067;
private final static int VISITOR_MARK = 8064;
// Locations
private final static Location PAGAN_TEMPLE = new Location(-16350, -37579, -10725);
private final static Location PAGAN_ROOM = new Location(-12766, -35840, -10851);
private KargosTeleport()
{
super(KargosTeleport.class.getSimpleName(), "ai/npc/Teleports");
addStartNpc(KARGOS);
addTalkId(KARGOS);
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
if (hasQuestItems(player, PAGAN_MARK, VISITOR_MARK))
{
player.teleToLocation(PAGAN_TEMPLE);
}
else if (hasQuestItems(player, VISITOR_MARK))
{
player.teleToLocation(PAGAN_ROOM);
}
else
{
return "noItem.htm";
}
return super.onTalk(npc, player);
}
public static void main(String[] args)
{
new KargosTeleport();
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Kargos:<br>
You have nothing that would cover the holes.<br>
(You must have a Visitor's Mark, a Pagan's Mark in order to teleport Pagan Temple.)
</body></html>

View File

@@ -0,0 +1,169 @@
/*
* 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.Q00757_TriolsMovement;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.util.Util;
/**
* @author hlwrave
*/
public class Q00757_TriolsMovement extends Quest
{
// NPCs
private static final int RADZEN = 33803;
// Items
private static final int SPIRIT = 36231;
private static final int TOTEM = 36230;
private static final int SPIRIT_COUNT = 100;
private static final int TOTEM_COUNT = 100;
// Mobs
private static final int[] MOBS =
{
22140,
22147,
23278,
23283,
22146,
22155,
22141,
22144,
22139,
22152,
22153,
22154,
};
public Q00757_TriolsMovement()
{
super(757, Q00757_TriolsMovement.class.getSimpleName(), "Triols Movement");
addStartNpc(RADZEN);
addTalkId(RADZEN);
registerQuestItems(SPIRIT, TOTEM);
addKillId(MOBS);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = event;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
switch (event)
{
case "accepted.htm":
{
qs.setCond(1);
qs.startQuest();
break;
}
case "endquest.htm":
{
if (qs.isCond(2))
{
qs.takeItems(SPIRIT, -100);
qs.takeItems(TOTEM, -100);
qs.giveItems(57, 745929);
qs.giveItems(36232, 1);
qs.addExpAndSp(301518549, 7236360);
qs.exitQuest(QuestType.DAILY, true);
htmltext = "endquest.htm";
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
if (qs == null)
{
return htmltext;
}
switch (qs.getState())
{
case State.COMPLETED:
{
htmltext = "You have completed this quest today, come back tomorow at 6:30!";
break;
}
case State.CREATED:
{
if (player.getLevel() >= 97)
{
htmltext = "start.htm";
}
else
{
htmltext = "no_level.htm";
}
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "notcollected.htm";
}
else if (qs.isCond(2))
{
htmltext = "collected.htm";
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1) && qs.isStarted())
{
if (Util.contains(MOBS, npc.getId()))
{
giveItemRandomly(killer, npc, TOTEM, 1, 100, 1.0, true);
}
if (Util.contains(MOBS, npc.getId()))
{
giveItemRandomly(killer, npc, SPIRIT, 1, 100, 1.0, true);
}
if ((getQuestItemsCount(killer, SPIRIT) == SPIRIT_COUNT) && (getQuestItemsCount(killer, TOTEM) == TOTEM_COUNT))
{
qs.setCond(2);
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,7 @@
<html><body>Sec:<br>
This is great news for us!<br>
Here is a list of monsters which must be eliminated:<br>
Risen worker Ritual Offering, Amateur Tyrol, Tyrol believer, priest of Tyrol, the High Priest of Tyrol, The Forgotten Victim, Resurrected Temple Knight, Soldier of the old aristocracy, Guardian of the Temple, the captain of the Temple Ritual Sacrifice.<br>
In a sign of proof of the offense bring 50 "Pagan Totem", and also you can collect "Pagan Spirit" through this thing I can replenish your energy!<br>
Come see me when you've gathered 50 "Pagan Totem" and as much as possible, "the Spirit of the Gentiles."
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Sec:<br>
I can see how theirs are shining precious totems!<br>
Show that even brought?<br><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00757_TriolsMovement endquest.htm">"Show"</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Sec:<br>
Thank you for helping us keep the balance among Rassam! So as that's your reward, I was able to fill up a bit of energy you above all.<br>
Triols all exactly is a lot out there, and the rest a come back tomorrow to continue the mission of our gods!
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>You don't meet level requirements<br>
(Quest available from level 97 or above.)
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Sec:<br>
This is great news for us!<br>
Here is a list of monsters which must be eliminated:<br>
Risen worker Ritual Offering, Amateur Tyrol, Tyrol believer, priest of Tyrol, the High Priest of Tyrol, The Forgotten Victim, Resurrected Temple Knight, Soldier of the old aristocracy, Guardian of the Temple, the captain of the Temple Ritual Sacrifice.<br>
In a sign of proof of the offense bring 50 "Pagan Totem", and also you can collect "Pagan Spirit" through this thing I can replenish your energy!<br>
Come see me when you've gathered 50 "Pagan Totem" and as much as possible, "the Spirit of the Gentiles."
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Sec:<br>
We would never have thought that the triplets can multiply so fast, according to our research theirs number exceeds the norm by 389 percent!<br>
You are here that would stop this growth?<br><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00757_TriolsMovement accepted.htm">"Yes, I'm the one who need it!"</button>
</body></html>

View File

@@ -0,0 +1,152 @@
/*
* 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.Q10388_ConspiracyBehindDoor;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
/**
* @author hlwrave
*/
public class Q10388_ConspiracyBehindDoor extends Quest
{
// NPCs
private static final int ELIA = 31329;
private static final int KARGOS = 33821;
private static final int HICHEN = 33820;
private static final int RAZDEN = 33803;
// Item
private static final int VISITORS_BADGE = 8064;
public Q10388_ConspiracyBehindDoor()
{
super(10388, Q10388_ConspiracyBehindDoor.class.getSimpleName(), "Conspiracy Behind Door");
addStartNpc(ELIA);
addTalkId(ELIA, KARGOS, HICHEN, RAZDEN);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = event;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
switch (event)
{
case "go.htm":
{
qs.setCond(1);
qs.startQuest();
break;
}
case "toCond2.htm":
{
qs.setCond(2);
break;
}
case "toCond3.htm":
{
qs.setCond(3);
qs.giveItems(VISITORS_BADGE, 1);
break;
}
case "final.htm":
{
qs.addExpAndSp(29638350, 2963835);
qs.exitQuest(false, true);
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
if (qs == null)
{
return htmltext;
}
final int npcId = npc.getId();
switch (qs.getState())
{
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
case State.CREATED:
{
if (npcId == ELIA)
{
if (player.getLevel() >= 97)
{
htmltext = "start.htm";
}
else
{
htmltext = "nolvl.htm";
}
}
break;
}
case State.STARTED:
{
switch (npcId)
{
case KARGOS:
{
if (qs.isCond(1))
{
htmltext = "cond1.htm";
}
break;
}
case HICHEN:
{
if (qs.isCond(2))
{
htmltext = "cond2.htm";
}
break;
}
case RAZDEN:
{
if (qs.isCond(3))
{
htmltext = "cond3.htm";
}
break;
}
}
break;
}
}
return htmltext;
}
}

View File

@@ -0,0 +1,6 @@
<html><body>Kargos:<br>
Sir , nice to see you, I see you with a message from our good priest.
What then if you are willing to learn of a secret conspiracy , you have to talk to the Costumed Knight Hichen find it will not be easy , he secretly investigating this conspiracy in the Temple of the Pagans.
I hope that he will have good news for you!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10388_ConspiracyBehindDoor toCond2.htm">"I still know him!!!"</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Hichen:<br>
Quiet...! I learned something... outside the door is a new evil that must win our glorious world... Unfortunately I can not say anything more yasnoe..ne dolgo..na stand here we can watch..
Go to undress... not long ago he sent me a spy... said that he learned something over a secret... it go immediately.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10388_ConspiracyBehindDoor toCond3.htm">"Thank you!"</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Radzen:<br>
Do not be afraid , come near... I see what you come up with questions... but I will have one and you.
You would not find me without the help Hichen, it happens nothing handed?!!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10388_ConspiracyBehindDoor final.htm">"Tell about a strange message..."</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Radzen:<br>
So the ships harbor... tomorrow!? Oh, God, thank you for the information... here's a reward... not much but it's all there... come on later, I need to work!!!
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Eliyah:<br>
Oh thank you brave soldier, give me Kargos rays of light and blessing of the gods!
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Elia:<br>
Sorry, but it seems you lost your job.. not by force , go work out , come when you reach the 97-level!
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Eliyah:<br>
Oh, my eyes let me down? It is you? About who says it? Those who will save the world?<br>
Of course, not all at once.. first we must learn that hides from us the evil of those same doors!<br>
And you do not know about this?! <br>
Go and have a talk with the Chief Kargos Knight and he will enlighten your not knowing!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10388_ConspiracyBehindDoor go.htm">"I think yes!"</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Kargos:<br>
Well, Well , good luck to you friend, I hope luck will smile to you!
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Kichen:<br>
Yes ... quiet ... * whispers * .. tell him the ships come into the harbor tomorrow .. good luck ..
</body></html>

View File

@@ -0,0 +1,166 @@
/*
* 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.Q10389_TheVoiceOfAuthority;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.ExQuestNpcLogList;
import com.l2jmobius.gameserver.util.Util;
import quests.Q10388_ConspiracyBehindDoor.Q10388_ConspiracyBehindDoor;
/**
* @author hlwrave
*/
public class Q10389_TheVoiceOfAuthority extends Quest
{
// NPCs
private static final int RADZEN = 33803;
// Monsters
private static final int MOB_1 = 22139;
private static final int MOB_2 = 22140;
private static final int MOB_3 = 22141;
private static final int MOB_4 = 22147;
private static final int MOB_5 = 22154;
private static final int MOB_6 = 22144;
private static final int MOB_7 = 22145;
private static final int MOB_8 = 22148;
private static final int MOB_9 = 22142;
private static final int MOB_10 = 22155;
public Q10389_TheVoiceOfAuthority()
{
super(10389, Q10389_TheVoiceOfAuthority.class.getSimpleName(), "The Voice Of Authority");
addCondCompletedQuest(Q10388_ConspiracyBehindDoor.class.getSimpleName(), "no_quest.htm");
addStartNpc(RADZEN);
addTalkId(RADZEN);
addKillId(MOB_1, MOB_2, MOB_3, MOB_4, MOB_5, MOB_6, MOB_7, MOB_8, MOB_9, MOB_10);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = event;
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
switch (event)
{
case "accepted.htm":
{
qs.setCond(1);
qs.startQuest();
qs.set(Integer.toString(MOB_1), 0);
qs.set(Integer.toString(MOB_2), 0);
qs.set(Integer.toString(MOB_3), 0);
qs.set(Integer.toString(MOB_4), 0);
qs.set(Integer.toString(MOB_5), 0);
qs.set(Integer.toString(MOB_6), 0);
qs.set(Integer.toString(MOB_7), 0);
qs.set(Integer.toString(MOB_8), 0);
qs.set(Integer.toString(MOB_9), 0);
qs.set(Integer.toString(MOB_10), 0);
break;
}
case "endquest.htm":
{
qs.giveItems(57, 1302720);
qs.giveItems(8067, 1);
qs.addExpAndSp(592767000, 142264);
qs.exitQuest(false, true);
htmltext = "endquest.htm";
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
if (qs == null)
{
return htmltext;
}
switch (qs.getState())
{
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
case State.CREATED:
{
if (player.getLevel() >= 97)
{
htmltext = "start.htm";
}
else
{
htmltext = "no_level.htm";
}
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "notcollected.htm";
}
else if (qs.isCond(2))
{
htmltext = "collected.htm";
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
if ((qs != null) && qs.isStarted() && qs.isCond(1) && Util.checkIfInRange(1500, npc, qs.getPlayer(), false))
{
int kills = qs.getInt(Integer.toString(MOB_1));
kills++;
qs.set(Integer.toString(MOB_1), kills);
final ExQuestNpcLogList log = new ExQuestNpcLogList(getId());
log.addNpcString(NpcStringId.ELIMINATE_THE_PAGANS_IN_THE_ANTEROOM, kills);
killer.sendPacket(log);
if (kills >= 30)
{
qs.setCond(2);
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,3 @@
<html><body>Radzi:<br>
You need to kill 30 monsters, that's what it is: A soldier of the old aristocracy, the Risen worker Forgotten Sacrifice Offering Ritual, Ritual Sacrifice, Resurrected Temple Knight, who believes Tyrol, Tyrol, Amateur, High Priest of the Tyrol. Come back when you're done!
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Radzi:<br>
Quickly you're done, I'm happy.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10389_TheVoiceOfAuthority endquest.htm">"What's next?"</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Radzi:<br>
I will give you higher authorities coped with all the complexities, here is your reward and a sign of loyalty.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>You don't meet level requirements<br>
(Quest available from level 97 or above.)
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>You don't meet level requirements<br>
You cannot procceed with this quest until you have completed the Conspiracy Behind Door quest.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Radzi:<br>
You need to kill 30 monsters, that's what it is: A soldier of the old aristocracy, the Risen worker Forgotten Sacrifice Offering Ritual, Ritual Sacrifice, Resurrected Temple Knight, who believes Tyrol, Tyrol, Amateur, High Priest of the Tyrol. Come back when you're done!
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Radzi:<br>
You are not a bad try, but to get to this temple is not so simple. You have not shown us that you are really true to us. I am giving you a chance to prove their loyalty, are you ready?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10389_TheVoiceOfAuthority accepted.htm">"Yes, I'm ready!"</button>
</body></html>

View File

@@ -168,6 +168,7 @@ import quests.Q00699_GuardianOfTheSkies.Q00699_GuardianOfTheSkies;
import quests.Q00700_CursedLife.Q00700_CursedLife; import quests.Q00700_CursedLife.Q00700_CursedLife;
import quests.Q00701_ProofOfExistence.Q00701_ProofOfExistence; import quests.Q00701_ProofOfExistence.Q00701_ProofOfExistence;
import quests.Q00702_ATrapForRevenge.Q00702_ATrapForRevenge; import quests.Q00702_ATrapForRevenge.Q00702_ATrapForRevenge;
import quests.Q00757_TriolsMovement.Q00757_TriolsMovement;
import quests.Q00901_HowLavasaurusesAreMade.Q00901_HowLavasaurusesAreMade; import quests.Q00901_HowLavasaurusesAreMade.Q00901_HowLavasaurusesAreMade;
import quests.Q00902_ReclaimOurEra.Q00902_ReclaimOurEra; import quests.Q00902_ReclaimOurEra.Q00902_ReclaimOurEra;
import quests.Q00903_TheCallOfAntharas.Q00903_TheCallOfAntharas; import quests.Q00903_TheCallOfAntharas.Q00903_TheCallOfAntharas;
@@ -223,6 +224,8 @@ import quests.Q10364_ObligationsOfTheSeeker.Q10364_ObligationsOfTheSeeker;
import quests.Q10365_SeekerEscort.Q10365_SeekerEscort; import quests.Q10365_SeekerEscort.Q10365_SeekerEscort;
import quests.Q10366_RuinsStatusUpdate.Q10366_RuinsStatusUpdate; import quests.Q10366_RuinsStatusUpdate.Q10366_RuinsStatusUpdate;
import quests.Q10368_RebellionOfMonsters.Q10368_RebellionOfMonsters; import quests.Q10368_RebellionOfMonsters.Q10368_RebellionOfMonsters;
import quests.Q10388_ConspiracyBehindDoor.Q10388_ConspiracyBehindDoor;
import quests.Q10389_TheVoiceOfAuthority.Q10389_TheVoiceOfAuthority;
import quests.Q10390_KekropusLetter.Q10390_KekropusLetter; import quests.Q10390_KekropusLetter.Q10390_KekropusLetter;
import quests.Q10393_KekropusLetter_AClueCompleted.Q10393_KekropusLetter_AClueCompleted; import quests.Q10393_KekropusLetter_AClueCompleted.Q10393_KekropusLetter_AClueCompleted;
import quests.Q10397_KekropusLetter_ASuspiciousBadge.Q10397_KekropusLetter_ASuspiciousBadge; import quests.Q10397_KekropusLetter_ASuspiciousBadge.Q10397_KekropusLetter_ASuspiciousBadge;
@@ -421,6 +424,7 @@ final class QuestMasterHandler
Q00700_CursedLife.class, Q00700_CursedLife.class,
Q00701_ProofOfExistence.class, Q00701_ProofOfExistence.class,
Q00702_ATrapForRevenge.class, Q00702_ATrapForRevenge.class,
Q00757_TriolsMovement.class,
Q00901_HowLavasaurusesAreMade.class, Q00901_HowLavasaurusesAreMade.class,
Q00902_ReclaimOurEra.class, Q00902_ReclaimOurEra.class,
Q00903_TheCallOfAntharas.class, Q00903_TheCallOfAntharas.class,
@@ -476,6 +480,8 @@ final class QuestMasterHandler
Q10365_SeekerEscort.class, Q10365_SeekerEscort.class,
Q10366_RuinsStatusUpdate.class, Q10366_RuinsStatusUpdate.class,
Q10368_RebellionOfMonsters.class, Q10368_RebellionOfMonsters.class,
Q10388_ConspiracyBehindDoor.class,
Q10389_TheVoiceOfAuthority.class,
Q10390_KekropusLetter.class, Q10390_KekropusLetter.class,
Q10393_KekropusLetter_AClueCompleted.class, Q10393_KekropusLetter_AClueCompleted.class,
Q10397_KekropusLetter_ASuspiciousBadge.class, Q10397_KekropusLetter_ASuspiciousBadge.class,

View File

@@ -1100,7 +1100,6 @@
<set name="commissionItemType" val="OTHER_ITEM" /> <set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" /> <set name="default_action" val="SKILL_REDUCE" />
<set name="handler" val="ItemSkills" /> <set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="is_stackable" val="true" /> <set name="is_stackable" val="true" />
<set name="item_skill" val="2235-1" /> <!-- Anteroom Door Key --> <set name="item_skill" val="2235-1" /> <!-- Anteroom Door Key -->
<set name="material" val="STEEL" /> <set name="material" val="STEEL" />