Addition of second part of Best Choice series quest.
Contributed by NightBR.
This commit is contained in:
@@ -187,7 +187,6 @@
|
||||
10576 Glittering Weapons
|
||||
10577 Temper a Rusting Blade
|
||||
10578 The Soul of a Sword
|
||||
10579 Containing the Attribute Power
|
||||
10580 Special Mission: Defeat Spezion
|
||||
10594 Fergason's Scheme
|
||||
10595 The Dimensional Warp, Part 8
|
||||
|
@@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.quest.State;
|
||||
/**
|
||||
* Best Choice (10566)
|
||||
* @URL https://l2wiki.com/Best_Choice
|
||||
* @author Werum / Standardization by NightBR
|
||||
* @author Werum / NightBR
|
||||
*/
|
||||
public class Q10566_BestChoice extends Quest
|
||||
{
|
||||
@@ -40,8 +40,9 @@ public class Q10566_BestChoice extends Quest
|
||||
private static final int CERTIFICATE_FLUTTER = 48175;
|
||||
private static final int CERTIFICATE_VINCENZ = 48176;
|
||||
private static final int CERTIFICATE_FERRIS = 48177;
|
||||
private static final int HERPHAHS_SUPPORT_BOX = 48250;
|
||||
private static final int HERPHAHS_MISSION_LIST = 48172;
|
||||
// Rewards
|
||||
private static final int HERPHAHS_SUPPORT_BOX = 48250;
|
||||
|
||||
public Q10566_BestChoice()
|
||||
{
|
||||
@@ -102,13 +103,16 @@ public class Q10566_BestChoice extends Quest
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
boolean hasItems = hasQuestItems(player, CERTIFICATE_SANTIAGO, CERTIFICATE_RUPIO, CERTIFICATE_FLUTTER, CERTIFICATE_VINCENZ, CERTIFICATE_FERRIS);
|
||||
// Chck if player has the necessary quest items to complete the quest
|
||||
if (hasItems)
|
||||
// Check if player has the necessary quest items to complete the quest
|
||||
if (hasQuestItems(player, CERTIFICATE_SANTIAGO, CERTIFICATE_RUPIO, CERTIFICATE_FLUTTER, CERTIFICATE_VINCENZ, CERTIFICATE_FERRIS))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
htmltext = "34362-06.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "34362-05.html";
|
||||
}
|
||||
htmltext = (hasItems) ? "34362-06.html" : "34362-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<html><body>Fishing Guild Leader Santiago:<br>
|
||||
Hey, let nature take its course. It's not good for us to go against it.<br>
|
||||
(Only Premium characters who have the quest "Best Choice" in progress, can play this quest.)
|
||||
(Only characters who have the quest "Best Choice" in progress, can play this quest.)
|
||||
</body></html>
|
@@ -51,6 +51,10 @@ public class Q10575_LetsGoFishing extends Quest
|
||||
private static final int PRACTICE_BAIT = 46737;
|
||||
private static final int PRACTICE_FISH = 46736;
|
||||
private static final int PRACTICE_FISHING_ROD = 46738;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final String COUNT_VAR = "FishWinCount";
|
||||
private static final int NPCSTRING_ID = NpcStringId.CATCH_PRACTICE_FISH.getId();
|
||||
// Rewards
|
||||
private static final int XP = 597699960;
|
||||
private static final int SP = 597690;
|
||||
@@ -58,10 +62,6 @@ public class Q10575_LetsGoFishing extends Quest
|
||||
private static final int FISHING_SHOT = 38154;
|
||||
private static final int REWARD_FISHING_ROD_PACK = 46739;
|
||||
private static final int BAIT = 48537;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final String COUNT_VAR = "FishWinCount";
|
||||
private static final int NPCSTRING_ID = NpcStringId.CATCH_PRACTICE_FISH.getId();
|
||||
|
||||
public Q10575_LetsGoFishing()
|
||||
{
|
||||
@@ -115,6 +115,7 @@ public class Q10575_LetsGoFishing extends Quest
|
||||
giveItems(player, FISHING_SHOT, 60);
|
||||
giveItems(player, REWARD_FISHING_ROD_PACK, 1);
|
||||
giveItems(player, BAIT, 60);
|
||||
qs.unset(COUNT_VAR);
|
||||
qs.exitQuest(QuestType.ONE_TIME, true);
|
||||
htmltext = event;
|
||||
}
|
||||
@@ -134,7 +135,7 @@ public class Q10575_LetsGoFishing extends Quest
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.hasPremiumStatus()) ? "34138-01.htm" : "34138-99.html";
|
||||
htmltext = "34138-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Could it be that you'd like to learn about attributes, but don't know where to start or don't have the necessary equipments? Boy, do I have a great opportunity for you. <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-02.htm">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
The opportunity that I can give you is quite simple. If you want, I can give you the items to grant an attribute. All you need to do is actually grant the attribute to a weapon. A good opportunity, don't you think? If you agree, I'll get started.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-03.htm">"Yes, indeed.."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
I'll assume that means you would like to experience granting an attribute. Let me explain the basic theory briefly first. You have to have an <font color="LEVEL">Attribute Stone</font> or an <font color="LEVEL">Attribute Crystal</font>.<br>
|
||||
If you don't have these items, you'll have to get them first. There are many ways to obtain the items, but I recommend using the <font color="LEVEL">Auction House</font>. Let me explain.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-04.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,7 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
The Auction House allows you to sell or buy items through the Auction House NPCs. Therefore, if you use this function, you don't need to be logged into the game when you want to trade the items.<br>
|
||||
To use this function, find the <font color="LEVEL">Auction House Manager</font> in town. You can open the map to check the location, so it shouldn't be difficult.<br>
|
||||
A brokerage fee will be deducted after a listed item has been sold.<br>
|
||||
You can search for items but make sure that the quantity is correct, or you may accidentally buy more than you intended. Anyway, if you get the materials using this method, you'll be ready for leaming about granting attributes.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-05.html">"Alright."</button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Now, we have all the necessary items, we can learn about what an <font color="LEVEL">attribute</font> is. There are <font color="LEVEL">Elemental Attribute</font> and <font color="LEVEL">Characteristic Attribute. Fire, Water, Earth, and Air</font> are Elemental Attributes, and <font color="LEVEL">Holy Attacks</font> and <font color="LEVEL">Dark Attacks</font> are Characteristic Attributes.There are some,conflicting attributes,such as, <font color="LEVEL">Fire and Water, earth and Air, Holy and Dark</font>. The key to understanding attributes is to understand conflicting attributes.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-06.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,6 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Now, let me tell you about how to grant <font color="LEVEL">attributes</font>! First of all, remember that an attribute can only be applied to items with <font color="LEVEL">S-grade and above</font>. The method is the same with Enchantment. <font color="LEVEL">Double-click</font> the <font color="LEVEL">Attribute Crystal</font> or <font color="LEVEL">Attribute Stone</font>.<br>
|
||||
Only <font color="LEVEL">one</font> attribute can be applied to a Weapon and when you grant an attribute, additional attribute damage can be applied too. Corresponding to the attribute of the monster that you are fighting, the attribute damage can increase or decrease.<br>
|
||||
On the other hand, you can apply as many as <font color="LEVEL">three</font> attributes to <font color="LEVEL">armor</font>. However, you can't grant conflicting attributes to armor. If you apply an attribute to armor, it will gain the resistance to that attribute. The higher the monsters level is, there is a higher probability it will attack with an attribute. It'll be helpful to know the monsters attribute so you can prepare accordingly. <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-07.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Regarding the attributes, go to the Attribute Master NPCs in the Town of Aden or Town of Rune. They release the attributes applied to weapons and armor and can also exchange the Attribute Stones. Of course, there is a fee. In addition, they also sell potions that can enhance the attribute for a short period.<br>
|
||||
Now, let's practice. It won't be difficult. I'll give you a <font color="LEVEL">Attribute Practice Long Sword</font>. So, using the <font color="LEVEL">Practice Attribute Stone</font>, apply an attribute. Are you ready?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-08.html">"I'm ready."</button>
|
||||
</body></html>
|
@@ -0,0 +1,10 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Then, choose one. What attribute do you want to apply to the <font color="LEVEL">Attribute Practice Long Sword</font> that I'll give you?<br>
|
||||
Here, choose an Attribute Stone.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-fire.html">"Attribute Practice Fire Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-water.html">"Attribute Practice Water Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-earth.html">"Attribute Practice Earth Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-wind.html">"Attribute Practice Wind Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-holy.html">"Attribute Practice Holy Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-dark.html">"Attribute Practice Dark Stone."</button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
It looks like you're finished.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-10.html">"I am."</button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Good,then the mission is done. I hope you'll utilize what you learned from me!<br>
|
||||
</body></html>
|
@@ -0,0 +1,7 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
You're not done with the attribution mission yet.<br>
|
||||
What's up? Why are you here?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-12.html">"I want to learn about the Auction House again."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-13.html">"I want to learn about the attributes again."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-14.html">"No particular reason."</button>
|
||||
</body></html>
|
@@ -0,0 +1,9 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
The Auction House allows you to sell or buy items through the Auction House NPCs. Therefore, if you use this function, you don't need to be logged into the game when you want to trade the items.<br>
|
||||
To use this function, find the <font color="LEVEL">Auction House Manager</font> in town. You can open the map to check the location, so it shouldn't be difficult.<br>
|
||||
A brokerage fee will be deducted after a listed item has been sold.<br>
|
||||
You can search for items but make sure that the quantity is correct, or you may accidentally buy more than you intended. Anyway, if you get the materials using this method, you'll be ready for leaming about granting attributes.<br>
|
||||
Is there anything else you need?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-13.html">"I want to learn about the attributes again."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-14.html">"Nope, that's all."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
You want to hear about attributes again? there are <font color="LEVEL">Elemental Attribute</font> and <font color="LEVEL">Characteristic Attribute</font>. <font color="LEVEL">Fire, Water, Earth, and Air</font> are Elemental Attributes, and <font color="LEVEL">Holy Attacks</font> and <font color="LEVEL">Dark Attacks</font> are Characteristic Attributes. When there is no specific attribute, it is called <font color="LEVEL">Non-attribute</font>.<br>
|
||||
There are some conflicting attributes, such as, <font color="LEVEL">Fire and Water, Earth and Air, Holy and Dark</font>. The key to understanding attributes is to understand conflicting attributes.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-15.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
OK, do the attribute practice again. Use the <font color="LEVEL">Attribute Practice Fire Stone</font> to grant an attribute to the<font color="LEVEL">Attribute Practice Long Sword</font>.<br>
|
||||
</body></html>
|
@@ -0,0 +1,6 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Now, for granting <font color="LEVEL">attributes</font>! First of all, remember that an attribute can only be applied to items with <font color="LEVEL">S-grade and above</font>. The method is the same with Enchantment <font color="LEVEL">Double-click</font> the <font color="LEVEL">Attribute Stone</font> or <font color="LEVEL">Attribute Crystal</font>.<br>
|
||||
Only <font color="LEVEL">one</font> attribute can be applied to a <font color="LEVEL">Weapon</font> and when you grant an attribute, additional attribute damage can be applied too. Corresponding to the attribute of the monster that you are fighting, the attribute damage can increase or decrease.<br>
|
||||
On the other hand, you can apply as many as <font color="LEVEL">three</font> attributes to <font color="LEVEL">armor</font>. However, you can't grant conflicting attributes to armor. If you apply an attribute to armor, it will gain the resistance to that attribute. The higher the monsters level is, there is a higher probability it will attack with an attribute. It'll be helpful to know the monsters â€β€<CEB2> attribute so you can prepare accordingly.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-16.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,6 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Regarding the attributes, go to the Attribute Master NPCs in the Town of Aden or Town of Rune. They release the attributes applied to weapons and armor and can also exchange the Attribute Stones. Of course, there is a fee. In addition, they also sell potions that can enhance the attribute for a short period.<br>
|
||||
That's all for my attribute lesson. Anything else you need?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-12.html">"I want to learn about the Auction House again."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-14.html">"Nope, that's all."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Dark Stone! This practice is going to be on Dark!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Earth Stone! This practice is going to be on Earth!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Fire Stone! This practice is going to be on fire!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Holy Stone! This practice is going to be on Holy!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Water Stone! This practice is going to be on Water!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Wind Stone! This practice is going to be on Wind!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,248 @@
|
||||
/*
|
||||
* 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.Q10579_ContainingTheAttributePower;
|
||||
|
||||
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.OnItemAttributeAdd;
|
||||
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;
|
||||
|
||||
/**
|
||||
* Containing the Attribute Power (10579)
|
||||
* @URL https://l2wiki.com/Containing_the_Attribute_Power
|
||||
* @author Werum / NightBR
|
||||
*/
|
||||
public class Q10579_ContainingTheAttributePower extends Quest
|
||||
{
|
||||
// NPC
|
||||
private static final int FERRIS = 30847;
|
||||
// Items
|
||||
// TODO: Need to add some of the Stones that are not present in the current client
|
||||
private static final int ATTRIBUTE_PRACTICE_LONG_SWORD = 48168;
|
||||
private static final int ATTRIBUTE_PRACTICE_FIRE_STONE = 48169;
|
||||
private static final int ATTRIBUTE_PRACTICE_WATER_STONE = 48169; // FIXME: Does not exist.
|
||||
private static final int ATTRIBUTE_PRACTICE_EARTH_STONE = 48169; // FIXME: Does not exist.
|
||||
private static final int ATTRIBUTE_PRACTICE_WIND_STONE = 48169; // FIXME: Does not exist.
|
||||
private static final int ATTRIBUTE_PRACTICE_HOLY_STONE = 48169; // FIXME: Does not exist.
|
||||
private static final int ATTRIBUTE_PRACTICE_DARK_STONE = 48169; // FIXME: Does not exist.
|
||||
// Rewards
|
||||
private static final int XP = 597699960;
|
||||
private static final int SP = 597690;
|
||||
private static final int CERTIFICATE_FROM_FERRIS = 48177;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
|
||||
public Q10579_ContainingTheAttributePower()
|
||||
{
|
||||
super(10579);
|
||||
addStartNpc(FERRIS);
|
||||
addTalkId(FERRIS);
|
||||
addCondMinLevel(MIN_LEVEL, "noLevel.html");
|
||||
registerQuestItems(ATTRIBUTE_PRACTICE_LONG_SWORD, ATTRIBUTE_PRACTICE_FIRE_STONE, ATTRIBUTE_PRACTICE_WATER_STONE, ATTRIBUTE_PRACTICE_EARTH_STONE, ATTRIBUTE_PRACTICE_WIND_STONE, ATTRIBUTE_PRACTICE_HOLY_STONE, ATTRIBUTE_PRACTICE_DARK_STONE);
|
||||
addCondStartedQuest(Q10566_BestChoice.class.getSimpleName(), "34138-99.html");
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_ITEM_ATTRIBUTE_ADD, (OnItemAttributeAdd event) -> OnItemAttributeAdd(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 "30847-02.htm":
|
||||
case "30847-05.html":
|
||||
case "30847-06.html":
|
||||
case "30847-07.html":
|
||||
case "30847-13.html":
|
||||
case "30847-15.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-03.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-04.html":
|
||||
{
|
||||
// show Service/Help/Auction House page
|
||||
player.sendPacket(new ExTutorialShowId(58));
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-08.html":
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-12.html":
|
||||
{
|
||||
// show Service/Help/Auction House page
|
||||
player.sendPacket(new ExTutorialShowId(58));
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-16.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-fire.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_FIRE_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-water.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_WATER_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-earth.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_EARTH_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-wind.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_WIND_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-holy.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_HOLY_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-dark.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_DARK_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-10.html":
|
||||
{
|
||||
addExpAndSp(player, XP, SP);
|
||||
giveItems(player, CERTIFICATE_FROM_FERRIS, 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 = "30847-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "30847-04.html";
|
||||
}
|
||||
else if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "30847-08.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = (qs.isCond(4)) ? "30847-09.html" : "30847-11.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
public void OnItemAttributeAdd(OnItemAttributeAdd event)
|
||||
{
|
||||
final PlayerInstance player = event.getPlayer();
|
||||
if ((player == null) || (event.getItem().getId() != ATTRIBUTE_PRACTICE_LONG_SWORD))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
// Check weapon has elemental enchant to complete the quest
|
||||
if ((qs != null) && qs.isCond(3) && (player.getInventory().getItemByItemId(ATTRIBUTE_PRACTICE_LONG_SWORD).hasAttributes()))
|
||||
{
|
||||
qs.setCond(4, true);
|
||||
}
|
||||
}
|
||||
}
|
@@ -356,6 +356,7 @@ 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.Q10579_ContainingTheAttributePower.Q10579_ContainingTheAttributePower;
|
||||
import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension;
|
||||
import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction;
|
||||
import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity;
|
||||
@@ -914,7 +915,7 @@ public class QuestMasterHandler
|
||||
Q10576_GlitteringWeapons.class, // TODO: Not done.
|
||||
Q10577_TemperARustingBlade.class, // TODO: Not done.
|
||||
Q10578_TheSoulOfASword.class, // TODO: Not done.
|
||||
Q10579_ContainingTheAttributePower.class, // TODO: Not done.
|
||||
Q10579_ContainingTheAttributePower.class,
|
||||
Q10580_SpecialMissionDefeatSpezion.class, // TODO: Not done.
|
||||
Q10594_FergasonsScheme.class, // TODO: Not done.
|
||||
Q10595_TheDimensionalWarpPart8.class, // TODO: Not done.
|
||||
|
@@ -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 Q10579_ContainingTheAttributePower extends Quest
|
||||
{
|
||||
private static final int START_NPC = 30847;
|
||||
|
||||
public Q10579_ContainingTheAttributePower()
|
||||
{
|
||||
super(10579);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
|
||||
}
|
||||
}
|
@@ -894,16 +894,20 @@
|
||||
<!-- A crude weapon you received to practice applying attributes on a weapon. It is practically worthless in combat. -->
|
||||
<set name="icon" val="icon.weapon_long_sword_i00" />
|
||||
<set name="default_action" val="EQUIP" />
|
||||
<set name="bodypart" val="rhand" />
|
||||
<set name="weapon_type" val="SWORD" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
<set name="crystal_type" val="R" />
|
||||
<set name="material" val="FINE_STEEL" />
|
||||
<set name="weight" val="1420" />
|
||||
<set name="enchant_enabled" val="1" />
|
||||
<set name="element_enabled" val="true" />
|
||||
<set name="is_tradable" val="false" />
|
||||
<set name="is_dropable" val="false" />
|
||||
<set name="is_destroyable" val="false" />
|
||||
<set name="is_depositable" val="false" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="commissionItemType" val="TWO_HAND_SWORD" />
|
||||
<stats>
|
||||
<stat type="pAtk">24</stat>
|
||||
<stat type="mAtk">17</stat>
|
||||
@@ -917,6 +921,8 @@
|
||||
<!-- Fire elemental attack attribute increases by 5 when bestowed on a weapon. Water elemental defense attribute increases by 6 when bestowed on an armor. Attribute Stones can be used up to attribute level 3. Additionally, a maximum of three types of elemental defense attribute can be bestowed, and one type of elemental attack attribute. Opposite attributes cannot be bestowed together. -->
|
||||
<set name="icon" val="icon.etc_fire_stone_i00" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="etcitem_type" val="ENCHT_ATTR" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="1" />
|
||||
<set name="is_tradable" val="false" />
|
||||
@@ -925,6 +931,11 @@
|
||||
<set name="is_depositable" val="false" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="handler" val="EnchantAttribute" />
|
||||
<set name="commissionItemType" val="ATTRIBUTE_STONE" />
|
||||
<skills>
|
||||
<skill id="2329" level="1" /> <!-- Fire Stone -->
|
||||
</skills>
|
||||
</item>
|
||||
<item id="48170" name="Enhancement Practice Long Sword" type="Weapon">
|
||||
<!-- A training sword you received from Blacksmith Rupio to practice weapon enchanting. It is worthless as a weapon. Take it to Rupio after enchanting it to the enchantment level he asked for. -->
|
||||
|
@@ -100,6 +100,8 @@ public final class Elementals
|
||||
|
||||
public enum ElementalItems
|
||||
{
|
||||
attributePracticeFireStone(FIRE, 48169, ElementalItemType.Stone, 0),
|
||||
|
||||
fireStone(FIRE, 9546, ElementalItemType.Stone, 0),
|
||||
waterStone(WATER, 9547, ElementalItemType.Stone, 0),
|
||||
windStone(WIND, 9549, ElementalItemType.Stone, 0),
|
||||
|
@@ -120,6 +120,7 @@ import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy;
|
||||
import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter;
|
||||
import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceLeave;
|
||||
import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceStatusChange;
|
||||
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.OnItemTalk;
|
||||
@@ -181,6 +182,7 @@ public enum EventType
|
||||
ON_ITEM_BYPASS_EVENT(OnItemBypassEvent.class, void.class),
|
||||
ON_ITEM_CREATE(OnItemCreate.class, void.class),
|
||||
ON_ITEM_TALK(OnItemTalk.class, void.class),
|
||||
ON_ITEM_ATTRIBUTE_ADD(OnItemAttributeAdd.class, void.class),
|
||||
|
||||
// NPC events
|
||||
ON_NPC_CAN_BE_SEEN(OnNpcCanBeSeen.class, void.class, TerminateReturn.class),
|
||||
|
@@ -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 OnItemAttributeAdd implements IBaseEvent
|
||||
{
|
||||
private final PlayerInstance _player;
|
||||
private final ItemInstance _item;
|
||||
|
||||
public OnItemAttributeAdd(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_ATTRIBUTE_ADD;
|
||||
}
|
||||
}
|
@@ -67,6 +67,7 @@ import org.l2jmobius.gameserver.model.events.EventDispatcher;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop;
|
||||
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.OnItemTalk;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
@@ -1215,6 +1216,9 @@ public final class ItemInstance extends WorldObject
|
||||
_elementals.put(holder.getType(), holder);
|
||||
}
|
||||
}
|
||||
|
||||
// Notify to Scripts
|
||||
EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -104,6 +104,14 @@ public class RequestExEnchantItemAttribute implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Quest Q10579_ContainingTheAttributePower check.
|
||||
if ((item.getItem().getId() == 48168) && (stone.getItem().getId() != 48169))
|
||||
{
|
||||
player.removeRequest(request.getClass());
|
||||
client.sendPacket(SystemMessageId.ATTRIBUTE_ITEM_USAGE_HAS_BEEN_CANCELLED);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!item.isElementable())
|
||||
{
|
||||
client.sendPacket(SystemMessageId.ELEMENTAL_POWER_ENHANCER_USAGE_REQUIREMENT_IS_NOT_SUFFICIENT);
|
||||
|
@@ -199,7 +199,6 @@
|
||||
10576 Glittering Weapons
|
||||
10577 Temper a Rusting Blade
|
||||
10578 The Soul of a Sword
|
||||
10579 Containing the Attribute Power
|
||||
10580 Special Mission: Defeat Spezion
|
||||
10594 Fergason's Scheme
|
||||
10595 The Dimensional Warp, Part 8
|
||||
|
@@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.quest.State;
|
||||
/**
|
||||
* Best Choice (10566)
|
||||
* @URL https://l2wiki.com/Best_Choice
|
||||
* @author Werum / Standardization by NightBR
|
||||
* @author Werum / NightBR
|
||||
*/
|
||||
public class Q10566_BestChoice extends Quest
|
||||
{
|
||||
@@ -40,8 +40,9 @@ public class Q10566_BestChoice extends Quest
|
||||
private static final int CERTIFICATE_FLUTTER = 48175;
|
||||
private static final int CERTIFICATE_VINCENZ = 48176;
|
||||
private static final int CERTIFICATE_FERRIS = 48177;
|
||||
private static final int HERPHAHS_SUPPORT_BOX = 48250;
|
||||
private static final int HERPHAHS_MISSION_LIST = 48172;
|
||||
// Rewards
|
||||
private static final int HERPHAHS_SUPPORT_BOX = 48250;
|
||||
|
||||
public Q10566_BestChoice()
|
||||
{
|
||||
@@ -102,13 +103,16 @@ public class Q10566_BestChoice extends Quest
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
boolean hasItems = hasQuestItems(player, CERTIFICATE_SANTIAGO, CERTIFICATE_RUPIO, CERTIFICATE_FLUTTER, CERTIFICATE_VINCENZ, CERTIFICATE_FERRIS);
|
||||
// Chck if player has the necessary quest items to complete the quest
|
||||
if (hasItems)
|
||||
// Check if player has the necessary quest items to complete the quest
|
||||
if (hasQuestItems(player, CERTIFICATE_SANTIAGO, CERTIFICATE_RUPIO, CERTIFICATE_FLUTTER, CERTIFICATE_VINCENZ, CERTIFICATE_FERRIS))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
htmltext = "34362-06.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "34362-05.html";
|
||||
}
|
||||
htmltext = (hasItems) ? "34362-06.html" : "34362-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<html><body>Fishing Guild Leader Santiago:<br>
|
||||
Hey, let nature take its course. It's not good for us to go against it.<br>
|
||||
(Only Premium characters who have the quest "Best Choice" in progress, can play this quest.)
|
||||
(Only characters who have the quest "Best Choice" in progress, can play this quest.)
|
||||
</body></html>
|
@@ -51,6 +51,10 @@ public class Q10575_LetsGoFishing extends Quest
|
||||
private static final int PRACTICE_BAIT = 46737;
|
||||
private static final int PRACTICE_FISH = 46736;
|
||||
private static final int PRACTICE_FISHING_ROD = 46738;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final String COUNT_VAR = "FishWinCount";
|
||||
private static final int NPCSTRING_ID = NpcStringId.CATCH_PRACTICE_FISH.getId();
|
||||
// Rewards
|
||||
private static final int XP = 597699960;
|
||||
private static final int SP = 597690;
|
||||
@@ -58,10 +62,6 @@ public class Q10575_LetsGoFishing extends Quest
|
||||
private static final int FISHING_SHOT = 38154;
|
||||
private static final int REWARD_FISHING_ROD_PACK = 46739;
|
||||
private static final int BAIT = 48537;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final String COUNT_VAR = "FishWinCount";
|
||||
private static final int NPCSTRING_ID = NpcStringId.CATCH_PRACTICE_FISH.getId();
|
||||
|
||||
public Q10575_LetsGoFishing()
|
||||
{
|
||||
@@ -115,6 +115,7 @@ public class Q10575_LetsGoFishing extends Quest
|
||||
giveItems(player, FISHING_SHOT, 60);
|
||||
giveItems(player, REWARD_FISHING_ROD_PACK, 1);
|
||||
giveItems(player, BAIT, 60);
|
||||
qs.unset(COUNT_VAR);
|
||||
qs.exitQuest(QuestType.ONE_TIME, true);
|
||||
htmltext = event;
|
||||
}
|
||||
@@ -134,7 +135,7 @@ public class Q10575_LetsGoFishing extends Quest
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.hasPremiumStatus()) ? "34138-01.htm" : "34138-99.html";
|
||||
htmltext = "34138-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Could it be that you'd like to learn about attributes, but don't know where to start or don't have the necessary equipments? Boy, do I have a great opportunity for you. <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-02.htm">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
The opportunity that I can give you is quite simple. If you want, I can give you the items to grant an attribute. All you need to do is actually grant the attribute to a weapon. A good opportunity, don't you think? If you agree, I'll get started.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-03.htm">"Yes, indeed.."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
I'll assume that means you would like to experience granting an attribute. Let me explain the basic theory briefly first. You have to have an <font color="LEVEL">Attribute Stone</font> or an <font color="LEVEL">Attribute Crystal</font>.<br>
|
||||
If you don't have these items, you'll have to get them first. There are many ways to obtain the items, but I recommend using the <font color="LEVEL">Auction House</font>. Let me explain.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-04.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,7 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
The Auction House allows you to sell or buy items through the Auction House NPCs. Therefore, if you use this function, you don't need to be logged into the game when you want to trade the items.<br>
|
||||
To use this function, find the <font color="LEVEL">Auction House Manager</font> in town. You can open the map to check the location, so it shouldn't be difficult.<br>
|
||||
A brokerage fee will be deducted after a listed item has been sold.<br>
|
||||
You can search for items but make sure that the quantity is correct, or you may accidentally buy more than you intended. Anyway, if you get the materials using this method, you'll be ready for leaming about granting attributes.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-05.html">"Alright."</button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Now, we have all the necessary items, we can learn about what an <font color="LEVEL">attribute</font> is. There are <font color="LEVEL">Elemental Attribute</font> and <font color="LEVEL">Characteristic Attribute. Fire, Water, Earth, and Air</font> are Elemental Attributes, and <font color="LEVEL">Holy Attacks</font> and <font color="LEVEL">Dark Attacks</font> are Characteristic Attributes.There are some,conflicting attributes,such as, <font color="LEVEL">Fire and Water, earth and Air, Holy and Dark</font>. The key to understanding attributes is to understand conflicting attributes.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-06.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,6 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Now, let me tell you about how to grant <font color="LEVEL">attributes</font>! First of all, remember that an attribute can only be applied to items with <font color="LEVEL">S-grade and above</font>. The method is the same with Enchantment. <font color="LEVEL">Double-click</font> the <font color="LEVEL">Attribute Crystal</font> or <font color="LEVEL">Attribute Stone</font>.<br>
|
||||
Only <font color="LEVEL">one</font> attribute can be applied to a Weapon and when you grant an attribute, additional attribute damage can be applied too. Corresponding to the attribute of the monster that you are fighting, the attribute damage can increase or decrease.<br>
|
||||
On the other hand, you can apply as many as <font color="LEVEL">three</font> attributes to <font color="LEVEL">armor</font>. However, you can't grant conflicting attributes to armor. If you apply an attribute to armor, it will gain the resistance to that attribute. The higher the monsters level is, there is a higher probability it will attack with an attribute. It'll be helpful to know the monsters attribute so you can prepare accordingly. <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-07.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Regarding the attributes, go to the Attribute Master NPCs in the Town of Aden or Town of Rune. They release the attributes applied to weapons and armor and can also exchange the Attribute Stones. Of course, there is a fee. In addition, they also sell potions that can enhance the attribute for a short period.<br>
|
||||
Now, let's practice. It won't be difficult. I'll give you a <font color="LEVEL">Attribute Practice Long Sword</font>. So, using the <font color="LEVEL">Practice Attribute Stone</font>, apply an attribute. Are you ready?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-08.html">"I'm ready."</button>
|
||||
</body></html>
|
@@ -0,0 +1,10 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Then, choose one. What attribute do you want to apply to the <font color="LEVEL">Attribute Practice Long Sword</font> that I'll give you?<br>
|
||||
Here, choose an Attribute Stone.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-fire.html">"Attribute Practice Fire Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-water.html">"Attribute Practice Water Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-earth.html">"Attribute Practice Earth Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-wind.html">"Attribute Practice Wind Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-holy.html">"Attribute Practice Holy Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-dark.html">"Attribute Practice Dark Stone."</button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
It looks like you're finished.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-10.html">"I am."</button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Good,then the mission is done. I hope you'll utilize what you learned from me!<br>
|
||||
</body></html>
|
@@ -0,0 +1,7 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
You're not done with the attribution mission yet.<br>
|
||||
What's up? Why are you here?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-12.html">"I want to learn about the Auction House again."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-13.html">"I want to learn about the attributes again."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-14.html">"No particular reason."</button>
|
||||
</body></html>
|
@@ -0,0 +1,9 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
The Auction House allows you to sell or buy items through the Auction House NPCs. Therefore, if you use this function, you don't need to be logged into the game when you want to trade the items.<br>
|
||||
To use this function, find the <font color="LEVEL">Auction House Manager</font> in town. You can open the map to check the location, so it shouldn't be difficult.<br>
|
||||
A brokerage fee will be deducted after a listed item has been sold.<br>
|
||||
You can search for items but make sure that the quantity is correct, or you may accidentally buy more than you intended. Anyway, if you get the materials using this method, you'll be ready for leaming about granting attributes.<br>
|
||||
Is there anything else you need?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-13.html">"I want to learn about the attributes again."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-14.html">"Nope, that's all."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
You want to hear about attributes again? there are <font color="LEVEL">Elemental Attribute</font> and <font color="LEVEL">Characteristic Attribute</font>. <font color="LEVEL">Fire, Water, Earth, and Air</font> are Elemental Attributes, and <font color="LEVEL">Holy Attacks</font> and <font color="LEVEL">Dark Attacks</font> are Characteristic Attributes. When there is no specific attribute, it is called <font color="LEVEL">Non-attribute</font>.<br>
|
||||
There are some conflicting attributes, such as, <font color="LEVEL">Fire and Water, Earth and Air, Holy and Dark</font>. The key to understanding attributes is to understand conflicting attributes.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-15.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
OK, do the attribute practice again. Use the <font color="LEVEL">Attribute Practice Fire Stone</font> to grant an attribute to the<font color="LEVEL">Attribute Practice Long Sword</font>.<br>
|
||||
</body></html>
|
@@ -0,0 +1,6 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Now, for granting <font color="LEVEL">attributes</font>! First of all, remember that an attribute can only be applied to items with <font color="LEVEL">S-grade and above</font>. The method is the same with Enchantment <font color="LEVEL">Double-click</font> the <font color="LEVEL">Attribute Stone</font> or <font color="LEVEL">Attribute Crystal</font>.<br>
|
||||
Only <font color="LEVEL">one</font> attribute can be applied to a <font color="LEVEL">Weapon</font> and when you grant an attribute, additional attribute damage can be applied too. Corresponding to the attribute of the monster that you are fighting, the attribute damage can increase or decrease.<br>
|
||||
On the other hand, you can apply as many as <font color="LEVEL">three</font> attributes to <font color="LEVEL">armor</font>. However, you can't grant conflicting attributes to armor. If you apply an attribute to armor, it will gain the resistance to that attribute. The higher the monsters level is, there is a higher probability it will attack with an attribute. It'll be helpful to know the monsters â€β€<CEB2> attribute so you can prepare accordingly.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-16.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,6 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Regarding the attributes, go to the Attribute Master NPCs in the Town of Aden or Town of Rune. They release the attributes applied to weapons and armor and can also exchange the Attribute Stones. Of course, there is a fee. In addition, they also sell potions that can enhance the attribute for a short period.<br>
|
||||
That's all for my attribute lesson. Anything else you need?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-12.html">"I want to learn about the Auction House again."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-14.html">"Nope, that's all."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Dark Stone! This practice is going to be on Dark!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Earth Stone! This practice is going to be on Earth!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Fire Stone! This practice is going to be on fire!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Holy Stone! This practice is going to be on Holy!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Water Stone! This practice is going to be on Water!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Wind Stone! This practice is going to be on Wind!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,248 @@
|
||||
/*
|
||||
* 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.Q10579_ContainingTheAttributePower;
|
||||
|
||||
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.OnItemAttributeAdd;
|
||||
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;
|
||||
|
||||
/**
|
||||
* Containing the Attribute Power (10579)
|
||||
* @URL https://l2wiki.com/Containing_the_Attribute_Power
|
||||
* @author Werum / NightBR
|
||||
*/
|
||||
public class Q10579_ContainingTheAttributePower extends Quest
|
||||
{
|
||||
// NPC
|
||||
private static final int FERRIS = 30847;
|
||||
// Items
|
||||
// TODO: Need to add some of the Stones that are not present in the current client
|
||||
private static final int ATTRIBUTE_PRACTICE_LONG_SWORD = 48168;
|
||||
private static final int ATTRIBUTE_PRACTICE_FIRE_STONE = 48169;
|
||||
private static final int ATTRIBUTE_PRACTICE_WATER_STONE = 48169; // FIXME: Does not exist.
|
||||
private static final int ATTRIBUTE_PRACTICE_EARTH_STONE = 48169; // FIXME: Does not exist.
|
||||
private static final int ATTRIBUTE_PRACTICE_WIND_STONE = 48169; // FIXME: Does not exist.
|
||||
private static final int ATTRIBUTE_PRACTICE_HOLY_STONE = 48169; // FIXME: Does not exist.
|
||||
private static final int ATTRIBUTE_PRACTICE_DARK_STONE = 48169; // FIXME: Does not exist.
|
||||
// Rewards
|
||||
private static final int XP = 597699960;
|
||||
private static final int SP = 597690;
|
||||
private static final int CERTIFICATE_FROM_FERRIS = 48177;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
|
||||
public Q10579_ContainingTheAttributePower()
|
||||
{
|
||||
super(10579);
|
||||
addStartNpc(FERRIS);
|
||||
addTalkId(FERRIS);
|
||||
addCondMinLevel(MIN_LEVEL, "noLevel.html");
|
||||
registerQuestItems(ATTRIBUTE_PRACTICE_LONG_SWORD, ATTRIBUTE_PRACTICE_FIRE_STONE, ATTRIBUTE_PRACTICE_WATER_STONE, ATTRIBUTE_PRACTICE_EARTH_STONE, ATTRIBUTE_PRACTICE_WIND_STONE, ATTRIBUTE_PRACTICE_HOLY_STONE, ATTRIBUTE_PRACTICE_DARK_STONE);
|
||||
addCondStartedQuest(Q10566_BestChoice.class.getSimpleName(), "34138-99.html");
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_ITEM_ATTRIBUTE_ADD, (OnItemAttributeAdd event) -> OnItemAttributeAdd(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 "30847-02.htm":
|
||||
case "30847-05.html":
|
||||
case "30847-06.html":
|
||||
case "30847-07.html":
|
||||
case "30847-13.html":
|
||||
case "30847-15.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-03.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-04.html":
|
||||
{
|
||||
// show Service/Help/Auction House page
|
||||
player.sendPacket(new ExTutorialShowId(58));
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-08.html":
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-12.html":
|
||||
{
|
||||
// show Service/Help/Auction House page
|
||||
player.sendPacket(new ExTutorialShowId(58));
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-16.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-fire.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_FIRE_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-water.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_WATER_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-earth.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_EARTH_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-wind.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_WIND_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-holy.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_HOLY_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-dark.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_DARK_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-10.html":
|
||||
{
|
||||
addExpAndSp(player, XP, SP);
|
||||
giveItems(player, CERTIFICATE_FROM_FERRIS, 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 = "30847-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "30847-04.html";
|
||||
}
|
||||
else if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "30847-08.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = (qs.isCond(4)) ? "30847-09.html" : "30847-11.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
public void OnItemAttributeAdd(OnItemAttributeAdd event)
|
||||
{
|
||||
final PlayerInstance player = event.getPlayer();
|
||||
if ((player == null) || (event.getItem().getId() != ATTRIBUTE_PRACTICE_LONG_SWORD))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
// Check weapon has elemental enchant to complete the quest
|
||||
if ((qs != null) && qs.isCond(3) && (player.getInventory().getItemByItemId(ATTRIBUTE_PRACTICE_LONG_SWORD).hasAttributes()))
|
||||
{
|
||||
qs.setCond(4, true);
|
||||
}
|
||||
}
|
||||
}
|
@@ -310,6 +310,7 @@ 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.Q10579_ContainingTheAttributePower.Q10579_ContainingTheAttributePower;
|
||||
import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension;
|
||||
import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction;
|
||||
import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity;
|
||||
@@ -827,7 +828,7 @@ public class QuestMasterHandler
|
||||
Q10576_GlitteringWeapons.class, // TODO: Not done.
|
||||
Q10577_TemperARustingBlade.class, // TODO: Not done.
|
||||
Q10578_TheSoulOfASword.class, // TODO: Not done.
|
||||
Q10579_ContainingTheAttributePower.class, // TODO: Not done.
|
||||
Q10579_ContainingTheAttributePower.class,
|
||||
Q10580_SpecialMissionDefeatSpezion.class, // TODO: Not done.
|
||||
Q10594_FergasonsScheme.class, // TODO: Not done.
|
||||
Q10595_TheDimensionalWarpPart8.class, // TODO: Not done.
|
||||
|
@@ -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 Q10579_ContainingTheAttributePower extends Quest
|
||||
{
|
||||
private static final int START_NPC = 30847;
|
||||
|
||||
public Q10579_ContainingTheAttributePower()
|
||||
{
|
||||
super(10579);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
|
||||
}
|
||||
}
|
@@ -894,16 +894,20 @@
|
||||
<!-- A crude weapon you received to practice applying attributes on a weapon. It is practically worthless in combat. -->
|
||||
<set name="icon" val="icon.weapon_long_sword_i00" />
|
||||
<set name="default_action" val="EQUIP" />
|
||||
<set name="bodypart" val="rhand" />
|
||||
<set name="weapon_type" val="SWORD" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
<set name="crystal_type" val="R" />
|
||||
<set name="material" val="FINE_STEEL" />
|
||||
<set name="weight" val="1420" />
|
||||
<set name="enchant_enabled" val="1" />
|
||||
<set name="element_enabled" val="true" />
|
||||
<set name="is_tradable" val="false" />
|
||||
<set name="is_dropable" val="false" />
|
||||
<set name="is_destroyable" val="false" />
|
||||
<set name="is_depositable" val="false" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="commissionItemType" val="TWO_HAND_SWORD" />
|
||||
<stats>
|
||||
<stat type="pAtk">24</stat>
|
||||
<stat type="mAtk">17</stat>
|
||||
@@ -917,6 +921,8 @@
|
||||
<!-- Fire elemental attack attribute increases by 5 when bestowed on a weapon. Water Attribute Resistance attribute increases by 6 when bestowed on an armor. Attribute Stones can be used up to attribute level 3. Additionally, a maximum of three types of elemental defense attribute can be bestowed, and one type of elemental attack attribute. Opposite attributes cannot be bestowed together. -->
|
||||
<set name="icon" val="icon.etc_fire_stone_i00" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="etcitem_type" val="ENCHT_ATTR" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="1" />
|
||||
<set name="is_tradable" val="false" />
|
||||
@@ -925,6 +931,11 @@
|
||||
<set name="is_depositable" val="false" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="handler" val="EnchantAttribute" />
|
||||
<set name="commissionItemType" val="ATTRIBUTE_STONE" />
|
||||
<skills>
|
||||
<skill id="2329" level="1" /> <!-- Fire Stone -->
|
||||
</skills>
|
||||
</item>
|
||||
<item id="48170" name="Enhancement Practice Long Sword" type="Weapon">
|
||||
<!-- A training sword you received from Blacksmith Rupio to practice weapon enchanting. It is worthless as a weapon. Take it to Rupio after enchanting it to the enchantment level he asked for. -->
|
||||
|
@@ -100,6 +100,8 @@ public final class Elementals
|
||||
|
||||
public enum ElementalItems
|
||||
{
|
||||
attributePracticeFireStone(FIRE, 48169, ElementalItemType.Stone, 0),
|
||||
|
||||
fireStone(FIRE, 9546, ElementalItemType.Stone, 0),
|
||||
waterStone(WATER, 9547, ElementalItemType.Stone, 0),
|
||||
windStone(WIND, 9549, ElementalItemType.Stone, 0),
|
||||
|
@@ -120,6 +120,7 @@ import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy;
|
||||
import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter;
|
||||
import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceLeave;
|
||||
import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceStatusChange;
|
||||
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.OnItemTalk;
|
||||
@@ -181,6 +182,7 @@ public enum EventType
|
||||
ON_ITEM_BYPASS_EVENT(OnItemBypassEvent.class, void.class),
|
||||
ON_ITEM_CREATE(OnItemCreate.class, void.class),
|
||||
ON_ITEM_TALK(OnItemTalk.class, void.class),
|
||||
ON_ITEM_ATTRIBUTE_ADD(OnItemAttributeAdd.class, void.class),
|
||||
|
||||
// NPC events
|
||||
ON_NPC_CAN_BE_SEEN(OnNpcCanBeSeen.class, void.class, TerminateReturn.class),
|
||||
|
@@ -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 OnItemAttributeAdd implements IBaseEvent
|
||||
{
|
||||
private final PlayerInstance _player;
|
||||
private final ItemInstance _item;
|
||||
|
||||
public OnItemAttributeAdd(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_ATTRIBUTE_ADD;
|
||||
}
|
||||
}
|
@@ -67,6 +67,7 @@ import org.l2jmobius.gameserver.model.events.EventDispatcher;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop;
|
||||
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.OnItemTalk;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
@@ -1215,6 +1216,9 @@ public final class ItemInstance extends WorldObject
|
||||
_elementals.put(holder.getType(), holder);
|
||||
}
|
||||
}
|
||||
|
||||
// Notify to Scripts
|
||||
EventDispatcher.getInstance().notifyEventAsync(new OnItemAttributeAdd(getActingPlayer(), this));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -104,6 +104,14 @@ public class RequestExEnchantItemAttribute implements IClientIncomingPacket
|
||||
return;
|
||||
}
|
||||
|
||||
// Quest Q10579_ContainingTheAttributePower check.
|
||||
if ((item.getItem().getId() == 48168) && (stone.getItem().getId() != 48169))
|
||||
{
|
||||
player.removeRequest(request.getClass());
|
||||
client.sendPacket(SystemMessageId.ATTRIBUTE_ITEM_USAGE_HAS_BEEN_CANCELLED);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!item.isElementable())
|
||||
{
|
||||
client.sendPacket(SystemMessageId.ELEMENTAL_POWER_ENHANCER_USAGE_REQUIREMENT_IS_NOT_SUFFICIENT);
|
||||
|
@@ -204,7 +204,6 @@
|
||||
10576 Glittering Weapons
|
||||
10577 Temper a Rusting Blade
|
||||
10578 The Soul of a Sword
|
||||
10579 Containing the Attribute Power
|
||||
10580 Special Mission: Defeat Spezion
|
||||
10588 Special Mission: Defeat Baylor
|
||||
10594 Fergason's Scheme
|
||||
|
@@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.quest.State;
|
||||
/**
|
||||
* Best Choice (10566)
|
||||
* @URL https://l2wiki.com/Best_Choice
|
||||
* @author Werum / Standardization by NightBR
|
||||
* @author Werum / NightBR
|
||||
*/
|
||||
public class Q10566_BestChoice extends Quest
|
||||
{
|
||||
@@ -40,8 +40,9 @@ public class Q10566_BestChoice extends Quest
|
||||
private static final int CERTIFICATE_FLUTTER = 48175;
|
||||
private static final int CERTIFICATE_VINCENZ = 48176;
|
||||
private static final int CERTIFICATE_FERRIS = 48177;
|
||||
private static final int HERPHAHS_SUPPORT_BOX = 48250;
|
||||
private static final int HERPHAHS_MISSION_LIST = 48172;
|
||||
// Rewards
|
||||
private static final int HERPHAHS_SUPPORT_BOX = 48250;
|
||||
|
||||
public Q10566_BestChoice()
|
||||
{
|
||||
@@ -102,13 +103,16 @@ public class Q10566_BestChoice extends Quest
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
boolean hasItems = hasQuestItems(player, CERTIFICATE_SANTIAGO, CERTIFICATE_RUPIO, CERTIFICATE_FLUTTER, CERTIFICATE_VINCENZ, CERTIFICATE_FERRIS);
|
||||
// Chck if player has the necessary quest items to complete the quest
|
||||
if (hasItems)
|
||||
// Check if player has the necessary quest items to complete the quest
|
||||
if (hasQuestItems(player, CERTIFICATE_SANTIAGO, CERTIFICATE_RUPIO, CERTIFICATE_FLUTTER, CERTIFICATE_VINCENZ, CERTIFICATE_FERRIS))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
htmltext = "34362-06.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "34362-05.html";
|
||||
}
|
||||
htmltext = (hasItems) ? "34362-06.html" : "34362-05.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<html><body>Fishing Guild Leader Santiago:<br>
|
||||
Hey, let nature take its course. It's not good for us to go against it.<br>
|
||||
(Only Premium characters who have the quest "Best Choice" in progress, can play this quest.)
|
||||
(Only characters who have the quest "Best Choice" in progress, can play this quest.)
|
||||
</body></html>
|
@@ -51,6 +51,10 @@ public class Q10575_LetsGoFishing extends Quest
|
||||
private static final int PRACTICE_BAIT = 46737;
|
||||
private static final int PRACTICE_FISH = 46736;
|
||||
private static final int PRACTICE_FISHING_ROD = 46738;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final String COUNT_VAR = "FishWinCount";
|
||||
private static final int NPCSTRING_ID = NpcStringId.CATCH_PRACTICE_FISH.getId();
|
||||
// Rewards
|
||||
private static final int XP = 597699960;
|
||||
private static final int SP = 597690;
|
||||
@@ -58,10 +62,6 @@ public class Q10575_LetsGoFishing extends Quest
|
||||
private static final int FISHING_SHOT = 38154;
|
||||
private static final int REWARD_FISHING_ROD_PACK = 46739;
|
||||
private static final int BAIT = 48537;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
private static final String COUNT_VAR = "FishWinCount";
|
||||
private static final int NPCSTRING_ID = NpcStringId.CATCH_PRACTICE_FISH.getId();
|
||||
|
||||
public Q10575_LetsGoFishing()
|
||||
{
|
||||
@@ -115,6 +115,7 @@ public class Q10575_LetsGoFishing extends Quest
|
||||
giveItems(player, FISHING_SHOT, 60);
|
||||
giveItems(player, REWARD_FISHING_ROD_PACK, 1);
|
||||
giveItems(player, BAIT, 60);
|
||||
qs.unset(COUNT_VAR);
|
||||
qs.exitQuest(QuestType.ONE_TIME, true);
|
||||
htmltext = event;
|
||||
}
|
||||
@@ -134,7 +135,7 @@ public class Q10575_LetsGoFishing extends Quest
|
||||
{
|
||||
case State.CREATED:
|
||||
{
|
||||
htmltext = (player.hasPremiumStatus()) ? "34138-01.htm" : "34138-99.html";
|
||||
htmltext = "34138-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Could it be that you'd like to learn about attributes, but don't know where to start or don't have the necessary equipments? Boy, do I have a great opportunity for you. <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-02.htm">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
The opportunity that I can give you is quite simple. If you want, I can give you the items to grant an attribute. All you need to do is actually grant the attribute to a weapon. A good opportunity, don't you think? If you agree, I'll get started.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-03.htm">"Yes, indeed.."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
I'll assume that means you would like to experience granting an attribute. Let me explain the basic theory briefly first. You have to have an <font color="LEVEL">Attribute Stone</font> or an <font color="LEVEL">Attribute Crystal</font>.<br>
|
||||
If you don't have these items, you'll have to get them first. There are many ways to obtain the items, but I recommend using the <font color="LEVEL">Auction House</font>. Let me explain.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-04.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,7 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
The Auction House allows you to sell or buy items through the Auction House NPCs. Therefore, if you use this function, you don't need to be logged into the game when you want to trade the items.<br>
|
||||
To use this function, find the <font color="LEVEL">Auction House Manager</font> in town. You can open the map to check the location, so it shouldn't be difficult.<br>
|
||||
A brokerage fee will be deducted after a listed item has been sold.<br>
|
||||
You can search for items but make sure that the quantity is correct, or you may accidentally buy more than you intended. Anyway, if you get the materials using this method, you'll be ready for leaming about granting attributes.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-05.html">"Alright."</button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Now, we have all the necessary items, we can learn about what an <font color="LEVEL">attribute</font> is. There are <font color="LEVEL">Elemental Attribute</font> and <font color="LEVEL">Characteristic Attribute. Fire, Water, Earth, and Air</font> are Elemental Attributes, and <font color="LEVEL">Holy Attacks</font> and <font color="LEVEL">Dark Attacks</font> are Characteristic Attributes.There are some,conflicting attributes,such as, <font color="LEVEL">Fire and Water, earth and Air, Holy and Dark</font>. The key to understanding attributes is to understand conflicting attributes.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-06.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,6 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Now, let me tell you about how to grant <font color="LEVEL">attributes</font>! First of all, remember that an attribute can only be applied to items with <font color="LEVEL">S-grade and above</font>. The method is the same with Enchantment. <font color="LEVEL">Double-click</font> the <font color="LEVEL">Attribute Crystal</font> or <font color="LEVEL">Attribute Stone</font>.<br>
|
||||
Only <font color="LEVEL">one</font> attribute can be applied to a Weapon and when you grant an attribute, additional attribute damage can be applied too. Corresponding to the attribute of the monster that you are fighting, the attribute damage can increase or decrease.<br>
|
||||
On the other hand, you can apply as many as <font color="LEVEL">three</font> attributes to <font color="LEVEL">armor</font>. However, you can't grant conflicting attributes to armor. If you apply an attribute to armor, it will gain the resistance to that attribute. The higher the monsters level is, there is a higher probability it will attack with an attribute. It'll be helpful to know the monsters attribute so you can prepare accordingly. <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-07.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Regarding the attributes, go to the Attribute Master NPCs in the Town of Aden or Town of Rune. They release the attributes applied to weapons and armor and can also exchange the Attribute Stones. Of course, there is a fee. In addition, they also sell potions that can enhance the attribute for a short period.<br>
|
||||
Now, let's practice. It won't be difficult. I'll give you a <font color="LEVEL">Attribute Practice Long Sword</font>. So, using the <font color="LEVEL">Practice Attribute Stone</font>, apply an attribute. Are you ready?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-08.html">"I'm ready."</button>
|
||||
</body></html>
|
@@ -0,0 +1,10 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Then, choose one. What attribute do you want to apply to the <font color="LEVEL">Attribute Practice Long Sword</font> that I'll give you?<br>
|
||||
Here, choose an Attribute Stone.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-fire.html">"Attribute Practice Fire Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-water.html">"Attribute Practice Water Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-earth.html">"Attribute Practice Earth Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-wind.html">"Attribute Practice Wind Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-holy.html">"Attribute Practice Holy Stone."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-dark.html">"Attribute Practice Dark Stone."</button>
|
||||
</body></html>
|
@@ -0,0 +1,4 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
It looks like you're finished.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-10.html">"I am."</button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Good,then the mission is done. I hope you'll utilize what you learned from me!<br>
|
||||
</body></html>
|
@@ -0,0 +1,7 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
You're not done with the attribution mission yet.<br>
|
||||
What's up? Why are you here?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-12.html">"I want to learn about the Auction House again."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-13.html">"I want to learn about the attributes again."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-14.html">"No particular reason."</button>
|
||||
</body></html>
|
@@ -0,0 +1,9 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
The Auction House allows you to sell or buy items through the Auction House NPCs. Therefore, if you use this function, you don't need to be logged into the game when you want to trade the items.<br>
|
||||
To use this function, find the <font color="LEVEL">Auction House Manager</font> in town. You can open the map to check the location, so it shouldn't be difficult.<br>
|
||||
A brokerage fee will be deducted after a listed item has been sold.<br>
|
||||
You can search for items but make sure that the quantity is correct, or you may accidentally buy more than you intended. Anyway, if you get the materials using this method, you'll be ready for leaming about granting attributes.<br>
|
||||
Is there anything else you need?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-13.html">"I want to learn about the attributes again."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-14.html">"Nope, that's all."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
You want to hear about attributes again? there are <font color="LEVEL">Elemental Attribute</font> and <font color="LEVEL">Characteristic Attribute</font>. <font color="LEVEL">Fire, Water, Earth, and Air</font> are Elemental Attributes, and <font color="LEVEL">Holy Attacks</font> and <font color="LEVEL">Dark Attacks</font> are Characteristic Attributes. When there is no specific attribute, it is called <font color="LEVEL">Non-attribute</font>.<br>
|
||||
There are some conflicting attributes, such as, <font color="LEVEL">Fire and Water, Earth and Air, Holy and Dark</font>. The key to understanding attributes is to understand conflicting attributes.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-15.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,3 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
OK, do the attribute practice again. Use the <font color="LEVEL">Attribute Practice Fire Stone</font> to grant an attribute to the<font color="LEVEL">Attribute Practice Long Sword</font>.<br>
|
||||
</body></html>
|
@@ -0,0 +1,6 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Now, for granting <font color="LEVEL">attributes</font>! First of all, remember that an attribute can only be applied to items with <font color="LEVEL">S-grade and above</font>. The method is the same with Enchantment <font color="LEVEL">Double-click</font> the <font color="LEVEL">Attribute Stone</font> or <font color="LEVEL">Attribute Crystal</font>.<br>
|
||||
Only <font color="LEVEL">one</font> attribute can be applied to a <font color="LEVEL">Weapon</font> and when you grant an attribute, additional attribute damage can be applied too. Corresponding to the attribute of the monster that you are fighting, the attribute damage can increase or decrease.<br>
|
||||
On the other hand, you can apply as many as <font color="LEVEL">three</font> attributes to <font color="LEVEL">armor</font>. However, you can't grant conflicting attributes to armor. If you apply an attribute to armor, it will gain the resistance to that attribute. The higher the monsters level is, there is a higher probability it will attack with an attribute. It'll be helpful to know the monsters — attribute so you can prepare accordingly.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-16.html">"Go on."</button>
|
||||
</body></html>
|
@@ -0,0 +1,6 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Regarding the attributes, go to the Attribute Master NPCs in the Town of Aden or Town of Rune. They release the attributes applied to weapons and armor and can also exchange the Attribute Stones. Of course, there is a fee. In addition, they also sell potions that can enhance the attribute for a short period.<br>
|
||||
That's all for my attribute lesson. Anything else you need?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-12.html">"I want to learn about the Auction House again."</button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10579_ContainingTheAttributePower 30847-14.html">"Nope, that's all."</button>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Dark Stone! This practice is going to be on Dark!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Earth Stone! This practice is going to be on Earth!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Fire Stone! This practice is going to be on fire!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Holy Stone! This practice is going to be on Holy!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Water Stone! This practice is going to be on Water!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,5 @@
|
||||
<html><body>Head Blacksmith Ferris:<br>
|
||||
Oh, you selected a Wind Stone! This practice is going to be on Wind!<br>
|
||||
Grant an attribute to the practice weapon that I gave you. I gave you spare ones to prepare in case of failure. If you're unlucky and fail even though you used all the Practice Attribute Stones, you'll have to buy Attribute Stones to complete the mission.<br>
|
||||
You can use other Attribute Stones that you already had or you can grant the attribute to other equipment. As long as you experience the attribute, anything goes.<br>
|
||||
</body></html>
|
@@ -0,0 +1,248 @@
|
||||
/*
|
||||
* 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.Q10579_ContainingTheAttributePower;
|
||||
|
||||
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.OnItemAttributeAdd;
|
||||
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;
|
||||
|
||||
/**
|
||||
* Containing the Attribute Power (10579)
|
||||
* @URL https://l2wiki.com/Containing_the_Attribute_Power
|
||||
* @author Werum / NightBR
|
||||
*/
|
||||
public class Q10579_ContainingTheAttributePower extends Quest
|
||||
{
|
||||
// NPC
|
||||
private static final int FERRIS = 30847;
|
||||
// Items
|
||||
// TODO: Need to add some of the Stones that are not present in the current client
|
||||
private static final int ATTRIBUTE_PRACTICE_LONG_SWORD = 48168;
|
||||
private static final int ATTRIBUTE_PRACTICE_FIRE_STONE = 48169;
|
||||
private static final int ATTRIBUTE_PRACTICE_WATER_STONE = 48169; // FIXME: Does not exist.
|
||||
private static final int ATTRIBUTE_PRACTICE_EARTH_STONE = 48169; // FIXME: Does not exist.
|
||||
private static final int ATTRIBUTE_PRACTICE_WIND_STONE = 48169; // FIXME: Does not exist.
|
||||
private static final int ATTRIBUTE_PRACTICE_HOLY_STONE = 48169; // FIXME: Does not exist.
|
||||
private static final int ATTRIBUTE_PRACTICE_DARK_STONE = 48169; // FIXME: Does not exist.
|
||||
// Rewards
|
||||
private static final int XP = 597699960;
|
||||
private static final int SP = 597690;
|
||||
private static final int CERTIFICATE_FROM_FERRIS = 48177;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 95;
|
||||
|
||||
public Q10579_ContainingTheAttributePower()
|
||||
{
|
||||
super(10579);
|
||||
addStartNpc(FERRIS);
|
||||
addTalkId(FERRIS);
|
||||
addCondMinLevel(MIN_LEVEL, "noLevel.html");
|
||||
registerQuestItems(ATTRIBUTE_PRACTICE_LONG_SWORD, ATTRIBUTE_PRACTICE_FIRE_STONE, ATTRIBUTE_PRACTICE_WATER_STONE, ATTRIBUTE_PRACTICE_EARTH_STONE, ATTRIBUTE_PRACTICE_WIND_STONE, ATTRIBUTE_PRACTICE_HOLY_STONE, ATTRIBUTE_PRACTICE_DARK_STONE);
|
||||
addCondStartedQuest(Q10566_BestChoice.class.getSimpleName(), "34138-99.html");
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_ITEM_ATTRIBUTE_ADD, (OnItemAttributeAdd event) -> OnItemAttributeAdd(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 "30847-02.htm":
|
||||
case "30847-05.html":
|
||||
case "30847-06.html":
|
||||
case "30847-07.html":
|
||||
case "30847-13.html":
|
||||
case "30847-15.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-03.htm":
|
||||
{
|
||||
qs.startQuest();
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-04.html":
|
||||
{
|
||||
// show Service/Help/Auction House page
|
||||
player.sendPacket(new ExTutorialShowId(58));
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-08.html":
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-12.html":
|
||||
{
|
||||
// show Service/Help/Auction House page
|
||||
player.sendPacket(new ExTutorialShowId(58));
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-16.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-fire.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_FIRE_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-water.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_WATER_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-earth.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_EARTH_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-wind.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_WIND_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-holy.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_HOLY_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-dark.html":
|
||||
{
|
||||
// show Service/Help/Applying Elemental Attribute page
|
||||
player.sendPacket(new ExTutorialShowId(41));
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_LONG_SWORD, 1);
|
||||
giveItems(player, ATTRIBUTE_PRACTICE_DARK_STONE, 3);
|
||||
qs.setCond(3, true);
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "30847-10.html":
|
||||
{
|
||||
addExpAndSp(player, XP, SP);
|
||||
giveItems(player, CERTIFICATE_FROM_FERRIS, 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 = "30847-01.htm";
|
||||
break;
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (qs.isCond(1))
|
||||
{
|
||||
htmltext = "30847-04.html";
|
||||
}
|
||||
else if (qs.isCond(2))
|
||||
{
|
||||
htmltext = "30847-08.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = (qs.isCond(4)) ? "30847-09.html" : "30847-11.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case State.COMPLETED:
|
||||
{
|
||||
htmltext = getAlreadyCompletedMsg(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
public void OnItemAttributeAdd(OnItemAttributeAdd event)
|
||||
{
|
||||
final PlayerInstance player = event.getPlayer();
|
||||
if ((player == null) || (event.getItem().getId() != ATTRIBUTE_PRACTICE_LONG_SWORD))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
// Check weapon has elemental enchant to complete the quest
|
||||
if ((qs != null) && qs.isCond(3) && (player.getInventory().getItemByItemId(ATTRIBUTE_PRACTICE_LONG_SWORD).hasAttributes()))
|
||||
{
|
||||
qs.setCond(4, true);
|
||||
}
|
||||
}
|
||||
}
|
@@ -308,6 +308,7 @@ 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.Q10579_ContainingTheAttributePower.Q10579_ContainingTheAttributePower;
|
||||
import quests.Q10658_MakkumInTheDimension.Q10658_MakkumInTheDimension;
|
||||
import quests.Q10701_TheRoadToDestruction.Q10701_TheRoadToDestruction;
|
||||
import quests.Q10702_TheRoadToInfinity.Q10702_TheRoadToInfinity;
|
||||
@@ -846,7 +847,7 @@ public class QuestMasterHandler
|
||||
Q10576_GlitteringWeapons.class, // TODO: Not done.
|
||||
Q10577_TemperARustingBlade.class, // TODO: Not done.
|
||||
Q10578_TheSoulOfASword.class, // TODO: Not done.
|
||||
Q10579_ContainingTheAttributePower.class, // TODO: Not done.
|
||||
Q10579_ContainingTheAttributePower.class,
|
||||
Q10580_SpecialMissionDefeatSpezion.class, // TODO: Not done.
|
||||
Q10588_SpecialMissionDefeatBaylor.class, // TODO: Not done.
|
||||
Q10594_FergasonsScheme.class, // TODO: Not done.
|
||||
|
@@ -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 Q10579_ContainingTheAttributePower extends Quest
|
||||
{
|
||||
private static final int START_NPC = 30847;
|
||||
|
||||
public Q10579_ContainingTheAttributePower()
|
||||
{
|
||||
super(10579);
|
||||
addStartNpc(START_NPC);
|
||||
addTalkId(START_NPC);
|
||||
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
|
||||
}
|
||||
}
|
@@ -894,16 +894,20 @@
|
||||
<!-- A crude weapon you received to practice applying attributes on a weapon. It is practically worthless in combat. -->
|
||||
<set name="icon" val="icon.weapon_long_sword_i00" />
|
||||
<set name="default_action" val="EQUIP" />
|
||||
<set name="bodypart" val="rhand" />
|
||||
<set name="weapon_type" val="SWORD" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
<set name="crystal_type" val="R" />
|
||||
<set name="material" val="FINE_STEEL" />
|
||||
<set name="weight" val="1420" />
|
||||
<set name="enchant_enabled" val="1" />
|
||||
<set name="element_enabled" val="true" />
|
||||
<set name="is_tradable" val="false" />
|
||||
<set name="is_dropable" val="false" />
|
||||
<set name="is_destroyable" val="false" />
|
||||
<set name="is_depositable" val="false" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="commissionItemType" val="TWO_HAND_SWORD" />
|
||||
<stats>
|
||||
<stat type="pAtk">24</stat>
|
||||
<stat type="mAtk">17</stat>
|
||||
@@ -917,6 +921,8 @@
|
||||
<!-- Fire elemental attack attribute increases by 5 when bestowed on a weapon. Water elemental defense attribute increases by 6 when bestowed on an armor. Attribute Stones can be used up to attribute level 3. Additionally, a maximum of three types of elemental defense attribute can be bestowed, and one type of elemental attack attribute. Opposite attributes cannot be bestowed together. -->
|
||||
<set name="icon" val="icon.etc_fire_stone_i00" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="etcitem_type" val="ENCHT_ATTR" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="1" />
|
||||
<set name="is_tradable" val="false" />
|
||||
@@ -925,6 +931,11 @@
|
||||
<set name="is_depositable" val="false" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="handler" val="EnchantAttribute" />
|
||||
<set name="commissionItemType" val="ATTRIBUTE_STONE" />
|
||||
<skills>
|
||||
<skill id="2329" level="1" /> <!-- Fire Stone -->
|
||||
</skills>
|
||||
</item>
|
||||
<item id="48170" name="Enhancement Practice Long Sword" type="Weapon">
|
||||
<!-- A training sword you received from Blacksmith Rupio to practice weapon enchanting. It is worthless as a weapon. Take it to Rupio after enchanting it to the enchantment level he asked for. -->
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user