Addition of Enhance Your Weapon quest.

Contributed by Minzee.
This commit is contained in:
MobiusDevelopment 2020-07-14 03:13:15 +00:00
parent f02f1407d2
commit cf70f33141
78 changed files with 1669 additions and 57 deletions

View File

@ -0,0 +1,438 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd/LevelUpCrystalData.xsd">
<crystal>
<item itemId="4629" level="0" leveledItemId="4630" /> <!-- RED 0 - 1 -->
<item itemId="4630" level="1" leveledItemId="4631" /> <!-- RED 1 - 2 -->
<item itemId="4631" level="2" leveledItemId="4632" /> <!-- RED 2 - 3 -->
<item itemId="4632" level="3" leveledItemId="4633" /> <!-- RED 3 - 4 -->
<item itemId="4633" level="4" leveledItemId="4634" /> <!-- RED 4 - 5 -->
<item itemId="4634" level="5" leveledItemId="4635" /> <!-- RED 5 - 6 -->
<item itemId="4635" level="6" leveledItemId="4636" /> <!-- RED 6 - 7 -->
<item itemId="4636" level="7" leveledItemId="4637" /> <!-- RED 7 - 8 -->
<item itemId="4637" level="8" leveledItemId="4638" /> <!-- RED 8 - 9 -->
<item itemId="4638" level="9" leveledItemId="4639" /> <!-- RED 9 - 10 -->
<item itemId="4639" level="10" leveledItemId="5577" /> <!-- RED 10 - 11 -->
<item itemId="5577" level="11" leveledItemId="5580" /> <!-- RED 11 - 12 -->
<item itemId="5580" level="12" leveledItemId="5908" /> <!-- RED 12 - 13 -->
<item itemId="5908" level="13" leveledItemId="9570" /> <!-- RED 13 - 14 -->
<item itemId="9570" level="14" leveledItemId="10480" /> <!-- RED 14 - 15 -->
<item itemId="10480" level="15" leveledItemId="13071" /> <!-- RED 15 - 16 -->
<item itemId="13071" level="16" leveledItemId="15541" /> <!-- RED 16 - 17 -->
<item itemId="15541" level="17" leveledItemId="15826" /> <!-- RED 17 - 18 -->
<item itemId="4640" level="0" leveledItemId="4641" /> <!-- GREEN 0 - 1 -->
<item itemId="4641" level="1" leveledItemId="4642" /> <!-- GREEN 1 - 2 -->
<item itemId="4642" level="2" leveledItemId="4643" /> <!-- GREEN 2 - 3 -->
<item itemId="4643" level="3" leveledItemId="4644" /> <!-- GREEN 3 - 4 -->
<item itemId="4644" level="4" leveledItemId="4645" /> <!-- GREEN 4 - 5 -->
<item itemId="4645" level="5" leveledItemId="4646" /> <!-- GREEN 5 - 6 -->
<item itemId="4646" level="6" leveledItemId="4647" /> <!-- GREEN 6 - 7 -->
<item itemId="4647" level="7" leveledItemId="4648" /> <!-- GREEN 7 - 8 -->
<item itemId="4648" level="8" leveledItemId="4649" /> <!-- GREEN 8 - 9 -->
<item itemId="4649" level="9" leveledItemId="4650" /> <!-- GREEN 9 - 10 -->
<item itemId="4650" level="10" leveledItemId="5578" /> <!-- GREEN 10 - 11 -->
<item itemId="5578" level="11" leveledItemId="5581" /> <!-- GREEN 11 - 12 -->
<item itemId="5581" level="12" leveledItemId="5911" /> <!-- GREEN 12 - 13 -->
<item itemId="5911" level="13" leveledItemId="9572" /> <!-- GREEN 13 - 14 -->
<item itemId="9572" level="14" leveledItemId="10482" /> <!-- GREEN 14 - 15 -->
<item itemId="10482" level="15" leveledItemId="13073" /> <!-- GREEN 15 - 16 -->
<item itemId="13073" level="16" leveledItemId="15543" /> <!-- GREEN 16 - 17 -->
<item itemId="15543" level="17" leveledItemId="15828" /> <!-- GREEN 17 - 18 -->
<item itemId="4651" level="0" leveledItemId="4652" /> <!-- BLUE 0 - 1 -->
<item itemId="4652" level="1" leveledItemId="4653" /> <!-- BLUE 1 - 2 -->
<item itemId="4653" level="2" leveledItemId="4654" /> <!-- BLUE 2 - 3 -->
<item itemId="4654" level="3" leveledItemId="4655" /> <!-- BLUE 3 - 4 -->
<item itemId="4655" level="4" leveledItemId="4656" /> <!-- BLUE 4 - 5 -->
<item itemId="4656" level="5" leveledItemId="4657" /> <!-- BLUE 5 - 6 -->
<item itemId="4657" level="6" leveledItemId="4658" /> <!-- BLUE 6 - 7 -->
<item itemId="4658" level="7" leveledItemId="4659" /> <!-- BLUE 7 - 8 -->
<item itemId="4659" level="8" leveledItemId="4660" /> <!-- BLUE 8 - 9 -->
<item itemId="4660" level="9" leveledItemId="4661" /> <!-- BLUE 9 - 10 -->
<item itemId="4661" level="10" leveledItemId="5579" /> <!-- BLUE 10 - 11 -->
<item itemId="5579" level="11" leveledItemId="5582" /> <!-- BLUE 11 - 12 -->
<item itemId="5582" level="12" leveledItemId="5914" /> <!-- BLUE 12 - 13 -->
<item itemId="5914" level="13" leveledItemId="9571" /> <!-- BLUE 13 - 14 -->
<item itemId="9571" level="14" leveledItemId="10481" /> <!-- BLUE 14 - 15 -->
<item itemId="10481" level="15" leveledItemId="13072" /> <!-- BLUE 15 - 16 -->
<item itemId="13072" level="16" leveledItemId="15542" /> <!-- BLUE 16 - 17 -->
<item itemId="15542" level="17" leveledItemId="15827" /> <!-- BLUE 17 - 18 -->
</crystal>
<npc>
<!-- Mobs that level up crystal from Level 1 up to 10 -->
<item npcId="20583"> <!-- Timak Orc -->
<detail chance="100" skill="true" maxLevel="1" />
</item>
<item npcId="20584"> <!-- Timak Orc Archer -->
<detail chance="100" skill="true" maxLevel="1" />
</item>
<item npcId="20585"> <!-- Timak Orc Soldier -->
<detail chance="100" skill="true" maxLevel="1" />
</item>
<item npcId="20586"> <!-- Timak Orc Warrior -->
<detail chance="100" skill="true" maxLevel="1" />
</item>
<item npcId="20587"> <!-- Timak Orc Shaman -->
<detail chance="100" skill="true" maxLevel="2" />
</item>
<item npcId="20588"> <!-- Timak Orc Overlord -->
<detail chance="100" skill="true" maxLevel="2" />
</item>
<item npcId="20625"> <!-- Malruk Knight -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20626"> <!-- Malruk Berserker -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20627"> <!-- Malruk Lord -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20628"> <!-- Limal Karinness -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20629"> <!-- Karik -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20636"> <!-- Forest of Mirrors Ghost -->
<detail chance="100" skill="true" maxLevel="2" />
</item>
<item npcId="20637"> <!-- Forest of Mirrors Ghost -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="20638"> <!-- Forest of Mirrors Ghost -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="20639"> <!-- Mirror -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="20640"> <!-- Harit Lizardman -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="20641"> <!-- Harit Lizardman Grunt -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="20642"> <!-- Harit Lizardman Archer -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="20646"> <!-- Halingka -->
<detail chance="100" skill="true" maxLevel="5" />
</item>
<item npcId="20647"> <!-- Yintzu -->
<detail chance="100" skill="true" maxLevel="5" />
</item>
<item npcId="20648"> <!-- Paliote -->
<detail chance="100" skill="true" maxLevel="6" />
</item>
<item npcId="20649"> <!-- Hamrut -->
<detail chance="100" skill="true" maxLevel="6" />
</item>
<item npcId="20650"> <!-- Kranrot -->
<detail chance="100" skill="true" maxLevel="7" />
</item>
<item npcId="20674"> <!-- Doom Knight -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20761"> <!-- Pytan -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20762"> <!-- Pytan Knight -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20767"> <!-- Timak Orc Troop Leader -->
<detail chance="100" skill="true" maxLevel="2" />
</item>
<item npcId="20768"> <!-- Timak Orc Troop Shaman -->
<detail chance="100" skill="true" maxLevel="2" />
</item>
<item npcId="20769"> <!-- Timak Orc Troop Warrior -->
<detail chance="100" skill="true" maxLevel="1" />
</item>
<item npcId="20770"> <!-- Timak Orc Troop Archer -->
<detail chance="100" skill="true" maxLevel="1" />
</item>
<item npcId="20793"> <!-- Nos -->
<detail chance="100" skill="true" maxLevel="1" />
</item>
<item npcId="20794"> <!-- Blade Stakato -->
<detail chance="100" skill="true" maxLevel="1" />
</item>
<item npcId="20795"> <!-- Blade Stakato Worker -->
<detail chance="100" skill="true" maxLevel="1" />
</item>
<item npcId="20796"> <!-- Blade Stakato Warrior -->
<detail chance="100" skill="true" maxLevel="1" />
</item>
<item npcId="20797"> <!-- Blade Stakato Drone -->
<detail chance="100" skill="true" maxLevel="2" />
</item>
<item npcId="20798"> <!-- Water Giant -->
<detail chance="100" skill="true" maxLevel="2" />
</item>
<item npcId="20799"> <!-- Queen Undine Lad -->
<detail chance="100" skill="true" maxLevel="2" />
</item>
<item npcId="20800"> <!-- Eva's Seeker -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="20801"> <!-- Theeder Piker -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="20802"> <!-- Theeder Mage -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="20803"> <!-- Doll Master -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="20821"> <!-- Erin Ediunce -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20823"> <!-- Platinum Tribe Soldier -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20826"> <!-- Platinum Tribe Archer -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20827"> <!-- Platinum Tribe Warrior -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20828"> <!-- Platinum Tribe Shaman -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20829"> <!-- Platinum Tribe Overlord -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20830"> <!-- Guardian Angel -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20831"> <!-- Seal Angel -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20839"> <!-- Unpleasant Humming -->
<detail chance="100" skill="true" maxLevel="2" />
</item>
<item npcId="20840"> <!-- Death Flyer -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="20841"> <!-- Fiend Archer -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="20842"> <!-- Musveren -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="20843"> <!-- Zaken's Royal Guard -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="20844"> <!-- Kaim Vanul -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="20845"> <!-- Pirate's Zombie Captain -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="20846"> <!-- Doll Blader -->
<detail chance="100" skill="true" maxLevel="5" />
</item>
<item npcId="20847"> <!-- Vale Master -->
<detail chance="100" skill="true" maxLevel="5" />
</item>
<item npcId="20848"> <!-- Light Bringer -->
<detail chance="100" skill="true" maxLevel="2" />
</item>
<item npcId="20849"> <!-- Light Worm -->
<detail chance="100" skill="true" maxLevel="1" />
</item>
<item npcId="20860"> <!-- Seal Angel -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="20986"> <!-- Sairon -->
<detail chance="100" skill="true" maxLevel="5" />
</item>
<item npcId="20987"> <!-- Sairon's Doll -->
<detail chance="100" skill="true" maxLevel="5" />
</item>
<item npcId="20988"> <!-- Sairon's Puppet -->
<detail chance="100" skill="true" maxLevel="5" />
</item>
<item npcId="20994"> <!-- Garden Guard Leader -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="20995"> <!-- Garden Guard -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="21006"> <!-- Doom Servant -->
<detail chance="100" skill="true" maxLevel="7" />
</item>
<item npcId="21007"> <!-- Doom Guard -->
<detail chance="100" skill="true" maxLevel="8" />
</item>
<item npcId="21008"> <!-- Doom Archer -->
<detail chance="100" skill="true" maxLevel="8" />
</item>
<item npcId="21009"> <!-- Doom Trooper -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="21010"> <!-- Doom Warrior -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="21062"> <!-- Messenger Angel -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="21063"> <!-- Messenger Angel -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="21064"> <!-- Platinum Guardian Archer -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="21065"> <!-- Platinum Guardian Warrior -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="21066"> <!-- Platinum Guardian Shaman -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="21067"> <!-- Guardian Archangel -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="21068"> <!-- Guardian Archangel -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="21069"> <!-- Platinum Guardian Prefect -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="21070"> <!-- Seal Archangel -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="21071"> <!-- Seal Archangel -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="21072"> <!-- Platinum Guardian Chief -->
<detail chance="100" skill="true" maxLevel="9" />
</item>
<item npcId="21611"> <!-- Unpleasant Humming -->
<detail chance="100" skill="true" maxLevel="2" />
</item>
<item npcId="21612"> <!-- Unpleasant Humming -->
<detail chance="100" skill="true" maxLevel="2" />
</item>
<item npcId="21614"> <!-- Death Flyer -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="21615"> <!-- Death Flyer -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="21617"> <!-- Fiend Archer -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="21620"> <!-- Musveren -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="21621"> <!-- Musveren -->
<detail chance="100" skill="true" maxLevel="3" />
</item>
<item npcId="21623"> <!-- Zaken's Guard -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="21624"> <!-- Zaken's Guard -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="21626"> <!-- Kaim Vanul -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="21627"> <!-- Kaim Vanul -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="21629"> <!-- Pirate Zombie Captain -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="21630"> <!-- Pirate Zombie Captain -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="21632"> <!-- Doll Blader -->
<detail chance="100" skill="true" maxLevel="5" />
</item>
<item npcId="21633"> <!-- Doll Blader -->
<detail chance="100" skill="true" maxLevel="5" />
</item>
<item npcId="21635"> <!-- Vale Master -->
<detail chance="100" skill="true" maxLevel="5" />
</item>
<item npcId="21636"> <!-- Vale Master -->
<detail chance="100" skill="true" maxLevel="5" />
</item>
<item npcId="29026"> <!-- Pirate Zombie Captain -->
<detail chance="100" skill="true" maxLevel="4" />
</item>
<item npcId="35412"> <!-- Doom Guard -->
<detail chance="100" skill="true" maxLevel="8" />
</item>
<item npcId="35413"> <!-- Doom Archer -->
<detail chance="100" skill="true" maxLevel="8" />
</item>
<!-- RaidBosses or GrandBosses that level up crystal from Level 10 up to 18 -->
<item npcId="29022"> <!-- Zaken -->
<detail chance="100" absorbType="FULL_PARTY" levelList="10, 11" />
</item>
<item npcId="22215"> <!-- Tyrannosaurus -->
<detail chance="100" absorbType="PARTY_ONE_RANDOM" levelList="10, 11" />
</item>
<item npcId="22216"> <!-- Tyrannosaurus -->
<detail chance="100" absorbType="PARTY_ONE_RANDOM" levelList="10, 11" />
</item>
<item npcId="22217"> <!-- Tyrannosaurus -->
<detail chance="100" absorbType="PARTY_ONE_RANDOM" levelList="10, 11" />
</item>
<item npcId="25109"> <!-- Antharas Priest Cloe -->
<detail chance="35" absorbType="PARTY_ONE_RANDOM" levelList="10, 11" />
</item>
<item npcId="25163"> <!-- Roaring Skylancer -->
<detail chance="35" absorbType="PARTY_ONE_RANDOM" levelList="10, 11" />
</item>
<item npcId="25202"> <!-- Krokian Padisha Sobekk -->
<detail chance="35" absorbType="PARTY_ONE_RANDOM" levelList="10, 11" />
</item>
<item npcId="25269"> <!-- Beast Lord Behemoth -->
<detail chance="35" absorbType="PARTY_ONE_RANDOM" levelList="10, 11" />
</item>
<item npcId="25283"> <!-- Lilith -->
<detail chance="100" absorbType="FULL_PARTY" levelList="10, 11" />
</item>
<item npcId="25286"> <!-- Anakim -->
<detail chance="100" absorbType="FULL_PARTY" levelList="10, 11" />
</item>
<item npcId="25319"> <!-- Ember -->
<detail chance="75" absorbType="FULL_PARTY" levelList="10, 11, 12, 13" />
</item>
<item npcId="25328"> <!-- Eilhalder von Hellmann -->
<detail chance="35" absorbType="PARTY_ONE_RANDOM" levelList="10, 11" />
</item>
<item npcId="25337"> <!-- Anakazel -->
<detail chance="75" absorbType="PARTY_ONE_RANDOM" levelList="10, 11" />
</item>
<item npcId="25338"> <!-- Anakazel -->
<detail chance="75" absorbType="PARTY_ONE_RANDOM" levelList="12" />
</item>
<item npcId="25453"> <!-- Meanas Anor -->
<detail chance="35" absorbType="PARTY_ONE_RANDOM" levelList="10, 11" />
</item>
<item npcId="29020"> <!-- Baium -->
<detail chance="100" absorbType="FULL_PARTY" levelList="10, 11" />
</item>
<item npcId="29028"> <!-- Valakas -->
<detail chance="100" absorbType="FULL_PARTY" levelList="12" />
</item>
<item npcId="29047"> <!-- Scarlet van Halisha -->
<detail chance="100" absorbType="FULL_PARTY" levelList="12" />
</item>
<item npcId="29065"> <!-- Sailren -->
<detail chance="75" absorbType="PARTY_ONE_RANDOM" levelList="10, 11" />
</item>
<item npcId="29066"> <!-- Antharas -->
<detail chance="100" absorbType="FULL_PARTY" levelList="12" />
</item>
<item npcId="29067"> <!-- Antharas -->
<detail chance="100" absorbType="FULL_PARTY" levelList="12" />
</item>
<item npcId="29068"> <!-- Antharas -->
<detail chance="100" absorbType="FULL_PARTY" levelList="12" />
</item>
</npc>
</list>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Jurek:<br>
Hello there, have you come to learn how to enhance the abilities of your weapon?<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-02.htm">"Yes, I wish to learn more."</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Grand Magister Jurek:<br>
I have a growing sense of dread of late. Something terrible is coming. Can you hear it? The trees in the forest, the birds in the sky and the fish in the ocean...They know of what I speak...<br>
I fear for the survival of the whole Human race, but I don't know what threatens it! This dark foreboding will not give me any peace whatsoever. I hope I am wrong but I fear I am not...<br>
I must do what I can to save my race! I will find like-minded individuals to join my preperations for the coming apocolypse. If only we knew when...<br>
Will you join my cause? Are you willing to lend a hand in preparing to fight the imminent darkness?<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-04.htm">"I will join your cause!"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Grand Magister Jurek:<br>
You must hurry and collect the souls of evil creatures in the soul crystal. You will find the evil ones in the <FONT COLOR=LEVEL>northern part of Oren, the Forest of Mirrors, the Cave of Giants, the Devastated Castle, the higher reaches of the Tower of Insolence, deep within the Lair of Antharas, Eva's Underwater Garden and Devil's Isle etc...</FONT>Take the crystal filled with souls to any blacksmith and he will enhance a weapon for you.<br>
It is imperative that you build as much strength as possible to prepare yourself for the coming apocolypse. After growing each of your individual strength, if you put together all of your strengths, I think you will have enough force to fight against the approaching apocolypse. Then, next time we meet, I hope to see you stronger...<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-12.htm">Ask about the evil creatures from which you will collect souls.</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Grand Magister Jurek:<br>
Oh, marvelous! If we all develop our strengths and work together, we will triumph over the coming cataclysm. My colleagues and I have recently developed a method of enhancing weaponry that should prove quite useful to all of us.<br>
This <FONT COLOR=LEVEL>weapons enhancement</FONT> boosts strength noticeably in combat.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-05.htm">Explanation of weapons enhancement</button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Grand Magister Jurek:<br>
To enhance a weapon you will need some <FONT COLOR=LEVEL>magical souls. You must collect the souls of evil creatures and trap them in the soul crystal I will give you.</FONT> You will then take the crystal to a blacksmith and he will extract the magic from the crystal and apply it to a weapon for you.<br>
All blacksmiths know how to do this, but, obviously, they don't work for free.<br>
You can collect the souls of the evil ones in the <FONT COLOR=LEVEL>northern part of Oren, the Forest of Mirrors, the Cave of Giants, the Devastated Castle, the upper floors of the Tower of Insolence, deep within the Lair of Antharas, Eva's Underwater Garden and Devil's Isle.</FONT> Enhanced weapons would greatly aid your mission.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-06.htm">"How do I collect the souls of the evil ones?"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Grand Magister Jurek:<br>
<FONT COLOR=LEVEL>After you have sapped the evil one's strength in battle, apply the crystal to his skin. His soul will be absorbed into the crystal. His mortal body is easily dispatched.</FONT> Each soul crystal can contain up to 10 souls. <FONT COLOR=LEVEL>A more precise explanation would be that it can contain up to 10 souls with regular usage. I will tell you the detailed story later when you bring back the soul crystal with 10 souls.</FONT><br>
Actually, collecting souls for the purpose of bestowing a weapon with a special power is not as easy as it sounds.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-07.htm">What are the precautions to take when collecting souls?"</button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Grand Magister Jurek:<br>
The collection of a soul doesn't always go as planned. Some evil souls will simply not be absorbed, and, if you happen to collect the wrong soul, the crystal will shatter...<br>
Soul crystals develop refined tastes, and will reject weaker souls after a while. When this happens you must seek the souls of creatures of greater evil to satisfy your crystal.<br>
Remember that you may not absorb a soul with more than one crystal because a resonance effect is created between the crystals that prevents proper absorbtion.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-08.htm">Receive a soul crystal.</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Grand Magister Jurek:<br>
Please choose one of the following three types of crystals:<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-09.htm">Red Soul Crystal</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-10.htm">Green Soul Crystal</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-11.htm">Blue Soul Crystal</button>
Each crystal bestows a different power upon the weapon it enhances, and the powers may vary from weapon to weapon.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Jurek:<br>
Here is a red soul crystal. Collect souls into it and take it to a blacksmith along with the weapon you wish to enhance. The stronger the weapon, the more souls needed to enhance it.<br>
Next time we meet I hope you have gained more strength.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Jurek:<br>
Here is a green soul crystal. Collect souls into it and take it to a blacksmith along with the weapon you wish to enhance. The stronger the weapon, the more souls needed to enhance it.<br>
Next time we meet I hope you have gained more strength.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Jurek:<br>
Here is a blue soul crystal. Collect souls into it and take it to a blacksmith along with the weapon you wish to enhance. The stronger the weapon, the more souls needed to enhance it.<br>
Next time we meet I hope you have gained more strength.
</body></html>

