Salvation quest changes.

This commit is contained in:
MobiusDev
2018-09-14 17:42:06 +00:00
parent efd99249a7
commit 6c4f56fd71
624 changed files with 138 additions and 9820 deletions

View File

@@ -1,5 +1,30 @@
482 Recertification of Value
504 Competition for the Bandit Stronghold
561 Basic Mission: Harnak Underground Ruins
562 Basic Mission: Altar of Evil
563 Basic Mission: Bloody Swampland
564 Basic Mission: Kartia's Labyrinth (Solo)
565 Basic Mission: Fairy Settlement - West
566 Basic Mission: Fairy Settlement - East
567 Basic Mission: Isle of Souls
568 Special Mission: Nornil's Cave
569 Basic Mission: Seal of Shilen
570 Special Mission: Kartia's Labyrinth (Party)
571 Special Mission: Proof of Unity (Field Raid)
572 Special Mission: Proof of Courage (Field Raid)
573 Special Mission: Proof of Strength (Field Raid)
574 Special Mission: Nornil's Garden
575 Special Mission: Fortuna
576 Special Mission: Defeat Spezion
580 Beyond the Memories
581 The Purification Ritual
582 Wash Blood with Blood
583 Meaning of Survival
584 Never Say Good Bye
585 Can't Go Against the Time
586 Mutated Creatures
587 More Aggressive Operation
588 Head-on Crash
655 A Grand Plan for Taming Wild Beasts
665 Basic Training for Hunter Guild Member
666 Knowledgeable Hunter Guild Member
@@ -9,6 +34,12 @@
671 Path to Finding the Past
672 Embryo the Archenemy
673 Beleth' Ambition
674 Changes in the Shadow of the Mother Tree
675 What the Thread of the Past Shows
676 Hunter Guild Request – Wasteland West
677 Hunter Guild Request – Wasteland East
678 Hunter Guild Request – Forest of the Dead
679 Hunter Guild Request – Swamp of Screams
690 |Attack| Begin Alliance Base Defense - 1
691 |Attack| Begin Alliance Base Defense - 2
692 |Attack| Begin Alliance Base Defense - 3
@@ -53,14 +84,17 @@
734 Red Libra Request - Nightmare Kamaloka
735 Red Libra Request - Embryo Command Post
736 Red Libra Request - Altar of Shilen
737 A Sword Hidden in a Smile
738 Dimensional Exploration of the Unworldly Visitors
743 At the Altar of Oblivion
744 The Alligator Hunter returns
745 The Outlaws are Incoming
746 The Reason One Cannot Wait
747 Defending the Forsaken Plains
748 Endless Revenge
749 Ties with the Guardians
750 Seven Flowers
759 The Dwarven Nightmare Continues
766 10-day Adventure
773 To Calm the Flood
774 Dreaming of peace
780 Utilize the Darkness - Seed of Infinity
@@ -145,10 +179,40 @@
10538 Giant's Evolution Cause of failed evolution
10539 Energy Supply Cutoff Plan Defeat Halisha's Henchman
10540 Thwarting Mimir's Plan Defeating Mimir
10712 The Minstrel's Song, Part 1
10717 The Minstrel's Song, Part 2
10720 The Minstrel's Song, Part 3
10723 The Minstrel's Song, Part 4
10552 Challenge! Balthus Knight!
10553 What Matters More Than Ability
10554 Gift for You
10555 Charge at Antharas
10556 Forgotten Power: Start of Fate
10557 New Power, Winds of Fate
10558 Hidden in Chaos
10559 Before the Guide
10560 Way of Wandering Knight
10561 Across the Death Line
10562 Take Up Arms
10563 Control of Power
10564 Prove Progress
10565 Nothing Is Impossible
10566 Best Choice
10567 Special Mission: Nornil's Garden
10568 Kamael's Technological Advancement
10569 Declaration of War
10570 Hurrah for Kamael's Independence
10571 Strategic Reconciliation
10572 To Expel the Embryo's Forces
10574 Special Mission: Fortuna
10575 Let's Go Fishing
10576 Glittering Weapons
10577 Temper a Rusting Blade
10578 The Soul of a Sword
10579 Containing the Attribute Power
10580 Special Mission: Defeat Spezion
10594 Fergason's Scheme
10595 The Dimensional Warp, Part 8
10596 The Dimensional Warp, Part 9
10597 Escape to the Shadow of the Mother Tree
10598 With All Your Might
10599 Thread of Fate Hanging on the Mother Tree
10726 The Minstrel's Song, Part 5
10731 The Minstrel's Song, Part 6
10748 Mysterious Suggestion - 1

View File

@@ -1,5 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
It is important that you see to your own maturation and development. You'd think that would be easy, but it can be quite a challenge, not becoming complacent and falling into a rut.<br>
However, I happen to know that there are currently challenging opportunities available for Academy apprentices. With your qualifications, I bet you'd have no problem tackling such a challenge.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00245_ComeToMe 30847-04.htm">"Interesting. Tell me more."</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
It is important to keep challenging yourself. Don't you agree? Growth is one of nature's laws. To stay still is to become stagnant. What you need is a good opportunity. Something that will challenge you and enable you to develop yourself. If you only had the right qualifications...<br>
(This quest can only be fulfilled by a level 70 through 75 character, who belongs to the clan academy, and who has a sponsor.)
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
The ring, it's useful, yes?<br>
(You have already completed this quest.)
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
I'm trying to make a ring. Or a necklace, but I think a ring would be the best place to start. Anyway, in order to make it I'll need some simple ingredients.<br>
It shouldn't be too much of a challenge for you to collect what I need. Go to the <font color="LEVEL">Blazing Swamp</font>, defeat <font color="LEVEL">Lava Wyrms and Swamp Predators</font>, and bring me back <font color="LEVEL">15 Blazing Ashes</font>. Once you get those, we can hit up your sponsor for the rest of ingredients I need.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
Oh, come on now! It's not that hard! Just meander on over to the <font color="LEVEL">Blazing Swamp</font>, defeat some <font color="LEVEL">Lava Wyrms and Swamp Predators</font>, and collect <font color="LEVEL">15 Blazing Ashes</font> for me. That's all I need you to do. I'll get everything else I need from your sponsor. Hop to it!
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
Good. That covers my basic ingredient needs. Now it's time to talk to your sponsor. To make the ring, I'll also need <font color="LEVEL">100 Crystals (A-grade)</font>. Ask your sponsor to procure those, then come talk to me.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00245_ComeToMe 30847-07.html">"I'll pass on your message."</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
Oh, and you'll need to be here when I talk to your sponsor. This is, after all, supposed to be a learning experience for you. Bye now. I look forward to seeing you, your sponsor, and a pack of crystals later!
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
Where is your sponsor?
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
Why are you here alone? Where's your sponsor? Don't you have one? Well... I can't help you without a sponsor. Go find one and then bring him by to see me.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
Is that your sponsor? He does talk, doesn't he? Can you get him to talk to me? Hmm?
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
Ah, there you are. Do you remember what I need? I need <font color="LEVEL">100 Crystals (A-grade)</font> to make your Apprentice's Ring. Did you bring them?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00245_ComeToMe 30847-13.htm">"Here are 100 Crystals (A-grade)."</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
Who are you? A sponsor? I don't know who you're sponsoring. Please visit me again with your apprentice, then we can talk.
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
Good work. I'm impressed by the way you and your apprentice work together. You make a good team. I'm glad to be able to provide this growth opportunity to the both of you. There might be a chance for you to increase your enlightenment, while I'm working on this. Now, I'll need some time to make the ring.<br>
Ah, I need to talk to your apprentice about this. Could you please let your apprentice know?
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
Hmm... there aren't enough ingredients. I need <font color="LEVEL">100 Crystals: A grade</font> to make the ring.
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
Preparations to make the ring are now complete. It will just take me a little while to get this flame hot enough. While I'm working on this, I don't know if your sponsor mentioned it, but you can acquire increased enlightenment. Enlightenment while you wait! What could be better?<br>
All you need to do is to go to the <font color="LEVEL">Blazing Swamp</font> and catch <font color="LEVEL">Hames Orc Footsoldier, Hames Orc Sniper, Hames Orc Shaman, and Hames Orc Prefects</font>. Then, collect <font color="LEVEL">12 Crystals of Experience</font>. <font color="LEVEL">The trick, there's always a trick, is that you must kill them while your sponsor is watching. If you don't, you won't be able to find any Crystals of Experience.</font> Strange, I know. But that's just how it works. And, it gives you a wonderful opportunity to show off to your sponsor, or... if you need it... your sponsor can give you a helping hand. Go on now. Have a good time.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
Go to the <font color="LEVEL">Blazing Swamp</font> and catch <font color="LEVEL">Hames Orc Footsoldier, Hames Orc Sniper, Hames Orc Shaman, and Hames Orc Prefects</font>. Then, collect <font color="LEVEL">12 Crystals of Experience</font>. <font color="LEVEL">But... make sure that your sponsor is watching when you kill them, or you won't be able to find any Crystals of Experience.</font> There's some magical bonding mojo going on there. It makes for a great opportunity for team building. Have fun now!
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Head Blacksmith Ferris:<br>
Good work. Now, using these transference bellows, I can heat the Crystals of Experience and make this manifestation of your training become part of your essence. Hold still now!<br>
There we go! That's it! So, how do you feel? Do you feel the enlightenment? It tickles, doesn't it? I know it's not a huge amount, but every little bit helps you grow. Ah, and here is your ring. I got it finished while you were out collecting crystals. I hope it helps you in your future endeavors.
</body></html>

