This commit is contained in:
mobius
2015-01-01 20:02:50 +00:00
parent eeae660458
commit a6a3718849
17894 changed files with 2818932 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
<html><body>Head Blacksmith Roman:<br>
Hmm... This is definitely the signature of Iason Heine. What would you like to trade for it?<br>
<a action="bypass -h npc_%objectId%_multisell 7897">View the Bill Exchange List</a>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Head Blacksmith Roman:<br>
Are you helping Iason Heine defeat the Tasaba lizardmen? Bring me the bills he gives you, I will exchange them for useful items.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Captain Gosta:<br>
Don't you realize that the Heine family is the most prominent family in all of Heine? For years they have dominated Innadril's commerce and it is rumored that their personal fortune has swelled to several billion Adena. Now word comes that cargo belonging to Iason Heine, the patriarch of the Heine family has been stolen... When he heard about the robbery, the Lord decided to use this incident as an excuse to mobilize his army to drive away the <font color="LEVEL">Tasaba lizardmen</font>. Those filthy reptiles have threatened the safety of travelers for too long...<br>
<a action="bypass -h Quest Q00351_BlackSwan 30916-02.htm">"Was he successful?"</a>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Captain Gosta:<br>
Duke Iason Heine refused the Lord's offer, saying that it was a private matter and he would deal with it. This would be a good time to compliment the Duke on his concern for the public treasury, but, alas, I know him too well.<br>
Anyway, I'm recruiting volunteers to drive away the Tasaba lizardmen for the Duke. He will personally give out the rewards when we are successful. If you wish to volunteer, speak up now!<br>
<a action="bypass -h Quest Q00351_BlackSwan 30916-03.htm">"I will join your effort against the Tasaba lizardmen."</a>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Captain Gosta:<br>
Regardless of his character, <font color="LEVEL">Duke Iason Heine</font> has a point. The <font color="LEVEL">Tasaba lizardmen</font> are definitely a menace to Innadril. It would be one thing if all they did was attack travelers, but now it is said they have something far more sinister planned... Take this order. I wish you luck.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Captain Gosta:<br>
Don't you realize that the Heine family is the most prominent family in all of Heine? For years they have dominated Innadril's commerce and it is rumored that their personal fortune has swelled to several billion Adena. Now word comes that cargo belonging to Iason Heine, the patriarch of the Heine family has been stolen... Why am I telling you this. You can't do anything about it...<br>
(This quest can only be undertaken by a character of level 32 or higher.)
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Captain Gosta:<br>
How is your mission coming along? He may have many faults, but one thing you can say about <font color="LEVEL">Duke Iason Heine</font>, he is not a miser. You will be well-compensated for your efforts. Still, you mustn't believe everything he says...
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Iason Heine:<br>
Oh, my! I should have noticed the captain's seal earlier! So you are here to help me.... What has become of those filthy <font color="LEVEL">Tasaba lizardmen</font>? Have you recovered any of the stolen cargo?<br>
<a action="bypass -h Quest Q00351_BlackSwan 30969-02.html">"Here are the fangs of the lizardmen."</a><br>
<a action="bypass -h Quest Q00351_BlackSwan 30969-05.html">"Here is the cargo we recovered."</a>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Iason Heine:<br>
Unless you present proof that you have killed the lizardmen I will be unable to compensate you. This has nothing to with trust. I believe what you say, I just must have the fangs. I have turned away others who lacked proof. If I were to give you special treatment there would be reprisals against me. Do you understand? Go and get the <font color="LEVEL">lizardmen fangs</font>.<br>
<a action="bypass -h Quest Q00351_BlackSwan 30969-03.html">Return</a>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Iason Heine:<br>
Is there anything else I can do for you? The ranks of the Tasaba lizardmen are swelling as we speak. They must be dealt with. Please don't quit now.<br>
<a action="bypass -h Quest Q00351_BlackSwan 30969-02.html">Show the Tasaba lizardmen fangs.</a><br>
<a action="bypass -h Quest Q00351_BlackSwan 30969-05.html">Show the wooden barrels that belong to the trade guild.</a><br>
<a action="bypass -h Quest Q00351_BlackSwan 30969-07.html">Quit the task.</a>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Iason Heine:<br>
Let's see... We agreed upon 20 adena per fang, correct? Then the total is... this. Correct?<br>
<a action="bypass -h Quest Q00351_BlackSwan 30969-03.html">Return</a>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Iason Heine:<br>
Ah, you have recovered our trade guild's wooden barrel? That is wonderful news! Where is it? Is it in a warehouse? Please bring it to me right away! ... I hope you didn't try to open it! Or send it somewhere else? Ha! Just kidding.<br>
<a action="bypass -h Quest Q00351_BlackSwan 30969-03.html">Return</a>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Iason Heine:<br>
Oh yes, that is definitely the cargo that was stolen from our trade guild. But this is not all of it. There is still much to be recovered. Please continue to look for it.<br>
Ah, the reward. I only have a small amount of cash on me. I'll tell you what, take this bill to <font color="LEVEL">Head Blacksmith Roman</font> of the Blacksmith Guild. He will take care of you.<br>
<a action="bypass -h Quest Q00351_BlackSwan 30969-03.html">Return</a>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Iason Heine:<br>
How can you leave us like this? Most of our stolen cargo has yet to be recovered... and, even more importantly, the Tasaba lizardmen are increasingly threatening our precious Innadril!<br>
... Do you know something I don't? Please reconsider your decision!<br>
<a action="bypass -h Quest Q00351_BlackSwan 30969-03.html">Return</a><br>
<a action="bypass -h Quest Q00351_BlackSwan 30969-09.html">"I quit."</a>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Iason Heine:<br>
OK, look, you can quit any time you want to, but you still need to be paid, right? Let's take care of that and then talk about whether or not you'll quit...<br>
<a action="bypass -h Quest Q00351_BlackSwan 30969-03.html">Return</a>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Iason Heine:<br>
You are very hard-headed! Well, as I said, you are free to go. Have a safe trip... and don't forget to come and visit me occasionally.
</body></html>