View File

@ -0,0 +1,11 @@
<html><body>Grand Magister Jurek:<br>
From the following areas, which area's evil creatures would you like to obtain more information about?<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-13.htm">Northern Oren</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-14.htm">Forest of Mirrors</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-15.htm">Cave of Giants</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-16.htm">Devastated Castle</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-17.htm">Tower of Insolence</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-18.htm">Lair of Antharas</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-19.htm">Eva's Underwater Garden</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-20.htm">Devil's Isle</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Jurek:<br>
It seems that the most evil creatures in northern Oren are the <FONT COLOR=LEVEL>Timak Orcs.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Jurek:<br>
It seems that the most evil creatures in the Forest of Mirrors are the <FONT COLOR=LEVEL>Forest of Mirror ghosts, mirrors and Harit Lizardmen.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Jurek:<br>
It seems that the most evil creatures in the Cave of Giants are the <FONT COLOR=LEVEL>Halingkas, Yintzus, Paliotes, Hamruts, and Kranrots.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Jurek:<br>
It seems that the most evil creatures in the Devastated Castle are the <FONT COLOR=LEVEL>Doom Servants, Doom Guards, Doom Archers, Doom Troopers, Doom Warriors, and Doom Knights.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Jurekn:<br>
It seems that the most evil creatures in the Tower of Insolence are the <FONT COLOR=LEVEL>Erin Ediunce, members of the Platinum Tribe and their Angels.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Jurek:<br>
It seems that the most evil creatures in the Lair of Antharas are the <FONT COLOR=LEVEL>Malruk Knights, Malruk Berserkers, Malruk Lords, Limal Karinness, Kariks, Pytans, and Pytan Knights.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Jurek:<br>
It seems that <FONT COLOR=LEVEL>all of the evil creatures inhabiting Eva's Underwater Garden</FONT> are appropriate soul donors.<br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Jurek:<br>
It seems that <FONT COLOR=LEVEL>all of the evil creatures inhabiting Devil's Isle</FONT> are appropriate soul donors.<br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Grand Magister Jurek:<br>
How is your mission going? Oh, I see that you need a new crystal!<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30115-08.htm">"Yes, please, may I have another?"</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon exit.htm">"Quit"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Master Gideon:<br>
Hello there, have you come to learn how to enhance the abilities of your weapon?<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-02.htm">"Yes, I wish to learn more."</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Master Gideon:<br>
I have a growing sense of dread of late. Something terrible is coming. Can you hear it? The trees in the forest, the birds in the sky and the fish in the ocean...They know of what I speak...<br>
I fear for the survival of the whole Human race, but I don't know what threatens it! This dark foreboding will not give me any peace whatsoever. I hope I am wrong but I fear I am not...<br>
I must do what I can to save my race! I will find like-minded individuals to join my preperations for the coming apocolypse. If only we knew when...<br>
Will you join my cause? Are you willing to lend a hand in preparing to fight the imminent darkness?<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-04.htm">"I will join your cause!"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Master Gideon:<br>
You must hurry and collect the souls of evil creatures in the soul crystal. You will find the evil ones in the <FONT COLOR=LEVEL>northern part of Oren, the Forest of Mirrors, the Cave of Giants, the Devastated Castle, the higher reaches of the Tower of Insolence, deep within the Lair of Antharas, Eva's Underwater Garden and Devil's Isle etc...</FONT>Take the crystal filled with souls to any blacksmith and he will enhance a weapon for you.<br>
It is imperative that you build as much strength as possible to prepare yourself for the coming apocolypse. After growing each of your individual strength, if you put together all of your strengths, I think you will have enough force to fight against the approaching apocolypse. Then, next time we meet, I hope to see you stronger...<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-12.htm">Ask about the evil creatures from which you will collect souls.</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Master Gideon:<br>
Oh, marvelous! If we all develop our strengths and work together, we will triumph over the coming cataclysm. My colleagues and I have recently developed a method of enhancing weaponry that should prove quite useful to all of us.<br>
This <FONT COLOR=LEVEL>weapons enhancement</FONT> boosts strength noticeably in combat.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-05.htm">Explanation of weapons enhancement</button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Master Gideon:<br>
To enhance a weapon you will need some <FONT COLOR=LEVEL>magical souls. You must collect the souls of evil creatures and trap them in the soul crystal I will give you.</FONT> You will then take the crystal to a blacksmith and he will extract the magic from the crystal and apply it to a weapon for you.<br>
All blacksmiths know how to do this, but, obviously, they don't work for free.<br>
You can collect the souls of the evil ones in the <FONT COLOR=LEVEL>northern part of Oren, the Forest of Mirrors, the Cave of Giants, the Devastated Castle, the upper floors of the Tower of Insolence, deep within the Lair of Antharas, Eva's Underwater Garden and Devil's Isle.</FONT> Enhanced weapons would greatly aid your mission.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-06.htm">"How do I collect the souls of the evil ones?"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Master Gideon:<br>
<FONT COLOR=LEVEL>After you have sapped the evil one's strength in battle, apply the crystal to his skin. His soul will be absorbed into the crystal. His mortal body is easily dispatched.</FONT> Each soul crystal can contain up to 10 souls. <FONT COLOR=LEVEL>A more precise explanation would be that it can contain up to 10 souls with regular usage. I will tell you the detailed story later when you bring back the soul crystal with 10 souls.</FONT><br>
Actually, collecting souls for the purpose of bestowing a weapon with a special power is not as easy as it sounds.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-07.htm">What are the precautions to take when collecting souls?"</button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Master Gideon:<br>
The collection of a soul doesn't always go as planned. Some evil souls will simply not be absorbed, and, if you happen to collect the wrong soul, the crystal will shatter...<br>
Soul crystals develop refined tastes, and will reject weaker souls after a while. When this happens you must seek the souls of creatures of greater evil to satisfy your crystal.<br>
Remember that you may not absorb a soul with more than one crystal because a resonance effect is created between the crystals that prevents proper absorbtion.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-08.htm">Receive a soul crystal.</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Master Gideon:<br>
Please choose one of the following three types of crystals:<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-09.htm">Red Soul Crystal</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-10.htm">Green Soul Crystal</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-11.htm">Blue Soul Crystal</button>
Each crystal bestows a different power upon the weapon it enhances, and the powers may vary from weapon to weapon.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Master Gideon:<br>
Here is a red soul crystal. Collect souls into it and take it to a blacksmith along with the weapon you wish to enhance. The stronger the weapon, the more souls needed to enhance it.<br>
Next time we meet I hope you have gained more strength.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Master Gideon:<br>
Here is a green soul crystal. Collect souls into it and take it to a blacksmith along with the weapon you wish to enhance. The stronger the weapon, the more souls needed to enhance it.<br>
Next time we meet I hope you have gained more strength.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Master Gideon:<br>
Here is a blue soul crystal. Collect souls into it and take it to a blacksmith along with the weapon you wish to enhance. The stronger the weapon, the more souls needed to enhance it.<br>
Next time we meet I hope you have gained more strength.
</body></html>

