Addition of quests 11003, 11004 and 11005.

Contributed by Stayway.
This commit is contained in:
MobiusDev 2018-04-10 14:53:57 +00:00
parent 0523e00bf5
commit 64568be9f5
41 changed files with 843 additions and 5 deletions

View File

@ -0,0 +1,4 @@
<html><body>Lector's Notes:<br>
Everyone knows that Web of giant spiders is sturdier than steel. And Web of <font color="LEVEL">Giant, Giant Blade and Fang Spiders</font> who inhabit the Talking Island, is famous for its softness and shine that makes is a common material for adorning armor. Unfortunately, it's hard to color. The only way is to add <font color="LEVEL">Essence of Water</font> to the paint, and that Essence is procured by slaying Undines. But if drops of regular water get mixed in with <font color="LEVEL">Essence of Water</font>, then, despite the name, <font color="LEVEL">Essence of Water</font> will lose its magical abilities. That's why it needs to be stored in a dry place. In short, keep it safe.<br>
<font color="LEVEL">Lector</font><br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Lector's Notes:<br>
Everyone knows that Web of giant spiders is sturdier than steel. And Web of <font color="LEVEL">Giant, Giant Blade and Fang Spiders</font> who inhabit the Talking Island, is famous for its softness and shine that makes is a common material for adorning armor. Unfortunately, it's hard to color. The only way is to add <font color="LEVEL">Essence of Water</font> to the paint, and that Essence is procured by slaying Undines. But if drops of regular water get mixed in with <font color="LEVEL">Essence of Water</font>, then, despite the name, <font color="LEVEL">Essence of Water</font> will lose its magical abilities. That's why it needs to be stored in a dry place. In short, keep it safe.<br>
<font color="LEVEL">Lector</font><br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Lector's Notes:<br>
Everyone knows that Web of giant spiders is sturdier than steel. And Web of <font color="LEVEL">Giant, Giant Blade and Fang Spiders</font> who inhabit the Talking Island, is famous for its softness and shine that makes is a common material for adorning armor. Unfortunately, it's hard to color. The only way is to add <font color="LEVEL">Essence of Water</font> to the paint, and that Essence is procured by slaying Undines. But if drops of regular water get mixed in with <font color="LEVEL">Essence of Water</font>, then, despite the name, <font color="LEVEL">Essence of Water</font> will lose its magical abilities. That's why it needs to be stored in a dry place. In short, keep it safe.<br>
<font color="LEVEL">Lector</font><br>
</body></html>

View File

@ -23,9 +23,6 @@
10997 Loser Priest (1/3)
10998 Loser Priest (2/3)
10999 Loser Priest (3/3)
11003 Perfect Leather Armor (1/3)
11004 Perfect Leather Armor (2/3)
11005 Perfect Leather Armor (3/3)
11006 Future: People
11009 New Potion Development (1/3)
11010 New Potion Development (2/3)

View File

@ -1,4 +1,4 @@
<html><body>Newbie Guide:<br>
<html><body>Blacksmith Altran:<br>
You ought to gain more experience. Come back later.<br>
<font color="LEVEL">(This quest is available to characters of Level 2 or higher.)</font><br>
</body></html>

View File

