Addition of ensoul extraction.

This commit is contained in:
MobiusDev
2019-03-03 01:19:23 +00:00
parent c1cdb862c8
commit 267f50a36b
76 changed files with 1600 additions and 332 deletions

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Pinter:<br> <html><body>Blacksmith Pinter:<br>
Welcome. What brings you here, my friend? The name's Pinter. Yes, yes, I'm a Dwarf, and proud of it! My family has been blacksmiths in this town for three generations now! This place is in our blood!<br> Welcome. What brings you here, my friend? The name's Pinter. Yes, yes, I'm a Dwarf, and proud of it! My family has been blacksmiths in this town for three generations now! This place is in our blood!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</button> <button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Pushkin:<br> <html><body>Blacksmith Pushkin:<br>
Nice to meet you, wanderer!<br> Nice to meet you, wanderer!<br>
Rupio and I have come all the way from the Black Anvil Guild to set up shop here. We haven't been here long, but we're gonna turn this place into the best forge in Giran! What can we do for you?<br> Rupio and I have come all the way from the Black Anvil Guild to set up shop here. We haven't been here long, but we're gonna turn this place into the best forge in Giran! What can we do for you?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Kluto:<br> <html><body>Blacksmith Kluto:<br>
Interested in seeing a genius at work, hmm? Just hang around!<br> Interested in seeing a genius at work, hmm? Just hang around!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Poitan:<br> <html><body>Blacksmith Poitan:<br>
Nice to meet you, traveler. Your timing is excellent! I just finished remodeling the workshop yesterday, so you're my first customer this season!<br> Nice to meet you, traveler. Your timing is excellent! I just finished remodeling the workshop yesterday, so you're my first customer this season!<br>
What can I do for you?<br> What can I do for you?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -2,13 +2,14 @@
Hmph, who are you? Why did you come here? Unless you have a case of Dwarven beer in that tiny saddle bag, I don't want to hear about it! Bahhh!<br> Hmph, who are you? Why did you come here? Unless you have a case of Dwarven beer in that tiny saddle bag, I don't want to hear about it! Bahhh!<br>
All I ever hear is heat this, cool that, get to the bellows, it's too hot, don't drop it! Argh! Makes me want to puke! It SO does not pay to be the low man on the totem pole! I want to MAKE something!<br> All I ever hear is heat this, cool that, get to the bellows, it's too hot, don't drop it! Argh! Makes me want to puke! It SO does not pay to be the low man on the totem pole! I want to MAKE something!<br>
Armor, a blade... anything!<br> Armor, a blade... anything!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_02.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,10 +1,13 @@
<html><body>Blacksmith Duning:<br> <html><body>Blacksmith Duning:<br>
Hello there! Welcome to the forge! It's so exciting here. So many adventurers stopping by! Why just yesterday, I had lunch with a bounty hunter, tea with an informer, and supper with a ruins explorer! The stories! The romances! The adventures! Better than day time theater!<br> Hello there! Welcome to the forge! It's so exciting here. So many adventurers stopping by! Why just yesterday, I had lunch with a bounty hunter, tea with an informer, and supper with a ruins explorer! The stories! The romances! The adventures! Better than day time theater!<br>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">"I want to craft a dual weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">"I want to bestow a Soul Crystal effect on a weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate?"</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN="LEFT" ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN="LEFT" ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Wilbert:<br> <html><body>Blacksmith Wilbert:<br>
What do we do here? Well, blacksmiths make things like armor, swords, polearms, axes, plows... But wait! There's more! Look, over there... Aden Castle stands, proudly disregarding the laws of gravity. And you know why? Engineering! It would have collapsed a long time ago if it hadn't been for the efforts of the Black Anvil craftsmen.<br> What do we do here? Well, blacksmiths make things like armor, swords, polearms, axes, plows... But wait! There's more! Look, over there... Aden Castle stands, proudly disregarding the laws of gravity. And you know why? Engineering! It would have collapsed a long time ago if it hadn't been for the efforts of the Black Anvil craftsmen.<br>
And... This is just a rumor, but... They say that the giant golem the rebels used to evict the Human lords was made and sold by the Black Anvil. After all, who else could do something like that, right?<br> And... This is just a rumor, but... They say that the giant golem the rebels used to evict the Human lords was made and sold by the Black Anvil. After all, who else could do something like that, right?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade set options."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate?"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Morning:<br> <html><body>Blacksmith Morning:<br>
Welcome! If you have money, I have skills. What do you need, friend?<br> Welcome! If you have money, I have skills. What do you need, friend?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade set options."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">"I want to craft a dual weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">"I want to bestow a Soul Crystal effect on a weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate?"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body> Blacksmith Hilda:<br> <html><body> Blacksmith Hilda:<br>
Do you have any business for Hilda? Hmm? Hilda is busy, busy! She must make swords, plows, polearms, and armor! No visiting! Hilda doesn't visit, just works! Hilda doesn't mind watchers, but if someone talks while Hilda works, someone might get hit by hammer. In the face. Hard.<br> Do you have any business for Hilda? Hmm? Hilda is busy, busy! She must make swords, plows, polearms, and armor! No visiting! Hilda doesn't visit, just works! Hilda doesn't mind watchers, but if someone talks while Hilda works, someone might get hit by hammer. In the face. Hard.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Vincenz:<br> <html><body>Blacksmith Vincenz:<br>
Welcome to the thunder forge! Hahaha! Noisy, isn't it?<br> Welcome to the thunder forge! Hahaha! Noisy, isn't it?<br>
Do you have anything that you like to craft? We do it all here! Order whatever you like. A pendant? A sword? A war golem? It's all the same to us.<br> Do you have anything that you like to craft? We do it all here! Order whatever you like. A pendant? A sword? A war golem? It's all the same to us.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Buryun:<br> <html><body>Blacksmith Buryun:<br>
Welcome! Your timing is impeccable, I just finished up a three-day job repairing this here Claymore for Fred. A nasty piece of work that! What can I help you with?<br> Welcome! Your timing is impeccable, I just finished up a three-day job repairing this here Claymore for Fred. A nasty piece of work that! What can I help you with?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -19,6 +19,7 @@ package handlers.bypasshandlers;
import com.l2jmobius.gameserver.handler.IBypassHandler; import com.l2jmobius.gameserver.handler.IBypassHandler;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExShowEnsoulExtractionWindow;
import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExShowEnsoulWindow; import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExShowEnsoulWindow;
/** /**
@@ -29,6 +30,7 @@ public class EnsoulWindow implements IBypassHandler
private static final String[] COMMANDS = private static final String[] COMMANDS =
{ {
"show_ensoul_window", "show_ensoul_window",
"show_extract_ensoul_window"
}; };
@Override @Override
@@ -39,9 +41,18 @@ public class EnsoulWindow implements IBypassHandler
return false; return false;
} }
if (command.toLowerCase().startsWith(COMMANDS[0])) // show_ensoul_window
{
activeChar.sendPacket(ExShowEnsoulWindow.STATIC_PACKET); activeChar.sendPacket(ExShowEnsoulWindow.STATIC_PACKET);
return true; return true;
} }
else if (command.toLowerCase().startsWith(COMMANDS[1])) // show_extract_ensoul_window
{
activeChar.sendPacket(ExShowEnsoulExtractionWindow.STATIC_PACKET);
return true;
}
return false;
}
@Override @Override
public String[] getBypassList() public String[] getBypassList()

View File

@@ -17,6 +17,8 @@
package com.l2jmobius.gameserver.data.xml.impl; package com.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumMap; import java.util.EnumMap;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -122,6 +124,11 @@ public class EnsoulData implements IGameXmlReader
parseReFee(feeNode, fee, 2); parseReFee(feeNode, fee, 2);
break; break;
} }
case "remove":
{
parseRemove(feeNode, fee);
break;
}
} }
}); });
} }
@@ -143,6 +150,14 @@ public class EnsoulData implements IGameXmlReader
fee.setResoul(index, new ItemHolder(id, count)); fee.setResoul(index, new ItemHolder(id, count));
} }
private void parseRemove(Node ensoulNode, EnsoulFee fee)
{
final NamedNodeMap attrs = ensoulNode.getAttributes();
final int id = parseInteger(attrs, "itemId");
final int count = parseInteger(attrs, "count");
fee.addRemovalFee(new ItemHolder(id, count));
}
private void parseOptions(Node ensoulNode) private void parseOptions(Node ensoulNode)
{ {
final NamedNodeMap attrs = ensoulNode.getAttributes(); final NamedNodeMap attrs = ensoulNode.getAttributes();
@@ -177,6 +192,12 @@ public class EnsoulData implements IGameXmlReader
return fee != null ? fee.getResoul(index) : null; return fee != null ? fee.getResoul(index) : null;
} }
public Collection<ItemHolder> getRemovalFee(CrystalType type)
{
final EnsoulFee fee = _ensoulFees.get(type);
return fee != null ? fee.getRemovalFee() : Collections.emptyList();
}
public EnsoulOption getOption(int id) public EnsoulOption getOption(int id)
{ {
return _ensoulOptions.get(id); return _ensoulOptions.get(id);
@@ -187,6 +208,24 @@ public class EnsoulData implements IGameXmlReader
return _ensoulStones.get(id); return _ensoulStones.get(id);
} }
public int getStone(int type, int optionId)
{
for (EnsoulStone stone : _ensoulStones.values())
{
if (stone.getSlotType() == type)
{
for (int id : stone.getOptions())
{
if (id == optionId)
{
return stone.getId();
}
}
}
}
return 0;
}
/** /**
* Gets the single instance of EnsoulData. * Gets the single instance of EnsoulData.
* @return single instance of EnsoulData * @return single instance of EnsoulData

View File

@@ -16,6 +16,9 @@
*/ */
package com.l2jmobius.gameserver.model.ensoul; package com.l2jmobius.gameserver.model.ensoul;
import java.util.ArrayList;
import java.util.List;
import com.l2jmobius.gameserver.model.holders.ItemHolder; import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.items.type.CrystalType; import com.l2jmobius.gameserver.model.items.type.CrystalType;
@@ -28,6 +31,7 @@ public class EnsoulFee
private final ItemHolder[] _ensoulFee = new ItemHolder[3]; private final ItemHolder[] _ensoulFee = new ItemHolder[3];
private final ItemHolder[] _resoulFees = new ItemHolder[3]; private final ItemHolder[] _resoulFees = new ItemHolder[3];
private final List<ItemHolder> _removalFee = new ArrayList<>();
public EnsoulFee(CrystalType type) public EnsoulFee(CrystalType type)
{ {
@@ -49,6 +53,11 @@ public class EnsoulFee
_resoulFees[index] = item; _resoulFees[index] = item;
} }
public void addRemovalFee(ItemHolder itemHolder)
{
_removalFee.add(itemHolder);
}
public ItemHolder getEnsoul(int index) public ItemHolder getEnsoul(int index)
{ {
return _ensoulFee[index]; return _ensoulFee[index];
@@ -58,4 +67,9 @@ public class EnsoulFee
{ {
return _resoulFees[index]; return _resoulFees[index];
} }
public List<ItemHolder> getRemovalFee()
{
return _removalFee;
}
} }