View File

@ -0,0 +1,11 @@
<html><body>Master Gideon:<br>
From the following areas, which area's evil creatures would you like to obtain more information about?<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-13.htm">Northern Oren</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-14.htm">Forest of Mirrors</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-15.htm">Cave of Giants</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-16.htm">Devastated Castle</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-17.htm">Tower of Insolence</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-18.htm">Lair of Antharas</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-19.htm">Eva's Underwater Garden</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-20.htm">Devil's Isle</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Master Gideon:<br>
It seems that the most evil creatures in northern Oren are the <FONT COLOR=LEVEL>Timak Orcs.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Master Gideon:<br>
It seems that the most evil creatures in the Forest of Mirrors are the <FONT COLOR=LEVEL>Forest of Mirror ghosts, mirrors and Harit Lizardmen.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Master Gideon:<br>
It seems that the most evil creatures in the Cave of Giants are the <FONT COLOR=LEVEL>Halingkas, Yintzus, Paliotes, Hamruts, and Kranrots.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Master Gideon:<br>
It seems that the most evil creatures in the Devastated Castle are the <FONT COLOR=LEVEL>Doom Servants, Doom Guards, Doom Archers, Doom Troopers, Doom Warriors, and Doom Knights.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Master Gideon:<br>
It seems that the most evil creatures in the Tower of Insolence are the <FONT COLOR=LEVEL>Erin Ediunce, members of the Platinum Tribe and their Angels.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Master Gideon:<br>
It seems that the most evil creatures in the Lair of Antharas are the <FONT COLOR=LEVEL>Malruk Knights, Malruk Berserkers, Malruk Lords, Limal Karinness, Kariks, Pytans, and Pytan Knights.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Master Gideon:<br>
It seems that <FONT COLOR=LEVEL>all of the evil creatures inhabiting Eva's Underwater Garden</FONT> are appropriate soul donors.<br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Master Gideon:<br>
It seems that <FONT COLOR=LEVEL>all of the evil creatures inhabiting Devil's Isle</FONT> are appropriate soul donors.<br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Master Gideon:<br>
How is your mission going? Oh, I see that you need a new crystal!<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30194-08.htm">"Yes, please, may I have another?"</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon exit.htm">"Quit"</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Winonin:<br>
Hello there, have you come to learn how to enhance the abilities of your weapon?<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-02.htm">"Yes, I wish to learn more."</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Magister Winonin:<br>
I have a growing sense of dread of late. Something terrible is coming. Can you hear it? The trees in the forest, the birds in the sky and the fish in the ocean...They know of what I speak...<br>
I fear for the survival of the whole Human race, but I don't know what threatens it! This dark foreboding will not give me any peace whatsoever. I hope I am wrong but I fear I am not...<br>
I must do what I can to save my race! I will find like-minded individuals to join my preperations for the coming apocolypse. If only we knew when...<br>
Will you join my cause? Are you willing to lend a hand in preparing to fight the imminent darkness?<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-04.htm">"I will join your cause!"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Magister Winonin:<br>
You must hurry and collect the souls of evil creatures in the soul crystal. You will find the evil ones in the <FONT COLOR=LEVEL>northern part of Oren, the Forest of Mirrors, the Cave of Giants, the Devastated Castle, the higher reaches of the Tower of Insolence, deep within the Lair of Antharas, Eva's Underwater Garden and Devil's Isle etc...</FONT>Take the crystal filled with souls to any blacksmith and he will enhance a weapon for you.<br>
It is imperative that you build as much strength as possible to prepare yourself for the coming apocolypse. After growing each of your individual strength, if you put together all of your strengths, I think you will have enough force to fight against the approaching apocolypse. Then, next time we meet, I hope to see you stronger...<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-12.htm">Ask about the evil creatures from which you will collect souls.</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Magister Winonin:<br>
Oh, marvelous! If we all develop our strengths and work together, we will triumph over the coming cataclysm. My colleagues and I have recently developed a method of enhancing weaponry that should prove quite useful to all of us.<br>
This <FONT COLOR=LEVEL>weapons enhancement</FONT> boosts strength noticeably in combat.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-05.htm">Explanation of weapons enhancement</button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Magister Winonin:<br>
To enhance a weapon you will need some <FONT COLOR=LEVEL>magical souls. You must collect the souls of evil creatures and trap them in the soul crystal I will give you.</FONT> You will then take the crystal to a blacksmith and he will extract the magic from the crystal and apply it to a weapon for you.<br>
All blacksmiths know how to do this, but, obviously, they don't work for free.<br>
You can collect the souls of the evil ones in the <FONT COLOR=LEVEL>northern part of Oren, the Forest of Mirrors, the Cave of Giants, the Devastated Castle, the upper floors of the Tower of Insolence, deep within the Lair of Antharas, Eva's Underwater Garden and Devil's Isle.</FONT> Enhanced weapons would greatly aid your mission.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-06.htm">"How do I collect the souls of the evil ones?"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Magister Winonin:<br>
<FONT COLOR=LEVEL>After you have sapped the evil one's strength in battle, apply the crystal to his skin. His soul will be absorbed into the crystal. His mortal body is easily dispatched.</FONT> Each soul crystal can contain up to 10 souls. <FONT COLOR=LEVEL>A more precise explanation would be that it can contain up to 10 souls with regular usage. I will tell you the detailed story later when you bring back the soul crystal with 10 souls.</FONT><br>
Actually, collecting souls for the purpose of bestowing a weapon with a special power is not as easy as it sounds.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-07.htm">What are the precautions to take when collecting souls?"</button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Magister Winonin:<br>
The collection of a soul doesn't always go as planned. Some evil souls will simply not be absorbed, and, if you happen to collect the wrong soul, the crystal will shatter...<br>
Soul crystals develop refined tastes, and will reject weaker souls after a while. When this happens you must seek the souls of creatures of greater evil to satisfy your crystal.<br>
Remember that you may not absorb a soul with more than one crystal because a resonance effect is created between the crystals that prevents proper absorbtion.<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-08.htm">Receive a soul crystal.</button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Magister Winonin:<br>
Please choose one of the following three types of crystals:<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-09.htm">Red Soul Crystal</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-10.htm">Green Soul Crystal</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-11.htm">Blue Soul Crystal</button>
Each crystal bestows a different power upon the weapon it enhances, and the powers may vary from weapon to weapon.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Winonin:<br>
Here is a red soul crystal. Collect souls into it and take it to a blacksmith along with the weapon you wish to enhance. The stronger the weapon, the more souls needed to enhance it.<br>
Next time we meet I hope you have gained more strength.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Winonin:<br>
Here is a green soul crystal. Collect souls into it and take it to a blacksmith along with the weapon you wish to enhance. The stronger the weapon, the more souls needed to enhance it.<br>
Next time we meet I hope you have gained more strength.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Winonin:<br>
Here is a blue soul crystal. Collect souls into it and take it to a blacksmith along with the weapon you wish to enhance. The stronger the weapon, the more souls needed to enhance it.<br>
Next time we meet I hope you have gained more strength.
</body></html>

