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

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