@ -1,4 +1,4 @@
<html><body>Newbie Guide:<br>
<html><body>Blacksmith Altran:<br>
I can see you're a stranger here. Pardon me, but I am asking only citizens for help.<br>
<font color="LEVEL">(This quest is available to Humans only.)</font><br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Weapon Merchant Lector:<br>
Hmm... Does everyone around here knows what I'm working on?! Well, okay then. I'm really glad that you offered to help me. You see, I want to sew a shirt that can be worn under Heavy Armor. I was going to use Manticore Skin as fabrics and embroider a beautiful pattern on it with strong as steel <font color="LEVEL">Trisalim Silk</font>. But there is one problem. During the recent hurricane some raindrops go into my <font color="LEVEL">Essence of Water</font>, and it lost it's magical power! And I need <font color="LEVEL">Essence of Water</font> to color Trisalim Silk. Then there's also Roxxy who promised to make yarn for me, but she didn't have enough thread...<br>
Adventurers haven't passed trough here for so long that I was beginning to worry. You see, I really need <font color="LEVEL">Trisalim Silk</font> and <font color="LEVEL">Essence of Water</font>. Can I count on you for help?<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Weapon Merchant Lector:<br>
Hmm... Is that all you could find? But this is not enough. I need more materials.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Weapon Merchant Lector:<br>
You did well. I prepared a few rewards for you out of those that adventurers usually ask from me. What do you prefer: Soulshots or Spiritshots? Take the ones that you need.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11003_PerfectLeatherArmor1 reward1">Take a Soulshots Pack</Button><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11003_PerfectLeatherArmor1 reward2">Take a Spiritshot Pack</Button><br>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Weapon Merchant Lector:<br>
So you primarily use Soulshots. I'm glad to be of help to you. But I still don't have enough Trisalim Silk and Essence of Water. Could you get some more of both of them?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11004_PerfectLeatherArmor2 30001-02.htm">Agree</Button><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11004_PerfectLeatherArmor2 abort.html">Abort</Button><br>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Weapon Merchant Lector:<br>
So you primarily use Spiritshots. I'm glad to be of help to you. But I still don't have enough Trisalim Silk and Essence of Water. Could you get some more of both of them?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11004_PerfectLeatherArmor2 30001-02.htm">Agree</Button><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11004_PerfectLeatherArmor2 abort.html">Abort</Button><br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Harrys:<br>
Oh, Lector's been asking about you. Do you know, that he's a leatherworker now? He even managed to receive a large order! He needs some materials to execute it, so he is looking for help.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11003_PerfectLeatherArmor1 30035-02.htm">Say you will go to Lector</Button><br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Magister Harrys:<br>
He says that this work of his is a true masterpiece... Inquire him further. I wonder what he is doing there... Very curious.<br><br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Harrys:<br>
Are you looking for Lector?<br>
You will find him in a <font color="LEVEL">Weapon Shop</font>, that's on the other side of the road.
</body></html>

View File