View File

@ -0,0 +1,11 @@
<html><body>Magister Winonin:<br>
From the following areas, which area's evil creatures would you like to obtain more information about?<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-13.htm">Northern Oren</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-14.htm">Forest of Mirrors</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-15.htm">Cave of Giants</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-16.htm">Devastated Castle</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-17.htm">Tower of Insolence</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-18.htm">Lair of Antharas</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-19.htm">Eva's Underwater Garden</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-20.htm">Devil's Isle</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Winonin:<br>
It seems that the most evil creatures in northern Oren are the <FONT COLOR=LEVEL>Timak Orcs.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Winonin:<br>
It seems that the most evil creatures in the Forest of Mirrors are the <FONT COLOR=LEVEL>Forest of Mirror ghosts, mirrors and Harit Lizardmen.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Winonin:<br>
It seems that the most evil creatures in the Cave of Giants are the <FONT COLOR=LEVEL>Halingkas, Yintzus, Paliotes, Hamruts, and Kranrots.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Winonin:<br>
It seems that the most evil creatures in the Devastated Castle are the <FONT COLOR=LEVEL>Doom Servants, Doom Guards, Doom Archers, Doom Troopers, Doom Warriors, and Doom Knights.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Winonin:<br>
It seems that the most evil creatures in the Tower of Insolence are the <FONT COLOR=LEVEL>Erin Ediunce, members of the Platinum Tribe and their Angels.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Winonin:<br>
It seems that the most evil creatures in the Lair of Antharas are the <FONT COLOR=LEVEL>Malruk Knights, Malruk Berserkers, Malruk Lords, Limal Karinness, Kariks, Pytans, and Pytan Knights.</FONT><br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Winonin:<br>
It seems that <FONT COLOR=LEVEL>all of the evil creatures inhabiting Eva's Underwater Garden</FONT> are appropriate soul donors.<br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Magister Winonin:<br>
It seems that <FONT COLOR=LEVEL>all of the evil creatures inhabiting Devil's Isle</FONT> are appropriate soul donors.<br>
Remember that you cannot fill your crystal with the souls of weaker creatures. The crystal develops a refined taste and demands souls of greater evil. If you notice that your crystal has stopped absorbing souls, seek out creatures of greater evil.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Magister Winonin:<br>
How is your mission going? Oh, I see that you need a new crystal!<br>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon 30856-08.htm">"Yes, please, may I have another?"</button>
<button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00350_EnhanceYourWeapon exit.htm">"Quit"</button>
</body></html>