View File

@@ -0,0 +1,224 @@
/*
* Copyright (C) 2004-2014 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack 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.
*
* L2J DataPack 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.Q00351_BlackSwan;
import java.util.HashMap;
import java.util.Map;
import quests.Q00345_MethodToRaiseTheDead.Q00345_MethodToRaiseTheDead;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.util.Util;
/**
* Black Swan (351)
* @author Adry_85
*/
public final class Q00351_BlackSwan extends Quest
{
// NPCs
private static final int ROMAN = 30897;
private static final int GOSTA = 30916;
private static final int IASON_HEINE = 30969;
// Items
private static final int ORDER_OF_GOSTA = 4296;
private static final int LIZARD_FANG = 4297;
private static final int BARREL_OF_LEAGUE = 4298;
private static final int BILL_OF_IASON_HEINE = 4407;
// Misc
private static final int MIN_LEVEL = 32;
// Monsters
private static final int TASABA_LIZARDMAN1 = 20784;
private static final int TASABA_LIZARDMAN_SHAMAN1 = 20785;
private static final int TASABA_LIZARDMAN2 = 21639;
private static final int TASABA_LIZARDMAN_SHAMAN2 = 21640;
private static final Map<Integer, Integer> MONSTER_DROP_CHANCES = new HashMap<>();
static
{
MONSTER_DROP_CHANCES.put(TASABA_LIZARDMAN1, 4);
MONSTER_DROP_CHANCES.put(TASABA_LIZARDMAN_SHAMAN1, 3);
MONSTER_DROP_CHANCES.put(TASABA_LIZARDMAN2, 4);
MONSTER_DROP_CHANCES.put(TASABA_LIZARDMAN_SHAMAN2, 3);
}
public Q00351_BlackSwan()
{
super(351, Q00351_BlackSwan.class.getSimpleName(), "Black Swan");
addStartNpc(GOSTA, ROMAN);
addTalkId(GOSTA, IASON_HEINE, ROMAN);
addKillId(TASABA_LIZARDMAN1, TASABA_LIZARDMAN_SHAMAN1, TASABA_LIZARDMAN2, TASABA_LIZARDMAN_SHAMAN2);
registerQuestItems(ORDER_OF_GOSTA, LIZARD_FANG, BARREL_OF_LEAGUE);
}
@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 "30916-02.htm":
case "30969-03.html":
{
htmltext = event;
break;
}
case "30916-03.htm":
{
giveItems(player, ORDER_OF_GOSTA, 1);
qs.startQuest();
htmltext = event;
break;
}
case "30969-02.html":
{
final long lizardFangCount = getQuestItemsCount(player, LIZARD_FANG);
if (lizardFangCount == 0)
{
htmltext = event;
}
else
{
final long adenaBonus = (lizardFangCount >= 10) ? 3880 : 0;
giveAdena(player, adenaBonus + (20 * lizardFangCount), true);
takeItems(player, LIZARD_FANG, -1);
htmltext = "30969-04.html";
}
break;
}
case "30969-05.html":
{
final long barrelOfLeagueCount = getQuestItemsCount(player, BARREL_OF_LEAGUE);
if (barrelOfLeagueCount == 0)
{
htmltext = event;
}
else
{
giveItems(player, BILL_OF_IASON_HEINE, barrelOfLeagueCount);
giveAdena(player, 3880, true);
takeItems(player, BARREL_OF_LEAGUE, -1);
qs.setCond(2);
htmltext = "30969-06.html";
}
break;
}
case "30969-07.html":
{
htmltext = (!hasQuestItems(player, BARREL_OF_LEAGUE, LIZARD_FANG)) ? event : "30969-08.html";
break;
}
case "30969-09.html":
{
htmltext = event;
qs.exitQuest(true, true);
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc);
if ((qs == null) || !Util.checkIfInRange(1500, npc, killer, true))
{
return null;
}
final int random = getRandom(20);
if (random < 10)
{
giveItemRandomly(qs.getPlayer(), npc, LIZARD_FANG, 1, 0, 1.0, true);
if (getRandom(20) == 0)
{
giveItemRandomly(qs.getPlayer(), npc, BARREL_OF_LEAGUE, 1, 0, 1.0, false);
}
}
else if (random < 15)
{
giveItemRandomly(qs.getPlayer(), npc, LIZARD_FANG, 2, 0, 1.0, true);
if (getRandom(20) == 0)
{
giveItemRandomly(qs.getPlayer(), npc, BARREL_OF_LEAGUE, 1, 0, 1.0, false);
}
}
else if (getRandom(100) < MONSTER_DROP_CHANCES.get(npc.getId()))
{
giveItemRandomly(qs.getPlayer(), npc, BARREL_OF_LEAGUE, 1, 0, 1.0, true);
}
return super.onKill(npc, killer, isSummon);
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
QuestState qs = getQuestState(player, true);
QuestState qs2 = player.getQuestState(Q00345_MethodToRaiseTheDead.class.getSimpleName());
String htmltext = getNoQuestMsg(player);
switch (npc.getId())
{
case GOSTA:
{
if (qs.isCreated())
{
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30916-01.htm" : "30916-04.html";
}
else if (qs.isStarted())
{
htmltext = "30916-05.html";
}
break;
}
case IASON_HEINE:
{
if (qs.isStarted())
{
htmltext = "30969-01.html";
}
break;
}
case ROMAN:
{
if (qs.isStarted() || ((qs2 != null) && qs2.isStarted()))
{
htmltext = (hasQuestItems(player, BILL_OF_IASON_HEINE)) ? "30897-01.html" : "30897-02.html";
}
break;
}
}
return htmltext;
}
}