@ -0,0 +1,236 @@
/*
* 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.Q11003_PerfectLeatherArmor1;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.Race;
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.ExShowScreenMessage;
/**
* Perfect Leather Armor (1/3) (11003)
* @author Stayway
*/
public class Q11003_PerfectLeatherArmor1 extends Quest
{
// NPCs
private static final int HARRYS = 30035;
private static final int LECTOR = 30001;
// Items
private static final int COBWEB = 90209;
private static final int ESSENCE_OF_WATER = 90210;
private static final int LECTORS_NOTES = 90208;
// Rewards
private static final int SCROLL_OF_ESCAPE = 10650;
private static final int HEALING_POTION = 1073;
private static final int MP_RECOVERY_POTION = 90310;
private static final int SOULSHOTS_NO_GRADE = 5789;
private static final int SPIRITSHOT_NO_GRADE = 5790;
// Monsters
private static final int GIANT_SPIDER = 20103;
private static final int GIANT_FANG_SPIDER = 20106;
private static final int GIANT_BLADE_SPIDER = 20108;
private static final int UNDINE = 20110;
private static final int UNDINE_ELDER = 20113;
private static final int UNDINE_NOBLE = 20115;
// Misc
private static final int MIN_LVL = 15;
private static final int MAX_LVL = 20;
public Q11003_PerfectLeatherArmor1()
{
super(11003);
addStartNpc(HARRYS);
addTalkId(HARRYS, LECTOR);
addKillId(GIANT_SPIDER, GIANT_FANG_SPIDER, GIANT_BLADE_SPIDER, UNDINE, UNDINE_ELDER, UNDINE_NOBLE);
addCondLevel(MIN_LVL, MAX_LVL, "no-level.html"); // Custom
addCondRace(Race.HUMAN, "no-race.html"); // Custom
registerQuestItems(LECTORS_NOTES, COBWEB, ESSENCE_OF_WATER);
setQuestNameNpcStringId(NpcStringId.LV_15_20_PERFECT_LEATHER_ARMOR_1_3);
}
@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 "30035-02.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "reward1":
{
if (qs.isCond(4))
{
takeItems(player, LECTORS_NOTES, 1);
takeItems(player, COBWEB, 25);
takeItems(player, ESSENCE_OF_WATER, 20);
giveItems(player, SCROLL_OF_ESCAPE, 5);
giveItems(player, HEALING_POTION, 40);
giveItems(player, MP_RECOVERY_POTION, 40);
giveItems(player, SOULSHOTS_NO_GRADE, 1000);
addExpAndSp(player, 70000, 3600);
qs.exitQuest(false, true);
htmltext = "30001-03.html";
}
break;
}
case "reward2":
{
if (qs.isCond(4))
{
takeItems(player, LECTORS_NOTES, 1);
takeItems(player, COBWEB, 25);
takeItems(player, ESSENCE_OF_WATER, 20);
giveItems(player, SCROLL_OF_ESCAPE, 5);
giveItems(player, HEALING_POTION, 40);
giveItems(player, MP_RECOVERY_POTION, 40);
giveItems(player, SPIRITSHOT_NO_GRADE, 1000);
addExpAndSp(player, 70000, 3600);
qs.exitQuest(false, true);
htmltext = "30001-04.html";
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance talker)
{
final QuestState qs = getQuestState(talker, true);
String htmltext = getNoQuestMsg(talker);
switch (qs.getState())
{
case State.CREATED:
{
if (npc.getId() == HARRYS)
{
htmltext = "30035-01.html";
}
break;
}
case State.STARTED:
{
if (npc.getId() == HARRYS)
{
if (qs.isCond(1))
{
htmltext = "30035-02a.html";
}
}
else if (npc.getId() == LECTOR)
{
switch (qs.getCond())
{
case 1:
{
htmltext = "30001-01.htm";
qs.setCond(2, true);
showOnScreenMsg(talker, NpcStringId.LECTOR_WANTS_YOU_TO_BRING_HIM_MATERIALS_FOR_NEW_ARMOR_N_GO_HUNTING_AND_KILL_GIANT_SPIDERS, ExShowScreenMessage.TOP_CENTER, 10000);
giveItems(talker, LECTORS_NOTES, 1);
break;
}
case 2:
{
htmltext = "30001-01a.html";
break;
}
case 4:
{
htmltext = "30001-02.html";
break;
}
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(talker);
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if (qs != null)
{
switch (npc.getId())
{
case GIANT_SPIDER:
case GIANT_BLADE_SPIDER:
case GIANT_FANG_SPIDER:
{
if (qs.isCond(2) && (getQuestItemsCount(killer, COBWEB) < 25))
{
if (getRandom(100) < 87)
{
giveItems(killer, COBWEB, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
if (getQuestItemsCount(killer, COBWEB) >= 25)
{
showOnScreenMsg(killer, NpcStringId.YOU_HAVE_KILLED_ENOUGH_GIANT_SPIDERS_N_GO_HUNTING_AND_KILL_UNDINES, ExShowScreenMessage.TOP_CENTER, 10000);
qs.setCond(3);
}
}
}
break;
}
case UNDINE:
case UNDINE_ELDER:
case UNDINE_NOBLE:
{
if (qs.isCond(3) && (getQuestItemsCount(killer, ESSENCE_OF_WATER) < 20))
{
if (getRandom(100) < 100)
{
giveItems(killer, ESSENCE_OF_WATER, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
if (getQuestItemsCount(killer, ESSENCE_OF_WATER) >= 20)
{
showOnScreenMsg(killer, NpcStringId.YOU_HAVE_ALL_OF_THE_ITEMS_LECTOR_REQUESTED_RETURN_TO_HIM, ExShowScreenMessage.TOP_CENTER, 10000);
qs.setCond(4);
}
}
}
break;
}
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@ -0,0 +1,4 @@
<html><body>Magister Harrys:<br>
You ought to gain more experience. Come back later.<br>
<font color="LEVEL">(This quest is available to characters of Level 15 or higher.)</font><br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Harrys:<br>
I can see you're a stranger here. Pardon me, but I am asking only citizens for help.<br>
<font color="LEVEL">(This quest is available to Humans only.)</font><br>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Weapon Merchant Lector:<br>
Oh! Have you chnaged your mind?<br>
With just a bit more of your help I could make a real masterpiece here.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11004_PerfectLeatherArmor2 30001-02.htm">"Okay, I will help you."</Button><br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><bodyWeapon Merchant Lector:<br>
Thank you! If you started something, you need to carry it through! Good decision! Best of all!<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Weapon Merchant Lector:<br>
Hmm... Is that all you could find? But this is not enough. I need more materials.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Weapon Merchant Lector:<br>
You did well. I prepared a few rewards for you out of those that adventurers usually ask from me. What do you prefer: Soulshots or Spiritshots? Take the ones that you need.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11004_PerfectLeatherArmor2 reward1">Take a Soulshots Pack</Button><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11004_PerfectLeatherArmor2 reward2">Take a Spiritshot Pack</Button><br>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Weapon Merchant Lector:<br>
So you primarily use Soulshots. I'm glad to be of help to you.<br>
I have one last request. My shirt is almost done. It only needs a couple of touches. Look at its sleeves and collar. I need to correct it just a bit... Help me, please.<br><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11005_PerfectLeatherArmor3 30001-02.htm">Agree</Button><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11005_PerfectLeatherArmor3 abort.html">Abort</Button><br>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Weapon Merchant Lector:<br>
So you primarily use Spiritshots. I'm glad to be of help to you.<br>
I have one last request. My shirt is almost done. It only needs a couple of touches. Look at its sleeves and collar. I need to correct it just a bit... Help me, please.<br><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11005_PerfectLeatherArmor3 30001-02.htm">Agree</Button><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11005_PerfectLeatherArmor3 abort.html">Abort</Button><br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Weapon Merchant Lector:<br>
(Only characters who are level 15 or above and who have completed the <font color="LEVEL">Perfect Leather Armor (1/3)</font> quests may undertake this quest.)
</body></html>

View File

@ -0,0 +1,221 @@
/*
* 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.Q11004_PerfectLeatherArmor2;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.Race;
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.ExShowScreenMessage;
import quests.Q11003_PerfectLeatherArmor1.Q11003_PerfectLeatherArmor1;
/**
* Perfect Leather Armor (2/3) (11004)
* @author Stayway
*/
public class Q11004_PerfectLeatherArmor2 extends Quest
{
// NPCs
private static final int LECTOR = 30001;
// Items
private static final int COBWEB = 90212;
private static final int ESSENCE_OF_WATER = 90213;
private static final int LECTORS_NOTES = 90211;
// Rewards
private static final int SCROLL_OF_ESCAPE = 10650;
private static final int HEALING_POTION = 1073;
private static final int MP_RECOVERY_POTION = 90310;
private static final int SOULSHOTS_NO_GRADE = 5789;
private static final int SPIRITSHOT_NO_GRADE = 5790;
// Monsters
private static final int GIANT_SPIDER = 20103;
private static final int GIANT_FANG_SPIDER = 20106;
private static final int GIANT_BLADE_SPIDER = 20108;
private static final int UNDINE = 20110;
private static final int UNDINE_ELDER = 20113;
private static final int UNDINE_NOBLE = 20115;
// Misc
private static final int MIN_LVL = 15;
private static final int MAX_LVL = 20;
public Q11004_PerfectLeatherArmor2()
{
super(11004);
addStartNpc(LECTOR);
addTalkId(LECTOR);
addKillId(GIANT_SPIDER, GIANT_FANG_SPIDER, GIANT_BLADE_SPIDER, UNDINE, UNDINE_ELDER, UNDINE_NOBLE);
addCondLevel(MIN_LVL, MAX_LVL, "no-level.html"); // Custom
addCondRace(Race.HUMAN, "no-race.html"); // Custom
addCondCompletedQuest(Q11003_PerfectLeatherArmor1.class.getSimpleName(), "30001-06.html");
registerQuestItems(LECTORS_NOTES, COBWEB, ESSENCE_OF_WATER);
setQuestNameNpcStringId(NpcStringId.LV_15_PERFECT_LEATHER_ARMOR_2_3);
}
@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 "abort.html":
{
htmltext = event;
break;
}
case "30001-02.htm":
{
qs.startQuest();
qs.setCond(2);
showOnScreenMsg(player, NpcStringId.LECTOR_WANTS_YOU_TO_BRING_HIM_MATERIALS_FOR_NEW_ARMOR_N_GO_HUNTING_AND_KILL_GIANT_SPIDERS, ExShowScreenMessage.TOP_CENTER, 10000);
giveItems(player, LECTORS_NOTES, 1);
htmltext = event;
break;
}
case "reward1":
{
if (qs.isCond(4))
{
takeItems(player, LECTORS_NOTES, 1);
takeItems(player, COBWEB, 25);
takeItems(player, ESSENCE_OF_WATER, 20);
giveItems(player, SCROLL_OF_ESCAPE, 5);
giveItems(player, HEALING_POTION, 40);
giveItems(player, MP_RECOVERY_POTION, 40);
giveItems(player, SOULSHOTS_NO_GRADE, 1000);
addExpAndSp(player, 70000, 3600);
qs.exitQuest(false, true);
htmltext = "30001-04.html";
}
break;
}
case "reward2":
{
if (qs.isCond(4))
{
takeItems(player, LECTORS_NOTES, 1);
takeItems(player, COBWEB, 25);
takeItems(player, ESSENCE_OF_WATER, 20);
giveItems(player, SCROLL_OF_ESCAPE, 5);
giveItems(player, HEALING_POTION, 40);
giveItems(player, MP_RECOVERY_POTION, 40);
giveItems(player, SPIRITSHOT_NO_GRADE, 1000);
addExpAndSp(player, 70000, 3600);
qs.exitQuest(false, true);
htmltext = "30001-05.html";
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance talker)
{
final QuestState qs = getQuestState(talker, true);
String htmltext = getNoQuestMsg(talker);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "30001-01.html";
break;
}
case State.STARTED:
{
if (qs.isCond(2))
{
htmltext = "30001-02a.html";
}
else if (qs.isCond(4))
{
htmltext = "30001-03.html";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(talker);
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if (qs != null)
{
switch (npc.getId())
{
case GIANT_SPIDER:
case GIANT_BLADE_SPIDER:
case GIANT_FANG_SPIDER:
{
if (qs.isCond(2) && (getQuestItemsCount(killer, COBWEB) < 25))
{
if (getRandom(100) < 87)
{
giveItems(killer, COBWEB, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
if (getQuestItemsCount(killer, COBWEB) >= 25)
{
showOnScreenMsg(killer, NpcStringId.YOU_HAVE_KILLED_ENOUGH_GIANT_SPIDERS_N_GO_HUNTING_AND_KILL_UNDINES, ExShowScreenMessage.TOP_CENTER, 10000);
qs.setCond(3);
}
}
}
break;
}
case UNDINE:
case UNDINE_ELDER:
case UNDINE_NOBLE:
{
if (qs.isCond(3) && (getQuestItemsCount(killer, ESSENCE_OF_WATER) < 20))
{
if (getRandom(100) < 100)
{
giveItems(killer, ESSENCE_OF_WATER, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
if (getQuestItemsCount(killer, ESSENCE_OF_WATER) >= 20)
{
showOnScreenMsg(killer, NpcStringId.YOU_HAVE_ALL_OF_THE_ITEMS_LECTOR_REQUESTED_RETURN_TO_HIM, ExShowScreenMessage.TOP_CENTER, 10000);
qs.setCond(4);
}
}
}
break;
}
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@ -0,0 +1,3 @@
<html><body>Weapon Merchant Lector:<br>
Unfortunately, there's nothing to be done here. Be sure to come back if you change your mind.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Weapon Merchant Lector:<br>
You ought to gain more experience. Come back later.<br>
<font color="LEVEL">(This quest is available to characters of Level 15 or higher.)</font><br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Weapon Merchant Lector:<br>
I can see you're a stranger here. Pardon me, but I am asking only citizens for help.<br>
<font color="LEVEL">(This quest is available to Humans only.)</font><br>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Weapon Merchant Lector:<br>
Oh! Have you chnaged your mind?<br>
With just a bit more of your help I could make a real masterpiece here.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11005_PerfectLeatherArmor3 30001-02.htm">"Okay, I will help you."</Button><br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Weapon Merchant Lector:<br>
Nice!<br>
We're almost done. I'm counting on you!<br>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Weapon Merchant Lector:<br>
Hmm... Is that all you could find? But this is not enough. I need more materials.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Weapon Merchant Lector:<br>
You did well. I prepared a few rewards for you out of those that adventurers usually ask from me. What do you prefer: Soulshots or Spiritshots? Take the ones that you need.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11005_PerfectLeatherArmor3 reward1">Take a Soulshots Pack</Button><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q11005_PerfectLeatherArmor3 reward2">Take a Spiritshot Pack</Button><br>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Weapon Merchant Lector:<br>
So you primarily use Soulshots. I'm glad to be of help to you.<br>
A shirt? Hmm... I finished it. Although I barely have enough materials with the amount you've brought me.<br>
(Shows the result.)<br>
I think this is my best work. But I couldn't have done it without you!
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Weapon Merchant Lector:<br>
So you primarily use Spiritshots. I'm glad to be of help to you.<br>
A shirt? Hmm... I finished it. Although I barely have enough materials with the amount you've brought me.<br>
(Shows the result.)<br>
I think this is my best work. But I couldn't have done it without you!
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Weapon Merchant Lector:<br>
(Only characters who are level 15 or above and who have completed the <font color="LEVEL">Perfect Leather Armor (2/3)</font> quests may undertake this quest.)
</body></html>

View File

@ -0,0 +1,222 @@
/*
* 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.Q11005_PerfectLeatherArmor3;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.Race;
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.ExShowScreenMessage;
import quests.Q11004_PerfectLeatherArmor2.Q11004_PerfectLeatherArmor2;
/**
* Perfect Leather Armor (3/3) (11005)
* @author Stayway
*/
public class Q11005_PerfectLeatherArmor3 extends Quest
{
// NPCs
private static final int LECTOR = 30001;
// Items
private static final int COBWEB = 90215;
private static final int ESSENCE_OF_WATER = 90216;
private static final int LECTORS_NOTES = 90214;
// Rewards
private static final int SCROLL_OF_ESCAPE = 10650;
private static final int HEALING_POTION = 1073;
private static final int MP_RECOVERY_POTION = 90310;
private static final int SOULSHOTS_NO_GRADE = 5789;
private static final int SPIRITSHOT_NO_GRADE = 5790;
// Monsters
private static final int GIANT_SPIDER = 20103;
private static final int GIANT_FANG_SPIDER = 20106;
private static final int GIANT_BLADE_SPIDER = 20108;
private static final int UNDINE = 20110;
private static final int UNDINE_ELDER = 20113;
private static final int UNDINE_NOBLE = 20115;
// Misc
private static final int MIN_LVL = 15;
private static final int MAX_LVL = 20;
public Q11005_PerfectLeatherArmor3()
{
super(11005);
addStartNpc(LECTOR);
addTalkId(LECTOR);
addKillId(GIANT_SPIDER, GIANT_FANG_SPIDER, GIANT_BLADE_SPIDER, UNDINE, UNDINE_ELDER, UNDINE_NOBLE);
addCondLevel(MIN_LVL, MAX_LVL, "no-level.html"); // Custom
addCondRace(Race.HUMAN, "no-race.html"); // Custom
addCondCompletedQuest(Q11004_PerfectLeatherArmor2.class.getSimpleName(), "30001-06.html");
registerQuestItems(LECTORS_NOTES, COBWEB, ESSENCE_OF_WATER);
setQuestNameNpcStringId(NpcStringId.LV_15_PERFECT_LEATHER_ARMOR);
}
@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 "abort.html":
{
htmltext = event;
break;
}
case "30001-02.htm":
{
qs.startQuest();
qs.setCond(2, true);
showOnScreenMsg(player, NpcStringId.LECTOR_WANTS_YOU_TO_BRING_HIM_MATERIALS_FOR_NEW_ARMOR_N_GO_HUNTING_AND_KILL_GIANT_SPIDERS, ExShowScreenMessage.TOP_CENTER, 10000);
giveItems(player, LECTORS_NOTES, 1);
htmltext = event;
break;
}
case "reward1":
{
if (qs.isCond(4))
{
takeItems(player, LECTORS_NOTES, 1);
takeItems(player, COBWEB, 25);
takeItems(player, ESSENCE_OF_WATER, 20);
giveItems(player, SCROLL_OF_ESCAPE, 5);
giveItems(player, HEALING_POTION, 40);
giveItems(player, MP_RECOVERY_POTION, 40);
giveItems(player, SOULSHOTS_NO_GRADE, 1000);
addExpAndSp(player, 70000, 3600);
qs.exitQuest(false, true);
htmltext = "30001-04.html";
}
break;
}
case "reward2":
{
if (qs.isCond(4))
{
takeItems(player, LECTORS_NOTES, 1);
takeItems(player, COBWEB, 25);
takeItems(player, ESSENCE_OF_WATER, 20);
giveItems(player, SCROLL_OF_ESCAPE, 5);
giveItems(player, HEALING_POTION, 40);
giveItems(player, MP_RECOVERY_POTION, 40);
giveItems(player, SPIRITSHOT_NO_GRADE, 1000);
addExpAndSp(player, 70000, 3600);
qs.exitQuest(false, true);
htmltext = "30001-05.html";
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance talker)
{
final QuestState qs = getQuestState(talker, true);
String htmltext = getNoQuestMsg(talker);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "30001-01.html";
break;
}
case State.STARTED:
{
if (qs.isCond(2))
{
htmltext = "30001-02a.html";
}
else if (qs.isCond(4))
{
htmltext = "30001-03.html";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(talker);
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if (qs != null)
{
switch (npc.getId())
{
case GIANT_SPIDER:
case GIANT_BLADE_SPIDER:
case GIANT_FANG_SPIDER:
{
if (qs.isCond(2) && (getQuestItemsCount(killer, COBWEB) < 25))
{
if (getRandom(100) < 87)
{
giveItems(killer, COBWEB, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
if (getQuestItemsCount(killer, COBWEB) >= 25)
{
showOnScreenMsg(killer, NpcStringId.YOU_HAVE_KILLED_ENOUGH_GIANT_SPIDERS_N_GO_HUNTING_AND_KILL_UNDINES, ExShowScreenMessage.TOP_CENTER, 10000);
qs.setCond(3);
}
}
}
break;
}
case UNDINE:
case UNDINE_ELDER:
case UNDINE_NOBLE:
{
if (qs.isCond(3) && (getQuestItemsCount(killer, ESSENCE_OF_WATER) < 20))
{
if (getRandom(100) < 100)
{
giveItems(killer, ESSENCE_OF_WATER, 1);
playSound(killer, QuestSound.ITEMSOUND_QUEST_MIDDLE);
if (getQuestItemsCount(killer, ESSENCE_OF_WATER) >= 20)
{
showOnScreenMsg(killer, NpcStringId.YOU_HAVE_ALL_OF_THE_ITEMS_LECTOR_REQUESTED_RETURN_TO_HIM, ExShowScreenMessage.TOP_CENTER, 10000);
qs.setCond(4);
}
}
}
break;
}
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@ -0,0 +1,4 @@
<html><body>Weapon Merchant Lector:<br>
You want to decline? But we were almost done! Are you really going to abandon me now?<br>
Hmm, you don't want to help me, I see. Is this your final decision?
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Weapon Merchant Lector:<br>
You ought to gain more experience. Come back later.<br>
<font color="LEVEL">(This quest is available to characters of Level 15 or higher.)</font><br>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Weapon Merchant Lector:<br>
I can see you're a stranger here. Pardon me, but I am asking only citizens for help.<br>
<font color="LEVEL">(This quest is available to Humans only.)</font><br>
</body></html>

View File

@ -152,6 +152,9 @@ import quests.Q10996_TemplesDecorations.Q10996_TemplesDecorations;
import quests.Q11000_MoonKnight.Q11000_MoonKnight;
import quests.Q11001_TombsOfAncestors.Q11001_TombsOfAncestors;
import quests.Q11002_HelpWithTempleRestoration.Q11002_HelpWithTempleRestoration;
import quests.Q11003_PerfectLeatherArmor1.Q11003_PerfectLeatherArmor1;
import quests.Q11004_PerfectLeatherArmor2.Q11004_PerfectLeatherArmor2;
import quests.Q11005_PerfectLeatherArmor3.Q11005_PerfectLeatherArmor3;
import quests.Q11007_NoiseInWoods.Q11007_NoiseInWoods;
import quests.Q11008_PreparationForDungeon.Q11008_PreparationForDungeon;
import quests.Q11013_ShilensHunt.Q11013_ShilensHunt;
@ -300,6 +303,9 @@ public class QuestMasterHandler
Q11000_MoonKnight.class,
Q11001_TombsOfAncestors.class,
Q11002_HelpWithTempleRestoration.class,
Q11003_PerfectLeatherArmor1.class,
Q11004_PerfectLeatherArmor2.class,
Q11005_PerfectLeatherArmor3.class,
Q11007_NoiseInWoods.class,
Q11008_PreparationForDungeon.class,
Q11013_ShilensHunt.class,

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="TalkingIslandTerritory">
<group>
<npc id="20113" x="-107372" y="242825" z="-3486" heading="8486" respawnTime="60sec" /> <!-- Undine Elder -->
<npc id="20113" x="-106962" y="243033" z="-3465" heading="4896" respawnTime="60sec" /> <!-- Undine Elder -->
<npc id="20113" x="-106348" y="242526" z="-3582" heading="8571" respawnTime="60sec" /> <!-- Undine Elder -->
<npc id="20113" x="-106109" y="242141" z="-3624" heading="54946" respawnTime="60sec" /> <!-- Undine Elder -->
<npc id="20110" x="-106326" y="242012" z="-3595" heading="46281" respawnTime="60sec" /> <!-- Undine -->
<npc id="20110" x="-105644" y="242304" z="-3641" heading="4640" respawnTime="60sec" /> <!-- Undine -->
<npc id="20110" x="-107291" y="242918" z="-3477" heading="18242" respawnTime="60sec" /> <!-- Undine -->
<npc id="20115" x="-106743" y="242127" z="-3568" heading="45168" respawnTime="60sec" /> <!-- Undine Noble -->
<npc id="20115" x="-106374" y="242706" z="-3572" heading="11686" respawnTime="60sec" /> <!-- Undine Noble -->
<npc id="20115" x="-105835" y="242294" z="-3635" heading="5822" respawnTime="60sec" /> <!-- Undine Noble -->
</group>
</spawn>
</list>