View File

@ -0,0 +1,662 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q00350_EnhanceYourWeapon;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.logging.Level;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.AbsorberInfo;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Attackable;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* Enhance Your Weapon (350)
* @author Gigiikun
*/
public class Q00350_EnhanceYourWeapon extends Quest
{
private enum AbsorbCrystalType
{
LAST_HIT,
FULL_PARTY,
PARTY_ONE_RANDOM,
PARTY_RANDOM
}
private static final class LevelingInfo
{
private final AbsorbCrystalType _absorbCrystalType;
private final boolean _isSkillNeeded;
private final int _chance;
public LevelingInfo(AbsorbCrystalType absorbCrystalType, boolean isSkillNeeded, int chance)
{
_absorbCrystalType = absorbCrystalType;
_isSkillNeeded = isSkillNeeded;
_chance = chance;
}
public AbsorbCrystalType getAbsorbCrystalType()
{
return _absorbCrystalType;
}
public int getChance()
{
return _chance;
}
public boolean isSkillNeeded()
{
return _isSkillNeeded;
}
}
private static final class SoulCrystal
{
private final int _level;
private final int _itemId;
private final int _leveledItemId;
public SoulCrystal(int level, int itemId, int leveledItemId)
{
_level = level;
_itemId = itemId;
_leveledItemId = leveledItemId;
}
public int getItemId()
{
return _itemId;
}
public int getLevel()
{
return _level;
}
public int getLeveledItemId()
{
return _leveledItemId;
}
}
// NPCs
private static final int[] STARTING_NPCS =
{
30115,
30856,
30194
};
// Items
private static final int RED_SOUL_CRYSTAL0_ID = 4629;
private static final int GREEN_SOUL_CRYSTAL0_ID = 4640;
private static final int BLUE_SOUL_CRYSTAL0_ID = 4651;
private static final Map<Integer, SoulCrystal> SOUL_CRYSTALS = new HashMap<>();
// <npcid, <level, LevelingInfo>>
private static final Map<Integer, Map<Integer, LevelingInfo>> NPC_LEVELING_INFO = new HashMap<>();
public Q00350_EnhanceYourWeapon()
{
super(350);
addStartNpc(STARTING_NPCS);
addTalkId(STARTING_NPCS);
load();
for (int npcId : NPC_LEVELING_INFO.keySet())
{
addSkillSeeId(npcId);
addKillId(npcId);
}
}
@Override
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
{
final String htmltext = event;
final QuestState qs = getQuestState(player, false);
if (event.endsWith("-04.htm"))
{
qs.startQuest();
}
else if (event.endsWith("-09.htm"))
{
giveItems(player, RED_SOUL_CRYSTAL0_ID, 1);
}
else if (event.endsWith("-10.htm"))
{
giveItems(player, GREEN_SOUL_CRYSTAL0_ID, 1);
}
else if (event.endsWith("-11.htm"))
{
giveItems(player, BLUE_SOUL_CRYSTAL0_ID, 1);
}
else if (event.equalsIgnoreCase("exit.htm"))
{
qs.exitQuest(false, true);
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{
if (npc.isAttackable() && NPC_LEVELING_INFO.containsKey(npc.getId()))
{
levelSoulCrystals((Attackable) npc, killer);
}
return null;
}
@Override
public String onSkillSee(Npc npc, PlayerInstance caster, Skill skill, WorldObject[] targets, boolean isSummon)
{
super.onSkillSee(npc, caster, skill, targets, isSummon);
if ((skill == null) || (skill.getId() != 2096))
{
return null;
}
else if ((caster == null) || caster.isDead())
{
return null;
}
if (!npc.isAttackable() || npc.isDead() || !NPC_LEVELING_INFO.containsKey(npc.getId()))
{
return null;
}
try
{
((Attackable) npc).addAbsorber(caster);
}
catch (Exception e)
{
LOGGER.log(Level.SEVERE, "", e);
}
return null;
}
@Override
public String onTalk(Npc npc, PlayerInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.getState() == State.CREATED)
{
qs.set("cond", "0");
}
if (qs.getInt("cond") == 0)
{
htmltext = npc.getId() + "-01.htm";
}
else if (check(player))
{
htmltext = npc.getId() + "-03.htm";
}
else if (!hasQuestItems(player, RED_SOUL_CRYSTAL0_ID) && !hasQuestItems(player, GREEN_SOUL_CRYSTAL0_ID) && !hasQuestItems(player, BLUE_SOUL_CRYSTAL0_ID))
{
htmltext = npc.getId() + "-21.htm";
}
return htmltext;
}
private static boolean check(PlayerInstance player)
{
for (int i = 4629; i < 4665; i++)
{
if (hasQuestItems(player, i))
{
return true;
}
}
return false;
}
private static void exchangeCrystal(PlayerInstance player, Attackable mob, int takeid, int giveid, boolean broke)
{
ItemInstance Item = player.getInventory().destroyItemByItemId("SoulCrystal", takeid, 1, player, mob);
if (Item != null)
{
// Prepare inventory update packet
final InventoryUpdate playerIU = new InventoryUpdate();
playerIU.addRemovedItem(Item);
// Add new crystal to the killer's inventory
Item = player.getInventory().addItem("SoulCrystal", giveid, 1, player, mob);
playerIU.addItem(Item);
// Send a sound event and text message to the player
if (broke)
{
player.sendPacket(SystemMessageId.THE_SOUL_CRYSTAL_BROKE_BECAUSE_IT_WAS_NOT_ABLE_TO_ENDURE_THE_SOUL_ENERGY);
}
else
{
player.sendPacket(SystemMessageId.THE_SOUL_CRYSTAL_SUCCEEDED_IN_ABSORBING_A_SOUL);
}
// Send system message
final SystemMessage sms = new SystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1);
sms.addItemName(giveid);
player.sendPacket(sms);
// Send inventory update packet
player.sendPacket(playerIU);
}
}
private static SoulCrystal getSCForPlayer(PlayerInstance player)
{
final QuestState qs = player.getQuestState(Q00350_EnhanceYourWeapon.class.getSimpleName());
if ((qs == null) || !qs.isStarted())
{
return null;
}
final Collection<ItemInstance> inv = player.getInventory().getItems();
SoulCrystal ret = null;
for (ItemInstance item : inv)
{
final int itemId = item.getId();
if (!SOUL_CRYSTALS.containsKey(itemId))
{
continue;
}
if (ret != null)
{
return null;
}
ret = SOUL_CRYSTALS.get(itemId);
}
return ret;
}
private static boolean isPartyLevelingMonster(int npcId)
{
for (LevelingInfo li : NPC_LEVELING_INFO.get(npcId).values())
{
if (li.getAbsorbCrystalType() != AbsorbCrystalType.LAST_HIT)
{
return true;
}
}
return false;
}
private static void levelCrystal(PlayerInstance player, SoulCrystal sc, Attackable mob)
{
if ((sc == null) || !NPC_LEVELING_INFO.containsKey(mob.getId()))
{
return;
}
// If the crystal level is way too high for this mob, say that we can't increase it
if (!NPC_LEVELING_INFO.get(mob.getId()).containsKey(sc.getLevel()))
{
player.sendPacket(SystemMessageId.THE_SOUL_CRYSTAL_IS_REFUSING_TO_ABSORB_THE_SOUL);
return;
}
if (getRandom(100) <= NPC_LEVELING_INFO.get(mob.getId()).get(sc.getLevel()).getChance())
{
exchangeCrystal(player, mob, sc.getItemId(), sc.getLeveledItemId(), false);
}
else
{
player.sendPacket(SystemMessageId.THE_SOUL_CRYSTAL_WAS_NOT_ABLE_TO_ABSORB_THE_SOUL);
}
}
/**
* Calculate the leveling chance of Soul Crystals based on the attacker that killed this Attackable
* @param mob
* @param killer The player that last killed this Attackable $ Rewrite 06.12.06 - Yesod $ Rewrite 08.01.10 - Gigiikun
*/
public static void levelSoulCrystals(Attackable mob, PlayerInstance killer)
{
// Only PlayerInstance can absorb a soul
if (killer == null)
{
mob.resetAbsorbList();
return;
}
final Map<PlayerInstance, SoulCrystal> players = new HashMap<>();
int maxSCLevel = 0;
// TODO: what if mob support last_hit + party?
if (isPartyLevelingMonster(mob.getId()) && (killer.getParty() != null))
{
// firts get the list of players who has one Soul Cry and the quest
for (PlayerInstance pl : killer.getParty().getMembers())
{
if (pl == null)
{
continue;
}
final SoulCrystal sc = getSCForPlayer(pl);
if (sc == null)
{
continue;
}
players.put(pl, sc);
if ((maxSCLevel < sc.getLevel()) && NPC_LEVELING_INFO.get(mob.getId()).containsKey(sc.getLevel()))
{
maxSCLevel = sc.getLevel();
}
}
}
else
{
final SoulCrystal sc = getSCForPlayer(killer);
if (sc != null)
{
players.put(killer, sc);
if ((maxSCLevel < sc.getLevel()) && NPC_LEVELING_INFO.get(mob.getId()).containsKey(sc.getLevel()))
{
maxSCLevel = sc.getLevel();
}
}
}
// Init some useful vars
final LevelingInfo mainlvlInfo = NPC_LEVELING_INFO.get(mob.getId()).get(maxSCLevel);
if (mainlvlInfo == null)
{
/* throw new NullPointerException("Target: "+mob+ " player: "+killer+" level: "+maxSCLevel); */
return;
}
// If this mob is not require skill, then skip some checkings
if (mainlvlInfo.isSkillNeeded())
{
// Fail if this Attackable isn't absorbed or there's no one in its _absorbersList
if (!mob.isAbsorbed() /* || _absorbersList == null */)
{
mob.resetAbsorbList();
return;
}
// Fail if the killer isn't in the _absorbersList of this Attackable and mob is not boss
final AbsorberInfo ai = mob.getAbsorbersList().get(killer.getObjectId());
boolean isSuccess = true;
if ((ai == null) || (ai.getObjectId() != killer.getObjectId()))
{
isSuccess = false;
}
// Check if the soul crystal was used when HP of this Attackable wasn't higher than half of it
if ((ai != null) && (ai.getAbsorbedHp() > (mob.getMaxHp() / 2.0)))
{
isSuccess = false;
}
if (!isSuccess)
{
mob.resetAbsorbList();
return;
}
}
switch (mainlvlInfo.getAbsorbCrystalType())
{
case PARTY_ONE_RANDOM:
{
// This is a naive method for selecting a random member. It gets any random party member and
// then checks if the member has a valid crystal. It does not select the random party member
// among those who have crystals, only. However, this might actually be correct (same as retail).
if (killer.getParty() != null)
{
final PlayerInstance lucky = killer.getParty().getMembers().get(getRandom(killer.getParty().getMemberCount()));
levelCrystal(lucky, players.get(lucky), mob);
}
else
{
levelCrystal(killer, players.get(killer), mob);
}
break;
}
case PARTY_RANDOM:
{
if (killer.getParty() != null)
{
final List<PlayerInstance> luckyParty = new ArrayList<>();
luckyParty.addAll(killer.getParty().getMembers());
while ((getRandom(100) < 33) && !luckyParty.isEmpty())
{
final PlayerInstance lucky = luckyParty.remove(getRandom(luckyParty.size()));
if (players.containsKey(lucky))
{
levelCrystal(lucky, players.get(lucky), mob);
}
}
}
else if (getRandom(100) < 33)
{
levelCrystal(killer, players.get(killer), mob);
}
break;
}
case FULL_PARTY:
{
if (killer.getParty() != null)
{
for (PlayerInstance pl : killer.getParty().getMembers())
{
levelCrystal(pl, players.get(pl), mob);
}
}
else
{
levelCrystal(killer, players.get(killer), mob);
}
break;
}
case LAST_HIT:
{
levelCrystal(killer, players.get(killer), mob);
break;
}
}
}
/**
* TODO: Implement using DocumentParser.
*/
private void load()
{
try
{
final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setIgnoringComments(true);
final File file = new File(Config.DATAPACK_ROOT, "data/LevelUpCrystalData.xml");
if (!file.exists())
{
LOGGER.severe("[EnhanceYourWeapon] Missing LevelUpCrystalData.xml. The quest wont work without it!");
return;
}
final Document doc = factory.newDocumentBuilder().parse(file);
final Node first = doc.getFirstChild();
if ((first != null) && "list".equalsIgnoreCase(first.getNodeName()))
{
for (Node n = first.getFirstChild(); n != null; n = n.getNextSibling())
{
if ("crystal".equalsIgnoreCase(n.getNodeName()))
{
for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
{
if ("item".equalsIgnoreCase(d.getNodeName()))
{
final NamedNodeMap attrs = d.getAttributes();
Node att = attrs.getNamedItem("itemId");
if (att == null)
{
LOGGER.severe("[EnhanceYourWeapon] Missing itemId in Crystal List, skipping");
continue;
}
final int itemId = Integer.parseInt(attrs.getNamedItem("itemId").getNodeValue());
att = attrs.getNamedItem("level");
if (att == null)
{
LOGGER.severe("[EnhanceYourWeapon] Missing level in Crystal List itemId: " + itemId + ", skipping");
continue;
}
final int level = Integer.parseInt(attrs.getNamedItem("level").getNodeValue());
att = attrs.getNamedItem("leveledItemId");
if (att == null)
{
LOGGER.severe("[EnhanceYourWeapon] Missing leveledItemId in Crystal List itemId: " + itemId + ", skipping");
continue;
}
final int leveledItemId = Integer.parseInt(attrs.getNamedItem("leveledItemId").getNodeValue());
SOUL_CRYSTALS.put(itemId, new SoulCrystal(level, itemId, leveledItemId));
}
}
}
else if ("npc".equalsIgnoreCase(n.getNodeName()))
{
for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
{
if ("item".equalsIgnoreCase(d.getNodeName()))
{
NamedNodeMap attrs = d.getAttributes();
Node att = attrs.getNamedItem("npcId");
if (att == null)
{
LOGGER.severe("[EnhanceYourWeapon] Missing npcId in NPC List, skipping");
continue;
}
final int npcId = Integer.parseInt(att.getNodeValue());
final Map<Integer, LevelingInfo> temp = new HashMap<>();
for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling())
{
boolean isSkillNeeded = false;
int chance = 5;
AbsorbCrystalType absorbType = AbsorbCrystalType.LAST_HIT;
if ("detail".equalsIgnoreCase(cd.getNodeName()))
{
attrs = cd.getAttributes();
att = attrs.getNamedItem("absorbType");
if (att != null)
{
absorbType = Enum.valueOf(AbsorbCrystalType.class, att.getNodeValue());
}
att = attrs.getNamedItem("chance");
if (att != null)
{
chance = Integer.parseInt(att.getNodeValue());
}
att = attrs.getNamedItem("skill");
if (att != null)
{
isSkillNeeded = Boolean.parseBoolean(att.getNodeValue());
}
final Node att1 = attrs.getNamedItem("maxLevel");
final Node att2 = attrs.getNamedItem("levelList");
if ((att1 == null) && (att2 == null))
{
LOGGER.severe("[EnhanceYourWeapon] Missing maxlevel/levelList in NPC List npcId: " + npcId + ", skipping");
continue;
}
final LevelingInfo info = new LevelingInfo(absorbType, isSkillNeeded, chance);
if (att1 != null)
{
final int maxLevel = Integer.parseInt(att1.getNodeValue());
for (int i = 0; i <= maxLevel; i++)
{
temp.put(i, info);
}
}
else if (att2 != null)
{
final StringTokenizer st = new StringTokenizer(att2.getNodeValue(), ",");
final int tokenCount = st.countTokens();
for (int i = 0; i < tokenCount; i++)
{
Integer value = Integer.decode(st.nextToken().trim());
if (value == null)
{
LOGGER.severe("[EnhanceYourWeapon] Bad Level value!! npcId: " + npcId + " token: " + i);
value = 0;
}
temp.put(value, info);
}
}
}
}
if (temp.isEmpty())
{
LOGGER.severe("[EnhanceYourWeapon] No leveling info for npcId: " + npcId + ", skipping");
continue;
}
NPC_LEVELING_INFO.put(npcId, temp);
}
}
}
}
}
}
catch (Exception e)
{
LOGGER.log(Level.WARNING, "[EnhanceYourWeapon] Could not parse LevelUpCrystalData.xml file: " + e.getMessage(), e);
}
LOGGER.info("[EnhanceYourWeapon] Loaded " + SOUL_CRYSTALS.size() + " Soul Crystal data.");
LOGGER.info("[EnhanceYourWeapon] Loaded " + NPC_LEVELING_INFO.size() + " npc Leveling info data.");
}
}