View File

@@ -2175,6 +2175,28 @@ public final class L2ItemInstance extends L2Object
} }
} }
public void removeSpecialAbility(int position, int type)
{
if (type == 1)
{
final EnsoulOption option = _ensoulOptions.get(position);
if (option != null)
{
removeSpecialAbility(option);
_ensoulOptions.remove(position);
}
}
else if (type == 2)
{
final EnsoulOption option = _ensoulSpecialOptions.get(position);
if (option != null)
{
removeSpecialAbility(option);
_ensoulSpecialOptions.remove(position);
}
}
}
public void clearSpecialAbilities() public void clearSpecialAbilities()
{ {
_ensoulOptions.values().forEach(this::clearSpecialAbility); _ensoulOptions.values().forEach(this::clearSpecialAbility);

View File

@@ -70,6 +70,7 @@ import com.l2jmobius.gameserver.network.clientpackets.crystalization.RequestCrys
import com.l2jmobius.gameserver.network.clientpackets.dailymission.RequestOneDayRewardReceive; import com.l2jmobius.gameserver.network.clientpackets.dailymission.RequestOneDayRewardReceive;
import com.l2jmobius.gameserver.network.clientpackets.dailymission.RequestTodoList; import com.l2jmobius.gameserver.network.clientpackets.dailymission.RequestTodoList;
import com.l2jmobius.gameserver.network.clientpackets.ensoul.RequestItemEnsoul; import com.l2jmobius.gameserver.network.clientpackets.ensoul.RequestItemEnsoul;
import com.l2jmobius.gameserver.network.clientpackets.ensoul.RequestTryEnSoulExtraction;
import com.l2jmobius.gameserver.network.clientpackets.faction.RequestUserFactionInfo; import com.l2jmobius.gameserver.network.clientpackets.faction.RequestUserFactionInfo;
import com.l2jmobius.gameserver.network.clientpackets.friend.RequestFriendDetailInfo; import com.l2jmobius.gameserver.network.clientpackets.friend.RequestFriendDetailInfo;
import com.l2jmobius.gameserver.network.clientpackets.luckygame.RequestLuckyGamePlay; import com.l2jmobius.gameserver.network.clientpackets.luckygame.RequestLuckyGamePlay;
@@ -392,7 +393,7 @@ public enum ExIncomingPackets implements IIncomingPackets<L2GameClient>
REQUEST_SSO_AUTHN_TOKEN(0x125, null, ConnectionState.IN_GAME), REQUEST_SSO_AUTHN_TOKEN(0x125, null, ConnectionState.IN_GAME),
REQUEST_QUEUE_TICKET_LOGIN(0x126, null, ConnectionState.IN_GAME), REQUEST_QUEUE_TICKET_LOGIN(0x126, null, ConnectionState.IN_GAME),
REQUEST_BLOCK_MEMO_INFO(0x127, null, ConnectionState.IN_GAME), REQUEST_BLOCK_MEMO_INFO(0x127, null, ConnectionState.IN_GAME),
REQUEST_TRY_EN_SOUL_EXTRACTION(0x128, null, ConnectionState.IN_GAME), REQUEST_TRY_EN_SOUL_EXTRACTION(0x128, RequestTryEnSoulExtraction::new, ConnectionState.IN_GAME),
REQUEST_RAIDBOSS_SPAWN_INFO(0x129, RequestRaidBossSpawnInfo::new, ConnectionState.IN_GAME), REQUEST_RAIDBOSS_SPAWN_INFO(0x129, RequestRaidBossSpawnInfo::new, ConnectionState.IN_GAME),
REQUEST_RAID_SERVER_INFO(0x12A, RequestRaidServerInfo::new, ConnectionState.IN_GAME), REQUEST_RAID_SERVER_INFO(0x12A, RequestRaidServerInfo::new, ConnectionState.IN_GAME),
REQUEST_SHOW_AGIT_SIEGE_INFO(0x12B, null, ConnectionState.IN_GAME), REQUEST_SHOW_AGIT_SIEGE_INFO(0x12B, null, ConnectionState.IN_GAME),

View File

@@ -0,0 +1,118 @@
/*
* 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 com.l2jmobius.gameserver.network.clientpackets.ensoul;
import java.util.Collection;
import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.gameserver.data.xml.impl.EnsoulData;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.ensoul.EnsoulOption;
import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import com.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExEnSoulExtractionResult;
/**
* @author Mobius
*/
public class RequestTryEnSoulExtraction implements IClientIncomingPacket
{
private int _itemObjectId;
private int _type;
private int _position;
@Override
public boolean read(L2GameClient client, PacketReader packet)
{
_itemObjectId = packet.readD();
_type = packet.readC();
_position = packet.readC() - 1;
return true;
}
@Override
public void run(L2GameClient client)
{
L2PcInstance player = client.getActiveChar();
if (player == null)
{
return;
}
final L2ItemInstance item = player.getInventory().getItemByObjectId(_itemObjectId);
if (item == null)
{
return;
}
EnsoulOption option = null;
if (_type == 1)
{
option = item.getSpecialAbility(_position);
}
if (_type == 2)
{
option = item.getAdditionalSpecialAbility(_position);
}
if (option == null)
{
return;
}
final Collection<ItemHolder> removalFee = EnsoulData.getInstance().getRemovalFee(item.getItem().getCrystalType());
if (removalFee.isEmpty())
{
return;
}
// Check if player has required items.
for (ItemHolder itemHolder : removalFee)
{
if (player.getInventory().getInventoryItemCount(itemHolder.getId(), -1) < itemHolder.getCount())
{
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
player.sendPacket(new ExEnSoulExtractionResult(false, item));
return;
}
}
// Take required items.
for (ItemHolder itemHolder : removalFee)
{
player.destroyItemByItemId("Rune Extract", itemHolder.getId(), itemHolder.getCount(), player, true);
}
// Remove equipped rune.
item.removeSpecialAbility(_position, _type);
final InventoryUpdate iu = new InventoryUpdate();
iu.addModifiedItem(item);
// Add rune in player inventory.
final int runeId = EnsoulData.getInstance().getStone(_type, option.getId());
if (runeId > 0)
{
iu.addItem(player.addItem("Rune Extract", runeId, 1, player, true));
}
player.sendInventoryUpdate(iu);
player.sendPacket(new ExEnSoulExtractionResult(true, item));
}
}

View File

@@ -0,0 +1,59 @@
/*
* 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 com.l2jmobius.gameserver.network.serverpackets.ensoul;
import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.model.ensoul.EnsoulOption;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.network.OutgoingPackets;
import com.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* @author Mobius
*/
public class ExEnSoulExtractionResult implements IClientOutgoingPacket
{
private final boolean _success;
private final L2ItemInstance _item;
public ExEnSoulExtractionResult(boolean success, L2ItemInstance item)
{
_success = success;
_item = item;
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_ENSOUL_EXTRACTION_RESULT.writeId(packet);
packet.writeC(_success ? 1 : 0);
if (_success)
{
packet.writeC(_item.getSpecialAbilities().size());
for (EnsoulOption option : _item.getSpecialAbilities())
{
packet.writeD(option.getId());
}
packet.writeC(_item.getAdditionalSpecialAbilities().size());
for (EnsoulOption option : _item.getAdditionalSpecialAbilities())
{
packet.writeD(option.getId());
}
}
return true;
}
}

View File

@@ -0,0 +1,40 @@
/*
* 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 com.l2jmobius.gameserver.network.serverpackets.ensoul;
import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.network.OutgoingPackets;
import com.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* @author Mobius
*/
public class ExShowEnsoulExtractionWindow implements IClientOutgoingPacket
{
public static final ExShowEnsoulExtractionWindow STATIC_PACKET = new ExShowEnsoulExtractionWindow();
private ExShowEnsoulExtractionWindow()
{
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_ENSOUL_EXTRACTION_SHOW.writeId(packet);
return true;
}
}

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Pinter:<br> <html><body>Blacksmith Pinter:<br>
Welcome. What brings you here, my friend? The name's Pinter. Yes, yes, I'm a Dwarf, and proud of it! My family has been blacksmiths in this town for three generations now! This place is in our blood!<br> Welcome. What brings you here, my friend? The name's Pinter. Yes, yes, I'm a Dwarf, and proud of it! My family has been blacksmiths in this town for three generations now! This place is in our blood!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</button> <button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Pushkin:<br> <html><body>Blacksmith Pushkin:<br>
Nice to meet you, wanderer!<br> Nice to meet you, wanderer!<br>
Rupio and I have come all the way from the Black Anvil Guild to set up shop here. We haven't been here long, but we're gonna turn this place into the best forge in Giran! What can we do for you?<br> Rupio and I have come all the way from the Black Anvil Guild to set up shop here. We haven't been here long, but we're gonna turn this place into the best forge in Giran! What can we do for you?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Kluto:<br> <html><body>Blacksmith Kluto:<br>
Interested in seeing a genius at work, hmm? Just hang around!<br> Interested in seeing a genius at work, hmm? Just hang around!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Poitan:<br> <html><body>Blacksmith Poitan:<br>
Nice to meet you, traveler. Your timing is excellent! I just finished remodeling the workshop yesterday, so you're my first customer this season!<br> Nice to meet you, traveler. Your timing is excellent! I just finished remodeling the workshop yesterday, so you're my first customer this season!<br>
What can I do for you?<br> What can I do for you?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -2,13 +2,14 @@
Hmph, who are you? Why did you come here? Unless you have a case of Dwarven beer in that tiny saddle bag, I don't want to hear about it! Bahhh!<br> Hmph, who are you? Why did you come here? Unless you have a case of Dwarven beer in that tiny saddle bag, I don't want to hear about it! Bahhh!<br>
All I ever hear is heat this, cool that, get to the bellows, it's too hot, don't drop it! Argh! Makes me want to puke! It SO does not pay to be the low man on the totem pole! I want to MAKE something!<br> All I ever hear is heat this, cool that, get to the bellows, it's too hot, don't drop it! Argh! Makes me want to puke! It SO does not pay to be the low man on the totem pole! I want to MAKE something!<br>
Armor, a blade... anything!<br> Armor, a blade... anything!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_02.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,10 +1,13 @@
<html><body>Blacksmith Duning:<br> <html><body>Blacksmith Duning:<br>
Hello there! Welcome to the forge! It's so exciting here. So many adventurers stopping by! Why just yesterday, I had lunch with a bounty hunter, tea with an informer, and supper with a ruins explorer! The stories! The romances! The adventures! Better than day time theater!<br> Hello there! Welcome to the forge! It's so exciting here. So many adventurers stopping by! Why just yesterday, I had lunch with a bounty hunter, tea with an informer, and supper with a ruins explorer! The stories! The romances! The adventures! Better than day time theater!<br>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">"I want to craft a dual weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">"I want to bestow a Soul Crystal effect on a weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate?"</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN="LEFT" ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN="LEFT" ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Wilbert:<br> <html><body>Blacksmith Wilbert:<br>
What do we do here? Well, blacksmiths make things like armor, swords, polearms, axes, plows... But wait! There's more! Look, over there... Aden Castle stands, proudly disregarding the laws of gravity. And you know why? Engineering! It would have collapsed a long time ago if it hadn't been for the efforts of the Black Anvil craftsmen.<br> What do we do here? Well, blacksmiths make things like armor, swords, polearms, axes, plows... But wait! There's more! Look, over there... Aden Castle stands, proudly disregarding the laws of gravity. And you know why? Engineering! It would have collapsed a long time ago if it hadn't been for the efforts of the Black Anvil craftsmen.<br>
And... This is just a rumor, but... They say that the giant golem the rebels used to evict the Human lords was made and sold by the Black Anvil. After all, who else could do something like that, right?<br> And... This is just a rumor, but... They say that the giant golem the rebels used to evict the Human lords was made and sold by the Black Anvil. After all, who else could do something like that, right?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade set options."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate?"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Morning:<br> <html><body>Blacksmith Morning:<br>
Welcome! If you have money, I have skills. What do you need, friend?<br> Welcome! If you have money, I have skills. What do you need, friend?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade set options."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">"I want to craft a dual weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">"I want to bestow a Soul Crystal effect on a weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate?"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body> Blacksmith Hilda:<br> <html><body> Blacksmith Hilda:<br>
Do you have any business for Hilda? Hmm? Hilda is busy, busy! She must make swords, plows, polearms, and armor! No visiting! Hilda doesn't visit, just works! Hilda doesn't mind watchers, but if someone talks while Hilda works, someone might get hit by hammer. In the face. Hard.<br> Do you have any business for Hilda? Hmm? Hilda is busy, busy! She must make swords, plows, polearms, and armor! No visiting! Hilda doesn't visit, just works! Hilda doesn't mind watchers, but if someone talks while Hilda works, someone might get hit by hammer. In the face. Hard.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Vincenz:<br> <html><body>Blacksmith Vincenz:<br>
Welcome to the thunder forge! Hahaha! Noisy, isn't it?<br> Welcome to the thunder forge! Hahaha! Noisy, isn't it?<br>
Do you have anything that you like to craft? We do it all here! Order whatever you like. A pendant? A sword? A war golem? It's all the same to us.<br> Do you have anything that you like to craft? We do it all here! Order whatever you like. A pendant? A sword? A war golem? It's all the same to us.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Buryun:<br> <html><body>Blacksmith Buryun:<br>
Welcome! Your timing is impeccable, I just finished up a three-day job repairing this here Claymore for Fred. A nasty piece of work that! What can I help you with?<br> Welcome! Your timing is impeccable, I just finished up a three-day job repairing this here Claymore for Fred. A nasty piece of work that! What can I help you with?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -19,6 +19,7 @@ package handlers.bypasshandlers;
import com.l2jmobius.gameserver.handler.IBypassHandler; import com.l2jmobius.gameserver.handler.IBypassHandler;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExShowEnsoulExtractionWindow;
import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExShowEnsoulWindow; import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExShowEnsoulWindow;
/** /**
@@ -29,6 +30,7 @@ public class EnsoulWindow implements IBypassHandler
private static final String[] COMMANDS = private static final String[] COMMANDS =
{ {
"show_ensoul_window", "show_ensoul_window",
"show_extract_ensoul_window"
}; };
@Override @Override
@@ -39,9 +41,18 @@ public class EnsoulWindow implements IBypassHandler
return false; return false;
} }
if (command.toLowerCase().startsWith(COMMANDS[0])) // show_ensoul_window
{
activeChar.sendPacket(ExShowEnsoulWindow.STATIC_PACKET); activeChar.sendPacket(ExShowEnsoulWindow.STATIC_PACKET);
return true; return true;
} }
else if (command.toLowerCase().startsWith(COMMANDS[1])) // show_extract_ensoul_window
{
activeChar.sendPacket(ExShowEnsoulExtractionWindow.STATIC_PACKET);
return true;
}
return false;
}
@Override @Override
public String[] getBypassList() public String[] getBypassList()

View File

@@ -17,6 +17,8 @@
package com.l2jmobius.gameserver.data.xml.impl; package com.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumMap; import java.util.EnumMap;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -122,6 +124,11 @@ public class EnsoulData implements IGameXmlReader
parseReFee(feeNode, fee, 2); parseReFee(feeNode, fee, 2);
break; break;
} }
case "remove":
{
parseRemove(feeNode, fee);
break;
}
} }
}); });
} }
@@ -143,6 +150,14 @@ public class EnsoulData implements IGameXmlReader
fee.setResoul(index, new ItemHolder(id, count)); fee.setResoul(index, new ItemHolder(id, count));
} }
private void parseRemove(Node ensoulNode, EnsoulFee fee)
{
final NamedNodeMap attrs = ensoulNode.getAttributes();
final int id = parseInteger(attrs, "itemId");
final int count = parseInteger(attrs, "count");
fee.addRemovalFee(new ItemHolder(id, count));
}
private void parseOptions(Node ensoulNode) private void parseOptions(Node ensoulNode)
{ {
final NamedNodeMap attrs = ensoulNode.getAttributes(); final NamedNodeMap attrs = ensoulNode.getAttributes();
@@ -177,6 +192,12 @@ public class EnsoulData implements IGameXmlReader
return fee != null ? fee.getResoul(index) : null; return fee != null ? fee.getResoul(index) : null;
} }
public Collection<ItemHolder> getRemovalFee(CrystalType type)
{
final EnsoulFee fee = _ensoulFees.get(type);
return fee != null ? fee.getRemovalFee() : Collections.emptyList();
}
public EnsoulOption getOption(int id) public EnsoulOption getOption(int id)
{ {
return _ensoulOptions.get(id); return _ensoulOptions.get(id);
@@ -187,6 +208,24 @@ public class EnsoulData implements IGameXmlReader
return _ensoulStones.get(id); return _ensoulStones.get(id);
} }
public int getStone(int type, int optionId)
{
for (EnsoulStone stone : _ensoulStones.values())
{
if (stone.getSlotType() == type)
{
for (int id : stone.getOptions())
{
if (id == optionId)
{
return stone.getId();
}
}
}
}
return 0;
}
/** /**
* Gets the single instance of EnsoulData. * Gets the single instance of EnsoulData.
* @return single instance of EnsoulData * @return single instance of EnsoulData

View File

@@ -16,6 +16,9 @@
*/ */
package com.l2jmobius.gameserver.model.ensoul; package com.l2jmobius.gameserver.model.ensoul;
import java.util.ArrayList;
import java.util.List;
import com.l2jmobius.gameserver.model.holders.ItemHolder; import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.items.type.CrystalType; import com.l2jmobius.gameserver.model.items.type.CrystalType;
@@ -28,6 +31,7 @@ public class EnsoulFee
private final ItemHolder[] _ensoulFee = new ItemHolder[3]; private final ItemHolder[] _ensoulFee = new ItemHolder[3];
private final ItemHolder[] _resoulFees = new ItemHolder[3]; private final ItemHolder[] _resoulFees = new ItemHolder[3];
private final List<ItemHolder> _removalFee = new ArrayList<>();
public EnsoulFee(CrystalType type) public EnsoulFee(CrystalType type)
{ {
@@ -49,6 +53,11 @@ public class EnsoulFee
_resoulFees[index] = item; _resoulFees[index] = item;
} }
public void addRemovalFee(ItemHolder itemHolder)
{
_removalFee.add(itemHolder);
}
public ItemHolder getEnsoul(int index) public ItemHolder getEnsoul(int index)
{ {
return _ensoulFee[index]; return _ensoulFee[index];
@@ -58,4 +67,9 @@ public class EnsoulFee
{ {
return _resoulFees[index]; return _resoulFees[index];
} }
public List<ItemHolder> getRemovalFee()
{
return _removalFee;
}
} }

View File

@@ -2175,6 +2175,28 @@ public final class L2ItemInstance extends L2Object
} }
} }
public void removeSpecialAbility(int position, int type)
{
if (type == 1)
{
final EnsoulOption option = _ensoulOptions.get(position);
if (option != null)
{
removeSpecialAbility(option);
_ensoulOptions.remove(position);
}
}
else if (type == 2)
{
final EnsoulOption option = _ensoulSpecialOptions.get(position);
if (option != null)
{
removeSpecialAbility(option);
_ensoulSpecialOptions.remove(position);
}
}
}
public void clearSpecialAbilities() public void clearSpecialAbilities()
{ {
_ensoulOptions.values().forEach(this::clearSpecialAbility); _ensoulOptions.values().forEach(this::clearSpecialAbility);

View File

@@ -68,6 +68,7 @@ import com.l2jmobius.gameserver.network.clientpackets.compound.RequestNewEnchant
import com.l2jmobius.gameserver.network.clientpackets.crystalization.RequestCrystallizeEstimate; import com.l2jmobius.gameserver.network.clientpackets.crystalization.RequestCrystallizeEstimate;
import com.l2jmobius.gameserver.network.clientpackets.crystalization.RequestCrystallizeItemCancel; import com.l2jmobius.gameserver.network.clientpackets.crystalization.RequestCrystallizeItemCancel;
import com.l2jmobius.gameserver.network.clientpackets.ensoul.RequestItemEnsoul; import com.l2jmobius.gameserver.network.clientpackets.ensoul.RequestItemEnsoul;
import com.l2jmobius.gameserver.network.clientpackets.ensoul.RequestTryEnSoulExtraction;
import com.l2jmobius.gameserver.network.clientpackets.faction.RequestUserFactionInfo; import com.l2jmobius.gameserver.network.clientpackets.faction.RequestUserFactionInfo;
import com.l2jmobius.gameserver.network.clientpackets.friend.RequestFriendDetailInfo; import com.l2jmobius.gameserver.network.clientpackets.friend.RequestFriendDetailInfo;
import com.l2jmobius.gameserver.network.clientpackets.luckygame.RequestLuckyGamePlay; import com.l2jmobius.gameserver.network.clientpackets.luckygame.RequestLuckyGamePlay;
@@ -396,7 +397,7 @@ public enum ExIncomingPackets implements IIncomingPackets<L2GameClient>
REQUEST_SSO_AUTHN_TOKEN(0x125, null, ConnectionState.IN_GAME), REQUEST_SSO_AUTHN_TOKEN(0x125, null, ConnectionState.IN_GAME),
REQUEST_QUEUE_TICKET_LOGIN(0x126, null, ConnectionState.IN_GAME), REQUEST_QUEUE_TICKET_LOGIN(0x126, null, ConnectionState.IN_GAME),
REQUEST_BLOCK_MEMO_INFO(0x127, null, ConnectionState.IN_GAME), REQUEST_BLOCK_MEMO_INFO(0x127, null, ConnectionState.IN_GAME),
REQUEST_TRY_EN_SOUL_EXTRACTION(0x128, null, ConnectionState.IN_GAME), REQUEST_TRY_EN_SOUL_EXTRACTION(0x128, RequestTryEnSoulExtraction::new, ConnectionState.IN_GAME),
REQUEST_RAIDBOSS_SPAWN_INFO(0x129, RequestRaidBossSpawnInfo::new, ConnectionState.IN_GAME), REQUEST_RAIDBOSS_SPAWN_INFO(0x129, RequestRaidBossSpawnInfo::new, ConnectionState.IN_GAME),
REQUEST_RAID_SERVER_INFO(0x12A, RequestRaidServerInfo::new, ConnectionState.IN_GAME), REQUEST_RAID_SERVER_INFO(0x12A, RequestRaidServerInfo::new, ConnectionState.IN_GAME),
REQUEST_SHOW_AGIT_SIEGE_INFO(0x12B, null, ConnectionState.IN_GAME), REQUEST_SHOW_AGIT_SIEGE_INFO(0x12B, null, ConnectionState.IN_GAME),

View File

@@ -0,0 +1,118 @@
/*
* 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 com.l2jmobius.gameserver.network.clientpackets.ensoul;
import java.util.Collection;
import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.gameserver.data.xml.impl.EnsoulData;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.ensoul.EnsoulOption;
import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import com.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExEnSoulExtractionResult;
/**
* @author Mobius
*/
public class RequestTryEnSoulExtraction implements IClientIncomingPacket
{
private int _itemObjectId;
private int _type;
private int _position;
@Override
public boolean read(L2GameClient client, PacketReader packet)
{
_itemObjectId = packet.readD();
_type = packet.readC();
_position = packet.readC() - 1;
return true;
}
@Override
public void run(L2GameClient client)
{
L2PcInstance player = client.getActiveChar();
if (player == null)
{
return;
}
final L2ItemInstance item = player.getInventory().getItemByObjectId(_itemObjectId);
if (item == null)
{
return;
}
EnsoulOption option = null;
if (_type == 1)
{
option = item.getSpecialAbility(_position);
}
if (_type == 2)
{
option = item.getAdditionalSpecialAbility(_position);
}
if (option == null)
{
return;
}
final Collection<ItemHolder> removalFee = EnsoulData.getInstance().getRemovalFee(item.getItem().getCrystalType());
if (removalFee.isEmpty())
{
return;
}
// Check if player has required items.
for (ItemHolder itemHolder : removalFee)
{
if (player.getInventory().getInventoryItemCount(itemHolder.getId(), -1) < itemHolder.getCount())
{
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
player.sendPacket(new ExEnSoulExtractionResult(false, item));
return;
}
}
// Take required items.
for (ItemHolder itemHolder : removalFee)
{
player.destroyItemByItemId("Rune Extract", itemHolder.getId(), itemHolder.getCount(), player, true);
}
// Remove equipped rune.
item.removeSpecialAbility(_position, _type);
final InventoryUpdate iu = new InventoryUpdate();
iu.addModifiedItem(item);
// Add rune in player inventory.
final int runeId = EnsoulData.getInstance().getStone(_type, option.getId());
if (runeId > 0)
{
iu.addItem(player.addItem("Rune Extract", runeId, 1, player, true));
}
player.sendInventoryUpdate(iu);
player.sendPacket(new ExEnSoulExtractionResult(true, item));
}
}

View File

@@ -0,0 +1,59 @@
/*
* 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 com.l2jmobius.gameserver.network.serverpackets.ensoul;
import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.model.ensoul.EnsoulOption;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.network.OutgoingPackets;
import com.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* @author Mobius
*/
public class ExEnSoulExtractionResult implements IClientOutgoingPacket
{
private final boolean _success;
private final L2ItemInstance _item;
public ExEnSoulExtractionResult(boolean success, L2ItemInstance item)
{
_success = success;
_item = item;
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_ENSOUL_EXTRACTION_RESULT.writeId(packet);
packet.writeC(_success ? 1 : 0);
if (_success)
{
packet.writeC(_item.getSpecialAbilities().size());
for (EnsoulOption option : _item.getSpecialAbilities())
{
packet.writeD(option.getId());
}
packet.writeC(_item.getAdditionalSpecialAbilities().size());
for (EnsoulOption option : _item.getAdditionalSpecialAbilities())
{
packet.writeD(option.getId());
}
}
return true;
}
}

View File

@@ -0,0 +1,40 @@
/*
* 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 com.l2jmobius.gameserver.network.serverpackets.ensoul;
import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.network.OutgoingPackets;
import com.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* @author Mobius
*/
public class ExShowEnsoulExtractionWindow implements IClientOutgoingPacket
{
public static final ExShowEnsoulExtractionWindow STATIC_PACKET = new ExShowEnsoulExtractionWindow();
private ExShowEnsoulExtractionWindow()
{
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_ENSOUL_EXTRACTION_SHOW.writeId(packet);
return true;
}
}

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Pinter:<br> <html><body>Blacksmith Pinter:<br>
Welcome. What brings you here, my friend? The name's Pinter. Yes, yes, I'm a Dwarf, and proud of it! My family has been blacksmiths in this town for three generations now! This place is in our blood!<br> Welcome. What brings you here, my friend? The name's Pinter. Yes, yes, I'm a Dwarf, and proud of it! My family has been blacksmiths in this town for three generations now! This place is in our blood!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</button> <button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Pushkin:<br> <html><body>Blacksmith Pushkin:<br>
Nice to meet you, wanderer!<br> Nice to meet you, wanderer!<br>
Rupio and I have come all the way from the Black Anvil Guild to set up shop here. We haven't been here long, but we're gonna turn this place into the best forge in Giran! What can we do for you?<br> Rupio and I have come all the way from the Black Anvil Guild to set up shop here. We haven't been here long, but we're gonna turn this place into the best forge in Giran! What can we do for you?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Kluto:<br> <html><body>Blacksmith Kluto:<br>
Interested in seeing a genius at work, hmm? Just hang around!<br> Interested in seeing a genius at work, hmm? Just hang around!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Poitan:<br> <html><body>Blacksmith Poitan:<br>
Nice to meet you, traveler. Your timing is excellent! I just finished remodeling the workshop yesterday, so you're my first customer this season!<br> Nice to meet you, traveler. Your timing is excellent! I just finished remodeling the workshop yesterday, so you're my first customer this season!<br>
What can I do for you?<br> What can I do for you?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -2,13 +2,14 @@
Hmph, who are you? Why did you come here? Unless you have a case of Dwarven beer in that tiny saddle bag, I don't want to hear about it! Bahhh!<br> Hmph, who are you? Why did you come here? Unless you have a case of Dwarven beer in that tiny saddle bag, I don't want to hear about it! Bahhh!<br>
All I ever hear is heat this, cool that, get to the bellows, it's too hot, don't drop it! Argh! Makes me want to puke! It SO does not pay to be the low man on the totem pole! I want to MAKE something!<br> All I ever hear is heat this, cool that, get to the bellows, it's too hot, don't drop it! Argh! Makes me want to puke! It SO does not pay to be the low man on the totem pole! I want to MAKE something!<br>
Armor, a blade... anything!<br> Armor, a blade... anything!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_02.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,10 +1,13 @@
<html><body>Blacksmith Duning:<br> <html><body>Blacksmith Duning:<br>
Hello there! Welcome to the forge! It's so exciting here. So many adventurers stopping by! Why just yesterday, I had lunch with a bounty hunter, tea with an informer, and supper with a ruins explorer! The stories! The romances! The adventures! Better than day time theater!<br> Hello there! Welcome to the forge! It's so exciting here. So many adventurers stopping by! Why just yesterday, I had lunch with a bounty hunter, tea with an informer, and supper with a ruins explorer! The stories! The romances! The adventures! Better than day time theater!<br>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">"I want to craft a dual weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">"I want to bestow a Soul Crystal effect on a weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate?"</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN="LEFT" ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN="LEFT" ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Wilbert:<br> <html><body>Blacksmith Wilbert:<br>
What do we do here? Well, blacksmiths make things like armor, swords, polearms, axes, plows... But wait! There's more! Look, over there... Aden Castle stands, proudly disregarding the laws of gravity. And you know why? Engineering! It would have collapsed a long time ago if it hadn't been for the efforts of the Black Anvil craftsmen.<br> What do we do here? Well, blacksmiths make things like armor, swords, polearms, axes, plows... But wait! There's more! Look, over there... Aden Castle stands, proudly disregarding the laws of gravity. And you know why? Engineering! It would have collapsed a long time ago if it hadn't been for the efforts of the Black Anvil craftsmen.<br>
And... This is just a rumor, but... They say that the giant golem the rebels used to evict the Human lords was made and sold by the Black Anvil. After all, who else could do something like that, right?<br> And... This is just a rumor, but... They say that the giant golem the rebels used to evict the Human lords was made and sold by the Black Anvil. After all, who else could do something like that, right?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade set options."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate?"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Morning:<br> <html><body>Blacksmith Morning:<br>
Welcome! If you have money, I have skills. What do you need, friend?<br> Welcome! If you have money, I have skills. What do you need, friend?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade set options."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">"I want to craft a dual weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">"I want to bestow a Soul Crystal effect on a weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate?"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body> Blacksmith Hilda:<br> <html><body> Blacksmith Hilda:<br>
Do you have any business for Hilda? Hmm? Hilda is busy, busy! She must make swords, plows, polearms, and armor! No visiting! Hilda doesn't visit, just works! Hilda doesn't mind watchers, but if someone talks while Hilda works, someone might get hit by hammer. In the face. Hard.<br> Do you have any business for Hilda? Hmm? Hilda is busy, busy! She must make swords, plows, polearms, and armor! No visiting! Hilda doesn't visit, just works! Hilda doesn't mind watchers, but if someone talks while Hilda works, someone might get hit by hammer. In the face. Hard.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Vincenz:<br> <html><body>Blacksmith Vincenz:<br>
Welcome to the thunder forge! Hahaha! Noisy, isn't it?<br> Welcome to the thunder forge! Hahaha! Noisy, isn't it?<br>
Do you have anything that you like to craft? We do it all here! Order whatever you like. A pendant? A sword? A war golem? It's all the same to us.<br> Do you have anything that you like to craft? We do it all here! Order whatever you like. A pendant? A sword? A war golem? It's all the same to us.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Buryun:<br> <html><body>Blacksmith Buryun:<br>
Welcome! Your timing is impeccable, I just finished up a three-day job repairing this here Claymore for Fred. A nasty piece of work that! What can I help you with?<br> Welcome! Your timing is impeccable, I just finished up a three-day job repairing this here Claymore for Fred. A nasty piece of work that! What can I help you with?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -19,6 +19,7 @@ package handlers.bypasshandlers;
import com.l2jmobius.gameserver.handler.IBypassHandler; import com.l2jmobius.gameserver.handler.IBypassHandler;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExShowEnsoulExtractionWindow;
import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExShowEnsoulWindow; import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExShowEnsoulWindow;
/** /**
@@ -29,6 +30,7 @@ public class EnsoulWindow implements IBypassHandler
private static final String[] COMMANDS = private static final String[] COMMANDS =
{ {
"show_ensoul_window", "show_ensoul_window",
"show_extract_ensoul_window"
}; };
@Override @Override
@@ -39,9 +41,18 @@ public class EnsoulWindow implements IBypassHandler
return false; return false;
} }
if (command.toLowerCase().startsWith(COMMANDS[0])) // show_ensoul_window
{
activeChar.sendPacket(ExShowEnsoulWindow.STATIC_PACKET); activeChar.sendPacket(ExShowEnsoulWindow.STATIC_PACKET);
return true; return true;
} }
else if (command.toLowerCase().startsWith(COMMANDS[1])) // show_extract_ensoul_window
{
activeChar.sendPacket(ExShowEnsoulExtractionWindow.STATIC_PACKET);
return true;
}
return false;
}
@Override @Override
public String[] getBypassList() public String[] getBypassList()

View File

@@ -17,6 +17,8 @@
package com.l2jmobius.gameserver.data.xml.impl; package com.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumMap; import java.util.EnumMap;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -122,6 +124,11 @@ public class EnsoulData implements IGameXmlReader
parseReFee(feeNode, fee, 2); parseReFee(feeNode, fee, 2);
break; break;
} }
case "remove":
{
parseRemove(feeNode, fee);
break;
}
} }
}); });
} }
@@ -143,6 +150,14 @@ public class EnsoulData implements IGameXmlReader
fee.setResoul(index, new ItemHolder(id, count)); fee.setResoul(index, new ItemHolder(id, count));
} }
private void parseRemove(Node ensoulNode, EnsoulFee fee)
{
final NamedNodeMap attrs = ensoulNode.getAttributes();
final int id = parseInteger(attrs, "itemId");
final int count = parseInteger(attrs, "count");
fee.addRemovalFee(new ItemHolder(id, count));
}
private void parseOptions(Node ensoulNode) private void parseOptions(Node ensoulNode)
{ {
final NamedNodeMap attrs = ensoulNode.getAttributes(); final NamedNodeMap attrs = ensoulNode.getAttributes();
@@ -177,6 +192,12 @@ public class EnsoulData implements IGameXmlReader
return fee != null ? fee.getResoul(index) : null; return fee != null ? fee.getResoul(index) : null;
} }
public Collection<ItemHolder> getRemovalFee(CrystalType type)
{
final EnsoulFee fee = _ensoulFees.get(type);
return fee != null ? fee.getRemovalFee() : Collections.emptyList();
}
public EnsoulOption getOption(int id) public EnsoulOption getOption(int id)
{ {
return _ensoulOptions.get(id); return _ensoulOptions.get(id);
@@ -187,6 +208,24 @@ public class EnsoulData implements IGameXmlReader
return _ensoulStones.get(id); return _ensoulStones.get(id);
} }
public int getStone(int type, int optionId)
{
for (EnsoulStone stone : _ensoulStones.values())
{
if (stone.getSlotType() == type)
{
for (int id : stone.getOptions())
{
if (id == optionId)
{
return stone.getId();
}
}
}
}
return 0;
}
/** /**
* Gets the single instance of EnsoulData. * Gets the single instance of EnsoulData.
* @return single instance of EnsoulData * @return single instance of EnsoulData

View File

@@ -16,6 +16,9 @@
*/ */
package com.l2jmobius.gameserver.model.ensoul; package com.l2jmobius.gameserver.model.ensoul;
import java.util.ArrayList;
import java.util.List;
import com.l2jmobius.gameserver.model.holders.ItemHolder; import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.items.type.CrystalType; import com.l2jmobius.gameserver.model.items.type.CrystalType;
@@ -28,6 +31,7 @@ public class EnsoulFee
private final ItemHolder[] _ensoulFee = new ItemHolder[3]; private final ItemHolder[] _ensoulFee = new ItemHolder[3];
private final ItemHolder[] _resoulFees = new ItemHolder[3]; private final ItemHolder[] _resoulFees = new ItemHolder[3];
private final List<ItemHolder> _removalFee = new ArrayList<>();
public EnsoulFee(CrystalType type) public EnsoulFee(CrystalType type)
{ {
@@ -49,6 +53,11 @@ public class EnsoulFee
_resoulFees[index] = item; _resoulFees[index] = item;
} }
public void addRemovalFee(ItemHolder itemHolder)
{
_removalFee.add(itemHolder);
}
public ItemHolder getEnsoul(int index) public ItemHolder getEnsoul(int index)
{ {
return _ensoulFee[index]; return _ensoulFee[index];
@@ -58,4 +67,9 @@ public class EnsoulFee
{ {
return _resoulFees[index]; return _resoulFees[index];
} }
public List<ItemHolder> getRemovalFee()
{
return _removalFee;
}
} }

View File

@@ -2175,6 +2175,28 @@ public final class L2ItemInstance extends L2Object
} }
} }
public void removeSpecialAbility(int position, int type)
{
if (type == 1)
{
final EnsoulOption option = _ensoulOptions.get(position);
if (option != null)
{
removeSpecialAbility(option);
_ensoulOptions.remove(position);
}
}
else if (type == 2)
{
final EnsoulOption option = _ensoulSpecialOptions.get(position);
if (option != null)
{
removeSpecialAbility(option);
_ensoulSpecialOptions.remove(position);
}
}
}
public void clearSpecialAbilities() public void clearSpecialAbilities()
{ {
_ensoulOptions.values().forEach(this::clearSpecialAbility); _ensoulOptions.values().forEach(this::clearSpecialAbility);

View File

@@ -68,6 +68,7 @@ import com.l2jmobius.gameserver.network.clientpackets.compound.RequestNewEnchant
import com.l2jmobius.gameserver.network.clientpackets.crystalization.RequestCrystallizeEstimate; import com.l2jmobius.gameserver.network.clientpackets.crystalization.RequestCrystallizeEstimate;
import com.l2jmobius.gameserver.network.clientpackets.crystalization.RequestCrystallizeItemCancel; import com.l2jmobius.gameserver.network.clientpackets.crystalization.RequestCrystallizeItemCancel;
import com.l2jmobius.gameserver.network.clientpackets.ensoul.RequestItemEnsoul; import com.l2jmobius.gameserver.network.clientpackets.ensoul.RequestItemEnsoul;
import com.l2jmobius.gameserver.network.clientpackets.ensoul.RequestTryEnSoulExtraction;
import com.l2jmobius.gameserver.network.clientpackets.faction.RequestUserFactionInfo; import com.l2jmobius.gameserver.network.clientpackets.faction.RequestUserFactionInfo;
import com.l2jmobius.gameserver.network.clientpackets.friend.RequestFriendDetailInfo; import com.l2jmobius.gameserver.network.clientpackets.friend.RequestFriendDetailInfo;
import com.l2jmobius.gameserver.network.clientpackets.luckygame.RequestLuckyGamePlay; import com.l2jmobius.gameserver.network.clientpackets.luckygame.RequestLuckyGamePlay;
@@ -396,7 +397,7 @@ public enum ExIncomingPackets implements IIncomingPackets<L2GameClient>
REQUEST_SSO_AUTHN_TOKEN(0x125, null, ConnectionState.IN_GAME), REQUEST_SSO_AUTHN_TOKEN(0x125, null, ConnectionState.IN_GAME),
REQUEST_QUEUE_TICKET_LOGIN(0x126, null, ConnectionState.IN_GAME), REQUEST_QUEUE_TICKET_LOGIN(0x126, null, ConnectionState.IN_GAME),
REQUEST_BLOCK_MEMO_INFO(0x127, null, ConnectionState.IN_GAME), REQUEST_BLOCK_MEMO_INFO(0x127, null, ConnectionState.IN_GAME),
REQUEST_TRY_EN_SOUL_EXTRACTION(0x128, null, ConnectionState.IN_GAME), REQUEST_TRY_EN_SOUL_EXTRACTION(0x128, RequestTryEnSoulExtraction::new, ConnectionState.IN_GAME),
REQUEST_RAIDBOSS_SPAWN_INFO(0x129, RequestRaidBossSpawnInfo::new, ConnectionState.IN_GAME), REQUEST_RAIDBOSS_SPAWN_INFO(0x129, RequestRaidBossSpawnInfo::new, ConnectionState.IN_GAME),
REQUEST_RAID_SERVER_INFO(0x12A, RequestRaidServerInfo::new, ConnectionState.IN_GAME), REQUEST_RAID_SERVER_INFO(0x12A, RequestRaidServerInfo::new, ConnectionState.IN_GAME),
REQUEST_SHOW_AGIT_SIEGE_INFO(0x12B, null, ConnectionState.IN_GAME), REQUEST_SHOW_AGIT_SIEGE_INFO(0x12B, null, ConnectionState.IN_GAME),

View File

@@ -0,0 +1,118 @@
/*
* 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 com.l2jmobius.gameserver.network.clientpackets.ensoul;
import java.util.Collection;
import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.gameserver.data.xml.impl.EnsoulData;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.ensoul.EnsoulOption;
import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import com.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExEnSoulExtractionResult;
/**
* @author Mobius
*/
public class RequestTryEnSoulExtraction implements IClientIncomingPacket
{
private int _itemObjectId;
private int _type;
private int _position;
@Override
public boolean read(L2GameClient client, PacketReader packet)
{
_itemObjectId = packet.readD();
_type = packet.readC();
_position = packet.readC() - 1;
return true;
}
@Override
public void run(L2GameClient client)
{
L2PcInstance player = client.getActiveChar();
if (player == null)
{
return;
}
final L2ItemInstance item = player.getInventory().getItemByObjectId(_itemObjectId);
if (item == null)
{
return;
}
EnsoulOption option = null;
if (_type == 1)
{
option = item.getSpecialAbility(_position);
}
if (_type == 2)
{
option = item.getAdditionalSpecialAbility(_position);
}
if (option == null)
{
return;
}
final Collection<ItemHolder> removalFee = EnsoulData.getInstance().getRemovalFee(item.getItem().getCrystalType());
if (removalFee.isEmpty())
{
return;
}
// Check if player has required items.
for (ItemHolder itemHolder : removalFee)
{
if (player.getInventory().getInventoryItemCount(itemHolder.getId(), -1) < itemHolder.getCount())
{
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
player.sendPacket(new ExEnSoulExtractionResult(false, item));
return;
}
}
// Take required items.
for (ItemHolder itemHolder : removalFee)
{
player.destroyItemByItemId("Rune Extract", itemHolder.getId(), itemHolder.getCount(), player, true);
}
// Remove equipped rune.
item.removeSpecialAbility(_position, _type);
final InventoryUpdate iu = new InventoryUpdate();
iu.addModifiedItem(item);
// Add rune in player inventory.
final int runeId = EnsoulData.getInstance().getStone(_type, option.getId());
if (runeId > 0)
{
iu.addItem(player.addItem("Rune Extract", runeId, 1, player, true));
}
player.sendInventoryUpdate(iu);
player.sendPacket(new ExEnSoulExtractionResult(true, item));
}
}

View File

@@ -0,0 +1,59 @@
/*
* 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 com.l2jmobius.gameserver.network.serverpackets.ensoul;
import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.model.ensoul.EnsoulOption;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.network.OutgoingPackets;
import com.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* @author Mobius
*/
public class ExEnSoulExtractionResult implements IClientOutgoingPacket
{
private final boolean _success;
private final L2ItemInstance _item;
public ExEnSoulExtractionResult(boolean success, L2ItemInstance item)
{
_success = success;
_item = item;
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_ENSOUL_EXTRACTION_RESULT.writeId(packet);
packet.writeC(_success ? 1 : 0);
if (_success)
{
packet.writeC(_item.getSpecialAbilities().size());
for (EnsoulOption option : _item.getSpecialAbilities())
{
packet.writeD(option.getId());
}
packet.writeC(_item.getAdditionalSpecialAbilities().size());
for (EnsoulOption option : _item.getAdditionalSpecialAbilities())
{
packet.writeD(option.getId());
}
}
return true;
}
}

View File

@@ -0,0 +1,40 @@
/*
* 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 com.l2jmobius.gameserver.network.serverpackets.ensoul;
import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.network.OutgoingPackets;
import com.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* @author Mobius
*/
public class ExShowEnsoulExtractionWindow implements IClientOutgoingPacket
{
public static final ExShowEnsoulExtractionWindow STATIC_PACKET = new ExShowEnsoulExtractionWindow();
private ExShowEnsoulExtractionWindow()
{
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_ENSOUL_EXTRACTION_SHOW.writeId(packet);
return true;
}
}

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Pinter:<br> <html><body>Blacksmith Pinter:<br>
Welcome. What brings you here, my friend? The name's Pinter. Yes, yes, I'm a Dwarf, and proud of it! My family has been blacksmiths in this town for three generations now! This place is in our blood!<br> Welcome. What brings you here, my friend? The name's Pinter. Yes, yes, I'm a Dwarf, and proud of it! My family has been blacksmiths in this town for three generations now! This place is in our blood!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</button> <button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Pushkin:<br> <html><body>Blacksmith Pushkin:<br>
Nice to meet you, wanderer!<br> Nice to meet you, wanderer!<br>
Rupio and I have come all the way from the Black Anvil Guild to set up shop here. We haven't been here long, but we're gonna turn this place into the best forge in Giran! What can we do for you?<br> Rupio and I have come all the way from the Black Anvil Guild to set up shop here. We haven't been here long, but we're gonna turn this place into the best forge in Giran! What can we do for you?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Kluto:<br> <html><body>Blacksmith Kluto:<br>
Interested in seeing a genius at work, hmm? Just hang around!<br> Interested in seeing a genius at work, hmm? Just hang around!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Poitan:<br> <html><body>Blacksmith Poitan:<br>
Nice to meet you, traveler. Your timing is excellent! I just finished remodeling the workshop yesterday, so you're my first customer this season!<br> Nice to meet you, traveler. Your timing is excellent! I just finished remodeling the workshop yesterday, so you're my first customer this season!<br>
What can I do for you?<br> What can I do for you?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -2,13 +2,14 @@
Hmph, who are you? Why did you come here? Unless you have a case of Dwarven beer in that tiny saddle bag, I don't want to hear about it! Bahhh!<br> Hmph, who are you? Why did you come here? Unless you have a case of Dwarven beer in that tiny saddle bag, I don't want to hear about it! Bahhh!<br>
All I ever hear is heat this, cool that, get to the bellows, it's too hot, don't drop it! Argh! Makes me want to puke! It SO does not pay to be the low man on the totem pole! I want to MAKE something!<br> All I ever hear is heat this, cool that, get to the bellows, it's too hot, don't drop it! Argh! Makes me want to puke! It SO does not pay to be the low man on the totem pole! I want to MAKE something!<br>
Armor, a blade... anything!<br> Armor, a blade... anything!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_02.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,10 +1,13 @@
<html><body>Blacksmith Duning:<br> <html><body>Blacksmith Duning:<br>
Hello there! Welcome to the forge! It's so exciting here. So many adventurers stopping by! Why just yesterday, I had lunch with a bounty hunter, tea with an informer, and supper with a ruins explorer! The stories! The romances! The adventures! Better than day time theater!<br> Hello there! Welcome to the forge! It's so exciting here. So many adventurers stopping by! Why just yesterday, I had lunch with a bounty hunter, tea with an informer, and supper with a ruins explorer! The stories! The romances! The adventures! Better than day time theater!<br>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">"I want to craft a dual weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">"I want to bestow a Soul Crystal effect on a weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN="LEFT" ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate?"</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN="LEFT" ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN="LEFT" ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Wilbert:<br> <html><body>Blacksmith Wilbert:<br>
What do we do here? Well, blacksmiths make things like armor, swords, polearms, axes, plows... But wait! There's more! Look, over there... Aden Castle stands, proudly disregarding the laws of gravity. And you know why? Engineering! It would have collapsed a long time ago if it hadn't been for the efforts of the Black Anvil craftsmen.<br> What do we do here? Well, blacksmiths make things like armor, swords, polearms, axes, plows... But wait! There's more! Look, over there... Aden Castle stands, proudly disregarding the laws of gravity. And you know why? Engineering! It would have collapsed a long time ago if it hadn't been for the efforts of the Black Anvil craftsmen.<br>
And... This is just a rumor, but... They say that the giant golem the rebels used to evict the Human lords was made and sold by the Black Anvil. After all, who else could do something like that, right?<br> And... This is just a rumor, but... They say that the giant golem the rebels used to evict the Human lords was made and sold by the Black Anvil. After all, who else could do something like that, right?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade set options."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate?"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Morning:<br> <html><body>Blacksmith Morning:<br>
Welcome! If you have money, I have skills. What do you need, friend?<br> Welcome! If you have money, I have skills. What do you need, friend?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade set options."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_01.htm">"I want to craft a dual weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">"I want to bestow a Soul Crystal effect on a weapon."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate?"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body> Blacksmith Hilda:<br> <html><body> Blacksmith Hilda:<br>
Do you have any business for Hilda? Hmm? Hilda is busy, busy! She must make swords, plows, polearms, and armor! No visiting! Hilda doesn't visit, just works! Hilda doesn't mind watchers, but if someone talks while Hilda works, someone might get hit by hammer. In the face. Hard.<br> Do you have any business for Hilda? Hmm? Hilda is busy, busy! She must make swords, plows, polearms, and armor! No visiting! Hilda doesn't visit, just works! Hilda doesn't mind watchers, but if someone talks while Hilda works, someone might get hit by hammer. In the face. Hard.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,13 +1,14 @@
<html><body>Blacksmith Vincenz:<br> <html><body>Blacksmith Vincenz:<br>
Welcome to the thunder forge! Hahaha! Noisy, isn't it?<br> Welcome to the thunder forge! Hahaha! Noisy, isn't it?<br>
Do you have anything that you like to craft? We do it all here! Order whatever you like. A pendant? A sword? A war golem? It's all the same to us.<br> Do you have anything that you like to craft? We do it all here! Order whatever you like. A pendant? A sword? A war golem? It's all the same to us.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -1,12 +1,13 @@
<html><body>Blacksmith Buryun:<br> <html><body>Blacksmith Buryun:<br>
Welcome! Your timing is impeccable, I just finished up a three-day job repairing this here Claymore for Fred. A nasty piece of work that! What can I help you with?<br> Welcome! Your timing is impeccable, I just finished up a three-day job repairing this here Claymore for Fred. A nasty piece of work that! What can I help you with?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">R-grade set option</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_ensoul_window">"I want to bestow a Soul Crystal effect on a weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">Craft a dual weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_show_extract_ensoul_window"><font color="LEVEL">"I want to remove the Soul Crystal effect from my weapon." (Extract Soul Crystal)</font></Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/weapon_sa_01.htm">Bestow a Soul Crystal effect on a weapon</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">"I want to augment an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">Craft an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_03.htm">"Show me the R-grade Set Options."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">Seal armor and accessories</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/duals_03.htm">"I want to craft a dual weapon."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">Change a Bound Item to an Unidentified Item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/crafting_01.htm">"I want to craft an item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 5">Augment an item</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 4">"I want to seal armor and accessories."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Tell me about the local lord and tax rate."</Button> <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link common/cursed_to_unidentified.htm">"I want to change a Bound Item to an Unidentified Item."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_TerritoryStatus">"Can you tell me about the local lord and tax rate."</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button> <Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html> </body></html>

View File

@@ -19,6 +19,7 @@ package handlers.bypasshandlers;
import com.l2jmobius.gameserver.handler.IBypassHandler; import com.l2jmobius.gameserver.handler.IBypassHandler;
import com.l2jmobius.gameserver.model.actor.L2Character; import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExShowEnsoulExtractionWindow;
import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExShowEnsoulWindow; import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExShowEnsoulWindow;
/** /**
@@ -29,6 +30,7 @@ public class EnsoulWindow implements IBypassHandler
private static final String[] COMMANDS = private static final String[] COMMANDS =
{ {
"show_ensoul_window", "show_ensoul_window",
"show_extract_ensoul_window"
}; };
@Override @Override
@@ -39,9 +41,18 @@ public class EnsoulWindow implements IBypassHandler
return false; return false;
} }
if (command.toLowerCase().startsWith(COMMANDS[0])) // show_ensoul_window
{
activeChar.sendPacket(ExShowEnsoulWindow.STATIC_PACKET); activeChar.sendPacket(ExShowEnsoulWindow.STATIC_PACKET);
return true; return true;
} }
else if (command.toLowerCase().startsWith(COMMANDS[1])) // show_extract_ensoul_window
{
activeChar.sendPacket(ExShowEnsoulExtractionWindow.STATIC_PACKET);
return true;
}
return false;
}
@Override @Override
public String[] getBypassList() public String[] getBypassList()

View File

@@ -17,6 +17,8 @@
package com.l2jmobius.gameserver.data.xml.impl; package com.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumMap; import java.util.EnumMap;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -122,6 +124,11 @@ public class EnsoulData implements IGameXmlReader
parseReFee(feeNode, fee, 2); parseReFee(feeNode, fee, 2);
break; break;
} }
case "remove":
{
parseRemove(feeNode, fee);
break;
}
} }
}); });
} }
@@ -143,6 +150,14 @@ public class EnsoulData implements IGameXmlReader
fee.setResoul(index, new ItemHolder(id, count)); fee.setResoul(index, new ItemHolder(id, count));
} }
private void parseRemove(Node ensoulNode, EnsoulFee fee)
{
final NamedNodeMap attrs = ensoulNode.getAttributes();
final int id = parseInteger(attrs, "itemId");
final int count = parseInteger(attrs, "count");
fee.addRemovalFee(new ItemHolder(id, count));
}
private void parseOptions(Node ensoulNode) private void parseOptions(Node ensoulNode)
{ {
final NamedNodeMap attrs = ensoulNode.getAttributes(); final NamedNodeMap attrs = ensoulNode.getAttributes();
@@ -177,6 +192,12 @@ public class EnsoulData implements IGameXmlReader
return fee != null ? fee.getResoul(index) : null; return fee != null ? fee.getResoul(index) : null;
} }
public Collection<ItemHolder> getRemovalFee(CrystalType type)
{
final EnsoulFee fee = _ensoulFees.get(type);
return fee != null ? fee.getRemovalFee() : Collections.emptyList();
}
public EnsoulOption getOption(int id) public EnsoulOption getOption(int id)
{ {
return _ensoulOptions.get(id); return _ensoulOptions.get(id);
@@ -187,6 +208,24 @@ public class EnsoulData implements IGameXmlReader
return _ensoulStones.get(id); return _ensoulStones.get(id);
} }
public int getStone(int type, int optionId)
{
for (EnsoulStone stone : _ensoulStones.values())
{
if (stone.getSlotType() == type)
{
for (int id : stone.getOptions())
{
if (id == optionId)
{
return stone.getId();
}
}
}
}
return 0;
}
/** /**
* Gets the single instance of EnsoulData. * Gets the single instance of EnsoulData.
* @return single instance of EnsoulData * @return single instance of EnsoulData

View File

@@ -16,6 +16,9 @@
*/ */
package com.l2jmobius.gameserver.model.ensoul; package com.l2jmobius.gameserver.model.ensoul;
import java.util.ArrayList;
import java.util.List;
import com.l2jmobius.gameserver.model.holders.ItemHolder; import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.items.type.CrystalType; import com.l2jmobius.gameserver.model.items.type.CrystalType;
@@ -28,6 +31,7 @@ public class EnsoulFee
private final ItemHolder[] _ensoulFee = new ItemHolder[3]; private final ItemHolder[] _ensoulFee = new ItemHolder[3];
private final ItemHolder[] _resoulFees = new ItemHolder[3]; private final ItemHolder[] _resoulFees = new ItemHolder[3];
private final List<ItemHolder> _removalFee = new ArrayList<>();
public EnsoulFee(CrystalType type) public EnsoulFee(CrystalType type)
{ {
@@ -49,6 +53,11 @@ public class EnsoulFee
_resoulFees[index] = item; _resoulFees[index] = item;
} }
public void addRemovalFee(ItemHolder itemHolder)
{
_removalFee.add(itemHolder);
}
public ItemHolder getEnsoul(int index) public ItemHolder getEnsoul(int index)
{ {
return _ensoulFee[index]; return _ensoulFee[index];
@@ -58,4 +67,9 @@ public class EnsoulFee
{ {
return _resoulFees[index]; return _resoulFees[index];
} }
public List<ItemHolder> getRemovalFee()
{
return _removalFee;
}
} }

View File

@@ -2175,6 +2175,28 @@ public final class L2ItemInstance extends L2Object
} }
} }
public void removeSpecialAbility(int position, int type)
{
if (type == 1)
{
final EnsoulOption option = _ensoulOptions.get(position);
if (option != null)
{
removeSpecialAbility(option);
_ensoulOptions.remove(position);
}
}
else if (type == 2)
{
final EnsoulOption option = _ensoulSpecialOptions.get(position);
if (option != null)
{
removeSpecialAbility(option);
_ensoulSpecialOptions.remove(position);
}
}
}
public void clearSpecialAbilities() public void clearSpecialAbilities()
{ {
_ensoulOptions.values().forEach(this::clearSpecialAbility); _ensoulOptions.values().forEach(this::clearSpecialAbility);

View File

@@ -68,6 +68,7 @@ import com.l2jmobius.gameserver.network.clientpackets.compound.RequestNewEnchant
import com.l2jmobius.gameserver.network.clientpackets.crystalization.RequestCrystallizeEstimate; import com.l2jmobius.gameserver.network.clientpackets.crystalization.RequestCrystallizeEstimate;
import com.l2jmobius.gameserver.network.clientpackets.crystalization.RequestCrystallizeItemCancel; import com.l2jmobius.gameserver.network.clientpackets.crystalization.RequestCrystallizeItemCancel;
import com.l2jmobius.gameserver.network.clientpackets.ensoul.RequestItemEnsoul; import com.l2jmobius.gameserver.network.clientpackets.ensoul.RequestItemEnsoul;
import com.l2jmobius.gameserver.network.clientpackets.ensoul.RequestTryEnSoulExtraction;
import com.l2jmobius.gameserver.network.clientpackets.faction.RequestUserFactionInfo; import com.l2jmobius.gameserver.network.clientpackets.faction.RequestUserFactionInfo;
import com.l2jmobius.gameserver.network.clientpackets.friend.RequestFriendDetailInfo; import com.l2jmobius.gameserver.network.clientpackets.friend.RequestFriendDetailInfo;
import com.l2jmobius.gameserver.network.clientpackets.luckygame.RequestLuckyGamePlay; import com.l2jmobius.gameserver.network.clientpackets.luckygame.RequestLuckyGamePlay;
@@ -396,7 +397,7 @@ public enum ExIncomingPackets implements IIncomingPackets<L2GameClient>
REQUEST_SSO_AUTHN_TOKEN(0x125, null, ConnectionState.IN_GAME), REQUEST_SSO_AUTHN_TOKEN(0x125, null, ConnectionState.IN_GAME),
REQUEST_QUEUE_TICKET_LOGIN(0x126, null, ConnectionState.IN_GAME), REQUEST_QUEUE_TICKET_LOGIN(0x126, null, ConnectionState.IN_GAME),
REQUEST_BLOCK_MEMO_INFO(0x127, null, ConnectionState.IN_GAME), REQUEST_BLOCK_MEMO_INFO(0x127, null, ConnectionState.IN_GAME),
REQUEST_TRY_EN_SOUL_EXTRACTION(0x128, null, ConnectionState.IN_GAME), REQUEST_TRY_EN_SOUL_EXTRACTION(0x128, RequestTryEnSoulExtraction::new, ConnectionState.IN_GAME),
REQUEST_RAIDBOSS_SPAWN_INFO(0x129, RequestRaidBossSpawnInfo::new, ConnectionState.IN_GAME), REQUEST_RAIDBOSS_SPAWN_INFO(0x129, RequestRaidBossSpawnInfo::new, ConnectionState.IN_GAME),
REQUEST_RAID_SERVER_INFO(0x12A, RequestRaidServerInfo::new, ConnectionState.IN_GAME), REQUEST_RAID_SERVER_INFO(0x12A, RequestRaidServerInfo::new, ConnectionState.IN_GAME),
REQUEST_SHOW_AGIT_SIEGE_INFO(0x12B, null, ConnectionState.IN_GAME), REQUEST_SHOW_AGIT_SIEGE_INFO(0x12B, null, ConnectionState.IN_GAME),

View File

@@ -0,0 +1,118 @@
/*
* 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 com.l2jmobius.gameserver.network.clientpackets.ensoul;
import java.util.Collection;
import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.gameserver.data.xml.impl.EnsoulData;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.ensoul.EnsoulOption;
import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import com.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import com.l2jmobius.gameserver.network.serverpackets.ensoul.ExEnSoulExtractionResult;
/**
* @author Mobius
*/
public class RequestTryEnSoulExtraction implements IClientIncomingPacket
{
private int _itemObjectId;
private int _type;
private int _position;
@Override
public boolean read(L2GameClient client, PacketReader packet)
{
_itemObjectId = packet.readD();
_type = packet.readC();
_position = packet.readC() - 1;
return true;
}
@Override
public void run(L2GameClient client)
{
L2PcInstance player = client.getActiveChar();
if (player == null)
{
return;
}
final L2ItemInstance item = player.getInventory().getItemByObjectId(_itemObjectId);
if (item == null)
{
return;
}
EnsoulOption option = null;
if (_type == 1)
{
option = item.getSpecialAbility(_position);
}
if (_type == 2)
{
option = item.getAdditionalSpecialAbility(_position);
}
if (option == null)
{
return;
}
final Collection<ItemHolder> removalFee = EnsoulData.getInstance().getRemovalFee(item.getItem().getCrystalType());
if (removalFee.isEmpty())
{
return;
}
// Check if player has required items.
for (ItemHolder itemHolder : removalFee)
{
if (player.getInventory().getInventoryItemCount(itemHolder.getId(), -1) < itemHolder.getCount())
{
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT);
player.sendPacket(new ExEnSoulExtractionResult(false, item));
return;
}
}
// Take required items.
for (ItemHolder itemHolder : removalFee)
{
player.destroyItemByItemId("Rune Extract", itemHolder.getId(), itemHolder.getCount(), player, true);
}
// Remove equipped rune.
item.removeSpecialAbility(_position, _type);
final InventoryUpdate iu = new InventoryUpdate();
iu.addModifiedItem(item);
// Add rune in player inventory.
final int runeId = EnsoulData.getInstance().getStone(_type, option.getId());
if (runeId > 0)
{
iu.addItem(player.addItem("Rune Extract", runeId, 1, player, true));
}
player.sendInventoryUpdate(iu);
player.sendPacket(new ExEnSoulExtractionResult(true, item));
}
}

View File

@@ -0,0 +1,59 @@
/*
* 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 com.l2jmobius.gameserver.network.serverpackets.ensoul;
import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.model.ensoul.EnsoulOption;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.network.OutgoingPackets;
import com.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* @author Mobius
*/
public class ExEnSoulExtractionResult implements IClientOutgoingPacket
{
private final boolean _success;
private final L2ItemInstance _item;
public ExEnSoulExtractionResult(boolean success, L2ItemInstance item)
{
_success = success;
_item = item;
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_ENSOUL_EXTRACTION_RESULT.writeId(packet);
packet.writeC(_success ? 1 : 0);
if (_success)
{
packet.writeC(_item.getSpecialAbilities().size());
for (EnsoulOption option : _item.getSpecialAbilities())
{
packet.writeD(option.getId());
}
packet.writeC(_item.getAdditionalSpecialAbilities().size());
for (EnsoulOption option : _item.getAdditionalSpecialAbilities())
{
packet.writeD(option.getId());
}
}
return true;
}
}

View File

@@ -0,0 +1,40 @@
/*
* 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 com.l2jmobius.gameserver.network.serverpackets.ensoul;
import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.network.OutgoingPackets;
import com.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* @author Mobius
*/
public class ExShowEnsoulExtractionWindow implements IClientOutgoingPacket
{
public static final ExShowEnsoulExtractionWindow STATIC_PACKET = new ExShowEnsoulExtractionWindow();
private ExShowEnsoulExtractionWindow()
{
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_ENSOUL_EXTRACTION_SHOW.writeId(packet);
return true;
}
}