View File

@@ -1,290 +0,0 @@
/*
* 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.Q00245_ComeToMe;
import java.util.Collection;
import com.l2jmobius.commons.util.CommonUtil;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.instancemanager.MentorManager;
import com.l2jmobius.gameserver.model.L2Mentee;
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;
/**
* Come To Me (245)
* @URL https://l2wiki.com/Come_to_Me
* @author Gigi
* @date 2017-08-18 - [13:01:14]
*/
public class Q00245_ComeToMe extends Quest
{
// NPC
private static final int FERRIS = 30847;
// Monsters
private static final int[] BLAZING_MOBS_1 = new int[]
{
21110, // Swamp Predator
21111 // Lava Wyrm
};
private static final int[] BLAZING_MOBS_2 = new int[]
{
21112, // Hames Orc Foot Soldier
21113, // Hames Orc Sniper
21115, // Hames Orc Shaman
21116 // Hames Orc Prefect
};
// Items
private static final int FLAME_ASHES = 30322;
private static final int CRYSTALS_OF_EXPERIENCE = 30323;
private static final int CRYSTAL_A = 1461;
private static final int MENTOR_RING = 30383;
private static final int ACADEMY_DYE_STR = 47205;
private static final int ACADEMY_DYE_WIT = 47210;
// Misc
private static final int MIN_LEVEL = 70;
private static final int MAX_LEVEL = 75;
public Q00245_ComeToMe()
{
super(245);
addStartNpc(FERRIS);
addTalkId(FERRIS);
addKillId(BLAZING_MOBS_1);
addKillId(BLAZING_MOBS_2);
addFirstTalkId(FERRIS);
registerQuestItems(FLAME_ASHES, CRYSTALS_OF_EXPERIENCE);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "30847-02.htm");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (player.isMentor() && event.equals("30847-13.html"))
{
L2PcInstance mentee = getCurrentMentee(player);
if (mentee != null)
{
if (player.destroyItemByItemId("quest_245", CRYSTAL_A, 100, npc, true))
{
mentee.getQuestState(getName()).setCond(3, true);
return event;
}
return "30847-14.html";
}
return "30847-12.html";
}
QuestState st = getQuestState(player, false);
if (st == null)
{
return event;
}
else if (event.equals("30847-04.htm"))
{
st.startQuest();
}
else if (event.equals("30847-07.htm"))
{
st.set("talk", "1");
takeItems(player, FLAME_ASHES, -1);
playSound(player, QuestSound.ITEMSOUND_QUEST_MIDDLE);
}
return event;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState st = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (npc.getId() == FERRIS)
{
switch (st.getState())
{
case State.CREATED:
{
if (player.isMentee() && player.isAcademyMember())
{
htmltext = "30847-01.htm";
}
else
{
htmltext = "30847-02.htm";
}
break;
}
case State.STARTED:
{
switch (st.getCond())
{
case 1:
{
htmltext = "30847-05.html";
break;
}
case 2:
{
if (!st.isSet("talk"))
{
htmltext = "30847-06.html";
}
else if (player.isMentee())
{
L2PcInstance mentor = MentorManager.getInstance().getMentor(player.getObjectId()).getPlayerInstance();
if ((mentor != null) && mentor.isOnline() && Util.checkIfInRange(200, npc, mentor, true))
{
htmltext = "30847-10.html";
}
else
{
htmltext = "30847-08.html";
}
}
else
{
htmltext = "30847-09.html";
}
break;
}
case 3:
{
st.setCond(4, true);
htmltext = "30847-17.html";
break;
}
case 4:
{
htmltext = "30847-18.html";
break;
}
case 5:
{
if (player.getLevel() >= MIN_LEVEL)
{
if (player.isAcademyMember())
{
player.getClan().addReputationScore(500, true);
}
addExpAndSp(player, 2_018_733, 484);
giveItems(player, MENTOR_RING, 1);
giveItems(player, getRandom(ACADEMY_DYE_STR, ACADEMY_DYE_WIT), 10);
htmltext = "30847-19.html";
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
st.exitQuest(QuestType.ONE_TIME, true);
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = "30847-03.htm";
break;
}
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState st = getQuestState(killer, true);
if ((npc == null) || (st == null))
{
return super.onKill(npc, killer, isSummon);
}
if (st.getCond() == 1)
{
if (CommonUtil.contains(BLAZING_MOBS_1, npc.getId()) && (getRandom(100) < 50))
{
giveItems(killer, FLAME_ASHES, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
if (getQuestItemsCount(killer, FLAME_ASHES) >= 15)
{
st.setCond(2, true);
}
}
}
else if (st.getCond() == 4)
{
if (CommonUtil.contains(BLAZING_MOBS_2, npc.getId()))
{
if (killer.isMentee())
{
L2PcInstance mentor = MentorManager.getInstance().getMentor(killer.getObjectId()).getPlayerInstance();
if ((mentor != null) && Util.checkIfInRange(500, killer, mentor, false))
{
giveItems(killer, CRYSTALS_OF_EXPERIENCE, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
if (getQuestItemsCount(killer, CRYSTALS_OF_EXPERIENCE) >= 12)
{
st.setCond(5, true);
}
}
}
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (player.isMentor() && (npc.getId() == FERRIS))
{
final L2PcInstance mentee = getCurrentMentee(player);
if (mentee != null)
{
return "30847-11.html";
}
}
npc.showChatWindow(player);
return null;
}
private L2PcInstance getCurrentMentee(L2PcInstance mentor)
{
L2PcInstance mentee = null;
final Collection<L2Mentee> mentees = MentorManager.getInstance().getMentees(mentor.getObjectId());
for (L2Mentee pl : mentees)
{
if (pl.isOnline() && Util.checkIfInRange(400, mentor, pl.getPlayerInstance(), false))
{
final QuestState st = getQuestState(pl.getPlayerInstance(), true);
if ((st != null) && (st.getCond() == 2))
{
mentee = pl.getPlayerInstance();
}
}
}
return mentee;
}
}

View File

@@ -1,5 +0,0 @@
<html><body>Trader Vollodos:<br>
Have you been to the Dark Elf Village?<br>
Aha... I'm worried. Because of Shilen's resurrection, many of my brethren were killed and had no choice but to escape from the village. Also, the power of the epidemic came to cover the entire continent. Look! Don't you see the blackish red fog all over this area? At this rate, none of us will be safe.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00490_DutyOfTheSurvivor 30137-02.htm">Continue to listen</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Trader Vollodos:<br>
The problem is that not everyone escaped to a safe place like Talking Island. Many people were unable to find a refuge. They got lost along the way, and they succumbed to the epidemic. Many people died like this in this area. The harm will only increase if we do nothing about it.<br>
It is the duty of the living to help them. So, will you help me?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00490_DutyOfTheSurvivor 30137-03.htm">Listen to the story.</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Trader Vollodos:<br>
I am actually working on an antidote for the epidemic along with several Dark Elves. But I'm not a scholar or a magician, so there aren't that many things I can do. All I can do is collect research ingredients from nearby monsters to help with the research.<br>
But I'm not a warrior, so that's why I must ask adventurers like you for help.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00490_DutyOfTheSurvivor 30137-04.htm">Ask how you can help.</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Trader Vollodos:<br>
Please collect the research ingredients from the monsters in the area. We need <font color="LEVEL">Putrefied Extract</font> from the <font color="LEVEL">Corpse Devourer, Corpse Absorber, Corpse Shredder, Plagueworm, Contaminated Rottenroot, and Decayed Spore</font>. We need <font color="LEVEL">Rotten Blood</font> from the <font color="LEVEL">Swamp Stalker, Swamp Assassin, Swamp Watcher, Corpse Collector, Delegate of Blood, and Blood Aide</font>. We need about <font color="LEVEL">20</font> each to continue the research.<br>
Do you think you can handle it?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00490_DutyOfTheSurvivor 30137-05.htm">"I can do it on your own."</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Grocer Vollodos:<br>
Ahh, thank goodness. Please bring me the research ingredients. If you do, I will certainly reward you for your trouble. Then, please be careful...
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Grocer Vollodos:<br>
Please collect the research ingredients from the monsters in the area. We need <font color="LEVEL">Putrefied Extract</font> from the <font color="LEVEL">Corpse Devourer, Corpse Absorber, Corpse Shredder, Plagueworm, Contaminated Rottenroot, and Decayed Spore</font>... And <font color="LEVEL">Rotten Blood</font> from <font color="LEVEL">Swamp Tracker, Swamp Assassin, Swamp Watcher, Corpse Collector, Delegate of Blood, and Blood Aide</font>. We need about <font color="LEVEL">20</font> of each item to continue to the research.<br>
Please bring me the ingredients. If you do, I will certainly reward you for your trouble. Then, please be careful...
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Grocer Vollodos:<br>
Ahh. You collected all the research ingredients. Thank you! This will greatly help to advance my research.<br>
I hope that no more people perish from this epidemic. We will do our best to successfully develop an antidote. Please continue to be careful as you travel in this area.<br>
Oh! The antidote research will continue, so if you have time tomorrow, please stop by again.
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Grocer Vollodos:<br>
Thank you for your help.<br>
Please be careful whenever you travel in this area. <br>
(This quest can only be done once a day. The quest will reset every day at 6:30 AM.)
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Grocer Vollodos:<br>
The epidemic is covering the entire continent. Look! Don't you see the blackish red fog all over this area? If you continue to wander, you may die from this epidemic.<br>
I cannot leave due to personal reasons, so I cannot lead you myself. But please flee to a safe location.<br>
(You must be level 85 or above to start this quest.)
</body></html>

View File

@@ -1,196 +0,0 @@
/*
* 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.Q00490_DutyOfTheSurvivor;
import java.util.HashSet;
import java.util.Set;
import com.l2jmobius.commons.util.CommonUtil;
import com.l2jmobius.gameserver.enums.QuestSound;
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.holders.NpcLogListHolder;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
/**
* Duty of the Survivor (400)
* @author St3eT
*/
public final class Q00490_DutyOfTheSurvivor extends Quest
{
// NPCs
private static final int VOLLODOS = 30137;
private static final int[] EXTRACT_MONSTERS =
{
23162, // Corpse Devourer
23163, // Corpse Absorber
23164, // Corpse Shredder
23165, // Plagueworm
23166, // Contaminated Rotten Root
23167, // Decayed Spore
};
private static final int[] BLOOD_MONSTERS =
{
23168, // Swamp Tracker
23169, // Swamp Assassin
23170, // Swamp Watcher
23171, // Corpse Collector
23172, // Delegate of Blood
23173, // Blood Aide
};
// Items
private static final int EXTRACT = 34059; // Putrefied Extract
private static final int BLOOD = 34060; // Rotten Blood
// Misc
private static final int DROP_CHANCE = 65; // Guessed
private static final int MIN_LEVEL = 85;
public Q00490_DutyOfTheSurvivor()
{
super(490);
addStartNpc(VOLLODOS);
addTalkId(VOLLODOS);
addKillId(EXTRACT_MONSTERS);
addKillId(BLOOD_MONSTERS);
registerQuestItems(EXTRACT, BLOOD);
addCondMinLevel(MIN_LEVEL, "30137-09.htm");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState st = getQuestState(player, false);
if (st == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30137-02.htm":
case "30137-03.htm":
case "30137-04.htm":
{
htmltext = event;
break;
}
case "30137-05.htm":
{
st.startQuest();
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState st = getQuestState(player, true);
if (npc.getId() == VOLLODOS)
{
switch (st.getState())
{
case State.CREATED:
{
htmltext = "30137-01.htm";
break;
}
case State.STARTED:
{
if (st.isCond(1))
{
htmltext = "30137-06.htm";
}
else
{
giveAdena(player, 505_062, true);
st.exitQuest(QuestType.DAILY, true);
if (player.getLevel() >= MIN_LEVEL)
{
addExpAndSp(player, 145_557_000, 34_933);
}
htmltext = "30137-07.htm";
}
break;
}
case State.COMPLETED:
{
if (st.isNowAvailable())
{
st.setState(State.CREATED);
htmltext = "30137-01.htm";
}
else
{
htmltext = "30137-08.htm";
}
break;
}
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
{
final L2PcInstance member = getRandomPartyMember(player, 1);
if (member != null)
{
final QuestState st = getQuestState(member, false);
if (st.isCond(1) && (getRandom(100) < DROP_CHANCE))
{
final int itemId = CommonUtil.contains(EXTRACT_MONSTERS, npc.getId()) ? EXTRACT : BLOOD;
if (getQuestItemsCount(player, itemId) < 20)
{
giveItems(player, itemId, 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
if ((getQuestItemsCount(player, EXTRACT) == 20) && (getQuestItemsCount(player, BLOOD) == 20))
{
st.setCond(2);
}
}
}
return super.onKill(npc, player, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
final Set<NpcLogListHolder> npcLogList = new HashSet<>(2);
npcLogList.add(new NpcLogListHolder(EXTRACT, false, (int) getQuestItemsCount(player, EXTRACT)));
npcLogList.add(new NpcLogListHolder(BLOOD, false, (int) getQuestItemsCount(player, BLOOD)));
return npcLogList;
}
return super.getNpcLogList(player);
}
}

View File

@@ -1,4 +0,0 @@
<html><body>Sir Kristof Rodemai:<br>
What is your opinion on the current state of affairs? The disintegration of royal authority has been disastrous for the kingdom, with chaos and dissent running rampant throughout the land. Now even the evil spirits are acting with impunity. When your clan becomes stronger, you should join with me to change the world!<br>
(This quest may only be undertaken by a level 3 clan.)
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Sir Kristof Rodemai:<br>
In these difficult times we must call upon a new generation to restore order! All right-thinking young people such as you and your clan must join in this effort if we are to survive.<br>
(This quest may only be undertaken by a level 3 clan.)
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Sir Kristof Rodemai:<br>
Ah, the Alliance Manifesto! Good work! However you mustn't forget that this is only your first step towards changing the world. We still have many daunting tasks ahead of us.
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Sir Kristof Rodemai:<br>
Will you join me in creating a new world order?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30756-06.html">"I will join you."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Sir Kristof Rodemai:<br>
What is your opinion on the current state of affairs? The disintegration of royal authority has been disastrous for the kingdom, with chaos and dissent running rampant throughout the land. Now even the evil spirits are acting with impunity.<br>
Why am am wasting time talking to you? I demand to speak with your clan leader!<br>
(This quest may only be undertaken by a clan leader of a level 3 clan.)
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Sir Kristof Rodemai:<br>
I can see that you have what it takes to be a great leader, but to earn the respect of your peers your clan must demonstrate its ability.<br>
How about this? There is a witch named Kalis who lives near the Ivory Tower. She administers a test that determines one's heroism. Those who have passed this test are widely regarded as true heroes. If your clan passes the test, there will be no doubt of your abilities. What do you think? Will you and your clan take the test?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30756-07.html">"We shall take the test!"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30756-08.html">"We will not take the test."</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Sir Kristof Rodemai:<br>
Your courage is impressive. Good luck on the test.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Sir Kristof Rodemai:<br>
Oh well, I understand your reluctance. May you live a long life...
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Sir Kristof Rodemai:<br>
I judged wisely when I selected you. We are of equal caliber, and I'm sure we will become fast friends. Of course this is not to say it will always be so. For now, let's enjoy each other's company. Here, as promised, is the Alliance Manifesto.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Sir Kristof Rodemai:<br>
There is talk of vagabonds banding together and calling themselves a clan... I hope that is not what you are. Time is short! If you will not prove your abilities, I shall look elsewhere for assistance.
</body></html>

View File

@@ -1,7 +0,0 @@
<html><body>Statue of Offering:<br>
Do you wish to take the test for your clan lord? You should consider your answer carefully. It could cost you your life.<br>
Only those with the firmest resolve should step forward and answer my question.<br>
Would you die for your clan lord? Now, give me an answer!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30757-04.html">"I will sacrifice my life to prove loyalty to my clan lord."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30757-05.html">Quit the test</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Statue of Offering:<br>
A clan lord cannot take this test.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Statue of Offering:<br>
Haven't you already proven your loyalty?
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Statue of Offering:<br>
You lack even the experience to be be killed by this test! Count your blessings! You will live to die another day.<br>
(Only a clan member of level 40 or above can take this test.)
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Statue of Offering:<br>
Death shall be your reward. Now prove your loyalty!
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Statue of Offering:<br>
Your loyalty is impressive! Now return to your clan lord with your head held high.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Statue of Offering:<br>
...
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Statue of Offering:<br>
Does your clan lord truly wish to take the test?
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Witch Athrea:<br>
I cannot give the <font color="LEVEL">Blood of Eva</font> to just anyone who asks for it! My older sister Kalis would be furious!<br>
If you wish to obtain the Blood of Eva, you must pass the test I will give you.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30758-02.html">"I will take the test."</Button>
</body></html>

View File

@@ -1,8 +0,0 @@
<html><body>Witch Athrea:<br>
You seem quick-witted enough. I will explain the test to you.<br>
It's very simple. I trust you have drawn lots before? Think of this as drawing boxes.<br>
First I will summon 16 boxes. Among them, four boxes are enchanted and shout when they are broken. You must find all the enchanted boxes and break them so that they will shout four times. It is possible to break all the boxes, but there is a time limit. If you cannot break the boxes within the given time, they will all disappear.<br>
Shall we start the game?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30758-03.html">"Start the game."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30758-04.html">"I am not ready yet."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Witch Athrea:<br>
Each one of the four enchanted boxes will say <font color="LEVEL">"Bingo!"</font> when broken. Funny, huh?<br>
Why are you making a face?<br>
Oh well, keep it in mind. <font color="LEVEL">Let's begin!</font>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Witch Athrea:<br>
Are you ready to begin the test? Well, we must wait until those people over there are finished. It shouldn't take long. You would do well to observe them and learn more about the test.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Witch Athrea:<br>
Call upon all your abilities!
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Witch Athrea:<br>
What? No boxes? Utter failure!<br>
Well, well, well. I should just throw you out of here, but I'm too soft-hearted for that. You shall have one more chance to take the test, but it will be expensive.<br>
These boxes aren't free, you understand? Give me 10,000 Adena and I will make the boxes again. Is this agreeable?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30758-07.html">"I will pay you 10,000 Adena."</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Witch Athrea:<br>
That isn't enough money! Perhaps you could raise the funds among clan members, catch some monsters, sell your swords, whatever it takes. You should be able to come up with 10,000 Adena in no time!
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Witch Athrea:<br>
Would you care to play the game again?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30758-03.html">"I want to play the game again."</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Witch Athrea:<br>
Ah, a quite unexpected success! Well, true to my word, here is the <font color="LEVEL">Blood of Eva</font>. Be careful not to break the bottle.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Witch Athrea:<br>
Do you really have the time to stand around gabbing like this? Unless you bring me the ingredients for the Antidote soon, your clan leader will surely die.
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Witch Kalis:<br>
Would you choose to be a star shining brightly in the midst of chaos?<br>
Behold the graves of those who have fallen attempting to do this...<br>
Are you prepared to rest alongside them?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30759-02.html">"I want to be a star."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Witch Kalis:<br>
You fool! Do you think that you are immortal? The test begins! Are there any among your clan who would die for you?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30759-03.html">"There is one who will."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30759-04.html">"There are none who will."</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Witch Kalis:<br>
Ah, we shall see... Tell those who would lay down their lives for you to join me at the <font color="LEVEL">table of sacrifice</font>! If they are truly loyal they will not hesitate to sacrifice their lives.<br>
Bring me <font color="LEVEL">three symbols of loyalty</font>, I will recognize the resolve of you and your clan!
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Witch Kalis:<br>
Just as I expected. All talk and no action.
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Witch Kalis:<br>
Where is the confidence you so reeked of earlier? No comrades willing to risk their lives, eh?<br>
Unless you bring me <font color="LEVEL">three symbols of loyalty</font>, you will never pass the test. In order to obtain the symbols, three of your clan must take an oath of their life at the <font color="LEVEL">table of sacrifice</font> and pledge complete loyalty to you.
</body></html>

View File

@@ -1,7 +0,0 @@
<html><body>Witch Kalis:<br>
Your comrades must have firm resolve and unfailing loyalty. In these days of the endless pursuit of profit, these are rare and noble qualities.<br>
Now, do you trust your clan members? Would you bet your life on them? If so, then drink this poison and ask your clan members to gather the ingredients and bring back the Antidote! Here is a list of the ingredients needed for the Antidote. If your comrades can find and bring back all of the ingredients within one hour your life will be saved.<br>
I wonder how hard your clan will try to save your life? Do you care to find out?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30759-07.html">Drink the poison</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00501_ProofOfClanAlliance 30759-04.html">Do not drink the poison</Button>
</body></html>

View File

@@ -1,7 +0,0 @@
<html><body>Witch Kalis:<br>
Tell me, how does the poison taste? Everything growing dark, is it? That would be death coming for you. I fear that soon we will need to add another grave here... Will your comrades find and bring back all the ingredients in time?<br>
Oh, I do hate to see you in such pain. Would you care for some hints?<br>
Herb of Vanor can be obtained from <font color="LEVEL">vanor silenos</font>. Herb of Harit can be obtained from <font color="LEVEL">Harit Lizardmen</font>. Herb of Ol Mahum can be obtained from <font color="LEVEL">Ol Mahums</font>. <font color="LEVEL">The Shamans</font> will have the herbs.<br>
In order to obtain the Blood of Eva, you must visit <font color="LEVEL">Witch Athrea</font>. She is my younger sister. Some time ago she left for <font color="LEVEL">Hardin's Academy</font> to meet with Grand Magus Hardin.<br>
Remember that <font color="LEVEL">when your clan members bring back all the ingredients, you must gather them up and bring them to me. I will create the Antidote for you.</font>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Witch Kalis:<br>
Ah, all the ingredients of the Antidote! It has been a long time since this has happened. It is heartening to learn that there are still people like you and your clan with firm resolve and common trust! You are truly the soldiers of the new age! A bright star illuminating the darkness of this time! Please pardon my previous rudeness and accept this Antidote and mark.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Witch Kalis:<br>
You are a liar and a cheat! Your sort can never become a shining star. You are dead to me now. Do you have regrets? If so, you can start over from the very beginning...
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Witch Kalis:<br>
Your time among the living grows short. What has become of your comrades? Will they return in time to save your life?<br>
Let me remind you again, <font color="LEVEL">when your clan members bring back all the ingredients, you must gather them and bring them to me personally. I will use them to make the Antidote.</font>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Witch Kalis:<br>
Haven't you already passed my test? Why do you return to my humble abode?<br>
Have you come to punish me for my previous rudeness?
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Witch Kalis:<br>
The lives of those who do not know their place often end prematurely. People should always live their lives within the proper boundaries. I don't have time to speak with you. Ask your clan lord to come and see me...
</body></html>

View File

@@ -1,584 +0,0 @@
/*
* 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.Q00501_ProofOfClanAlliance;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.l2jmobius.gameserver.enums.ChatType;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.L2Clan;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.SkillHolder;
import com.l2jmobius.gameserver.model.itemcontainer.Inventory;
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.model.skills.AbnormalType;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.util.Util;
/**
* Proof of Clan Alliance (501)
* @author Zoey76
*/
public final class Q00501_ProofOfClanAlliance extends Quest
{
// NPCs
private static final int SIR_KRISTOF_RODEMAI = 30756;
private static final int STATUE_OF_OFFERING = 30757;
private static final int ATHREA = 30758;
private static final int KALIS = 30759;
// Monsters
private static final int OEL_MAHUM_WITCH_DOCTOR = 20576;
private static final int HARIT_LIZARDMAN_SHAMAN = 20644;
private static final int VANOR_SILENOS_SHAMAN = 20685;
private static final int BOX_OF_ATHREA_1 = 27173;
private static final int BOX_OF_ATHREA_2 = 27174;
private static final int BOX_OF_ATHREA_3 = 27175;
private static final int BOX_OF_ATHREA_4 = 27176;
private static final int BOX_OF_ATHREA_5 = 27177;
// Items
private static final int HERB_OF_HARIT = 3832;
private static final int HERB_OF_VANOR = 3833;
private static final int HERB_OF_OEL_MAHUM = 3834;
private static final int BLOOD_OF_EVA = 3835;
private static final int ATHREAS_COIN = 3836;
private static final int SYMBOL_OF_LOYALTY = 3837;
private static final int ANTIDOTE_RECIPE_LIST = 3872;
private static final int VOUCHER_OF_FAITH = 3873;
private static final int ALLIANCE_MANIFESTO = 3874;
private static final int POTION_OF_RECOVERY = 3889;
// Skills
private static final SkillHolder POISON_OF_DEATH = new SkillHolder(4082, 1);
private static final SkillHolder DIE_YOU_FOOL = new SkillHolder(4083, 1);
// Locations
// @formatter:off
private static final List<Location> LOCS = Arrays.asList(
new Location(102273, 103433, -3512),
new Location(102190, 103379, -3524),
new Location(102107, 103325, -3533),
new Location(102024, 103271, -3500),
new Location(102327, 103350, -3511),
new Location(102244, 103296, -3518),
new Location(102161, 103242, -3529),
new Location(102078, 103188, -3500),
new Location(102381, 103267, -3538),
new Location(102298, 103213, -3532),
new Location(102215, 103159, -3520),
new Location(102132, 103105, -3513),
new Location(102435, 103184, -3515),
new Location(102352, 103130, -3522),
new Location(102269, 103076, -3533),
new Location(102186, 103022, -3541));
// @formatter:on
// Misc
private static final int CLAN_MIN_LEVEL = 3;
private static final int CLAN_MEMBER_MIN_LEVEL = 40;
private static final int ADENA_TO_RESTART_GAME = 10000;
public Q00501_ProofOfClanAlliance()
{
super(501);
addStartNpc(SIR_KRISTOF_RODEMAI, STATUE_OF_OFFERING);
addTalkId(SIR_KRISTOF_RODEMAI, STATUE_OF_OFFERING, ATHREA, KALIS);
addKillId(OEL_MAHUM_WITCH_DOCTOR, HARIT_LIZARDMAN_SHAMAN, VANOR_SILENOS_SHAMAN, BOX_OF_ATHREA_1, BOX_OF_ATHREA_2, BOX_OF_ATHREA_3, BOX_OF_ATHREA_4, BOX_OF_ATHREA_5);
registerQuestItems(ANTIDOTE_RECIPE_LIST, VOUCHER_OF_FAITH, HERB_OF_HARIT, HERB_OF_VANOR, HERB_OF_OEL_MAHUM, BLOOD_OF_EVA, ATHREAS_COIN, SYMBOL_OF_LOYALTY);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30756-06.html":
case "30756-08.html":
case "30757-05.html":
case "30758-02.html":
case "30758-04.html":
case "30759-02.html":
case "30759-04.html":
{
htmltext = event;
break;
}
case "30756-07.html":
{
if (qs.isCreated() && player.isClanLeader() && (player.getClan().getLevel() == CLAN_MIN_LEVEL))
{
qs.startQuest();
qs.setMemoState(1);
htmltext = event;
}
break;
}
case "30757-04.html":
{
if (getRandom(10) > 5)
{
if (qs.getInt("flag") != 2501)
{
giveItems(player, SYMBOL_OF_LOYALTY, 1);
qs.set("flag", 2501);
}
htmltext = event;
}
else
{
npc.setTarget(player);
npc.doCast(DIE_YOU_FOOL.getSkill());
startQuestTimer("SYMBOL_OF_LOYALTY", 4000, npc, player);
htmltext = "30757-03.html";
}
break;
}
case "30758-03.html":
{
final QuestState lqs = getLeaderQuestState(player, getName());
if (lqs != null)
{
if (npc.getSummonedNpcCount() < 4)
{
lqs.setMemoState(4);
lqs.set("flag", 0);
npc.setScriptValue(0);
for (Location loc : LOCS)
{
final L2Npc box = addSpawn(npc, getRandom(BOX_OF_ATHREA_1, BOX_OF_ATHREA_5), loc, false, 300000);
box.disableCoreAI(true);
box.setRandomWalking(true);
}
htmltext = event;
}
else
{
htmltext = "30758-03a.html";
}
}
break;
}
case "30758-07.html":
{
if (player.getAdena() >= ADENA_TO_RESTART_GAME)
{
if (npc.getSummonedNpcCount() < 4)
{
takeItems(player, ADENA_TO_RESTART_GAME, Inventory.ADENA_ID);
}
htmltext = event;
}
else
{
htmltext = "30758-06.html";
}
break;
}
case "30759-03.html":
{
if (qs.isMemoState(1))
{
qs.setCond(2, true);
qs.setMemoState(2);
htmltext = event;
}
break;
}
case "30759-07.html":
{
if (qs.isMemoState(2) && (getQuestItemsCount(player, SYMBOL_OF_LOYALTY) >= 3))
{
takeItems(player, SYMBOL_OF_LOYALTY, -1);
giveItems(player, ANTIDOTE_RECIPE_LIST, 1);
npc.setTarget(player);
npc.doCast(POISON_OF_DEATH.getSkill());
qs.setCond(3, true);
qs.setMemoState(3);
htmltext = event;
}
break;
}
case "SYMBOL_OF_LOYALTY":
{
if (player.isDead() && (qs.getInt("flag") != 2501))
{
giveItems(player, SYMBOL_OF_LOYALTY, 1);
qs.set("flag", 2501);
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
if (qs == null)
{
return super.onKill(npc, killer, isSummon);
}
final L2PcInstance player = qs.getPlayer();
final QuestState lqs = getLeaderQuestState(player, getName());
if (lqs != null)
{
switch (npc.getId())
{
case OEL_MAHUM_WITCH_DOCTOR:
{
if ((getRandom(10) == 1) && (lqs.getMemoState() >= 3) && (lqs.getMemoState() < 6))
{
giveItemRandomly(player, npc, HERB_OF_OEL_MAHUM, 1, 0, 1.0, true);
}
break;
}
case HARIT_LIZARDMAN_SHAMAN:
{
if ((getRandom(10) == 1) && (lqs.getMemoState() >= 3) && (lqs.getMemoState() < 6))
{
giveItemRandomly(player, npc, HERB_OF_HARIT, 1, 0, 1.0, true);
}
break;
}
case VANOR_SILENOS_SHAMAN:
{
if ((getRandom(10) == 1) && (lqs.getMemoState() >= 3) && (lqs.getMemoState() < 6))
{
giveItemRandomly(player, npc, HERB_OF_VANOR, 1, 0, 1.0, true);
}
break;
}
case BOX_OF_ATHREA_1:
case BOX_OF_ATHREA_2:
case BOX_OF_ATHREA_3:
case BOX_OF_ATHREA_4:
case BOX_OF_ATHREA_5:
{
final L2Character summoner = npc.getSummoner();
if ((summoner != null) && summoner.isNpc() && lqs.isMemoState(4))
{
final L2Npc arthea = (L2Npc) summoner;
if ((lqs.getInt("flag") == 3) && arthea.isScriptValue(15))
{
lqs.set("flag", lqs.getInt("flag") + 1);
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.BINGO);
}
else if ((lqs.getInt("flag") == 2) && arthea.isScriptValue(14))
{
lqs.set("flag", lqs.getInt("flag") + 1);
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.BINGO);
}
else if ((lqs.getInt("flag") == 1) && arthea.isScriptValue(13))
{
lqs.set("flag", lqs.getInt("flag") + 1);
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.BINGO);
}
else if ((lqs.getInt("flag") == 0) && arthea.isScriptValue(12))
{
lqs.set("flag", lqs.getInt("flag") + 1);
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.BINGO);
}
else if (lqs.getInt("flag") < 4)
{
if (getRandom(4) == 0)
{
lqs.set("flag", lqs.getInt("flag") + 1);
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.BINGO);
}
}
arthea.setScriptValue(arthea.getScriptValue() + 1);
}
break;
}
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
final QuestState lqs = getLeaderQuestState(player, getName());
String htmltext = getNoQuestMsg(player);
switch (npc.getId())
{
case SIR_KRISTOF_RODEMAI:
{
switch (qs.getState())
{
case State.CREATED:
{
if (player.isClanLeader())
{
final L2Clan clan = player.getClan();
if (clan.getLevel() < CLAN_MIN_LEVEL)
{
htmltext = "30756-01.html";
}
else if (clan.getLevel() == CLAN_MIN_LEVEL)
{
if (hasQuestItems(player, ALLIANCE_MANIFESTO))
{
htmltext = "30756-03.html";
}
else
{
htmltext = "30756-04.html";
}
}
else
{
htmltext = "30756-02.html";
}
}
else
{
htmltext = "30756-05.html";
}
break;
}
case State.STARTED:
{
if (qs.isMemoState(6) && hasQuestItems(player, VOUCHER_OF_FAITH))
{
takeItems(player, VOUCHER_OF_FAITH, -1);
giveItems(player, ALLIANCE_MANIFESTO, 1);
addExpAndSp(player, 0, 120000);
qs.exitQuest(QuestType.ONE_TIME);
htmltext = "30756-09.html";
}
else
{
htmltext = "30756-10.html";
}
break;
}
}
break;
}
case STATUE_OF_OFFERING:
{
if ((lqs != null) && lqs.isMemoState(2))
{
if (!player.isClanLeader())
{
if (player.getLevel() >= CLAN_MEMBER_MIN_LEVEL)
{
htmltext = (qs.getInt("flag") != 2501) ? "30757-01.html" : "30757-01b.html";
}
else
{
htmltext = "30757-02.html";
}
}
else
{
htmltext = "30757-01a.html";
}
}
else
{
htmltext = "30757-06.html";
}
break;
}
case ATHREA:
{
if (lqs != null)
{
switch (lqs.getMemoState())
{
case 3:
{
if (hasQuestItems(lqs.getPlayer(), ANTIDOTE_RECIPE_LIST) && !hasQuestItems(lqs.getPlayer(), BLOOD_OF_EVA))
{
lqs.set("flag", 0);
htmltext = "30758-01.html";
}
break;
}
case 4:
{
if (lqs.getInt("flag") < 4)
{
htmltext = "30758-05.html";
}
else
{
giveItems(player, BLOOD_OF_EVA, 1);
lqs.setMemoState(5);
htmltext = "30758-08.html";
}
break;
}
case 5:
{
htmltext = "30758-09.html";
break;
}
}
}
break;
}
case KALIS:
{
if (qs.isMemoState(1) && !hasQuestItems(player, SYMBOL_OF_LOYALTY))
{
htmltext = "30759-01.html";
}
else if (qs.isMemoState(2) && (getQuestItemsCount(player, SYMBOL_OF_LOYALTY) < 3))
{
htmltext = "30759-05.html";
}
else if ((getQuestItemsCount(player, SYMBOL_OF_LOYALTY) >= 3) && !hasAbnormal(player))
{
htmltext = "30759-06.html";
}
else if (qs.isMemoState(5) && hasQuestItems(player, BLOOD_OF_EVA) && hasQuestItems(player, HERB_OF_VANOR) && hasQuestItems(player, HERB_OF_HARIT) && hasQuestItems(player, HERB_OF_OEL_MAHUM) && hasAbnormal(player))
{
giveItems(player, VOUCHER_OF_FAITH, 1);
giveItems(player, POTION_OF_RECOVERY, 1);
takeItems(player, BLOOD_OF_EVA, -1);
takeItems(player, ANTIDOTE_RECIPE_LIST, -1);
takeItems(player, HERB_OF_OEL_MAHUM, -1);
takeItems(player, HERB_OF_HARIT, -1);
takeItems(player, HERB_OF_VANOR, -1);
qs.setCond(4, true);
qs.setMemoState(6);
htmltext = "30759-08.html";
}
else if ((qs.isMemoState(3) || qs.isMemoState(4) || qs.isMemoState(5)) && !hasAbnormal(player))
{
takeItems(player, ANTIDOTE_RECIPE_LIST, -1);
qs.setMemoState(1);
htmltext = "30759-09.html";
}
else if ((qs.getMemoState() < 6) && (getQuestItemsCount(player, SYMBOL_OF_LOYALTY) >= 3) && !hasAtLeastOneQuestItem(player, BLOOD_OF_EVA, HERB_OF_VANOR, HERB_OF_HARIT, HERB_OF_OEL_MAHUM) && hasAbnormal(player))
{
htmltext = "30759-10.html";
}
else if (qs.isMemoState(6))
{
htmltext = "30759-11.html";
}
else if ((lqs != null) && !player.isClanLeader())
{
htmltext = "30759-12.html";
}
break;
}
}
return htmltext;
}
/**
* Verifies if the player has the poison.
* @param player the player to check
* @return {@code true} if the player has {@link AbnormalType#FATAL_POISON} abnormal
*/
private static boolean hasAbnormal(L2PcInstance player)
{
return player.hasAbnormalType(AbnormalType.FATAL_POISON);
}
/**
* Gets the clan leader's quest state.
* @param player the player
* @param quest the quest name
* @return the clan leader's quest state
*/
private static QuestState getLeaderQuestState(L2PcInstance player, String quest)
{
if (player.getClan() != null)
{
final L2PcInstance leader = player.getClan().getLeader().getPlayerInstance();
if (leader != null)
{
return leader.getQuestState(quest);
}
}
return null;
}
@Override
public QuestState getRandomPartyMemberState(L2PcInstance player, int condition, int playerChance, L2Npc target)
{
if ((player == null) || (playerChance < 1))
{
return null;
}
QuestState qs = getQuestState(player, false);
if (!player.isInParty())
{
if (!Util.checkIfInRange(1500, player, target, true))
{
return null;
}
return qs;
}
final List<QuestState> candidates = new ArrayList<>();
if ((qs != null) && (playerChance > 0))
{
for (int i = 0; i < playerChance; i++)
{
candidates.add(qs);
}
}
for (L2PcInstance member : player.getParty().getMembers())
{
if (member == player)
{
continue;
}
qs = getQuestState(member, false);
if (qs != null)
{
candidates.add(qs);
}
}
if (candidates.isEmpty())
{
return null;
}
qs = candidates.get(getRandom(candidates.size()));
if (!Util.checkIfInRange(1500, qs.getPlayer(), target, true))
{
return null;
}
return qs;
}
}

View File

@@ -1,3 +0,0 @@
<html><body>Head Blacksmith Kusto:<br>
I've heard about your clan... you are the Clan in high spirits, no? I heard that you were headed towards Death Pass...? I'll be counting on you. Please find my brother. He received the title of honorable Bounty Hunter... These days he hangs out with a bad crowd called the <font color="LEVEL">Magpie's Brothers</font>. People say they were hired by a human aristocrat to find something in Death Pass... There is something very fishy about them....
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Head Blacksmith Kusto:<br>
I have heard many impressive tales of your clan... I would be greatly honored to meet the lord of your clan.
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Head Blacksmith Kusto:<br>
A magpie brooch...? Does this mean...?! How could he...!<br>
Sob! It's from the Magpie Brothers! He fell in with those ruffians and see where it got him... He sullied the reputations of honorable Bounty Hunters everywhere... How dreadful!<br>
Even though he has disgraced himself, I cannot deny our blood connection. Thank you for discovering the fate of my brother. As a token of appreciation from myself and the Black Anvil Guild, please take these <font color="LEVEL">coins</font>.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00503_PursuitOfClanAmbition 30512-03.html">"Tell me more about the Magpie Brothers."</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Head Blacksmith Kusto:<br>
They don't respect their ancestors. They are bounty hunters who dig up graves and rummage through relics to collect anything that's valuable. They were named the Magpie's Brothers because of their greed. They even hoarded relics from the Dwarf Kingdom found in the ancient labyrinth in Schuttgart and sold them to collectors at high prices! They have no shame! The Magpie's Brothers were eventually banished from the Dwarf Kingdom, and rumor has it that they since sneaked into the Kingdom of Aden and have been stealing relics from the Elmore-Aden national cemetery... Recently, I heard that they are working on collecting eggs in Death Pass, and are cooperating with some human aristocrat....
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Head Blacksmith Kusto:<br>
I will never forget your kindness in bringing me the news of my poor brother. I hope that the guild can help you someday.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00503_PursuitOfClanAmbition 30512-03.html">"Tell me about the Magpie Brothers."</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Martien:<br>
Sir Gustav professed much faith in your clan. I must speak to your leader!
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Martien:<br>
I have already given it to Athebaldt. Antharas is preparing to awaken The Land Dragon. Many people dismiss it as mere rumor, but according to Athebaldt's report, it's starting, and starting soon. At that time, the wyrms and drakes inhabiting Death Pass shall follow Antharas, like soldiers being led onto the battlefield, and they will lay waste to this region.<br>
In order for Giran to survive, we must prepare. We can't suppress him, and using normal methods to fight Antharas is pointless. We must find a way to stand against Antharas's monsters. We have come up with a plan... Thankfully, Athebaldt must have heard somehow, and he chose to support us.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00503_PursuitOfClanAmbition 30645-03.html">"How exactly?"</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Martien:<br>
We are collecting the eggs of wyrms and drakes in order to learn about their breeding habits. One expert in this field is thinking of studying these eggs at the suggestion of numerous pet managers. In order to collect the eggs, several dwarven bounty hunters were dispatched to <font color="LEVEL">Death Pass</font>, but it has been over a week since their departure, and they have not yet returned. Perhaps it was too much for them? I would like for you to go to Death Pass and collect the eggs. Please obtain 10 each of the <font color="LEVEL">Sandworm Eggs, Drake Eggs, Blitz Wyrm Eggs, and Mist Drake Eggs</font>. The Blitz Wyrms and Mist Drakes are very rare, so you may have difficulty finding them. Also, if you run into the dwarves who were dispatched earlier, you may receive some clues. Good luck!
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Martien:<br>
The land dragon will soon be awake. This will decide the fate of Giran... no, the entire kingdom itself. Hurry to <font color="LEVEL">Death Pass</font>, and obtain <font color="LEVEL">Sandworm Eggs, Drake Eggs, Blitz Wyrm Eggs, and Mist Drake Eggs</font>. One or two won't do 0 I need <font color="LEVEL">10 of each</font>. I know it will be difficult, but please do this for me.<br>
Oh! One more thing - the Blitz Wyrm and the Mist Drake are quite rare, so you will have more difficulty finding them. And if you run into the dwarves who were dispatched earlier, you may receive some clues. Good luck.
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Martien:<br>
All dead?...Oh, my!<br>
How dreadful! Oh, well, what can be done? I mean, frankly, they were grave robbers and made their living smuggling stolen relics... It is a dangerous life which always seems to end prematurely.<br>
Anyway, good job! I'll take all the eggs that you've brought. Now you should report back to Athebaldt.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00503_PursuitOfClanAmbition 30645-06.html">"What about the dead Dwarves' belongings?"</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Martien:<br>
Hmm, I wouldn't know. They had rather unsavory reputations, even for Dwarves... Just put them out of your mind.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Martien:<br>
Thank you again for all of your help. I have reported to Athebaldt what a big help you've been. Go and see him. He is expecting you.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Martien:<br>
Athebaldt has a very high opinion of your clan. His influence will be a big factor in your success.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Witch Athrea:<br>
Take heed, my ambitious friend! The path of a king is often ravaged by war and death!
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Witch Kalis:<br>
You who will walk the path of a king, listen carefully! Ambition and power will guide your fate!
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
The power of the royals has been eroding for years now. Just look at the peasants' uprising in Dion a few years ago; past generations wouldn't have dared dream of such things, and yet... here we are. The uprising planted seeds, see, and now a number of groups are preparing to claim power from the throne.<br>
Our kingdom needs young, energetic lords like you to lead it into the future, but you're not yet ready yet.<br>
Once your clan distinguishes itself further, I will join forces with you and lend you my support.<br>
(Only a level 4 clan leader can undertake this quest.)
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
The power of the royals has been eroding for years now. Just look at the peasants' uprising in Dion a few years ago; past generations wouldn't have dared dream of such things, and yet... here we are. The uprising planted seeds, see, and now a number of groups are preparing to claim power from the throne.<br>
Our kingdom needs young, energetic lords like you to lead it into the future, but you're not yet ready yet.<br>
Once your clan distinguishes itself further, I will join forces with you and lend you my support, even if you already have more than enough allies.<br>
(Only a level 4 clan leader can undertake this quest.)
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
Finally, the Seal of Aspiration! Good work! Now you must take it to one of the grand masters. Show it to them and they will instruct you on how to strengthen your clan.
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
The power of the royals has been eroding for years now. Just look at the peasants' uprising in Dion a few years ago; past generations wouldn't have dared dream of such things, and yet... here we are. The uprising planted seeds, see, and now a number of groups are preparing to claim power from the throne.<br>
Our kingdom needs young, energetic lords like you to lead it into the future. If you would accept my aid, I would gladly give it.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00503_PursuitOfClanAmbition 30760-05.html">"Then we will join our forces together."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
The power of the royals has been eroding for years now. Just look at the peasants' uprising in Dion a few years ago; past generations wouldn't have dared dream of such things, and yet... here we are. The uprising planted seeds, see, and now a number of groups are preparing to claim power from the throne.<br>
Our kingdom needs young, energetic lords like you to lead it into the future.<br>
(Only a level 4 clan leader can undertake this quest.)
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
Yes, I agree. But first I must ask you a question: why do you wish to seek your clan? As clan leader, what is it that you truly desire? Answer truly.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00503_PursuitOfClanAmbition 30760-06.html">"I want to make our lands safe for future generations."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00503_PursuitOfClanAmbition 30760-07.html">"I want to have my remembered for all time."</Button>
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
Ha... you remind me of myself when I was young. But this world is not so easily conquered my friend....<br>
I believe that you have what it takes to be a capable leader, and I'm sure things will work out for the best. Now though... now you must help me prepare for my mission.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00503_PursuitOfClanAmbition 30760-08.html">"I'll do all I can, sir."</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
Then you must never show your true feelings; a leader with as many followers as you must keep their private opinions to themselves. You have shown much potential, so now I will tell you how you can help me.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00503_PursuitOfClanAmbition 30760-08.html">"Thank you for your trust."</Button>
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
Right now, Giran is very unhapppy because of the Land Dragon Antharas. It's understandable because rumor has it Antharas is awake again. The ones in power in Giran, the nobles and merchants, are discussing ridiculous solutions about hiring mercenaries and such. The fools.... You know, a swarm of drakes and wyrms may emerge from Death Pass soon, so I can't just wait 'til those useless nobles come up with a half-baked solution.<br>
I'm starting a business in Giran to find a solution; here's something you might interested in. First, go to <font color="LEVEL">Giran Castle Town</font>, and meet with <font color="LEVEL">Martien</font>. He's taking care of business me. He's someone I trust, so cooperate with him. May god bless you and your clan.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
You must hurry to <font color="LEVEL">the Town of Giran</font> and meet with <font color="LEVEL">Martien</font>. Do whatever he says, and go prepared!
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
How are things going with Martien? I have his report right here, and by the sounds of it you and your clan are doing well. Just never forget the responsibilities you shoulder now, towards the whole of Aden.
</body></html>

View File

@@ -1,5 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
I have just received Martien's report. I have given compensation to the families of the dead Dwarves, but it still pains me to see good men in my employ meet their end under my watch. Today is truly a sad day....<br>
At least their suffering was not in vaun: the first part of my plan has been completed. Now we must move on to the next.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00503_PursuitOfClanAmbition 30760-12.html">"What's next?"</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
Martien tells me that you have completed the first stage of the plan. Now you and your clan are needed elsewhere. Please have your clan lord come and see me in the next few days.
</body></html>

View File

@@ -1,4 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
History shows us again and again that ultimate power, complete domination comes most often to those with the superior technology. It's because of that that I have long supported the Black Anvil guild. Their mission is to research the ancient technology of the giants, technology which has so far failed to yield any practical applications even when it has such amazing potential.<br>
There is a Dwarf in the guild named <font color="LEVEL">Balthazar</font> in whom I have invested much time and resources. He is an amazing Artisan, and I believe that his efforts will soon bear fruit. However, he has reached an impasse in his work and has requested my help. It has something to do with a new type of golem he is developing.... He will tell you more when you see him. Take this letter and find him in <font color="LEVEL">Hunters Village</font>.
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body>Sir Gustav Athebaldt:<br>
You must hurry to <font color="LEVEL">Balthazar</font> with the letter I gave you. He can be found in <font color="LEVEL">Hunters Village</font>.
</body></html>

Some files were not shown because too many files have changed in this diff Show More