View File

@ -0,0 +1,2 @@
<html><body>Goodbye
</body></html>

View File

@ -132,6 +132,7 @@ import quests.Q00331_ArrowOfVengeance.Q00331_ArrowOfVengeance;
import quests.Q00333_HuntOfTheBlackLion.Q00333_HuntOfTheBlackLion;
import quests.Q00344_1000YearsTheEndOfLamentation.Q00344_1000YearsTheEndOfLamentation;
import quests.Q00348_AnArrogantSearch.Q00348_AnArrogantSearch;
import quests.Q00350_EnhanceYourWeapon.Q00350_EnhanceYourWeapon;
import quests.Q00354_ConquestOfAlligatorIsland.Q00354_ConquestOfAlligatorIsland;
import quests.Q00355_FamilyHonor.Q00355_FamilyHonor;
import quests.Q00356_DigUpTheSeaOfSpores.Q00356_DigUpTheSeaOfSpores;
@ -342,6 +343,7 @@ public class QuestMasterHandler
Q00333_HuntOfTheBlackLion.class,
Q00344_1000YearsTheEndOfLamentation.class,
Q00348_AnArrogantSearch.class,
Q00350_EnhanceYourWeapon.class,
Q00354_ConquestOfAlligatorIsland.class,
Q00355_FamilyHonor.class,
Q00356_DigUpTheSeaOfSpores.class,

