Third part for Best Choice series quests.

Contributed by NightBR.
This commit is contained in:
MobiusDevelopment
2019-04-30 16:01:39 +00:00
parent b4df097529
commit 137d5cabd8
111 changed files with 1641 additions and 261 deletions

View File

@@ -185,8 +185,6 @@
10572 To Expel the Embryo's Forces
10574 Special Mission: Fortuna
10576 Glittering Weapons
10577 Temper a Rusting Blade
10578 The Soul of a Sword
10580 Special Mission: Defeat Spezion
10594 Fergason's Scheme
10595 The Dimensional Warp, Part 8

View File

@@ -0,0 +1,4 @@
<html><body>Head Blacksmith Flutter:<br>
Do you know what <font color="LEVEL">augmenting</font> is? Your weapon sure doesen't look it.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-02.htm">"What is augmenting?"</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Head Blacksmith Flutter:<br>
See? I was right! Only when your weapons are reliable, can you be confident about your skills.<br>
Now, pay attention. I will teach you to maximize the hidden potential.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-03.htm">"Yes, indeed."</button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Head Blacksmith Flutter:<br>
First, you must understand augmenting. It <font color="LEVEL">provides items with additional options</font>, separately from <font color="LEVEL">enchanting</font>, <font color="LEVEL">soul crystal enhancement</font> or <font color="LEVEL">attributes</font> that you will learn later.<br>
For augmenting, you have to get all the required <font color="LEVEL">material</font> and ask <font color="LEVEL">any village's blacksmith</font> to make an item. Keep in mind that you can have accessories and hair accessories augmented but not armor.<br>
So far so good, huh?
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-04.html">"Yes, indeed."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Head Blacksmith Flutter:<br>
I told you about the items needed, right? Well, of course you need items for augmenting too. First, you need equipment you want to augment. It can be a <font color="LEVEL">weapon, accessory, or a hair accessory</font>. You also need <font color="LEVEL">Spirit Stones</font>. And you need Gemstones to pay the fee for augmenting, and the amount depends on the weapon grade.<br>
A good way to get the items I mentioned is by using the <font color="LEVEL">private store</font>. There are many merchants who buy and sell items in the village, and you can get the items you want without having to pay fees and stuff. There's some legwork... but it can be fun too!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-05.html">"Alright."</button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Head Blacksmith Flutter:<br>
Now, assuming tha you have all the necessary items, let's talk about augmentation. There are only two things you need to know. First, <font color="LEVEL">augmentation options are just random</font>. Sometimes, you need to release and repeat the augmentation to gain your desired option.<br>
Second, <font color="LEVEL">the augmented items cannot be exchanged or traded</font>. In order to exchange the augmented item, you'll have to release the augmentation first.<br>
That should be everithig I need to explain. Let's get practicing now!<nr>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-06.html">"Tell me about practice."</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Head Blacksmith Flutter:<br>
Since this is your first time, I'll provide the materials. Here are an <font color="LEVEL">Augmentation Practice Weapon</font>, an <font color="LEVEL">Augmentation Practice Spirit Stone(46)</font>, and an <font color="LEVEL">Augmentation Practice Gemstone(R-grade)</font>. Try augmenting as I taught you. If you succeed, you will get an augmented <font color="LEVEL">Augmentation Practice Weapon</font>.<br>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Head Blacksmith Flutter:<br>
Congratulations. Feel free to toss this practice weapon, if you don't like the result. That's what practice is for. In the real world, if you don't like the final version, you can <font color="LEVEL">remove augmentation</font> with some Adena. Keep that in mind.<br>
Anyway, you did a good job following my instructions.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-08.html">"It wasn't that difficult."</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Head Blacksmith Flutter:<br>
Oh yeah? Hahaha. Anyway, I'll give you the certificate as a Reward. If you don't practice what you've learned, you'll forget it. So try augmentin whenever you have time.<br>
I hope you will put your new augmenting skills to good use.<br>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Head Blacksmith Flutter:<br>
Was it hard? Try augmenting with an <font color="LEVEL">Augmentation Practice Weapon</font>, an <font color="LEVEL">Augmentation Practice Spirit Stone(46)</font>, and an <font color="LEVEL">Augmentation Practice Gemstone (R-grade)</font>. Try augmenting as I taught you. If you succeed, you will get an augmented <font color="LEVEL">Augmentation Practice Weapon</font>.<br>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Head Blacksmith Flutter:<br>
Hey, let nature take its course. It's not good for us to go against it.<br>
(Only characters who have the quest "Best Choice" in progress, can play this quest.)
</body></html>

View File