View File

@ -333,7 +333,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -348,7 +348,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -363,7 +363,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -378,7 +378,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -393,7 +393,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -408,7 +408,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -423,7 +423,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -438,7 +438,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -453,7 +453,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -468,7 +468,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -483,7 +483,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -498,7 +498,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -513,7 +513,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -528,7 +528,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -543,7 +543,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -558,7 +558,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -573,7 +573,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -588,7 +588,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -603,7 +603,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -618,7 +618,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -633,7 +633,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -648,7 +648,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -663,7 +663,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -678,7 +678,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -693,7 +693,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -708,7 +708,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -723,7 +723,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -738,7 +738,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -753,7 +753,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -768,7 +768,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -783,7 +783,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -798,7 +798,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -813,7 +813,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>

View File

@ -877,7 +877,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -892,7 +892,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -907,7 +907,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -921,8 +921,8 @@
<set name="weight" val="20" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -936,8 +936,8 @@
<set name="weight" val="20" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -951,8 +951,8 @@
<set name="weight" val="20" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>

View File

@ -150,7 +150,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -208,8 +208,8 @@
<set name="weight" val="20" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -268,7 +268,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>

View File

@ -1036,8 +1036,8 @@
<set name="weight" val="20" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -1051,8 +1051,8 @@
<set name="weight" val="20" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -1066,8 +1066,8 @@
<set name="weight" val="20" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>

View File

@ -2084,8 +2084,8 @@
<set name="weight" val="20" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -2099,8 +2099,8 @@
<set name="weight" val="20" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -2114,8 +2114,8 @@
<set name="weight" val="20" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>

View File

@ -1543,8 +1543,8 @@
<set name="material" val="CRYSTAL" />
<set name="weight" val="20" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -1557,8 +1557,8 @@
<set name="material" val="CRYSTAL" />
<set name="weight" val="20" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -1571,8 +1571,8 @@
<set name="material" val="CRYSTAL" />
<set name="weight" val="20" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>

View File

@ -662,8 +662,8 @@
<set name="weight" val="20" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -677,8 +677,8 @@
<set name="weight" val="20" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -692,8 +692,8 @@
<set name="weight" val="20" />
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="is_questitem" val="true" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>

View File

@ -374,7 +374,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -389,7 +389,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>
@ -404,7 +404,7 @@
<set name="is_oly_restricted" val="true" />
<set name="handler" val="ItemSkills" />
<set name="commissionItemType" val="SOUL_CRYSTAL" />
<set name="is_questitem" val="true" />
<set name="is_questitem" val="false" />
<skills>
<skill id="2096" level="1" /> <!-- Soul Crystal -->
</skills>

View File

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="list">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="crystal" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="item" minOccurs="54" maxOccurs="54">
<xs:complexType>
<xs:attribute name="itemId" type="xs:positiveInteger" use="required" />
<xs:attribute name="level" use="required">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0" />
<xs:maxInclusive value="17" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="leveledItemId" type="xs:positiveInteger" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="npc" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="item" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="detail" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="absorbType">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="FULL_PARTY" />
<xs:enumeration value="PARTY_ONE_RANDOM" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="chance" use="required">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1" />
<xs:maxInclusive value="100" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="levelList" type="xs:normalizedString" />
<xs:attribute name="maxLevel">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1" />
<xs:maxInclusive value="9" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="skill" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="npcId" type="xs:positiveInteger" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -0,0 +1,67 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.l2jmobius.gameserver.model;
import org.l2jmobius.gameserver.model.interfaces.IUniqueId;
/**
* @author xban1x
*/
public class AbsorberInfo implements IUniqueId
{
private int _objectId;
private double _absorbedHp;
public AbsorberInfo(int objectId, double pAbsorbedHp)
{
_objectId = objectId;
_absorbedHp = pAbsorbedHp;
}
public double getAbsorbedHp()
{
return _absorbedHp;
}
public void setAbsorbedHp(double absorbedHp)
{
_absorbedHp = absorbedHp;
}
@Override
public int getObjectId()
{
return _objectId;
}
public void setObjectId(int objectId)
{
_objectId = objectId;
}
@Override
public boolean equals(Object obj)
{
return (this == obj) || ((obj instanceof AbsorberInfo) && (((AbsorberInfo) obj).getObjectId() == _objectId));
}
@Override
public int hashCode()
{
return _objectId;
}
}

View File

@ -42,6 +42,7 @@ import org.l2jmobius.gameserver.enums.Team;
import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager;
import org.l2jmobius.gameserver.instancemanager.PcCafePointsManager;
import org.l2jmobius.gameserver.instancemanager.WalkingManager;
import org.l2jmobius.gameserver.model.AbsorberInfo;
import org.l2jmobius.gameserver.model.AggroInfo;
import org.l2jmobius.gameserver.model.CommandChannel;
import org.l2jmobius.gameserver.model.DamageDoneInfo;
@ -105,6 +106,9 @@ public class Attackable extends Npc
private CommandChannel _firstCommandChannelAttacked = null;
private CommandChannelTimer _commandChannelTimer = null;
private long _commandChannelLastAttack = 0;
// Soul crystal
private boolean _absorbed;
private final Map<Integer, AbsorberInfo> _absorbersList = new ConcurrentHashMap<>();
// Misc
private boolean _mustGiveExpSp;
@ -1287,6 +1291,56 @@ public class Attackable extends Npc
return _overhit;
}
/**
* Activate the absorbed soul condition on the Attackable.
*/
public void absorbSoul()
{
_absorbed = true;
}
/**
* @return True if the Attackable had his soul absorbed.
*/
public boolean isAbsorbed()
{
return _absorbed;
}
/**
* Adds an attacker that successfully absorbed the soul of this Attackable into the _absorbersList.
* @param attacker
*/
public void addAbsorber(PlayerInstance attacker)
{
// If we have no _absorbersList initiated, do it
final AbsorberInfo ai = _absorbersList.get(attacker.getObjectId());
// If the Creature attacker isn't already in the _absorbersList of this Attackable, add it
if (ai == null)
{
_absorbersList.put(attacker.getObjectId(), new AbsorberInfo(attacker.getObjectId(), getCurrentHp()));
}
else
{
ai.setAbsorbedHp(getCurrentHp());
}
// Set this Attackable as absorbed
absorbSoul();
}
public void resetAbsorbList()
{
_absorbed = false;
_absorbersList.clear();
}
public Map<Integer, AbsorberInfo> getAbsorbersList()
{
return _absorbersList;
}
/**
* Calculate the Experience and SP to distribute to attacker (PlayerInstance, ServitorInstance or Party) of the Attackable.
* @param charLevel The killer level