@@ -0,0 +1,172 @@
/*
* 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.Q10577_TemperARustingBlade;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10566_BestChoice.Q10566_BestChoice;
/**
* Temper a Rusting Blade (10577)
* @URL https://l2wiki.com/Temper_a_Rusting_Blade
* @author NightBR
* @html by Werum
*/
public final class Q10577_TemperARustingBlade extends Quest
{
// NPCs
private static final int FLUTTER = 30677;
// Item
private static final int AUGMENTATION_PRACTICE_STORMBRINGER = 36717;
private static final int AUGMENTATION_PRACTICE_SPIRIT_STONE = 36718;
private static final int AUGMENTATION_PRACTICE_GEMSTONE = 36719;
// Rewards
private static final long XP = 597699960;
private static final int SP = 597690;
private static final int CERTIFICATE_FROM_FLUTTER = 48175;
// Misc
private static final int MIN_LEVEL = 95;
public Q10577_TemperARustingBlade()
{
super(10577);
addStartNpc(FLUTTER);
addTalkId(FLUTTER);
addCondMinLevel(MIN_LEVEL, "noLevel.html");
registerQuestItems(AUGMENTATION_PRACTICE_STORMBRINGER, AUGMENTATION_PRACTICE_SPIRIT_STONE, AUGMENTATION_PRACTICE_GEMSTONE);
addCondStartedQuest(Q10566_BestChoice.class.getSimpleName(), "30677-99.html");
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_AUGMENT, (OnPlayerAugment event) -> OnPlayerAugment(event), this));
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
String htmltext = null;
switch (event)
{
case "30677-02.htm":
case "30677-05.html":
case "30677-07.html":
{
htmltext = event;
break;
}
case "30677-03.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "30677-04.html":
{
// show Service/Help/Private Store page
player.sendPacket(new ExTutorialShowId(57));
htmltext = event;
break;
}
case "30677-06.html":
{
// show Service/Help/Augmentation page
player.sendPacket(new ExTutorialShowId(39));
giveItems(player, AUGMENTATION_PRACTICE_STORMBRINGER, 1);
giveItems(player, AUGMENTATION_PRACTICE_SPIRIT_STONE, 1);
giveItems(player, AUGMENTATION_PRACTICE_GEMSTONE, 20);
qs.setCond(2, true);
htmltext = event;
break;
}
case "30677-08.html":
{
addExpAndSp(player, XP, SP);
giveItems(player, CERTIFICATE_FROM_FLUTTER, 1);
qs.exitQuest(QuestType.ONE_TIME, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "30677-01.htm";
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "30677-03.html";
}
else if (qs.isCond(2))
{
htmltext = "30677-09.html";
}
else
{
htmltext = "30677-07.html";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
public void OnPlayerAugment(OnPlayerAugment event)
{
final PlayerInstance player = event.getPlayer();
if ((player == null) || (event.getItem().getId() != AUGMENTATION_PRACTICE_STORMBRINGER))
{
return;
}
final QuestState qs = getQuestState(player, false);
// Check if weapon has been augmented to complete the quest
if ((qs != null) && qs.isCond(2) && (player.getInventory().getItemByItemId(AUGMENTATION_PRACTICE_STORMBRINGER).isAugmented()))
{
qs.setCond(3, true);
}
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Head Blacksmith Flutter:<br>
Hmm, it would seem that it's a bit too early still to discuss the Fishing Guild with you. Please return after you've become stronger.<br>
(Only characters with Lv. 95 or above may undertake this quest.)
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Hello. Are you here to learn about <font color="LEVEL">Soul Crystals</font>?<br>
Well, you've come to the right place. And you are also ready to learn about them. Should we get started?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-02.htm">"Go on."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Let me offer a proposal. I'm confident that this will be very useful to you. I'll give you the items needed for experiencing Soul Crystals and I'll also teach you how. You just need to do as I tell you and try Soul Crystal. If you succeed in this, I'll give you a little reward.<br>
So, what do you think? Isn't it a nice opportunity?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-03.htm">"Yes, indeed."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Good. Now, I'll give you information on <font color="LEVEL">Soul Crystals</font>. Originally, Soul Crystals <font color="LEVEL">give a special ability to weapon by using the spirit of monster</font>. Especially, in the past, you had to have a Soul Crystal when defeating monsters to raise the level of the Soul Crystal. This wasn't an easy task but, those who desired to become stronger spared no effort.<br>
But at some point, it became impossible to experience the Soul Crystal that way. Well... there are lots of strange things taking place nowadays, so stuff like this is not unthinkable.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-04.html">"Is there a solution?"</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Fortunately, there was a solution. Magisters, Maestros, and even scholars have helped find something that can replace the old Soul Crystals. The new Soul Crystals can be upgraded by combining them.<br>
Surprisingly, the Soul Crystals can be just simply upgraded via <font color="LEVEL">combination</font>. And one more thing. The method of granting Soul Crystal effects through Blacksmiths is slightly different now. This is what I want to talk to you about.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-05.html">"Go on."</button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Blacksmith Vincenz:<br>
First off, you can't use old Soul Crystals anymore. To bestow the new special abilities, you need the new Soul Crystals. You can get them by defeating bosses or raid monsters.<br>
When you get the Soul Crystals, then you can combine them to make an upgraded Soul Crystal. For combination, you need two Soul Crystals of the same type and the same stage. However, there is a chance of failure. If the combination fails, one of the two Soul Crystals will disappear.<br>
In any case, by doing this, you can get your desired Soul Crystal class and then give the ability to a weapon.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-06.html">"Tell me about practice."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Well, it's better to just try it for yourself. Here's a <font color="LEVEL">Practice StormBringer</font> and a <font color="LEVEL">Practice Soul Crystal-Stage 1</font>. You'll need to have a Gemstone that is appropriate for the level of the Soul Crystal. Now, I'll give you a <font color="LEVEL"></font>Practice Soul Crystal Gemstone, but next time, you'll have to obtain the Gemstone yourself.<br>
You can purchase Gemstones from the <font color="LEVEL">Traders</font> at the <font color="LEVEL">Store</font> in the Village. There are various Stores in the village and each trader sells different items. It'll be good to know about their items.<br>
If you want to try a Soul Crystal ability with other weapons, you can always try it out.<br>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Oh, you succeeded? Got it now?<br>
It's easier than it sounds, right?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-08.html">"Yes, indeed."</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Blacksmith Vincenz:<br>
Good. Remenber what I've taught you next time you need to use Soul Crystals.<br>
Oh, right. You can bestow up to 3 special abilities to new Soul Crystals! Don't forget all the effort we've put into this!<br>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Now, I'll tell you about <font color="LEVEL">Soul Crystals</font>. Originally, Soul Crystals <font color="LEVEL">give a special ability to weapon by using the spirit of monster</font>. Especially, in the past, you had to have a Soul Crystal when defeating monsters to raise the level of the Soul Crystal. This wasn't an easy task but, those who desired to become stronger spared no effort.<br>
But at some point, it became impossible to experience the Soul Crystal that way. Well... there are lots of strange things taking place nowadays, so stuff like this is not unthinkable.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-04.html">"Is there a solution?"</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Hm? It looks like you didn't succeed yet. Do you need anything?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-11.html">"Tell me about Soul Crystals."</button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-06.html">"Give me the items needed for Soul Crystals."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Alright. you can <font color="LEVEL">use a Soul Crystal to bestow a special ability onto weapons</font>. There have been some changes to the Soul Crystals, and now you can upgrade them by <font color="LEVEL">combining</font> them. That's why we have new Soul Crystals now.<br>
The Soul Crystals from before cannot be used anymore. You can get the new Soul Crystals by defeating boss monsters, so remember that.<br>
If you need more information, check the instructions.<br>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Blacksmith Vincenz:<br>
I've already given you all the necessary items, I can't give you anymore.<br>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Blacksmith Vincenz:<br>
Hey, let nature take its course. It's not good for us to go against it.<br>
(Only characters who have the quest "Best Choice" in progress, can play this quest.)
</body></html>

View File

@@ -0,0 +1,183 @@
/*
* 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.Q10578_TheSoulOfASword;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemSoulCrystalAdd;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10566_BestChoice.Q10566_BestChoice;
/**
* The Soul of a Sword (10578)
* @URL https://l2wiki.com/The_Soul_of_a_Sword
* @author NightBR
* @html by Werum
*/
public final class Q10578_TheSoulOfASword extends Quest
{
// NPCs
private static final int VINCENZ = 31316;
// Items
private static final int PRACTICE_STORMBRINGER = 46629;
private static final int PRACTICE_SOUL_CRYSTAL_STAGE1 = 46526;
private static final int SOUL_CRYSTAL_PRACTICE_GEMSTONE = 36722;
// Rewards
private static final long XP = 597699960;
private static final int SP = 597690;
private static final int CERTIFICATE_FROM_VINCENZ = 48176;
// Misc
private static final int MIN_LEVEL = 95;
public Q10578_TheSoulOfASword()
{
super(10578);
addStartNpc(VINCENZ);
addTalkId(VINCENZ);
addCondMinLevel(MIN_LEVEL, "noLevel.html");
registerQuestItems(PRACTICE_STORMBRINGER, PRACTICE_SOUL_CRYSTAL_STAGE1, SOUL_CRYSTAL_PRACTICE_GEMSTONE);
addCondStartedQuest(Q10566_BestChoice.class.getSimpleName(), "31316-99.html");
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_ITEM_SOUL_CRYSTAL_ADD, (OnItemSoulCrystalAdd event) -> OnItemSoulCrystalAdd(event), this));
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
String htmltext = null;
switch (event)
{
case "31316-02.htm":
case "31316-04.html":
case "31316-07.html":
case "31316-11.html":
{
htmltext = event;
break;
}
case "31316-03.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "31316-05.html":
{
// show Service/Help/Soul Crystal Enhancement page
player.sendPacket(new ExTutorialShowId(40));
htmltext = event;
break;
}
case "31316-06.html":
{
// show Service/Help/Buy Item page
player.sendPacket(new ExTutorialShowId(36));
// TODO: check if player already have quest items
if (hasQuestItems(player, PRACTICE_STORMBRINGER, PRACTICE_SOUL_CRYSTAL_STAGE1, SOUL_CRYSTAL_PRACTICE_GEMSTONE))
{
htmltext = "31316-12.html";
}
else
{
// To make sure player does not have them already
removeRegisteredQuestItems(player);
giveItems(player, PRACTICE_STORMBRINGER, 1);
giveItems(player, PRACTICE_SOUL_CRYSTAL_STAGE1, 1);
giveItems(player, SOUL_CRYSTAL_PRACTICE_GEMSTONE, 10);
qs.setCond(2, true);
htmltext = event;
}
break;
}
case "31316-08.html":
{
addExpAndSp(player, XP, SP);
giveItems(player, CERTIFICATE_FROM_VINCENZ, 1);
qs.exitQuest(QuestType.ONE_TIME, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "31316-01.htm";
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "31316-09.html";
}
else if (qs.isCond(2))
{
htmltext = "31316-10.html";
}
else
{
htmltext = "31316-07.html";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
public void OnItemSoulCrystalAdd(OnItemSoulCrystalAdd event)
{
final PlayerInstance player = event.getPlayer();
if ((player == null) || (event.getItem().getId() != PRACTICE_STORMBRINGER))
{
return;
}
final QuestState qs = getQuestState(player, false);
// Check if weapon has been augmented to complete the quest
if ((qs != null) && qs.isCond(2) && (!player.getInventory().getItemByItemId(PRACTICE_STORMBRINGER).getSpecialAbilities().isEmpty()))
{
qs.setCond(3, true);
}
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Blacksmith Vincenz:<br>
Hmm, it would seem that it's a bit too early still to discuss the Fishing Guild with you. Please return after you've become stronger.<br>
(Only characters with Lv. 95 or above may undertake this quest.)
</body></html>

View File

@@ -356,6 +356,8 @@ import quests.Q10561_AcrossTheDeathLine.Q10561_AcrossTheDeathLine;
import quests.Q10562_TakeUpArms.Q10562_TakeUpArms;
import quests.Q10566_BestChoice.Q10566_BestChoice;
import quests.Q10575_LetsGoFishing.Q10575_LetsGoFishing;
import quests.Q10577_TemperARustingBlade.Q10577_TemperARustingBlade;
import quests.Q10578_TheSoulOfASword.Q10578_TheSoulOfASword;
import quests.Q10579_ContainingTheAttributePower.Q10579_ContainingTheAttributePower;
import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension;
import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction;
@@ -913,8 +915,8 @@ public class QuestMasterHandler
Q10574_SpecialMissionFortuna.class, // TODO: Not done.
Q10575_LetsGoFishing.class,
Q10576_GlitteringWeapons.class, // TODO: Not done.
Q10577_TemperARustingBlade.class, // TODO: Not done.
Q10578_TheSoulOfASword.class, // TODO: Not done.
Q10577_TemperARustingBlade.class,
Q10578_TheSoulOfASword.class,
Q10579_ContainingTheAttributePower.class,
Q10580_SpecialMissionDefeatSpezion.class, // TODO: Not done.
Q10594_FergasonsScheme.class, // TODO: Not done.

View File

@@ -1,36 +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.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10577_TemperARustingBlade extends Quest
{
private static final int START_NPC = 30677;
public Q10577_TemperARustingBlade()
{
super(10577);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@@ -1,36 +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.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10578_TheSoulOfASword extends Quest
{
private static final int START_NPC = 31316;
public Q10578_TheSoulOfASword()
{
super(10578);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@@ -8073,6 +8073,7 @@
</itemGroup>
<!--[r] -->
<itemGroup id="15">
<item id="46629" /> <!-- Practice Stormbringer -->
<item id="17290" /> <!-- Requiem Shaper -->
<item id="17291" /> <!-- Requiem Cutter -->
<item id="17292" /> <!-- Requiem Slasher -->
@@ -8660,6 +8661,7 @@
</itemGroup>
<!--[r95] -->
<itemGroup id="16">
<item id="46629" /> <!-- Practice Stormbringer -->
<item id="17382" /> <!-- Specter Shaper -->
<item id="17383" /> <!-- Specter Cutter -->
<item id="17384" /> <!-- Specter Slasher -->
@@ -8953,6 +8955,7 @@
</itemGroup>
<!--[r99] -->
<itemGroup id="17">
<item id="46629" /> <!-- Practice Stormbringer -->
<item id="17416" /> <!-- Helios Shaper -->
<item id="17417" /> <!-- Helios Cutter -->
<item id="17418" /> <!-- Helios Slasher -->
@@ -10417,6 +10420,7 @@
</itemGroup>
<!-- Life Stone Instilled with Giants -->
<itemGroup id="36">
<item id="46629" /> <!-- Practice Stormbringer -->
<item id="17290" /> <!-- Requiem Shaper -->
<item id="17291" /> <!-- Requiem Cutter -->
<item id="17292" /> <!-- Requiem Slasher -->
@@ -14329,6 +14333,7 @@
</itemGroup>
<!-- [r_new] -->
<itemGroup id="52">
<item id="46629" /> <!-- Practice Stormbringer -->
<item id="17290" /> <!-- Requiem Shaper -->
<item id="17291" /> <!-- Requiem Cutter -->
<item id="17292" /> <!-- Requiem Slasher -->

View File

@@ -291,7 +291,7 @@
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="rhand" />
<set name="weapon_type" val="SWORD" />
<set name="crystal_type" val="C" />
<set name="crystal_type" val="R" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />

View File

@@ -334,18 +334,16 @@
<!-- Temporary practice weapon for learning about the Soul Crystal system. Very inefficient as a weapon. -->
<set name="icon" val="icon.weapon_stormbringer_i00" />
<set name="default_action" val="EQUIP" />
<set name="immediate_effect" val="true" />
<set name="bodypart" val="rhand" />
<set name="weapon_type" val="SWORD" />
<set name="crystal_type" val="C" />
<set name="weight" val="1420" />
<set name="soulshots" val="2" />
<set name="bodypart" val="rhand" />
<set name="spiritshots" val="2" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<set name="is_destroyable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="is_sellable" val="false" />
<set name="crystal_count" val="3274" />
<set name="weight" val="1520" />
<set name="enchant_enabled" val="1" />
<set name="element_enabled" val="true" />
<set name="isAppearanceable" val="true" />
<set name="immediate_effect" val="true" />
<set name="commissionItemType" val="ONE_HAND_SWORD" />
<stats>
<stat type="pAtk">107.0</stat>
<stat type="mAtk">68.0</stat>

View File

@@ -123,6 +123,7 @@ import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceStatusChang
import org.l2jmobius.gameserver.model.events.impl.item.OnItemAttributeAdd;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemBypassEvent;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemSoulCrystalAdd;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemTalk;
import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult;
import org.l2jmobius.gameserver.model.events.impl.server.OnPacketReceived;
@@ -183,6 +184,7 @@ public enum EventType
ON_ITEM_CREATE(OnItemCreate.class, void.class),
ON_ITEM_TALK(OnItemTalk.class, void.class),
ON_ITEM_ATTRIBUTE_ADD(OnItemAttributeAdd.class, void.class),
ON_ITEM_SOUL_CRYSTAL_ADD(OnItemSoulCrystalAdd.class, void.class),
// NPC events
ON_NPC_CAN_BE_SEEN(OnNpcCanBeSeen.class, void.class, TerminateReturn.class),

View File

@@ -0,0 +1,53 @@
/*
* 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 org.l2jmobius.gameserver.model.events.impl.item;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
/**
* @author NightBR
*/
public class OnItemSoulCrystalAdd implements IBaseEvent
{
private final PlayerInstance _player;
private final ItemInstance _item;
public OnItemSoulCrystalAdd(PlayerInstance player, ItemInstance item)
{
_player = player;
_item = item;
}
public PlayerInstance getPlayer()
{
return _player;
}
public ItemInstance getItem()
{
return _item;
}
@Override
public EventType getType()
{
return EventType.ON_ITEM_SOUL_CRYSTAL_ADD;
}
}

View File

@@ -69,6 +69,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDr
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemAttributeAdd;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemBypassEvent;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemSoulCrystalAdd;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemTalk;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.model.items.Armor;
@@ -2207,6 +2208,9 @@ public final class ItemInstance extends WorldObject
{
updateSpecialAbilities();
}
// Notify to Scripts
EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this));
}
public void removeSpecialAbility(int position, int type)

View File

@@ -197,8 +197,6 @@
10572 To Expel the Embryo's Forces
10574 Special Mission: Fortuna
10576 Glittering Weapons
10577 Temper a Rusting Blade
10578 The Soul of a Sword
10580 Special Mission: Defeat Spezion
10594 Fergason's Scheme
10595 The Dimensional Warp, Part 8

View File

@@ -0,0 +1,4 @@
<html><body>Head Blacksmith Flutter:<br>
Do you know what <font color="LEVEL">augmenting</font> is? Your weapon sure doesen't look it.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-02.htm">"What is augmenting?"</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Head Blacksmith Flutter:<br>
See? I was right! Only when your weapons are reliable, can you be confident about your skills.<br>
Now, pay attention. I will teach you to maximize the hidden potential.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-03.htm">"Yes, indeed."</button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Head Blacksmith Flutter:<br>
First, you must understand augmenting. It <font color="LEVEL">provides items with additional options</font>, separately from <font color="LEVEL">enchanting</font>, <font color="LEVEL">soul crystal enhancement</font> or <font color="LEVEL">attributes</font> that you will learn later.<br>
For augmenting, you have to get all the required <font color="LEVEL">material</font> and ask <font color="LEVEL">any village's blacksmith</font> to make an item. Keep in mind that you can have accessories and hair accessories augmented but not armor.<br>
So far so good, huh?
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-04.html">"Yes, indeed."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Head Blacksmith Flutter:<br>
I told you about the items needed, right? Well, of course you need items for augmenting too. First, you need equipment you want to augment. It can be a <font color="LEVEL">weapon, accessory, or a hair accessory</font>. You also need <font color="LEVEL">Spirit Stones</font>. And you need Gemstones to pay the fee for augmenting, and the amount depends on the weapon grade.<br>
A good way to get the items I mentioned is by using the <font color="LEVEL">private store</font>. There are many merchants who buy and sell items in the village, and you can get the items you want without having to pay fees and stuff. There's some legwork... but it can be fun too!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-05.html">"Alright."</button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Head Blacksmith Flutter:<br>
Now, assuming tha you have all the necessary items, let's talk about augmentation. There are only two things you need to know. First, <font color="LEVEL">augmentation options are just random</font>. Sometimes, you need to release and repeat the augmentation to gain your desired option.<br>
Second, <font color="LEVEL">the augmented items cannot be exchanged or traded</font>. In order to exchange the augmented item, you'll have to release the augmentation first.<br>
That should be everithig I need to explain. Let's get practicing now!<nr>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-06.html">"Tell me about practice."</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Head Blacksmith Flutter:<br>
Since this is your first time, I'll provide the materials. Here are an <font color="LEVEL">Augmentation Practice Weapon</font>, an <font color="LEVEL">Augmentation Practice Spirit Stone(46)</font>, and an <font color="LEVEL">Augmentation Practice Gemstone(R-grade)</font>. Try augmenting as I taught you. If you succeed, you will get an augmented <font color="LEVEL">Augmentation Practice Weapon</font>.<br>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Head Blacksmith Flutter:<br>
Congratulations. Feel free to toss this practice weapon, if you don't like the result. That's what practice is for. In the real world, if you don't like the final version, you can <font color="LEVEL">remove augmentation</font> with some Adena. Keep that in mind.<br>
Anyway, you did a good job following my instructions.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-08.html">"It wasn't that difficult."</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Head Blacksmith Flutter:<br>
Oh yeah? Hahaha. Anyway, I'll give you the certificate as a Reward. If you don't practice what you've learned, you'll forget it. So try augmentin whenever you have time.<br>
I hope you will put your new augmenting skills to good use.<br>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Head Blacksmith Flutter:<br>
Was it hard? Try augmenting with an <font color="LEVEL">Augmentation Practice Weapon</font>, an <font color="LEVEL">Augmentation Practice Spirit Stone(46)</font>, and an <font color="LEVEL">Augmentation Practice Gemstone (R-grade)</font>. Try augmenting as I taught you. If you succeed, you will get an augmented <font color="LEVEL">Augmentation Practice Weapon</font>.<br>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Head Blacksmith Flutter:<br>
Hey, let nature take its course. It's not good for us to go against it.<br>
(Only characters who have the quest "Best Choice" in progress, can play this quest.)
</body></html>

View File

@@ -0,0 +1,172 @@
/*
* 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.Q10577_TemperARustingBlade;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10566_BestChoice.Q10566_BestChoice;
/**
* Temper a Rusting Blade (10577)
* @URL https://l2wiki.com/Temper_a_Rusting_Blade
* @author NightBR
* @html by Werum
*/
public final class Q10577_TemperARustingBlade extends Quest
{
// NPCs
private static final int FLUTTER = 30677;
// Item
private static final int AUGMENTATION_PRACTICE_STORMBRINGER = 36717;
private static final int AUGMENTATION_PRACTICE_SPIRIT_STONE = 36718;
private static final int AUGMENTATION_PRACTICE_GEMSTONE = 36719;
// Rewards
private static final long XP = 597699960;
private static final int SP = 597690;
private static final int CERTIFICATE_FROM_FLUTTER = 48175;
// Misc
private static final int MIN_LEVEL = 95;
public Q10577_TemperARustingBlade()
{
super(10577);
addStartNpc(FLUTTER);
addTalkId(FLUTTER);
addCondMinLevel(MIN_LEVEL, "noLevel.html");
registerQuestItems(AUGMENTATION_PRACTICE_STORMBRINGER, AUGMENTATION_PRACTICE_SPIRIT_STONE, AUGMENTATION_PRACTICE_GEMSTONE);
addCondStartedQuest(Q10566_BestChoice.class.getSimpleName(), "30677-99.html");
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_AUGMENT, (OnPlayerAugment event) -> OnPlayerAugment(event), this));
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
String htmltext = null;
switch (event)
{
case "30677-02.htm":
case "30677-05.html":
case "30677-07.html":
{
htmltext = event;
break;
}
case "30677-03.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "30677-04.html":
{
// show Service/Help/Private Store page
player.sendPacket(new ExTutorialShowId(57));
htmltext = event;
break;
}
case "30677-06.html":
{
// show Service/Help/Augmentation page
player.sendPacket(new ExTutorialShowId(39));
giveItems(player, AUGMENTATION_PRACTICE_STORMBRINGER, 1);
giveItems(player, AUGMENTATION_PRACTICE_SPIRIT_STONE, 1);
giveItems(player, AUGMENTATION_PRACTICE_GEMSTONE, 20);
qs.setCond(2, true);
htmltext = event;
break;
}
case "30677-08.html":
{
addExpAndSp(player, XP, SP);
giveItems(player, CERTIFICATE_FROM_FLUTTER, 1);
qs.exitQuest(QuestType.ONE_TIME, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "30677-01.htm";
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "30677-03.html";
}
else if (qs.isCond(2))
{
htmltext = "30677-09.html";
}
else
{
htmltext = "30677-07.html";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
public void OnPlayerAugment(OnPlayerAugment event)
{
final PlayerInstance player = event.getPlayer();
if ((player == null) || (event.getItem().getId() != AUGMENTATION_PRACTICE_STORMBRINGER))
{
return;
}
final QuestState qs = getQuestState(player, false);
// Check if weapon has been augmented to complete the quest
if ((qs != null) && qs.isCond(2) && (player.getInventory().getItemByItemId(AUGMENTATION_PRACTICE_STORMBRINGER).isAugmented()))
{
qs.setCond(3, true);
}
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Head Blacksmith Flutter:<br>
Hmm, it would seem that it's a bit too early still to discuss the Fishing Guild with you. Please return after you've become stronger.<br>
(Only characters with Lv. 95 or above may undertake this quest.)
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Hello. Are you here to learn about <font color="LEVEL">Soul Crystals</font>?<br>
Well, you've come to the right place. And you are also ready to learn about them. Should we get started?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-02.htm">"Go on."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Let me offer a proposal. I'm confident that this will be very useful to you. I'll give you the items needed for experiencing Soul Crystals and I'll also teach you how. You just need to do as I tell you and try Soul Crystal. If you succeed in this, I'll give you a little reward.<br>
So, what do you think? Isn't it a nice opportunity?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-03.htm">"Yes, indeed."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Good. Now, I'll give you information on <font color="LEVEL">Soul Crystals</font>. Originally, Soul Crystals <font color="LEVEL">give a special ability to weapon by using the spirit of monster</font>. Especially, in the past, you had to have a Soul Crystal when defeating monsters to raise the level of the Soul Crystal. This wasn't an easy task but, those who desired to become stronger spared no effort.<br>
But at some point, it became impossible to experience the Soul Crystal that way. Well... there are lots of strange things taking place nowadays, so stuff like this is not unthinkable.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-04.html">"Is there a solution?"</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Fortunately, there was a solution. Magisters, Maestros, and even scholars have helped find something that can replace the old Soul Crystals. The new Soul Crystals can be upgraded by combining them.<br>
Surprisingly, the Soul Crystals can be just simply upgraded via <font color="LEVEL">combination</font>. And one more thing. The method of granting Soul Crystal effects through Blacksmiths is slightly different now. This is what I want to talk to you about.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-05.html">"Go on."</button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Blacksmith Vincenz:<br>
First off, you can't use old Soul Crystals anymore. To bestow the new special abilities, you need the new Soul Crystals. You can get them by defeating bosses or raid monsters.<br>
When you get the Soul Crystals, then you can combine them to make an upgraded Soul Crystal. For combination, you need two Soul Crystals of the same type and the same stage. However, there is a chance of failure. If the combination fails, one of the two Soul Crystals will disappear.<br>
In any case, by doing this, you can get your desired Soul Crystal class and then give the ability to a weapon.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-06.html">"Tell me about practice."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Well, it's better to just try it for yourself. Here's a <font color="LEVEL">Practice StormBringer</font> and a <font color="LEVEL">Practice Soul Crystal-Stage 1</font>. You'll need to have a Gemstone that is appropriate for the level of the Soul Crystal. Now, I'll give you a <font color="LEVEL"></font>Practice Soul Crystal Gemstone, but next time, you'll have to obtain the Gemstone yourself.<br>
You can purchase Gemstones from the <font color="LEVEL">Traders</font> at the <font color="LEVEL">Store</font> in the Village. There are various Stores in the village and each trader sells different items. It'll be good to know about their items.<br>
If you want to try a Soul Crystal ability with other weapons, you can always try it out.<br>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Oh, you succeeded? Got it now?<br>
It's easier than it sounds, right?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-08.html">"Yes, indeed."</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Blacksmith Vincenz:<br>
Good. Remenber what I've taught you next time you need to use Soul Crystals.<br>
Oh, right. You can bestow up to 3 special abilities to new Soul Crystals! Don't forget all the effort we've put into this!<br>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Now, I'll tell you about <font color="LEVEL">Soul Crystals</font>. Originally, Soul Crystals <font color="LEVEL">give a special ability to weapon by using the spirit of monster</font>. Especially, in the past, you had to have a Soul Crystal when defeating monsters to raise the level of the Soul Crystal. This wasn't an easy task but, those who desired to become stronger spared no effort.<br>
But at some point, it became impossible to experience the Soul Crystal that way. Well... there are lots of strange things taking place nowadays, so stuff like this is not unthinkable.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-04.html">"Is there a solution?"</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Hm? It looks like you didn't succeed yet. Do you need anything?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-11.html">"Tell me about Soul Crystals."</button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-06.html">"Give me the items needed for Soul Crystals."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Alright. you can <font color="LEVEL">use a Soul Crystal to bestow a special ability onto weapons</font>. There have been some changes to the Soul Crystals, and now you can upgrade them by <font color="LEVEL">combining</font> them. That's why we have new Soul Crystals now.<br>
The Soul Crystals from before cannot be used anymore. You can get the new Soul Crystals by defeating boss monsters, so remember that.<br>
If you need more information, check the instructions.<br>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Blacksmith Vincenz:<br>
I've already given you all the necessary items, I can't give you anymore.<br>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Blacksmith Vincenz:<br>
Hey, let nature take its course. It's not good for us to go against it.<br>
(Only characters who have the quest "Best Choice" in progress, can play this quest.)
</body></html>

View File

@@ -0,0 +1,183 @@
/*
* 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.Q10578_TheSoulOfASword;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemSoulCrystalAdd;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10566_BestChoice.Q10566_BestChoice;
/**
* The Soul of a Sword (10578)
* @URL https://l2wiki.com/The_Soul_of_a_Sword
* @author NightBR
* @html by Werum
*/
public final class Q10578_TheSoulOfASword extends Quest
{
// NPCs
private static final int VINCENZ = 31316;
// Items
private static final int PRACTICE_STORMBRINGER = 46629;
private static final int PRACTICE_SOUL_CRYSTAL_STAGE1 = 46526;
private static final int SOUL_CRYSTAL_PRACTICE_GEMSTONE = 36722;
// Rewards
private static final long XP = 597699960;
private static final int SP = 597690;
private static final int CERTIFICATE_FROM_VINCENZ = 48176;
// Misc
private static final int MIN_LEVEL = 95;
public Q10578_TheSoulOfASword()
{
super(10578);
addStartNpc(VINCENZ);
addTalkId(VINCENZ);
addCondMinLevel(MIN_LEVEL, "noLevel.html");
registerQuestItems(PRACTICE_STORMBRINGER, PRACTICE_SOUL_CRYSTAL_STAGE1, SOUL_CRYSTAL_PRACTICE_GEMSTONE);
addCondStartedQuest(Q10566_BestChoice.class.getSimpleName(), "31316-99.html");
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_ITEM_SOUL_CRYSTAL_ADD, (OnItemSoulCrystalAdd event) -> OnItemSoulCrystalAdd(event), this));
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
String htmltext = null;
switch (event)
{
case "31316-02.htm":
case "31316-04.html":
case "31316-07.html":
case "31316-11.html":
{
htmltext = event;
break;
}
case "31316-03.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "31316-05.html":
{
// show Service/Help/Soul Crystal Enhancement page
player.sendPacket(new ExTutorialShowId(40));
htmltext = event;
break;
}
case "31316-06.html":
{
// show Service/Help/Buy Item page
player.sendPacket(new ExTutorialShowId(36));
// TODO: check if player already have quest items
if (hasQuestItems(player, PRACTICE_STORMBRINGER, PRACTICE_SOUL_CRYSTAL_STAGE1, SOUL_CRYSTAL_PRACTICE_GEMSTONE))
{
htmltext = "31316-12.html";
}
else
{
// To make sure player does not have them already
removeRegisteredQuestItems(player);
giveItems(player, PRACTICE_STORMBRINGER, 1);
giveItems(player, PRACTICE_SOUL_CRYSTAL_STAGE1, 1);
giveItems(player, SOUL_CRYSTAL_PRACTICE_GEMSTONE, 10);
qs.setCond(2, true);
htmltext = event;
}
break;
}
case "31316-08.html":
{
addExpAndSp(player, XP, SP);
giveItems(player, CERTIFICATE_FROM_VINCENZ, 1);
qs.exitQuest(QuestType.ONE_TIME, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "31316-01.htm";
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "31316-09.html";
}
else if (qs.isCond(2))
{
htmltext = "31316-10.html";
}
else
{
htmltext = "31316-07.html";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
public void OnItemSoulCrystalAdd(OnItemSoulCrystalAdd event)
{
final PlayerInstance player = event.getPlayer();
if ((player == null) || (event.getItem().getId() != PRACTICE_STORMBRINGER))
{
return;
}
final QuestState qs = getQuestState(player, false);
// Check if weapon has been augmented to complete the quest
if ((qs != null) && qs.isCond(2) && (!player.getInventory().getItemByItemId(PRACTICE_STORMBRINGER).getSpecialAbilities().isEmpty()))
{
qs.setCond(3, true);
}
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Blacksmith Vincenz:<br>
Hmm, it would seem that it's a bit too early still to discuss the Fishing Guild with you. Please return after you've become stronger.<br>
(Only characters with Lv. 95 or above may undertake this quest.)
</body></html>

View File

@@ -310,6 +310,8 @@ import quests.Q10561_AcrossTheDeathLine.Q10561_AcrossTheDeathLine;
import quests.Q10562_TakeUpArms.Q10562_TakeUpArms;
import quests.Q10566_BestChoice.Q10566_BestChoice;
import quests.Q10575_LetsGoFishing.Q10575_LetsGoFishing;
import quests.Q10577_TemperARustingBlade.Q10577_TemperARustingBlade;
import quests.Q10578_TheSoulOfASword.Q10578_TheSoulOfASword;
import quests.Q10579_ContainingTheAttributePower.Q10579_ContainingTheAttributePower;
import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension;
import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction;
@@ -826,8 +828,8 @@ public class QuestMasterHandler
Q10574_SpecialMissionFortuna.class, // TODO: Not done.
Q10575_LetsGoFishing.class,
Q10576_GlitteringWeapons.class, // TODO: Not done.
Q10577_TemperARustingBlade.class, // TODO: Not done.
Q10578_TheSoulOfASword.class, // TODO: Not done.
Q10577_TemperARustingBlade.class,
Q10578_TheSoulOfASword.class,
Q10579_ContainingTheAttributePower.class,
Q10580_SpecialMissionDefeatSpezion.class, // TODO: Not done.
Q10594_FergasonsScheme.class, // TODO: Not done.

View File

@@ -1,36 +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.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10577_TemperARustingBlade extends Quest
{
private static final int START_NPC = 30677;
public Q10577_TemperARustingBlade()
{
super(10577);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@@ -1,36 +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.not_done;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.quest.Quest;
/**
* @author Mobius
*/
public class Q10578_TheSoulOfASword extends Quest
{
private static final int START_NPC = 31316;
public Q10578_TheSoulOfASword()
{
super(10578);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@@ -8073,6 +8073,7 @@
</itemGroup>
<!--[r] -->
<itemGroup id="15">
<item id="46629" /> <!-- Practice Stormbringer -->
<item id="17290" /> <!-- Requiem Shaper -->
<item id="17291" /> <!-- Requiem Cutter -->
<item id="17292" /> <!-- Requiem Slasher -->
@@ -8660,6 +8661,7 @@
</itemGroup>
<!--[r95] -->
<itemGroup id="16">
<item id="46629" /> <!-- Practice Stormbringer -->
<item id="17382" /> <!-- Specter Shaper -->
<item id="17383" /> <!-- Specter Cutter -->
<item id="17384" /> <!-- Specter Slasher -->
@@ -8953,6 +8955,7 @@
</itemGroup>
<!--[r99] -->
<itemGroup id="17">
<item id="46629" /> <!-- Practice Stormbringer -->
<item id="17416" /> <!-- Helios Shaper -->
<item id="17417" /> <!-- Helios Cutter -->
<item id="17418" /> <!-- Helios Slasher -->
@@ -10417,6 +10420,7 @@
</itemGroup>
<!-- Life Stone Instilled with Giants -->
<itemGroup id="36">
<item id="46629" /> <!-- Practice Stormbringer -->
<item id="17290" /> <!-- Requiem Shaper -->
<item id="17291" /> <!-- Requiem Cutter -->
<item id="17292" /> <!-- Requiem Slasher -->
@@ -14329,6 +14333,7 @@
</itemGroup>
<!-- [r_new] -->
<itemGroup id="52">
<item id="46629" /> <!-- Practice Stormbringer -->
<item id="17290" /> <!-- Requiem Shaper -->
<item id="17291" /> <!-- Requiem Cutter -->
<item id="17292" /> <!-- Requiem Slasher -->

View File

@@ -291,7 +291,7 @@
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="rhand" />
<set name="weapon_type" val="SWORD" />
<set name="crystal_type" val="C" />
<set name="crystal_type" val="R" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />

View File

@@ -334,18 +334,16 @@
<!-- Temporary practice weapon for learning about the Soul Crystal system. Very inefficient as a weapon. -->
<set name="icon" val="icon.weapon_stormbringer_i00" />
<set name="default_action" val="EQUIP" />
<set name="immediate_effect" val="true" />
<set name="bodypart" val="rhand" />
<set name="weapon_type" val="SWORD" />
<set name="crystal_type" val="C" />
<set name="weight" val="1420" />
<set name="soulshots" val="2" />
<set name="bodypart" val="rhand" />
<set name="spiritshots" val="2" />
<set name="is_tradable" val="false" />
<set name="is_dropable" val="false" />
<set name="is_destroyable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="is_sellable" val="false" />
<set name="crystal_count" val="3274" />
<set name="weight" val="1520" />
<set name="enchant_enabled" val="1" />
<set name="element_enabled" val="true" />
<set name="isAppearanceable" val="true" />
<set name="immediate_effect" val="true" />
<set name="commissionItemType" val="ONE_HAND_SWORD" />
<stats>
<stat type="pAtk">107.0</stat>
<stat type="mAtk">68.0</stat>

View File

@@ -123,6 +123,7 @@ import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceStatusChang
import org.l2jmobius.gameserver.model.events.impl.item.OnItemAttributeAdd;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemBypassEvent;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemSoulCrystalAdd;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemTalk;
import org.l2jmobius.gameserver.model.events.impl.olympiad.OnOlympiadMatchResult;
import org.l2jmobius.gameserver.model.events.impl.server.OnPacketReceived;
@@ -183,6 +184,7 @@ public enum EventType
ON_ITEM_CREATE(OnItemCreate.class, void.class),
ON_ITEM_TALK(OnItemTalk.class, void.class),
ON_ITEM_ATTRIBUTE_ADD(OnItemAttributeAdd.class, void.class),
ON_ITEM_SOUL_CRYSTAL_ADD(OnItemSoulCrystalAdd.class, void.class),
// NPC events
ON_NPC_CAN_BE_SEEN(OnNpcCanBeSeen.class, void.class, TerminateReturn.class),

View File

@@ -0,0 +1,53 @@
/*
* 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 org.l2jmobius.gameserver.model.events.impl.item;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
/**
* @author NightBR
*/
public class OnItemSoulCrystalAdd implements IBaseEvent
{
private final PlayerInstance _player;
private final ItemInstance _item;
public OnItemSoulCrystalAdd(PlayerInstance player, ItemInstance item)
{
_player = player;
_item = item;
}
public PlayerInstance getPlayer()
{
return _player;
}
public ItemInstance getItem()
{
return _item;
}
@Override
public EventType getType()
{
return EventType.ON_ITEM_SOUL_CRYSTAL_ADD;
}
}

View File

@@ -69,6 +69,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDr
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemAttributeAdd;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemBypassEvent;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemSoulCrystalAdd;
import org.l2jmobius.gameserver.model.events.impl.item.OnItemTalk;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.model.items.Armor;
@@ -2207,6 +2208,9 @@ public final class ItemInstance extends WorldObject
{
updateSpecialAbilities();
}
// Notify to Scripts
EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this));
}
public void removeSpecialAbility(int position, int type)

View File

@@ -202,8 +202,6 @@
10571 Strategic Reconciliation
10572 To Expel the Embryo's Forces
10576 Glittering Weapons
10577 Temper a Rusting Blade
10578 The Soul of a Sword
10580 Special Mission: Defeat Spezion
10588 Special Mission: Defeat Baylor
10594 Fergason's Scheme

View File

@@ -0,0 +1,4 @@
<html><body>Head Blacksmith Flutter:<br>
Do you know what <font color="LEVEL">augmenting</font> is? Your weapon sure doesen't look it.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-02.htm">"What is augmenting?"</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Head Blacksmith Flutter:<br>
See? I was right! Only when your weapons are reliable, can you be confident about your skills.<br>
Now, pay attention. I will teach you to maximize the hidden potential.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-03.htm">"Yes, indeed."</button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Head Blacksmith Flutter:<br>
First, you must understand augmenting. It <font color="LEVEL">provides items with additional options</font>, separately from <font color="LEVEL">enchanting</font>, <font color="LEVEL">soul crystal enhancement</font> or <font color="LEVEL">attributes</font> that you will learn later.<br>
For augmenting, you have to get all the required <font color="LEVEL">material</font> and ask <font color="LEVEL">any village's blacksmith</font> to make an item. Keep in mind that you can have accessories and hair accessories augmented but not armor.<br>
So far so good, huh?
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-04.html">"Yes, indeed."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Head Blacksmith Flutter:<br>
I told you about the items needed, right? Well, of course you need items for augmenting too. First, you need equipment you want to augment. It can be a <font color="LEVEL">weapon, accessory, or a hair accessory</font>. You also need <font color="LEVEL">Spirit Stones</font>. And you need Gemstones to pay the fee for augmenting, and the amount depends on the weapon grade.<br>
A good way to get the items I mentioned is by using the <font color="LEVEL">private store</font>. There are many merchants who buy and sell items in the village, and you can get the items you want without having to pay fees and stuff. There's some legwork... but it can be fun too!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-05.html">"Alright."</button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Head Blacksmith Flutter:<br>
Now, assuming tha you have all the necessary items, let's talk about augmentation. There are only two things you need to know. First, <font color="LEVEL">augmentation options are just random</font>. Sometimes, you need to release and repeat the augmentation to gain your desired option.<br>
Second, <font color="LEVEL">the augmented items cannot be exchanged or traded</font>. In order to exchange the augmented item, you'll have to release the augmentation first.<br>
That should be everithig I need to explain. Let's get practicing now!<nr>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-06.html">"Tell me about practice."</button>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Head Blacksmith Flutter:<br>
Since this is your first time, I'll provide the materials. Here are an <font color="LEVEL">Augmentation Practice Weapon</font>, an <font color="LEVEL">Augmentation Practice Spirit Stone(46)</font>, and an <font color="LEVEL">Augmentation Practice Gemstone(R-grade)</font>. Try augmenting as I taught you. If you succeed, you will get an augmented <font color="LEVEL">Augmentation Practice Weapon</font>.<br>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Head Blacksmith Flutter:<br>
Congratulations. Feel free to toss this practice weapon, if you don't like the result. That's what practice is for. In the real world, if you don't like the final version, you can <font color="LEVEL">remove augmentation</font> with some Adena. Keep that in mind.<br>
Anyway, you did a good job following my instructions.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10577_TemperARustingBlade 30677-08.html">"It wasn't that difficult."</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Head Blacksmith Flutter:<br>
Oh yeah? Hahaha. Anyway, I'll give you the certificate as a Reward. If you don't practice what you've learned, you'll forget it. So try augmentin whenever you have time.<br>
I hope you will put your new augmenting skills to good use.<br>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Head Blacksmith Flutter:<br>
Was it hard? Try augmenting with an <font color="LEVEL">Augmentation Practice Weapon</font>, an <font color="LEVEL">Augmentation Practice Spirit Stone(46)</font>, and an <font color="LEVEL">Augmentation Practice Gemstone (R-grade)</font>. Try augmenting as I taught you. If you succeed, you will get an augmented <font color="LEVEL">Augmentation Practice Weapon</font>.<br>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Head Blacksmith Flutter:<br>
Hey, let nature take its course. It's not good for us to go against it.<br>
(Only characters who have the quest "Best Choice" in progress, can play this quest.)
</body></html>

View File

@@ -0,0 +1,172 @@
/*
* 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.Q10577_TemperARustingBlade;
import org.l2jmobius.gameserver.enums.QuestType;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10566_BestChoice.Q10566_BestChoice;
/**
* Temper a Rusting Blade (10577)
* @URL https://l2wiki.com/Temper_a_Rusting_Blade
* @author NightBR
* @html by Werum
*/
public final class Q10577_TemperARustingBlade extends Quest
{
// NPCs
private static final int FLUTTER = 30677;
// Item
private static final int AUGMENTATION_PRACTICE_STORMBRINGER = 36717;
private static final int AUGMENTATION_PRACTICE_SPIRIT_STONE = 36718;
private static final int AUGMENTATION_PRACTICE_GEMSTONE = 36719;
// Rewards
private static final long XP = 597699960;
private static final int SP = 597690;
private static final int CERTIFICATE_FROM_FLUTTER = 48175;
// Misc
private static final int MIN_LEVEL = 95;
public Q10577_TemperARustingBlade()
{
super(10577);
addStartNpc(FLUTTER);
addTalkId(FLUTTER);
addCondMinLevel(MIN_LEVEL, "noLevel.html");
registerQuestItems(AUGMENTATION_PRACTICE_STORMBRINGER, AUGMENTATION_PRACTICE_SPIRIT_STONE, AUGMENTATION_PRACTICE_GEMSTONE);
addCondStartedQuest(Q10566_BestChoice.class.getSimpleName(), "30677-99.html");
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_AUGMENT, (OnPlayerAugment event) -> OnPlayerAugment(event), this));
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return getNoQuestMsg(player);
}
String htmltext = null;
switch (event)
{
case "30677-02.htm":
case "30677-05.html":
case "30677-07.html":
{
htmltext = event;
break;
}
case "30677-03.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "30677-04.html":
{
// show Service/Help/Private Store page
player.sendPacket(new ExTutorialShowId(57));
htmltext = event;
break;
}
case "30677-06.html":
{
// show Service/Help/Augmentation page
player.sendPacket(new ExTutorialShowId(39));
giveItems(player, AUGMENTATION_PRACTICE_STORMBRINGER, 1);
giveItems(player, AUGMENTATION_PRACTICE_SPIRIT_STONE, 1);
giveItems(player, AUGMENTATION_PRACTICE_GEMSTONE, 20);
qs.setCond(2, true);
htmltext = event;
break;
}
case "30677-08.html":
{
addExpAndSp(player, XP, SP);
giveItems(player, CERTIFICATE_FROM_FLUTTER, 1);
qs.exitQuest(QuestType.ONE_TIME, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
htmltext = "30677-01.htm";
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "30677-03.html";
}
else if (qs.isCond(2))
{
htmltext = "30677-09.html";
}
else
{
htmltext = "30677-07.html";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
public void OnPlayerAugment(OnPlayerAugment event)
{
final PlayerInstance player = event.getPlayer();
if ((player == null) || (event.getItem().getId() != AUGMENTATION_PRACTICE_STORMBRINGER))
{
return;
}
final QuestState qs = getQuestState(player, false);
// Check if weapon has been augmented to complete the quest
if ((qs != null) && qs.isCond(2) && (player.getInventory().getItemByItemId(AUGMENTATION_PRACTICE_STORMBRINGER).isAugmented()))
{
qs.setCond(3, true);
}
}
}

View File

@@ -0,0 +1,4 @@
<html><body>Head Blacksmith Flutter:<br>
Hmm, it would seem that it's a bit too early still to discuss the Fishing Guild with you. Please return after you've become stronger.<br>
(Only characters with Lv. 95 or above may undertake this quest.)
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Hello. Are you here to learn about <font color="LEVEL">Soul Crystals</font>?<br>
Well, you've come to the right place. And you are also ready to learn about them. Should we get started?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-02.htm">"Go on."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Let me offer a proposal. I'm confident that this will be very useful to you. I'll give you the items needed for experiencing Soul Crystals and I'll also teach you how. You just need to do as I tell you and try Soul Crystal. If you succeed in this, I'll give you a little reward.<br>
So, what do you think? Isn't it a nice opportunity?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-03.htm">"Yes, indeed."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Good. Now, I'll give you information on <font color="LEVEL">Soul Crystals</font>. Originally, Soul Crystals <font color="LEVEL">give a special ability to weapon by using the spirit of monster</font>. Especially, in the past, you had to have a Soul Crystal when defeating monsters to raise the level of the Soul Crystal. This wasn't an easy task but, those who desired to become stronger spared no effort.<br>
But at some point, it became impossible to experience the Soul Crystal that way. Well... there are lots of strange things taking place nowadays, so stuff like this is not unthinkable.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-04.html">"Is there a solution?"</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Fortunately, there was a solution. Magisters, Maestros, and even scholars have helped find something that can replace the old Soul Crystals. The new Soul Crystals can be upgraded by combining them.<br>
Surprisingly, the Soul Crystals can be just simply upgraded via <font color="LEVEL">combination</font>. And one more thing. The method of granting Soul Crystal effects through Blacksmiths is slightly different now. This is what I want to talk to you about.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-05.html">"Go on."</button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Blacksmith Vincenz:<br>
First off, you can't use old Soul Crystals anymore. To bestow the new special abilities, you need the new Soul Crystals. You can get them by defeating bosses or raid monsters.<br>
When you get the Soul Crystals, then you can combine them to make an upgraded Soul Crystal. For combination, you need two Soul Crystals of the same type and the same stage. However, there is a chance of failure. If the combination fails, one of the two Soul Crystals will disappear.<br>
In any case, by doing this, you can get your desired Soul Crystal class and then give the ability to a weapon.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-06.html">"Tell me about practice."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Well, it's better to just try it for yourself. Here's a <font color="LEVEL">Practice StormBringer</font> and a <font color="LEVEL">Practice Soul Crystal-Stage 1</font>. You'll need to have a Gemstone that is appropriate for the level of the Soul Crystal. Now, I'll give you a <font color="LEVEL"></font>Practice Soul Crystal Gemstone, but next time, you'll have to obtain the Gemstone yourself.<br>
You can purchase Gemstones from the <font color="LEVEL">Traders</font> at the <font color="LEVEL">Store</font> in the Village. There are various Stores in the village and each trader sells different items. It'll be good to know about their items.<br>
If you want to try a Soul Crystal ability with other weapons, you can always try it out.<br>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Oh, you succeeded? Got it now?<br>
It's easier than it sounds, right?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-08.html">"Yes, indeed."</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Blacksmith Vincenz:<br>
Good. Remenber what I've taught you next time you need to use Soul Crystals.<br>
Oh, right. You can bestow up to 3 special abilities to new Soul Crystals! Don't forget all the effort we've put into this!<br>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Now, I'll tell you about <font color="LEVEL">Soul Crystals</font>. Originally, Soul Crystals <font color="LEVEL">give a special ability to weapon by using the spirit of monster</font>. Especially, in the past, you had to have a Soul Crystal when defeating monsters to raise the level of the Soul Crystal. This wasn't an easy task but, those who desired to become stronger spared no effort.<br>
But at some point, it became impossible to experience the Soul Crystal that way. Well... there are lots of strange things taking place nowadays, so stuff like this is not unthinkable.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-04.html">"Is there a solution?"</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Hm? It looks like you didn't succeed yet. Do you need anything?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-11.html">"Tell me about Soul Crystals."</button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10578_TheSoulOfASword 31316-06.html">"Give me the items needed for Soul Crystals."</button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Blacksmith Vincenz:<br>
Alright. you can <font color="LEVEL">use a Soul Crystal to bestow a special ability onto weapons</font>. There have been some changes to the Soul Crystals, and now you can upgrade them by <font color="LEVEL">combining</font> them. That's why we have new Soul Crystals now.<br>
The Soul Crystals from before cannot be used anymore. You can get the new Soul Crystals by defeating boss monsters, so remember that.<br>
If you need more information, check the instructions.<br>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Blacksmith Vincenz:<br>
I've already given you all the necessary items, I can't give you anymore.<br>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Blacksmith Vincenz:<br>
Hey, let nature take its course. It's not good for us to go against it.<br>
(Only characters who have the quest "Best Choice" in progress, can play this quest.)
</body></html>

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