Craft system adjustments.
Contributed by nasseka.
This commit is contained in:
8
L2J_Mobius_10.0_MasterClass/dist/game/data/LimitShop.xml
vendored
Normal file
8
L2J_Mobius_10.0_MasterClass/dist/game/data/LimitShop.xml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<list enabled="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd/LimitShop.xsd">
|
||||
<!-- Cat 0 Equipment -->
|
||||
<product id="121" category="0" maxLevel="999">
|
||||
<ingredient id="48472" count="1" /> <!-- L-Coin -->
|
||||
<production id="81811" accountBuyLimit="1" /> <!-- Starter Kit -->
|
||||
</product>
|
||||
</list>
|
867
L2J_Mobius_10.0_MasterClass/dist/game/data/LimitShopCraft.xml
vendored
Normal file
867
L2J_Mobius_10.0_MasterClass/dist/game/data/LimitShopCraft.xml
vendored
Normal file
@@ -0,0 +1,867 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<list enabled="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd/LimitShop.xsd">
|
||||
<product id="1001" category="0">
|
||||
<ingredient id="81215" count="4526" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="808" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="32" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1940" /> <!-- R-grade Crystal -->
|
||||
<production id="17416" chance="60" id2="81215" count2="452" chance2="40" /> <!-- Helios Shaper -->
|
||||
</product>
|
||||
<product id="1002" category="0">
|
||||
<ingredient id="81215" count="4526" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="808" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="32" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1940" /> <!-- R-grade Crystal -->
|
||||
<production id="17417" chance="60" id2="81215" count2="452" chance2="40" /> <!-- Helios Cutter -->
|
||||
</product>
|
||||
<product id="1003" category="0">
|
||||
<ingredient id="81215" count="4526" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="808" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="32" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1940" /> <!-- R-grade Crystal -->
|
||||
<production id="17418" chance="60" id2="81215" count2="452" chance2="40" /> <!-- Helios Slasher -->
|
||||
</product>
|
||||
<product id="1004" category="0">
|
||||
<ingredient id="81215" count="4526" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="808" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="32" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1940" /> <!-- R-grade Crystal -->
|
||||
<production id="17419" chance="60" id2="81215" count2="452" chance2="40" /> <!-- Helios Avenger -->
|
||||
</product>
|
||||
<product id="1005" category="0">
|
||||
<ingredient id="81215" count="4526" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="808" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="32" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1940" /> <!-- R-grade Crystal -->
|
||||
<production id="17420" chance="60" id2="81215" count2="452" chance2="40" /> <!-- Helios Fighter -->
|
||||
</product>
|
||||
<product id="1006" category="0">
|
||||
<ingredient id="81215" count="4526" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="808" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="32" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1940" /> <!-- R-grade Crystal -->
|
||||
<production id="17421" chance="60" id2="81215" count2="452" chance2="40" /> <!-- Helios Stormer -->
|
||||
</product>
|
||||
<product id="1007" category="0">
|
||||
<ingredient id="81215" count="4526" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="808" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="32" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1940" /> <!-- R-grade Crystal -->
|
||||
<production id="17422" chance="60" id2="81215" count2="452" chance2="40" /> <!-- Helios Thrower -->
|
||||
</product>
|
||||
<product id="1008" category="0">
|
||||
<ingredient id="81215" count="4526" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="808" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="32" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1940" /> <!-- R-grade Crystal -->
|
||||
<production id="17423" chance="60" id2="81215" count2="452" chance2="40" /> <!-- Helios Guardian -->
|
||||
</product>
|
||||
<product id="1009" category="0">
|
||||
<ingredient id="81215" count="4526" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="808" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="32" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1940" /> <!-- R-grade Crystal -->
|
||||
<production id="17424" chance="60" id2="81215" count2="452" chance2="40" /> <!-- Helios Buster -->
|
||||
</product>
|
||||
<product id="1010" category="0">
|
||||
<ingredient id="81215" count="4526" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="808" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="32" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1940" /> <!-- R-grade Crystal -->
|
||||
<production id="17425" chance="60" id2="81215" count2="452" chance2="40" /> <!-- Helios Caster -->
|
||||
</product>
|
||||
<product id="1011" category="0">
|
||||
<ingredient id="81215" count="4526" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="808" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="32" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1940" /> <!-- R-grade Crystal -->
|
||||
<production id="17426" chance="60" id2="81215" count2="452" chance2="40" /> <!-- Helios Retributer -->
|
||||
</product>
|
||||
<product id="1012" category="0">
|
||||
<ingredient id="81215" count="4526" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="808" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="32" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1940" /> <!-- R-grade Crystal -->
|
||||
<production id="17427" chance="60" id2="81215" count2="452" chance2="40" /> <!-- Helios Dual Swords -->
|
||||
</product>
|
||||
<product id="1013" category="0">
|
||||
<ingredient id="81215" count="4526" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="808" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="32" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1940" /> <!-- R-grade Crystal -->
|
||||
<production id="17428" chance="60" id2="81215" count2="452" chance2="40" /> <!-- Helios Dual Daggers -->
|
||||
</product>
|
||||
<product id="1014" category="0">
|
||||
<ingredient id="81215" count="4526" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="808" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="32" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1940" /> <!-- R-grade Crystal -->
|
||||
<production id="17429" chance="60" id2="81215" count2="452" chance2="40" /> <!-- Helios Dual Blunt Weapons -->
|
||||
</product>
|
||||
<product id="1015" category="1">
|
||||
<ingredient id="81215" count="887" /> <!-- Aether -->
|
||||
<ingredient id="81217" count="158" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="19440" count="6" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="380" /> <!-- R-grade Crystal -->
|
||||
<production id="17430" chance="60" id2="81215" count2="88" chance2="40" /> <!-- Eternal Helmet -->
|
||||
</product>
|
||||
<product id="1016" category="1">
|
||||
<ingredient id="81215" count="2365" /> <!-- Aether -->
|
||||
<ingredient id="81217" count="422" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="19440" count="17" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1014" /> <!-- R-grade Crystal -->
|
||||
<production id="17431" chance="60" id2="81215" count2="236" chance2="40" /> <!-- Eternal Breastplate -->
|
||||
</product>
|
||||
<product id="1017" category="1">
|
||||
<ingredient id="81215" count="1478" /> <!-- Aether -->
|
||||
<ingredient id="81217" count="264" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="19440" count="11" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="633" /> <!-- R-grade Crystal -->
|
||||
<production id="17432" chance="60" id2="81215" count2="147" chance2="40" /> <!-- Eternal Gaiters -->
|
||||
</product>
|
||||
<product id="1018" category="1">
|
||||
<ingredient id="81215" count="591" /> <!-- Aether -->
|
||||
<ingredient id="81217" count="106" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="19440" count="4" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="253" /> <!-- R-grade Crystal -->
|
||||
<production id="17433" chance="60" id2="81215" count2="59" chance2="40" /> <!-- Eternal Gauntlets -->
|
||||
</product>
|
||||
<product id="1019" category="1">
|
||||
<ingredient id="81215" count="591" /> <!-- Aether -->
|
||||
<ingredient id="81217" count="106" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="19440" count="4" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="253" /> <!-- R-grade Crystal -->
|
||||
<production id="17434" chance="60" id2="81215" count2="59" chance2="40" /> <!-- Eternal Boots -->
|
||||
</product>
|
||||
<product id="1020" category="1">
|
||||
<ingredient id="81215" count="621" /> <!-- Aether -->
|
||||
<ingredient id="81217" count="111" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="19440" count="4" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="266" /> <!-- R-grade Crystal -->
|
||||
<production id="17435" chance="60" id2="81215" count2="62" chance2="40" /> <!-- Eternal Shield -->
|
||||
</product>
|
||||
<product id="1021" category="1">
|
||||
<ingredient id="81215" count="887" /> <!-- Aether -->
|
||||
<ingredient id="81218" count="158" /> <!-- Dragon Scale -->
|
||||
<ingredient id="19440" count="6" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="380" /> <!-- R-grade Crystal -->
|
||||
<production id="17436" chance="60" id2="81215" count2="88" chance2="40" /> <!-- Eternal Leather Helmet -->
|
||||
</product>
|
||||
<product id="1022" category="1">
|
||||
<ingredient id="81215" count="2365" /> <!-- Aether -->
|
||||
<ingredient id="81218" count="422" /> <!-- Dragon Scale -->
|
||||
<ingredient id="19440" count="17" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1014" /> <!-- R-grade Crystal -->
|
||||
<production id="17437" chance="60" id2="81215" count2="236" chance2="40" /> <!-- Eternal Leather Armor -->
|
||||
</product>
|
||||
<product id="1023" category="1">
|
||||
<ingredient id="81215" count="1478" /> <!-- Aether -->
|
||||
<ingredient id="81218" count="264" /> <!-- Dragon Scale -->
|
||||
<ingredient id="19440" count="11" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="633" /> <!-- R-grade Crystal -->
|
||||
<production id="17438" chance="60" id2="81215" count2="147" chance2="40" /> <!-- Eternal Leather Leggings -->
|
||||
</product>
|
||||
<product id="1024" category="1">
|
||||
<ingredient id="81215" count="591" /> <!-- Aether -->
|
||||
<ingredient id="81218" count="106" /> <!-- Dragon Scale -->
|
||||
<ingredient id="19440" count="4" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="253" /> <!-- R-grade Crystal -->
|
||||
<production id="17439" chance="60" id2="81215" count2="59" chance2="40" /> <!-- Eternal Leather Gloves -->
|
||||
</product>
|
||||
<product id="1025" category="1">
|
||||
<ingredient id="81215" count="591" /> <!-- Aether -->
|
||||
<ingredient id="81218" count="106" /> <!-- Dragon Scale -->
|
||||
<ingredient id="19440" count="4" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="253" /> <!-- R-grade Crystal -->
|
||||
<production id="17440" chance="60" id2="81215" count2="59" chance2="40" /> <!-- Eternal Leather Boots -->
|
||||
</product>
|
||||
<product id="1026" category="1">
|
||||
<ingredient id="81215" count="887" /> <!-- Aether -->
|
||||
<ingredient id="81219" count="158" /> <!-- Angel's Feather -->
|
||||
<ingredient id="19440" count="6" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="380" /> <!-- R-grade Crystal -->
|
||||
<production id="17441" chance="60" id2="81215" count2="88" chance2="40" /> <!-- Eternal Circlet -->
|
||||
</product>
|
||||
<product id="1027" category="1">
|
||||
<ingredient id="81215" count="2365" /> <!-- Aether -->
|
||||
<ingredient id="81219" count="422" /> <!-- Angel's Feather -->
|
||||
<ingredient id="19440" count="17" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1014" /> <!-- R-grade Crystal -->
|
||||
<production id="17442" chance="60" id2="81215" count2="236" chance2="40" /> <!-- Eternal Tunic -->
|
||||
</product>
|
||||
<product id="1028" category="1">
|
||||
<ingredient id="81215" count="1478" /> <!-- Aether -->
|
||||
<ingredient id="81219" count="264" /> <!-- Angel's Feather -->
|
||||
<ingredient id="19440" count="11" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="633" /> <!-- R-grade Crystal -->
|
||||
<production id="17443" chance="60" id2="81215" count2="147" chance2="40" /> <!-- Eternal Stockings -->
|
||||
</product>
|
||||
<product id="1029" category="1">
|
||||
<ingredient id="81215" count="591" /> <!-- Aether -->
|
||||
<ingredient id="81219" count="106" /> <!-- Angel's Feather -->
|
||||
<ingredient id="19440" count="4" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="253" /> <!-- R-grade Crystal -->
|
||||
<production id="17444" chance="60" id2="81215" count2="59" chance2="40" /> <!-- Eternal Gloves -->
|
||||
</product>
|
||||
<product id="1030" category="1">
|
||||
<ingredient id="81215" count="591" /> <!-- Aether -->
|
||||
<ingredient id="81219" count="106" /> <!-- Angel's Feather -->
|
||||
<ingredient id="19440" count="4" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="253" /> <!-- R-grade Crystal -->
|
||||
<production id="17445" chance="60" id2="81215" count2="59" chance2="40" /> <!-- Eternal Shoes -->
|
||||
</product>
|
||||
<product id="1031" category="1">
|
||||
<ingredient id="81215" count="621" /> <!-- Aether -->
|
||||
<ingredient id="81219" count="111" /> <!-- Angel's Feather -->
|
||||
<ingredient id="19440" count="4" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="266" /> <!-- R-grade Crystal -->
|
||||
<production id="17446" chance="60" id2="81215" count2="62" chance2="40" /> <!-- Eternal Sigil -->
|
||||
</product>
|
||||
<product id="1032" category="2">
|
||||
<ingredient id="81215" count="1050" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="525" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="525" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="525" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="525" /> <!-- Angel's Feather -->
|
||||
<production id="81212" chance="60" id2="81215" count2="105" chance2="40" /> <!-- Angel's Necklace -->
|
||||
</product>
|
||||
<product id="1033" category="2">
|
||||
<ingredient id="81215" count="1050" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="525" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="525" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="525" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="525" /> <!-- Angel's Feather -->
|
||||
<production id="81213" chance="60" id2="81215" count2="105" chance2="40" /> <!-- Angel's Earring -->
|
||||
</product>
|
||||
<product id="1034" category="2">
|
||||
<ingredient id="81215" count="1050" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="525" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="525" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="525" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="525" /> <!-- Angel's Feather -->
|
||||
<production id="81214" chance="60" id2="81215" count2="105" chance2="40" /> <!-- Angel's Ring -->
|
||||
</product>
|
||||
<product id="1035" category="3">
|
||||
<ingredient id="81215" count="350" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="175" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="175" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="175" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="175" /> <!-- Angel's Feather -->
|
||||
<production id="47807" chance="60" id2="81215" count2="35" chance2="40" /> <!-- Sayha's Talisman Lv. 1 -->
|
||||
</product>
|
||||
<product id="1036" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="38855" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Ruby lv. 1 -->
|
||||
</product>
|
||||
<product id="1037" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="38927" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Sapphire lv. 1 -->
|
||||
</product>
|
||||
<product id="1038" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="38850" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Topaz lv. 1 -->
|
||||
</product>
|
||||
<product id="1039" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="38875" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Opal lv. 1 -->
|
||||
</product>
|
||||
<product id="1040" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="38870" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Obsidian lv. 1 -->
|
||||
</product>
|
||||
<product id="1041" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="38890" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Diamond lv. 1 -->
|
||||
</product>
|
||||
<product id="1042" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="38880" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Emerald lv. 1 -->
|
||||
</product>
|
||||
<product id="1043" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="38885" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Aquamarine lv. 1 -->
|
||||
</product>
|
||||
<product id="1044" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="38895" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Pearl lv. 1 -->
|
||||
</product>
|
||||
<product id="1045" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="46670" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Vital Stone lv. 1 -->
|
||||
</product>
|
||||
<product id="1046" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="46675" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Garnet lv. 1 -->
|
||||
</product>
|
||||
<product id="1047" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="46680" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Tanzanite lv. 1 -->
|
||||
</product>
|
||||
<product id="1048" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="48202" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Warrior's Circlet -->
|
||||
</product>
|
||||
<product id="1049" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="48205" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Wizard's Circlet -->
|
||||
</product>
|
||||
<product id="1050" category="3">
|
||||
<ingredient id="81215" count="210" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="105" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="105" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="105" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="105" /> <!-- Angel's Feather -->
|
||||
<production id="48208" chance="60" id2="81215" count2="21" chance2="40" /> <!-- Knight's Circlet -->
|
||||
</product>
|
||||
<product id="1051" category="4">
|
||||
<ingredient id="1785" count="80" /> <!-- Soulstone -->
|
||||
<ingredient id="81216" count="2" /> <!-- R-grade Crystal -->
|
||||
<production id="17754" count="500" chance="100" /> <!-- R-grade Soulshot -->
|
||||
</product>
|
||||
<product id="1052" category="4">
|
||||
<ingredient id="1785" count="160" /> <!-- Soulstone -->
|
||||
<ingredient id="81216" count="6" /> <!-- R-grade Crystal -->
|
||||
<production id="46082" count="500" chance="100" /> <!-- Mysterious R-grade Soulshot -->
|
||||
</product>
|
||||
<product id="1053" category="4">
|
||||
<ingredient id="3031" count="525" /> <!-- Spirit Ore -->
|
||||
<ingredient id="81216" count="2" /> <!-- R-grade Crystal -->
|
||||
<production id="19442" count="500" chance="100" /> <!-- Blessed R-grade Spiritshot -->
|
||||
</product>
|
||||
<product id="1054" category="4">
|
||||
<ingredient id="3031" count="640" /> <!-- Spirit Ore -->
|
||||
<ingredient id="81216" count="6" /> <!-- R-grade Crystal -->
|
||||
<production id="46083" count="500" chance="100" /> <!-- Mysterious Blessed R-grade Spiritshot -->
|
||||
</product>
|
||||
<product id="1055" category="4">
|
||||
<ingredient id="81215" count="553" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="277" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="277" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="277" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="277" /> <!-- Angel's Feather -->
|
||||
<production id="37770" chance="60" id2="81215" count2="55" chance2="40" /> <!-- Scroll of Blessing: R-grade Weapon -->
|
||||
</product>
|
||||
<product id="1056" category="4">
|
||||
<ingredient id="81215" count="7417" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="3708" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="3708" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="3708" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="3708" /> <!-- Angel's Feather -->
|
||||
<production id="37771" chance="60" id2="81215" count2="741" chance2="40" /> <!-- Scroll of Blessing: R95-grade Weapon -->
|
||||
</product>
|
||||
<product id="1057" category="4">
|
||||
<ingredient id="81215" count="10896" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="5448" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="5448" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="5448" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="5448" /> <!-- Angel's Feather -->
|
||||
<production id="37772" chance="60" id2="81215" count2="1089" chance2="40" /> <!-- Scroll of Blessing: R99-grade Weapon -->
|
||||
</product>
|
||||
<product id="1058" category="4">
|
||||
<ingredient id="81215" count="144" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="72" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="72" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="72" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="72" /> <!-- Angel's Feather -->
|
||||
<production id="37779" chance="60" id2="81215" count2="14" chance2="40" /> <!-- Scroll of Blessing: R-grade Armor -->
|
||||
</product>
|
||||
<product id="1059" category="4">
|
||||
<ingredient id="81215" count="2012" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="1006" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="1006" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="1006" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="1006" /> <!-- Angel's Feather -->
|
||||
<production id="37780" chance="60" id2="81215" count2="201" chance2="40" /> <!-- Scroll of Blessing: R95-grade Armor -->
|
||||
</product>
|
||||
<product id="1060" category="4">
|
||||
<ingredient id="81215" count="2956" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="1478" /> <!-- Black Mithril -->
|
||||
<ingredient id="81217" count="1478" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="1478" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="1478" /> <!-- Angel's Feather -->
|
||||
<production id="37781" chance="60" id2="81215" count2="295" chance2="40" /> <!-- Scroll of Blessing: R99-grade Armor -->
|
||||
</product>
|
||||
<product id="1061" category="0">
|
||||
<ingredient id="81215" count="11316" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="2021" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="81" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="4850" /> <!-- R-grade Crystal -->
|
||||
<production id="80090" chance="60" id2="81215" count2="1131" chance2="40" /> <!-- Krishna Shaper -->
|
||||
</product>
|
||||
<product id="1062" category="0">
|
||||
<ingredient id="81215" count="11316" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="2021" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="81" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="4850" /> <!-- R-grade Crystal -->
|
||||
<production id="80091" chance="60" id2="81215" count2="1131" chance2="40" /> <!-- Krishna Cutter -->
|
||||
</product>
|
||||
<product id="1063" category="0">
|
||||
<ingredient id="81215" count="11316" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="2021" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="81" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="4850" /> <!-- R-grade Crystal -->
|
||||
<production id="80092" chance="60" id2="81215" count2="1131" chance2="40" /> <!-- Krishna Slasher -->
|
||||
</product>
|
||||
<product id="1064" category="0">
|
||||
<ingredient id="81215" count="11316" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="2021" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="81" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="4850" /> <!-- R-grade Crystal -->
|
||||
<production id="80093" chance="60" id2="81215" count2="1131" chance2="40" /> <!-- Krishna Avenger -->
|
||||
</product>
|
||||
<product id="1065" category="0">
|
||||
<ingredient id="81215" count="11316" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="2021" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="81" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="4850" /> <!-- R-grade Crystal -->
|
||||
<production id="80094" chance="60" id2="81215" count2="1131" chance2="40" /> <!-- Krishna Fighter -->
|
||||
</product>
|
||||
<product id="1066" category="0">
|
||||
<ingredient id="81215" count="11316" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="2021" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="81" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="4850" /> <!-- R-grade Crystal -->
|
||||
<production id="80095" chance="60" id2="81215" count2="1131" chance2="40" /> <!-- Krishna Stormer -->
|
||||
</product>
|
||||
<product id="1067" category="0">
|
||||
<ingredient id="81215" count="11316" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="2021" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="81" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="4850" /> <!-- R-grade Crystal -->
|
||||
<production id="80096" chance="60" id2="81215" count2="1131" chance2="40" /> <!-- Krishna Thrower -->
|
||||
</product>
|
||||
<product id="1068" category="0">
|
||||
<ingredient id="81215" count="11316" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="2021" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="81" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="4850" /> <!-- R-grade Crystal -->
|
||||
<production id="80097" chance="60" id2="81215" count2="1131" chance2="40" /> <!-- Krishna Guardian -->
|
||||
</product>
|
||||
<product id="1069" category="0">
|
||||
<ingredient id="81215" count="11316" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="2021" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="81" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="4850" /> <!-- R-grade Crystal -->
|
||||
<production id="80098" chance="60" id2="81215" count2="1131" chance2="40" /> <!-- Krishna Buster -->
|
||||
</product>
|
||||
<product id="1070" category="0">
|
||||
<ingredient id="81215" count="11316" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="2021" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="81" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="4850" /> <!-- R-grade Crystal -->
|
||||
<production id="80099" chance="60" id2="81215" count2="1131" chance2="40" /> <!-- Krishna Caster -->
|
||||
</product>
|
||||
<product id="1071" category="0">
|
||||
<ingredient id="81215" count="11316" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="2021" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="81" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="4850" /> <!-- R-grade Crystal -->
|
||||
<production id="80100" chance="60" id2="81215" count2="1131" chance2="40" /> <!-- Krishna Retributer -->
|
||||
</product>
|
||||
<product id="1072" category="0">
|
||||
<ingredient id="81215" count="11316" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="2021" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="81" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="4850" /> <!-- R-grade Crystal -->
|
||||
<production id="80101" chance="60" id2="81215" count2="1131" chance2="40" /> <!-- Krishna Dual Swords -->
|
||||
</product>
|
||||
<product id="1073" category="0">
|
||||
<ingredient id="81215" count="11316" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="2021" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="81" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="4850" /> <!-- R-grade Crystal -->
|
||||
<production id="80102" chance="60" id2="81215" count2="1131" chance2="40" /> <!-- Krishna Dual Daggers -->
|
||||
</product>
|
||||
<product id="1074" category="0">
|
||||
<ingredient id="81215" count="11316" /> <!-- Aether -->
|
||||
<ingredient id="81216" count="2021" /> <!-- Black Mithril -->
|
||||
<ingredient id="19440" count="81" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="4850" /> <!-- R-grade Crystal -->
|
||||
<production id="80103" chance="60" id2="81215" count2="1131" chance2="40" /> <!-- Krishna Dual Blunt Weapons -->
|
||||
</product>
|
||||
<product id="1075" category="1">
|
||||
<ingredient id="81215" count="2217" /> <!-- Aether -->
|
||||
<ingredient id="81217" count="396" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="19440" count="16" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="950" /> <!-- R-grade Crystal -->
|
||||
<production id="80104" chance="60" id2="81215" count2="221" chance2="40" /> <!-- Leviathan Helmet -->
|
||||
</product>
|
||||
<product id="1076" category="1">
|
||||
<ingredient id="81215" count="5912" /> <!-- Aether -->
|
||||
<ingredient id="81217" count="1056" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="19440" count="42" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="2534" /> <!-- R-grade Crystal -->
|
||||
<production id="80105" chance="60" id2="81215" count2="591" chance2="40" /> <!-- Leviathan Breastplate -->
|
||||
</product>
|
||||
<product id="1077" category="1">
|
||||
<ingredient id="81215" count="3695" /> <!-- Aether -->
|
||||
<ingredient id="81217" count="660" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="19440" count="26" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1584" /> <!-- R-grade Crystal -->
|
||||
<production id="80106" chance="60" id2="81215" count2="369" chance2="40" /> <!-- Leviathan Gaiters -->
|
||||
</product>
|
||||
<product id="1078" category="1">
|
||||
<ingredient id="81215" count="1478" /> <!-- Aether -->
|
||||
<ingredient id="81217" count="264" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="19440" count="11" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="633" /> <!-- R-grade Crystal -->
|
||||
<production id="80107" chance="60" id2="81215" count2="147" chance2="40" /> <!-- Leviathan Gauntlets -->
|
||||
</product>
|
||||
<product id="1079" category="1">
|
||||
<ingredient id="81215" count="1478" /> <!-- Aether -->
|
||||
<ingredient id="81217" count="264" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="19440" count="11" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="633" /> <!-- R-grade Crystal -->
|
||||
<production id="80108" chance="60" id2="81215" count2="147" chance2="40" /> <!-- Leviathan Boots -->
|
||||
</product>
|
||||
<product id="1080" category="1">
|
||||
<ingredient id="81215" count="1478" /> <!-- Aether -->
|
||||
<ingredient id="81217" count="264" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="19440" count="11" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="633" /> <!-- R-grade Crystal -->
|
||||
<production id="80109" chance="60" id2="81215" count2="147" chance2="40" /> <!-- Leviathan Shield -->
|
||||
</product>
|
||||
<product id="1081" category="1">
|
||||
<ingredient id="81215" count="2217" /> <!-- Aether -->
|
||||
<ingredient id="81218" count="396" /> <!-- Dragon Scale -->
|
||||
<ingredient id="19440" count="16" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="950" /> <!-- R-grade Crystal -->
|
||||
<production id="80110" chance="60" id2="81215" count2="221" chance2="40" /> <!-- Leviathan Leather Helmet -->
|
||||
</product>
|
||||
<product id="1082" category="1">
|
||||
<ingredient id="81215" count="5912" /> <!-- Aether -->
|
||||
<ingredient id="81218" count="1056" /> <!-- Dragon Scale -->
|
||||
<ingredient id="19440" count="42" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="2534" /> <!-- R-grade Crystal -->
|
||||
<production id="80111" chance="60" id2="81215" count2="591" chance2="40" /> <!-- Leviathan Leather Armor -->
|
||||
</product>
|
||||
<product id="1083" category="1">
|
||||
<ingredient id="81215" count="3695" /> <!-- Aether -->
|
||||
<ingredient id="81218" count="660" /> <!-- Dragon Scale -->
|
||||
<ingredient id="19440" count="26" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1584" /> <!-- R-grade Crystal -->
|
||||
<production id="80112" chance="60" id2="81215" count2="369" chance2="40" /> <!-- Leviathan Leather Leggings -->
|
||||
</product>
|
||||
<product id="1084" category="1">
|
||||
<ingredient id="81215" count="1478" /> <!-- Aether -->
|
||||
<ingredient id="81218" count="264" /> <!-- Dragon Scale -->
|
||||
<ingredient id="19440" count="11" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="633" /> <!-- R-grade Crystal -->
|
||||
<production id="80113" chance="60" id2="81215" count2="147" chance2="40" /> <!-- Leviathan Leather Gloves -->
|
||||
</product>
|
||||
<product id="1085" category="1">
|
||||
<ingredient id="81215" count="1478" /> <!-- Aether -->
|
||||
<ingredient id="81218" count="264" /> <!-- Dragon Scale -->
|
||||
<ingredient id="19440" count="11" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="633" /> <!-- R-grade Crystal -->
|
||||
<production id="80114" chance="60" id2="81215" count2="147" chance2="40" /> <!-- Leviathan Leather Boots -->
|
||||
</product>
|
||||
<product id="1086" category="1">
|
||||
<ingredient id="81215" count="2217" /> <!-- Aether -->
|
||||
<ingredient id="81219" count="396" /> <!-- Angel's Feather -->
|
||||
<ingredient id="19440" count="16" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="950" /> <!-- R-grade Crystal -->
|
||||
<production id="80115" chance="60" id2="81215" count2="221" chance2="40" /> <!-- Leviathan Circlet -->
|
||||
</product>
|
||||
<product id="1087" category="1">
|
||||
<ingredient id="81215" count="5912" /> <!-- Aether -->
|
||||
<ingredient id="81219" count="1056" /> <!-- Angel's Feather -->
|
||||
<ingredient id="19440" count="42" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="2534" /> <!-- R-grade Crystal -->
|
||||
<production id="80116" chance="60" id2="81215" count2="591" chance2="40" /> <!-- Leviathan Tunic -->
|
||||
</product>
|
||||
<product id="1088" category="1">
|
||||
<ingredient id="81215" count="3695" /> <!-- Aether -->
|
||||
<ingredient id="81219" count="660" /> <!-- Angel's Feather -->
|
||||
<ingredient id="19440" count="26" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="1584" /> <!-- R-grade Crystal -->
|
||||
<production id="80117" chance="60" id2="81215" count2="369" chance2="40" /> <!-- Leviathan Stockings -->
|
||||
</product>
|
||||
<product id="1089" category="1">
|
||||
<ingredient id="81215" count="1478" /> <!-- Aether -->
|
||||
<ingredient id="81219" count="264" /> <!-- Angel's Feather -->
|
||||
<ingredient id="19440" count="11" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="633" /> <!-- R-grade Crystal -->
|
||||
<production id="80118" chance="60" id2="81215" count2="147" chance2="40" /> <!-- Leviathan Gloves -->
|
||||
</product>
|
||||
<product id="1090" category="1">
|
||||
<ingredient id="81215" count="1478" /> <!-- Aether -->
|
||||
<ingredient id="81219" count="264" /> <!-- Angel's Feather -->
|
||||
<ingredient id="19440" count="11" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="633" /> <!-- R-grade Crystal -->
|
||||
<production id="80119" chance="60" id2="81215" count2="147" chance2="40" /> <!-- Leviathan Shoes -->
|
||||
</product>
|
||||
<product id="1091" category="4">
|
||||
<ingredient id="81215" count="1478" /> <!-- Aether -->
|
||||
<ingredient id="81219" count="264" /> <!-- Angel's Feather -->
|
||||
<ingredient id="19440" count="11" /> <!-- R-grade Gemstone -->
|
||||
<ingredient id="17371" count="633" /> <!-- R-grade Crystal -->
|
||||
<production id="80120" chance="60" id2="81215" count2="147" chance2="40" /> <!-- Armor Augmenting Stone -->
|
||||
</product>
|
||||
<product id="1093" category="4">
|
||||
<ingredient id="81215" count="1000" /> <!-- Aether -->
|
||||
<ingredient id="81217" count="16" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="16" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="16" /> <!-- Angel's Feather -->
|
||||
<ingredient id="19440" count="166" /> <!-- R-grade Gemstone-->
|
||||
<production id="40064" chance="60" id2="81215" count2="100" chance2="40" /> <!-- Ancient Book: Divine Inspiration (Beginner) -->
|
||||
</product>
|
||||
<product id="1094" category="4">
|
||||
<ingredient id="81215" count="3000" /> <!-- Aether -->
|
||||
<ingredient id="81217" count="3360" /> <!-- Oriharukon Ore -->
|
||||
<ingredient id="81218" count="3360" /> <!-- Dragon Scale -->
|
||||
<ingredient id="81219" count="3360" /> <!-- Angel's Feather -->
|
||||
<ingredient id="19440" count="416" /> <!-- R-grade Gemstone-->
|
||||
<production id="40065" chance="60" id2="81215" count2="300" chance2="40" /> <!-- Ancient Book: Divine Inspiration (Intermediate) -->
|
||||
</product>
|
||||
<product id="1095" category="3">
|
||||
<ingredient id="48677" count="2" /> <!-- High-grade Skill Power Talisman Pack -->
|
||||
<ingredient id="48678" count="2" /> <!-- High-grade Talisman of Attribute Attack Pack -->
|
||||
<ingredient id="48679" count="2" /> <!-- High-grade Skill Cooldown Talisman Pack -->
|
||||
<ingredient id="19440" count="1000" /> <!-- R-grade Gemstone-->
|
||||
<production id="81822" chance="50" id2="81215" count2="300" chance2="50" /> <!-- Cara's Talisman Pack -->
|
||||
</product>
|
||||
<product id="1127" category="3">
|
||||
<ingredient id="80636" count="4" /> <!-- Artifact Crystal -->
|
||||
<ingredient id="57" count="1000000" /> <!-- Adena -->
|
||||
<production id="81745" chance="100" /> <!-- +1 Balance Artifact Pack -->
|
||||
</product>
|
||||
<product id="1128" category="3">
|
||||
<ingredient id="80636" count="13" /> <!-- Artifact Crystal -->
|
||||
<ingredient id="57" count="5000000" /> <!-- Adena -->
|
||||
<production id="81746" chance="100" /> <!-- +3 Balance Artifact Pack -->
|
||||
</product>
|
||||
<product id="1129" category="3">
|
||||
<ingredient id="80636" count="4" /> <!-- Artifact Crystal -->
|
||||
<ingredient id="57" count="1000000" /> <!-- Adena -->
|
||||
<production id="82158" chance="100" /> <!-- +1 Attack Artifact Pack -->
|
||||
</product>
|
||||
<product id="1130" category="3">
|
||||
<ingredient id="80636" count="13" /> <!-- Artifact Crystal -->
|
||||
<ingredient id="57" count="5000000" /> <!-- Adena -->
|
||||
<production id="82159" chance="100" /> <!-- +3 Attack Artifact Pack -->
|
||||
</product>
|
||||
<product id="1131" category="3">
|
||||
<ingredient id="80636" count="4" /> <!-- Artifact Crystal -->
|
||||
<ingredient id="57" count="1000000" /> <!-- Adena -->
|
||||
<production id="82160" chance="100" /> <!-- +1 Defense Artifact Pack -->
|
||||
</product>
|
||||
<product id="1132" category="3">
|
||||
<ingredient id="80636" count="13" /> <!-- Artifact Crystal -->
|
||||
<ingredient id="57" count="5000000" /> <!-- Adena -->
|
||||
<production id="82161" chance="100" /> <!-- +3 Defense Artifact Pack -->
|
||||
</product>
|
||||
<product id="1133" category="3">
|
||||
<ingredient id="80636" count="4" /> <!-- Artifact Crystal -->
|
||||
<ingredient id="57" count="1000000" /> <!-- Adena -->
|
||||
<production id="82162" chance="100" /> <!-- +1 Support Artifact Pack -->
|
||||
</product>
|
||||
<product id="1134" category="3">
|
||||
<ingredient id="80636" count="13" /> <!-- Artifact Crystal -->
|
||||
<ingredient id="57" count="5000000" /> <!-- Adena -->
|
||||
<production id="82163" chance="100" /> <!-- +3 Support Artifact Pack -->
|
||||
</product>
|
||||
<product id="1181" category="4">
|
||||
<ingredient id="48876" count="5" /> <!-- Forgotten Spellbook - Chapter 1 -->
|
||||
<ingredient id="57" count="1790000" /> <!-- Adena -->
|
||||
<production id="48877" chance="100" /> <!-- Forgotten Spellbook - Chapter 2 -->
|
||||
</product>
|
||||
<product id="1182" category="4">
|
||||
<ingredient id="48876" count="12" /> <!-- Forgotten Spellbook - Chapter 1 -->
|
||||
<ingredient id="57" count="1790000" /> <!-- Adena -->
|
||||
<production id="48878" chance="100" /> <!-- Forgotten Spellbook - Chapter 3 -->
|
||||
</product>
|
||||
<product id="1183" category="4">
|
||||
<ingredient id="48876" count="32" /> <!-- Forgotten Spellbook - Chapter 1 -->
|
||||
<ingredient id="57" count="114560000" /> <!-- Adena -->
|
||||
<production id="82169" chance="10" id2="48876" count2="3" chance2="90" /> <!-- Forgotten Spellbook - Finale -->
|
||||
</product>
|
||||
<product id="5001" category="3">
|
||||
<ingredient id="26418" count="1" /> <!-- Recipe: High-grade Talisman of Abundance Lv. 1 -->
|
||||
<ingredient id="60091" count="1" /> <!-- Abundance Mark -->
|
||||
<production id="26338" chance="25" id2="81215" count2="1" chance2="75" /> <!-- High-grade Talisman of Abundance Lv. 1 -->
|
||||
</product>
|
||||
<product id="5002" category="3">
|
||||
<ingredient id="26419" count="1" /> <!-- Recipe: High-grade Talisman of Abundance Lv. 2 -->
|
||||
<ingredient id="26338" count="1" /> <!-- High-grade Talisman of Abundance Lv. 1 -->
|
||||
<ingredient id="60091" count="1" /> <!-- Abundance Mark -->
|
||||
<production id="26339" chance="25" id2="81215" count2="1" chance2="75" /> <!-- High-grade Talisman of Abundance Lv. 2 -->
|
||||
</product>
|
||||
<product id="5003" category="3">
|
||||
<ingredient id="26419" count="1" /> <!-- Recipe: High-grade Talisman of Abundance Lv. 3 -->
|
||||
<ingredient id="26339" count="1" /> <!-- High-grade Talisman of Abundance Lv. 2 -->
|
||||
<ingredient id="60091" count="1" /> <!-- Abundance Mark -->
|
||||
<production id="26340" chance="25" id2="81215" count2="1" chance2="75" /> <!-- High-grade Talisman of Abundance Lv. 3 -->
|
||||
</product>
|
||||
<product id="5004" category="3">
|
||||
<ingredient id="26419" count="1" /> <!-- Recipe: High-grade Talisman of Abundance Lv. 4 -->
|
||||
<ingredient id="26340" count="1" /> <!-- High-grade Talisman of Abundance Lv. 3 -->
|
||||
<ingredient id="60091" count="1" /> <!-- Abundance Mark -->
|
||||
<production id="26341" chance="25" id2="81215" count2="1" chance2="75" /> <!-- High-grade Talisman of Abundance Lv. 4 -->
|
||||
</product>
|
||||
<product id="5005" category="3">
|
||||
<ingredient id="23837" count="1" /> <!-- Talisman - Hunter -->
|
||||
<ingredient id="23838" count="1" /> <!-- Talisman - Slaughterer -->
|
||||
<ingredient id="23839" count="1" /> <!-- Talisman - Conquerer -->
|
||||
<ingredient id="23840" count="1" /> <!-- Talisman - Outlaw -->
|
||||
<production id="60091" chance="100" /> <!-- Abundance Mark -->
|
||||
</product>
|
||||
<product id="5047" category="3">
|
||||
<ingredient id="57" count="500000000" /> <!-- Adena -->
|
||||
<production id="29750" chance="100"/> <!-- Heir's Radiance Lv. 1 - PvE -->
|
||||
</product>
|
||||
<product id="5048" category="3">
|
||||
<ingredient id="29750" count="1" /> <!-- Heir's Radiance Lv. 1 - PvE -->
|
||||
<ingredient id="29759" count="60" /> <!-- Heir's Radiance Shard-->
|
||||
<production id="29751" chance="30" id2="29750" count2="1" chance2="70" /> <!-- Heir's Radiance Lv. 2 - PvE -->
|
||||
</product>
|
||||
<product id="5049" category="3">
|
||||
<ingredient id="29751" count="1" /> <!-- Heir's Radiance Lv. 2 - PvE -->
|
||||
<ingredient id="29759" count="800" /> <!-- Heir's Radiance Shard-->
|
||||
<ingredient id="57" count="800000000" /> <!-- Adena -->
|
||||
<production id="29752" chance="30" id2="29751" count2="1" chance2="70" /> <!-- Heir's Radiance Lv. 3 - PvE -->
|
||||
</product>
|
||||
<product id="5050" category="3">
|
||||
<ingredient id="29752" count="1" /> <!-- Heir's Radiance Lv. 3 - PvE -->
|
||||
<ingredient id="29759" count="1600" /> <!-- Heir's Radiance Shard-->
|
||||
<ingredient id="57" count="800000000" /> <!-- Adena -->
|
||||
<production id="29753" chance="30" id2="29752" count2="1" chance2="70" /> <!-- Heir's Radiance Lv. 4- PvE -->
|
||||
</product>
|
||||
<product id="5051" category="3">
|
||||
<ingredient id="29753" count="1" /> <!-- Heir's Radiance Lv. 4 - PvE -->
|
||||
<ingredient id="29759" count="2400" /> <!-- Heir's Radiance Shard-->
|
||||
<ingredient id="57" count="1600000000" /> <!-- Adena -->
|
||||
<production id="29899" chance="30" id2="29753" count2="1" chance2="70" /> <!-- Heir's Radiance Lv. 5- PvE -->
|
||||
</product>
|
||||
<product id="5052" category="3">
|
||||
<ingredient id="29899" count="1" /> <!-- Heir's Radiance Lv. 5 - PvE -->
|
||||
<ingredient id="29759" count="2500" /> <!-- Heir's Radiance Shard-->
|
||||
<ingredient id="57" count="1600000000" /> <!-- Adena -->
|
||||
<production id="29900" chance="30" id2="29899" count2="1" chance2="70" /> <!-- Heir's Radiance Lv. 6- PvE -->
|
||||
</product>
|
||||
<product id="5053" category="3">
|
||||
<ingredient id="29900" count="1" /> <!-- Heir's Radiance Lv. 6 - PvE -->
|
||||
<ingredient id="29759" count="3150" /> <!-- Heir's Radiance Shard-->
|
||||
<ingredient id="57" count="2400000000" /> <!-- Adena -->
|
||||
<production id="29901" chance="30" id2="29900" count2="1" chance2="70" /> <!-- Heir's Radiance Lv. 7- PvE -->
|
||||
</product>
|
||||
<product id="5054" category="3">
|
||||
<ingredient id="57" count="500000000" /> <!-- Adena -->
|
||||
<production id="29754" chance="100"/> <!-- Heir's Radiance Lv. 1 - PvP -->
|
||||
</product>
|
||||
<product id="5055" category="3">
|
||||
<ingredient id="29754" count="1" /> <!-- Heir's Radiance Lv. 1 - PvP -->
|
||||
<ingredient id="29759" count="60" /> <!-- Heir's Radiance Shard-->
|
||||
<production id="29755" chance="30" id2="29754" count2="1" chance2="70" /> <!-- Heir's Radiance Lv. 2 - PvP -->
|
||||
</product>
|
||||
<product id="5056" category="3">
|
||||
<ingredient id="29755" count="1" /> <!-- Heir's Radiance Lv. 2 - PvP -->
|
||||
<ingredient id="29759" count="800" /> <!-- Heir's Radiance Shard-->
|
||||
<ingredient id="57" count="800000000" /> <!-- Adena -->
|
||||
<production id="29756" chance="30" id2="29755" count2="1" chance2="70" /> <!-- Heir's Radiance Lv. 3 - PvP -->
|
||||
</product>
|
||||
<product id="5057" category="3">
|
||||
<ingredient id="29756" count="1" /> <!-- Heir's Radiance Lv. 3 - PvP -->
|
||||
<ingredient id="29759" count="1600" /> <!-- Heir's Radiance Shard-->
|
||||
<ingredient id="57" count="800000000" /> <!-- Adena -->
|
||||
<production id="29757" chance="30" id2="29756" count2="1" chance2="70" /> <!-- Heir's Radiance Lv. 4- PvP -->
|
||||
</product>
|
||||
<product id="5058" category="3">
|
||||
<ingredient id="29757" count="1" /> <!-- Heir's Radiance Lv. 4 - PvP -->
|
||||
<ingredient id="29759" count="2400" /> <!-- Heir's Radiance Shard-->
|
||||
<ingredient id="57" count="1600000000" /> <!-- Adena -->
|
||||
<production id="29902" chance="30" id2="29757" count2="1" chance2="70" /> <!-- Heir's Radiance Lv. 5- PvP -->
|
||||
</product>
|
||||
<product id="5059" category="3">
|
||||
<ingredient id="29902" count="1" /> <!-- Heir's Radiance Lv. 5 - PvP -->
|
||||
<ingredient id="29759" count="2500" /> <!-- Heir's Radiance Shard-->
|
||||
<ingredient id="57" count="1600000000" /> <!-- Adena -->
|
||||
<production id="29903" chance="30" id2="29902" count2="1" chance2="70" /> <!-- Heir's Radiance Lv. 6- PvP -->
|
||||
</product>
|
||||
<product id="5060" category="3">
|
||||
<ingredient id="29903" count="1" /> <!-- Heir's Radiance Lv. 6 - PvP -->
|
||||
<ingredient id="29759" count="3150" /> <!-- Heir's Radiance Shard-->
|
||||
<ingredient id="57" count="2400000000" /> <!-- Adena -->
|
||||
<production id="29904" chance="30" id2="29903" count2="1" chance2="70" /> <!-- Heir's Radiance Lv. 7- PvP -->
|
||||
</product>
|
||||
<product id="5061" category="3">
|
||||
<ingredient id="29901" count="1" /> <!-- Heir's Radiance Lv. 7 - PvE -->
|
||||
<ingredient id="29759" count="4000" /> <!-- Heir's Radiance Shard-->
|
||||
<ingredient id="57" count="3200000000" /> <!-- Adena -->
|
||||
<production id="60096" chance="7" id2="29901" count2="1" chance2="93" /> <!-- Heir's Radiance Lv. 8 - PvP/ PvE -->
|
||||
</product>
|
||||
<product id="5062" category="3">
|
||||
<ingredient id="29904" count="1" /> <!-- Heir's Radiance Lv. 7 - PvP -->
|
||||
<ingredient id="29759" count="4000" /> <!-- Heir's Radiance Shard-->
|
||||
<ingredient id="57" count="3200000000" /> <!-- Adena -->
|
||||
<production id="60096" chance="7" id2="29904" count2="1" chance2="93" /> <!-- Heir's Radiance Lv. 8 - PvP/ PvE -->
|
||||
</product>
|
||||
<product id="5063" category="3">
|
||||
<ingredient id="60096" count="1" /> <!-- Heir's Radiance Lv. 8 - PvP -->
|
||||
<ingredient id="29759" count="6000" /> <!-- Heir's Radiance Shard-->
|
||||
<ingredient id="57" count="3600000000" /> <!-- Adena -->
|
||||
<production id="60097" chance="3" id2="60096" count2="1" chance2="97" /> <!-- Heir's Radiance Lv. 9 - PvP/ PvE -->
|
||||
</product>
|
||||
<product id="5064" category="3">
|
||||
<ingredient id="60097" count="1" /> <!-- Heir's Radiance Lv. 9 - PvP -->
|
||||
<ingredient id="29759" count="8000" /> <!-- Heir's Radiance Shard-->
|
||||
<ingredient id="57" count="4000000000" /> <!-- Adena -->
|
||||
<production id="60098" chance="2" id2="60097" count2="1" chance2="98" /> <!-- Heir's Radiance Lv. 10 - PvP/ PvE -->
|
||||
</product>
|
||||
</list>
|
@@ -10,7 +10,7 @@
|
||||
</skill>
|
||||
|
||||
<skill skillName="Superior Shield Mastery" skillId="11620" skillLevel="1" getLevel="85" autoGet="true" />
|
||||
<skill skillName="Dwarven Craft" skillId="1321" skillLevel="1" getLevel="85" autoGet="true" />
|
||||
<skill skillName="Create Master Item" skillId="30945" skillLevel="1" getLevel="85" autoGet="true" />
|
||||
<skill skillName="Berserker" skillId="10274" skillLevel="1" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Hurricane Rush" skillId="10267" skillLevel="1" getLevel="85" levelUpSp="0">
|
||||
<removeSkill id="30738" /> <!-- Novice Hurricane Rush -->
|
||||
@@ -225,7 +225,6 @@
|
||||
<skill skillName="Feral Puma Cry" skillId="10293" skillLevel="1" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Force of Nature" skillId="10276" skillLevel="1" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Tyrr Force" skillId="1929" skillLevel="1" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="11" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Giant Punch" skillId="10266" skillLevel="1" getLevel="85" levelUpSp="0">
|
||||
<removeSkill id="30736" /> <!-- Novice Rain of Fire -->
|
||||
</skill>
|
||||
@@ -283,7 +282,6 @@
|
||||
<skill skillName="Reduce Anger" skillId="10278" skillLevel="4" getLevel="90" levelUpSp="370000" />
|
||||
<skill skillName="Last Attack" skillId="10300" skillLevel="1" getLevel="90" levelUpSp="370000" />
|
||||
<skill skillName="Summon Wild Hog Cannon" skillId="19089" skillLevel="2" getLevel="90" levelUpSp="370000" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="12" getLevel="90" levelUpSp="0" />
|
||||
<skill skillName="Hurricane Storm" skillId="10288" skillLevel="4" getLevel="90" levelUpSp="370000" />
|
||||
|
||||
<skill skillName="Jump Attack" skillId="10269" skillLevel="3" getLevel="91" levelUpSp="400000" />
|
||||
@@ -337,7 +335,6 @@
|
||||
<skill skillName="Last Attack" skillId="10300" skillLevel="2" getLevel="95" levelUpSp="1000000" />
|
||||
<skill skillName="Summon Wild Hog Cannon" skillId="19089" skillLevel="3" getLevel="95" levelUpSp="1000000" />
|
||||
<skill skillName="Armor Destruction" skillId="10258" skillLevel="6" getLevel="95" levelUpSp="1000000" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="13" getLevel="95" levelUpSp="0" />
|
||||
<skill skillName="Giant Punch" skillId="10266" skillLevel="6" getLevel="95" levelUpSp="1000000" />
|
||||
|
||||
<skill skillName="Hurricane Rush" skillId="10267" skillLevel="5" getLevel="96" levelUpSp="4970000" />
|
||||
@@ -393,7 +390,6 @@
|
||||
</skill>
|
||||
<skill skillName="Summon Wild Hog Cannon" skillId="19089" skillLevel="4" getLevel="99" levelUpSp="5000000" />
|
||||
<skill skillName="Armor Destruction" skillId="10258" skillLevel="8" getLevel="99" levelUpSp="5000000" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="14" getLevel="99" levelUpSp="0" />
|
||||
<skill skillName="Infinity Strike" skillId="10275" skillLevel="1" getLevel="99" levelUpSp="5000000" />
|
||||
<skill skillName="Giant Punch" skillId="10266" skillLevel="8" getLevel="99" levelUpSp="5000000" />
|
||||
|
||||
@@ -471,7 +467,6 @@
|
||||
<skill skillName="Last Attack" skillId="10300" skillLevel="6" getLevel="105" levelUpSp="1753765925" />
|
||||
<skill skillName="Summon Burning Mechanic Golem" skillId="10341" skillLevel="4" getLevel="105" levelUpSp="1753765925" />
|
||||
<skill skillName="Armor Destruction" skillId="10258" skillLevel="11" getLevel="105" levelUpSp="1753765925" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="15" getLevel="105" levelUpSp="1753765925" />
|
||||
<skill skillName="Infinity Strike" skillId="10275" skillLevel="4" getLevel="105" levelUpSp="1753765925" />
|
||||
<skill skillName="Giant Punch" skillId="10266" skillLevel="11" getLevel="105" levelUpSp="1753765925" />
|
||||
<skill skillName="Hurricane Storm" skillId="10288" skillLevel="11" getLevel="105" levelUpSp="1753765925" />
|
||||
|
@@ -2,17 +2,7 @@
|
||||
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/skillTrees.xsd">
|
||||
<skillTree type="classSkillTree">
|
||||
<skill skillName="Lucky" skillId="194" skillLevel="1" getLevel="1" autoGet="true" />
|
||||
<skill skillName="Common Craft" skillId="1322" skillLevel="1" getLevel="1" autoGet="true" />
|
||||
<skill skillName="Create Common Item" skillId="1320" skillLevel="1" getLevel="5" autoGet="true" />
|
||||
<skill skillName="Create Common Item" skillId="1320" skillLevel="2" getLevel="20" autoGet="true" />
|
||||
<skill skillName="Create Common Item" skillId="1320" skillLevel="3" getLevel="28" autoGet="true" />
|
||||
<skill skillName="Create Common Item" skillId="1320" skillLevel="4" getLevel="36" autoGet="true" />
|
||||
<skill skillName="Create Common Item" skillId="1320" skillLevel="5" getLevel="43" autoGet="true" />
|
||||
<skill skillName="Create Common Item" skillId="1320" skillLevel="6" getLevel="49" autoGet="true" />
|
||||
<skill skillName="Create Common Item" skillId="1320" skillLevel="7" getLevel="55" autoGet="true" />
|
||||
<skill skillName="Create Common Item" skillId="1320" skillLevel="8" getLevel="62" autoGet="true" />
|
||||
<skill skillName="Create Common Item" skillId="1320" skillLevel="9" getLevel="70" autoGet="true" />
|
||||
<skill skillName="Create Common Item" skillId="1320" skillLevel="10" getLevel="85" autoGet="true" />
|
||||
<skill skillName="Create Common Item" skillId="30943" skillLevel="1" getLevel="85" autoGet="true" />
|
||||
|
||||
<skill skillName="Crystallize" skillId="248" skillLevel="1" getLevel="85" autoGet="true" />
|
||||
<skill skillName="Crystallize" skillId="248" skillLevel="2" getLevel="85" autoGet="true" />
|
||||
@@ -21,21 +11,6 @@
|
||||
<skill skillName="Crystallize" skillId="248" skillLevel="5" getLevel="85" autoGet="true" />
|
||||
<skill skillName="Crystallize" skillId="248" skillLevel="6" getLevel="85" autoGet="true" />
|
||||
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="1" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="2" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="3" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="4" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="5" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="6" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="7" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="8" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="9" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="10" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="11" getLevel="85" levelUpSp="0" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="12" getLevel="90" levelUpSp="0" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="13" getLevel="95" levelUpSp="0" />
|
||||
<skill skillName="Create Item" skillId="172" skillLevel="14" getLevel="99" levelUpSp="0" />
|
||||
|
||||
<!-- Hair accessory hide / show -->
|
||||
<skill skillName="Change Hair Accessory" skillId="17192" skillLevel="1" getLevel="1" autoGet="true" />
|
||||
|
||||
|
@@ -20,6 +20,7 @@
|
||||
<skillTree type="raceSkillTree" race="DWARF">
|
||||
<skill skillName="Dexterity" skillId="1919" skillLevel="1" getLevel="85" autoGet="true" />
|
||||
<skill skillName="Blessing of Earth" skillId="1921" skillLevel="1" getLevel="85" autoGet="true" />
|
||||
<skill skillName="Create Dwarves' Item" skillId="30944" skillLevel="1" getLevel="85" autoGet="true" />
|
||||
</skillTree>
|
||||
<skillTree type="raceSkillTree" race="KAMAEL">
|
||||
<skill skillName="Battle Instinct" skillId="1923" skillLevel="1" getLevel="85" autoGet="true" />
|
||||
|
@@ -135,18 +135,32 @@
|
||||
<item id="60015" name="Spellbook: Create Mysterious Soulshots" type="EtcItem">
|
||||
<!-- A spellbook for learning the Create Mysterious R-grade Soulshots skill. -->
|
||||
<set name="icon" val="BranchIcon.Icon.g_book_summonsoulshot_r" />
|
||||
<set name="is_depositable" val="true" />
|
||||
<set name="is_tradable" val="true" />
|
||||
<set name="is_dropable" val="true" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="weight" val="20" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="is_freightable" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<skills>
|
||||
<skill id="29443" level="1" /> <!-- Spellbook: Create Mysterious Soulshots -->
|
||||
</skills>
|
||||
</item>
|
||||
<item id="60016" name="Spellbook: Create Mysterious Spiritshots" type="EtcItem">
|
||||
<!-- A spellbook for learning the Create Mysterious R-grade Spiritshots skill. -->
|
||||
<set name="icon" val="BranchIcon.Icon.g_book_summonspiritshot_r" />
|
||||
<set name="is_depositable" val="true" />
|
||||
<set name="is_tradable" val="true" />
|
||||
<set name="is_dropable" val="true" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="weight" val="20" />
|
||||
<set name="default_action" val="SKILL_REDUCE" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="is_freightable" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<skills>
|
||||
<skill id="29444" level="1" /> <!-- Spellbook: Create Mysterious Soulshots -->
|
||||
</skills>
|
||||
</item>
|
||||
<item id="60017" name="Shiny Vault" type="EtcItem">
|
||||
<!-- Found in the Mystic Tavern. Double-click to obtain rare items. -->
|
||||
@@ -835,4 +849,50 @@
|
||||
<set name="is_dropable" val="false" />
|
||||
<set name="is_sellable" val="false" />
|
||||
</item>
|
||||
<item id="60091" name="Abundance Mark" type="EtcItem">
|
||||
<!-- Double-click to obtain the following items. -->
|
||||
<set name="icon" val="icon.etc_pi_gift_box_i03" />
|
||||
<set name="default_action" val="NONE" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="is_tradable" val="true" />
|
||||
<set name="is_dropable" val="true" />
|
||||
<set name="is_sellable" val="true" />
|
||||
</item>
|
||||
<item id="60096" name="Heir's Radiance Lv. 8" additionalName="PvE/PvP" type="Armor">
|
||||
<!-- Attribute Attack +60\nAttribute Resistance +60\nDebuff Resistance +15%\nMax HP +7000\nReceived damage from area attacks/ skill critical attacks -15%\nP./ M. Skill Power +5%\nAll Critical Damage +5%\nSTR +5, DEX +5, CON +5, INT +5, WIT +5, MEN +5, CHA +5, LUC +5\nPvP/ PvE damage +10%\nDragon Claw's received damage -15%\nEnables the Heir's Radiance - PvP/ PvE Lv. 1 skill.\n\n<When equipped with Knight's/ Wizard's/ Warrior's Circlet>\nKnight's Circlet: P./ M. Def. +15%\nWarrior's Circlet: P. Atk. +15%\nWizard's Circlet: M. Atk. +15%\nCannot be enchanced. -->
|
||||
<set name="icon" val="BranchIcon.icon.g_bm_ring_of_light" />
|
||||
<set name="default_action" val="EQUIP" />
|
||||
<set name="bodypart" val="hair" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
<set name="material" val="WOOD" />
|
||||
<set name="weight" val="10" />
|
||||
<set name="is_dropable" val="false" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="enchant_enabled" val="false" />
|
||||
</item>
|
||||
<item id="60097" name="Heir's Radiance Lv. 9" additionalName="PvE/PvP" type="Armor">
|
||||
<!-- Attribute Attack +70\nAttribute Resistance +70\nDebuff Resistance +20%\nMax HP +9000\nReceived damage from area attacks/ skill critical attacks -17%\nP./ M. Skill Power +10%\nAll Critical Damage +10%\nSTR +6, DEX +6, CON +6, INT +6, WIT +6, MEN +6, CHA +6, LUC +6\nPvP/ PvE damage +12%\nDragon Claw's received damage -17%\nEnables the Heir's Radiance - PvP/ PvE Lv. 2 skill.\n\n<When equipped with Knight's/ Wizard's/ Warrior's Circlet>\nKnight's Circlet: P./ M. Def. +20%\nWarrior's Circlet: P. Atk. +20%\nWizard's Circlet: M. Atk. +20%\nCannot be enchanced. -->
|
||||
<set name="icon" val="BranchIcon.icon.g_bm_ring_of_light" />
|
||||
<set name="default_action" val="EQUIP" />
|
||||
<set name="bodypart" val="hair" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
<set name="material" val="WOOD" />
|
||||
<set name="weight" val="10" />
|
||||
<set name="is_dropable" val="false" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="enchant_enabled" val="false" />
|
||||
</item>
|
||||
<item id="60098" name="Heir's Radiance Lv. 10" additionalName="PvE/PvP" type="Armor">
|
||||
<!-- Attribute Attack +80\nAttribute Resistance +80\nDebuff Resistance +25%\nMax HP +10000\nReceived damage from area attacks/ skill critical attacks -20%\nP./ M. Skill Power +20%\nAll Critical Damage +20%\nSTR +7, DEX +7, CON +7, INT +7, WIT +7, MEN +7, CHA +7, LUC +7\nPvP/ PvE damage +15%\nDragon Claw's received damage -20%\nEnables the Heir's Radiance - PvP/ PvE Lv. 3 skill.\n\n<When equipped with Knight's/ Wizard's/ Warrior's Circlet>\nKnight's Circlet: P./ M. Def. +25%\nWarrior's Circlet: P. Atk. +25%\nWizard's Circlet: M. Atk. +25%\nCannot be enchanced. -->
|
||||
<set name="icon" val="BranchIcon.icon.g_bm_ring_of_light" />
|
||||
<set name="default_action" val="EQUIP" />
|
||||
<set name="bodypart" val="hair" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
<set name="material" val="WOOD" />
|
||||
<set name="weight" val="10" />
|
||||
<set name="is_dropable" val="false" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="enchant_enabled" val="false" />
|
||||
</item>
|
||||
</list>
|
||||
|
73
L2J_Mobius_10.0_MasterClass/dist/game/data/stats/items/82100-82199.xml
vendored
Normal file
73
L2J_Mobius_10.0_MasterClass/dist/game/data/stats/items/82100-82199.xml
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/items.xsd">
|
||||
<item id="82158" name="+1 Attack Artifact Pack" type="EtcItem">
|
||||
<!-- Double-click to obtain an attack artifact enchanted to +1. -->
|
||||
<set name="icon" val="icon.bm_artifact_b_box_i00" />
|
||||
<set name="default_action" val="CAPSULE" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
</item>
|
||||
<item id="82159" name="+3 Attack Artifact Pack" type="EtcItem">
|
||||
<!-- Double-click to obtain an attack artifact enchanted to +1. -->
|
||||
<set name="icon" val="icon.bm_artifact_b_box_i00" />
|
||||
<set name="default_action" val="CAPSULE" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
</item>
|
||||
<item id="82160" name="+1 Defense Artifact Pack" type="EtcItem">
|
||||
<!-- Double-click to obtain an attack artifact enchanted to +1. -->
|
||||
<set name="icon" val="icon.bm_artifact_b_box_i00" />
|
||||
<set name="default_action" val="CAPSULE" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
</item>
|
||||
<item id="82161" name="+3 Defense Artifact Pack" type="EtcItem">
|
||||
<!-- Double-click to obtain an attack artifact enchanted to +1. -->
|
||||
<set name="icon" val="icon.bm_artifact_b_box_i00" />
|
||||
<set name="default_action" val="CAPSULE" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
</item>
|
||||
<item id="82162" name="+1 Support Artifact Pack" type="EtcItem">
|
||||
<!-- Double-click to obtain an attack artifact enchanted to +1. -->
|
||||
<set name="icon" val="icon.bm_artifact_b_box_i00" />
|
||||
<set name="default_action" val="CAPSULE" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
</item>
|
||||
<item id="82163" name="+3 Support Artifact Pack" type="EtcItem">
|
||||
<!-- Double-click to obtain an attack artifact enchanted to +1. -->
|
||||
<set name="icon" val="icon.bm_artifact_b_box_i00" />
|
||||
<set name="default_action" val="CAPSULE" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="is_sellable" val="false" />
|
||||
<set name="is_stackable" val="true" />
|
||||
<set name="handler" val="ItemSkills" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
</item>
|
||||
<item id="82169" name="Forgotten Spellbook - Finale" type="EtcItem">
|
||||
<!-- A spellbook for learning the Forgotten Power skills Lv. 31. -->
|
||||
<set name="icon" val="icon.bm_skill_book_base" />
|
||||
<set name="immediate_effect" val="true" />
|
||||
<set name="material" val="PAPER" />
|
||||
<set name="weight" val="10" />
|
||||
<set name="price" val="800" />
|
||||
<set name="commissionItemType" val="SPELLBOOK" />
|
||||
<set name="is_stackable" val="true" />
|
||||
</item>
|
||||
</list>
|
@@ -686,14 +686,14 @@
|
||||
</skill>
|
||||
<skill id="30944" toLevel="1" name="Create Dwarves' Item">
|
||||
<!-- Allows to craft items using Lv. $s1 recipes. -->
|
||||
<icon>icon.skill30943</icon>
|
||||
<icon>icon.skill30944</icon>
|
||||
<magicLevel>85</magicLevel>
|
||||
<operateType>P</operateType>
|
||||
<magicCriticalRate>5</magicCriticalRate>
|
||||
</skill>
|
||||
<skill id="30944" toLevel="1" name="Create Master Item">
|
||||
<skill id="30945" toLevel="1" name="Create Master Item">
|
||||
<!-- Allows to craft items using Lv. $s1 recipes. -->
|
||||
<icon>icon.skill30943</icon>
|
||||
<icon>icon.skill30945</icon>
|
||||
<magicLevel>85</magicLevel>
|
||||
<operateType>P</operateType>
|
||||
<magicCriticalRate>5</magicCriticalRate>
|
||||
|
54
L2J_Mobius_10.0_MasterClass/dist/game/data/xsd/LimitShop.xsd
vendored
Normal file
54
L2J_Mobius_10.0_MasterClass/dist/game/data/xsd/LimitShop.xsd
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="list">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="product" maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="ingredient" maxOccurs="5">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute type="xs:int" name="id" use="optional"/>
|
||||
<xs:attribute type="xs:long" name="count" use="optional"/>
|
||||
<xs:attribute type="xs:int" name="enchant" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="production">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute type="xs:int" name="id" use="optional"/>
|
||||
<xs:attribute type="xs:long" name="count" use="optional"/>
|
||||
<xs:attribute type="xs:float" name="chance" use="optional"/>
|
||||
<xs:attribute type="xs:int" name="id2" use="optional"/>
|
||||
<xs:attribute type="xs:long" name="count2" use="optional"/>
|
||||
<xs:attribute type="xs:float" name="chance2" use="optional"/>
|
||||
<xs:attribute type="xs:int" name="id3" use="optional"/>
|
||||
<xs:attribute type="xs:long" name="count3" use="optional"/>
|
||||
<xs:attribute type="xs:float" name="chance3" use="optional"/>
|
||||
<xs:attribute type="xs:int" name="id4" use="optional"/>
|
||||
<xs:attribute type="xs:long" name="count4" use="optional"/>
|
||||
<xs:attribute type="xs:float" name="chance4" use="optional"/>
|
||||
<xs:attribute type="xs:int" name="id5" use="optional"/>
|
||||
<xs:attribute type="xs:long" name="count5" use="optional"/>
|
||||
<xs:attribute type="xs:int" name="accountDailyLimit" use="optional"/>
|
||||
<xs:attribute type="xs:int" name="accountBuyLimit" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:int" name="id" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="category" use="optional"/>
|
||||
<xs:attribute type="xs:int" name="minLevel" use="optional"/>
|
||||
<xs:attribute type="xs:int" name="maxLevel" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="enabled"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
@@ -84,6 +84,8 @@ import org.l2jmobius.gameserver.data.xml.InitialEquipmentData;
|
||||
import org.l2jmobius.gameserver.data.xml.InitialShortcutData;
|
||||
import org.l2jmobius.gameserver.data.xml.ItemCrystallizationData;
|
||||
import org.l2jmobius.gameserver.data.xml.KarmaData;
|
||||
import org.l2jmobius.gameserver.data.xml.LimitShopCraftData;
|
||||
import org.l2jmobius.gameserver.data.xml.LimitShopData;
|
||||
import org.l2jmobius.gameserver.data.xml.LuckyGameData;
|
||||
import org.l2jmobius.gameserver.data.xml.MultisellData;
|
||||
import org.l2jmobius.gameserver.data.xml.NpcData;
|
||||
@@ -289,6 +291,8 @@ public class GameServer
|
||||
FishingData.getInstance();
|
||||
HennaData.getInstance();
|
||||
PrimeShopData.getInstance();
|
||||
LimitShopData.getInstance();
|
||||
LimitShopCraftData.getInstance();
|
||||
CollectionData.getInstance();
|
||||
PcCafePointsManager.getInstance();
|
||||
AppearanceItemData.getInstance();
|
||||
|
@@ -0,0 +1,269 @@
|
||||
/*
|
||||
* 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.data.xml;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.NamedNodeMap;
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
import org.l2jmobius.commons.util.IXmlReader;
|
||||
import org.l2jmobius.gameserver.data.ItemTable;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
import org.l2jmobius.gameserver.model.holders.LimitShopProductHolder;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
|
||||
/**
|
||||
* @author Mobius, GustavoFonseca
|
||||
*/
|
||||
public class LimitShopCraftData implements IXmlReader
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(LimitShopData.class.getName());
|
||||
|
||||
private final List<LimitShopProductHolder> _products = new ArrayList<>();
|
||||
|
||||
protected LimitShopCraftData()
|
||||
{
|
||||
load();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load()
|
||||
{
|
||||
_products.clear();
|
||||
parseDatapackFile("data/LimitShopCraft.xml");
|
||||
|
||||
if (!_products.isEmpty())
|
||||
{
|
||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _products.size() + " items.");
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER.info(getClass().getSimpleName() + ": System is disabled.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parseDocument(Document doc, File f)
|
||||
{
|
||||
for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
|
||||
{
|
||||
if ("list".equalsIgnoreCase(n.getNodeName()))
|
||||
{
|
||||
final NamedNodeMap at = n.getAttributes();
|
||||
final Node attribute = at.getNamedItem("enabled");
|
||||
if ((attribute != null) && Boolean.parseBoolean(attribute.getNodeValue()))
|
||||
{
|
||||
for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
|
||||
{
|
||||
if ("product".equalsIgnoreCase(d.getNodeName()))
|
||||
{
|
||||
NamedNodeMap attrs = d.getAttributes();
|
||||
Node att;
|
||||
final StatSet set = new StatSet();
|
||||
for (int i = 0; i < attrs.getLength(); i++)
|
||||
{
|
||||
att = attrs.item(i);
|
||||
set.set(att.getNodeName(), att.getNodeValue());
|
||||
}
|
||||
|
||||
final int id = parseInteger(attrs, "id");
|
||||
final int category = parseInteger(attrs, "category");
|
||||
final int minLevel = parseInteger(attrs, "minLevel", 1);
|
||||
final int maxLevel = parseInteger(attrs, "maxLevel", 999);
|
||||
final int[] ingredientIds = new int[5];
|
||||
ingredientIds[0] = 0;
|
||||
ingredientIds[1] = 0;
|
||||
ingredientIds[2] = 0;
|
||||
ingredientIds[3] = 0;
|
||||
ingredientIds[4] = 0;
|
||||
final long[] ingredientQuantities = new long[5];
|
||||
ingredientQuantities[0] = 0;
|
||||
ingredientQuantities[1] = 0;
|
||||
ingredientQuantities[2] = 0;
|
||||
ingredientQuantities[3] = 0;
|
||||
ingredientQuantities[4] = 0;
|
||||
final int[] ingredientEnchants = new int[5];
|
||||
ingredientEnchants[0] = 0;
|
||||
ingredientEnchants[1] = 0;
|
||||
ingredientEnchants[2] = 0;
|
||||
ingredientEnchants[3] = 0;
|
||||
ingredientEnchants[4] = 0;
|
||||
int productionId = 0;
|
||||
int productionId2 = 0;
|
||||
int productionId3 = 0;
|
||||
int productionId4 = 0;
|
||||
int productionId5 = 0;
|
||||
long count = 1L;
|
||||
long count2 = 1L;
|
||||
long count3 = 1L;
|
||||
long count4 = 1L;
|
||||
long count5 = 1L;
|
||||
float chance = 100f;
|
||||
float chance2 = 100f;
|
||||
float chance3 = 100f;
|
||||
float chance4 = 100f;
|
||||
int accountDailyLimit = 0;
|
||||
int accountBuyLimit = 0;
|
||||
for (Node b = d.getFirstChild(); b != null; b = b.getNextSibling())
|
||||
{
|
||||
attrs = b.getAttributes();
|
||||
|
||||
if ("ingredient".equalsIgnoreCase(b.getNodeName()))
|
||||
{
|
||||
final int ingredientId = parseInteger(attrs, "id");
|
||||
final long ingredientQuantity = parseLong(attrs, "count", 1L);
|
||||
final int ingredientEnchant = parseInteger(attrs, "enchant", 0);
|
||||
|
||||
final Item item = ItemTable.getInstance().getTemplate(ingredientId);
|
||||
if (item == null)
|
||||
{
|
||||
LOGGER.severe(getClass().getSimpleName() + ": Item template null for itemId: " + productionId + " productId: " + id);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ingredientIds[0] == 0)
|
||||
{
|
||||
ingredientIds[0] = ingredientId;
|
||||
}
|
||||
else if (ingredientIds[1] == 0)
|
||||
{
|
||||
ingredientIds[1] = ingredientId;
|
||||
}
|
||||
else if (ingredientIds[2] == 0)
|
||||
{
|
||||
ingredientIds[2] = ingredientId;
|
||||
}
|
||||
else if (ingredientIds[3] == 0)
|
||||
{
|
||||
ingredientIds[3] = ingredientId;
|
||||
}
|
||||
else
|
||||
{
|
||||
ingredientIds[4] = ingredientId;
|
||||
}
|
||||
|
||||
if (ingredientQuantities[0] == 0)
|
||||
{
|
||||
ingredientQuantities[0] = ingredientQuantity;
|
||||
}
|
||||
else if (ingredientQuantities[1] == 0)
|
||||
{
|
||||
ingredientQuantities[1] = ingredientQuantity;
|
||||
}
|
||||
else if (ingredientQuantities[2] == 0)
|
||||
{
|
||||
ingredientQuantities[2] = ingredientQuantity;
|
||||
}
|
||||
else if (ingredientQuantities[3] == 0)
|
||||
{
|
||||
ingredientQuantities[3] = ingredientQuantity;
|
||||
}
|
||||
else
|
||||
{
|
||||
ingredientQuantities[4] = ingredientQuantity;
|
||||
}
|
||||
|
||||
if (ingredientEnchants[0] == 0)
|
||||
{
|
||||
ingredientEnchants[0] = ingredientEnchant;
|
||||
}
|
||||
else if (ingredientEnchants[1] == 0)
|
||||
{
|
||||
ingredientEnchants[1] = ingredientEnchant;
|
||||
}
|
||||
else if (ingredientEnchants[2] == 0)
|
||||
{
|
||||
ingredientEnchants[2] = ingredientEnchant;
|
||||
}
|
||||
else if (ingredientEnchants[3] == 0)
|
||||
{
|
||||
ingredientEnchants[3] = ingredientEnchant;
|
||||
}
|
||||
else
|
||||
{
|
||||
ingredientEnchants[4] = ingredientEnchant;
|
||||
}
|
||||
}
|
||||
else if ("production".equalsIgnoreCase(b.getNodeName()))
|
||||
{
|
||||
productionId = parseInteger(attrs, "id");
|
||||
count = parseLong(attrs, "count", 1L);
|
||||
chance = parseFloat(attrs, "chance", 100f);
|
||||
productionId2 = parseInteger(attrs, "id2", 0);
|
||||
count2 = parseLong(attrs, "count2", 1L);
|
||||
chance2 = parseFloat(attrs, "chance2", 100f);
|
||||
productionId3 = parseInteger(attrs, "id3", 0);
|
||||
count3 = parseLong(attrs, "count3", 1L);
|
||||
chance3 = parseFloat(attrs, "chance3", 100f);
|
||||
productionId4 = parseInteger(attrs, "id4", 0);
|
||||
count4 = parseLong(attrs, "count4", 1L);
|
||||
chance4 = parseFloat(attrs, "chance4", 100f);
|
||||
productionId5 = parseInteger(attrs, "id5", 0);
|
||||
count5 = parseLong(attrs, "count5", 1L);
|
||||
accountDailyLimit = parseInteger(attrs, "accountDailyLimit", 0);
|
||||
accountBuyLimit = parseInteger(attrs, "accountBuyLimit", 0);
|
||||
|
||||
final Item item = ItemTable.getInstance().getTemplate(productionId);
|
||||
if (item == null)
|
||||
{
|
||||
LOGGER.severe(getClass().getSimpleName() + ": Item template null for itemId: " + productionId + " productId: " + id);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_products.add(new LimitShopProductHolder(id, category, minLevel, maxLevel, ingredientIds, ingredientQuantities, ingredientEnchants, productionId, count, chance, productionId2, count2, chance2, productionId3, count3, chance3, productionId4, count4, chance4, productionId5, count5, accountDailyLimit, accountBuyLimit));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public LimitShopProductHolder getProduct(int id)
|
||||
{
|
||||
for (LimitShopProductHolder product : _products)
|
||||
{
|
||||
if (product.getId() == id)
|
||||
{
|
||||
return product;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Collection<LimitShopProductHolder> getProducts()
|
||||
{
|
||||
return _products;
|
||||
}
|
||||
|
||||
public static LimitShopCraftData getInstance()
|
||||
{
|
||||
return SingletonHolder.INSTANCE;
|
||||
}
|
||||
|
||||
private static class SingletonHolder
|
||||
{
|
||||
protected static final LimitShopCraftData INSTANCE = new LimitShopCraftData();
|
||||
}
|
||||
}
|
@@ -0,0 +1,243 @@
|
||||
/*
|
||||
* 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.data.xml;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.NamedNodeMap;
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
import org.l2jmobius.commons.util.IXmlReader;
|
||||
import org.l2jmobius.gameserver.data.ItemTable;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
import org.l2jmobius.gameserver.model.holders.LimitShopProductHolder;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class LimitShopData implements IXmlReader
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(LimitShopData.class.getName());
|
||||
|
||||
private final List<LimitShopProductHolder> _products = new ArrayList<>();
|
||||
|
||||
protected LimitShopData()
|
||||
{
|
||||
load();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load()
|
||||
{
|
||||
_products.clear();
|
||||
parseDatapackFile("data/LimitShop.xml");
|
||||
|
||||
if (!_products.isEmpty())
|
||||
{
|
||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _products.size() + " items.");
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER.info(getClass().getSimpleName() + ": System is disabled.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parseDocument(Document doc, File f)
|
||||
{
|
||||
for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
|
||||
{
|
||||
if ("list".equalsIgnoreCase(n.getNodeName()))
|
||||
{
|
||||
final NamedNodeMap at = n.getAttributes();
|
||||
final Node attribute = at.getNamedItem("enabled");
|
||||
if ((attribute != null) && Boolean.parseBoolean(attribute.getNodeValue()))
|
||||
{
|
||||
for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
|
||||
{
|
||||
if ("product".equalsIgnoreCase(d.getNodeName()))
|
||||
{
|
||||
NamedNodeMap attrs = d.getAttributes();
|
||||
Node att;
|
||||
final StatSet set = new StatSet();
|
||||
for (int i = 0; i < attrs.getLength(); i++)
|
||||
{
|
||||
att = attrs.item(i);
|
||||
set.set(att.getNodeName(), att.getNodeValue());
|
||||
}
|
||||
|
||||
final int id = parseInteger(attrs, "id");
|
||||
final int category = parseInteger(attrs, "category");
|
||||
final int minLevel = parseInteger(attrs, "minLevel", 1);
|
||||
final int maxLevel = parseInteger(attrs, "maxLevel", 999);
|
||||
final int[] ingredientIds = new int[5];
|
||||
ingredientIds[0] = 0;
|
||||
ingredientIds[1] = 0;
|
||||
ingredientIds[2] = 0;
|
||||
ingredientIds[3] = 0;
|
||||
ingredientIds[4] = 0;
|
||||
final long[] ingredientQuantities = new long[5];
|
||||
ingredientQuantities[0] = 0;
|
||||
ingredientQuantities[1] = 0;
|
||||
ingredientQuantities[2] = 0;
|
||||
ingredientQuantities[3] = 0;
|
||||
ingredientQuantities[4] = 0;
|
||||
final int[] ingredientEnchants = new int[5];
|
||||
ingredientEnchants[0] = 0;
|
||||
ingredientEnchants[1] = 0;
|
||||
ingredientEnchants[2] = 0;
|
||||
ingredientEnchants[3] = 0;
|
||||
ingredientEnchants[4] = 0;
|
||||
int productionId = 0;
|
||||
int accountDailyLimit = 0;
|
||||
int accountBuyLimit = 0;
|
||||
for (Node b = d.getFirstChild(); b != null; b = b.getNextSibling())
|
||||
{
|
||||
attrs = b.getAttributes();
|
||||
|
||||
if ("ingredient".equalsIgnoreCase(b.getNodeName()))
|
||||
{
|
||||
final int ingredientId = parseInteger(attrs, "id");
|
||||
final long ingredientQuantity = parseLong(attrs, "count", 1L);
|
||||
final int ingredientEnchant = parseInteger(attrs, "enchant", 0);
|
||||
|
||||
final Item item = ItemTable.getInstance().getTemplate(ingredientId);
|
||||
if (item == null)
|
||||
{
|
||||
LOGGER.severe(getClass().getSimpleName() + ": Item template null for itemId: " + productionId + " productId: " + id);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ingredientIds[0] == 0)
|
||||
{
|
||||
ingredientIds[0] = ingredientId;
|
||||
}
|
||||
else if (ingredientIds[1] == 0)
|
||||
{
|
||||
ingredientIds[1] = ingredientId;
|
||||
}
|
||||
else if (ingredientIds[2] == 0)
|
||||
{
|
||||
ingredientIds[2] = ingredientId;
|
||||
}
|
||||
else if (ingredientIds[3] == 0)
|
||||
{
|
||||
ingredientIds[3] = ingredientId;
|
||||
}
|
||||
else
|
||||
{
|
||||
ingredientIds[4] = ingredientId;
|
||||
}
|
||||
|
||||
if (ingredientQuantities[0] == 0)
|
||||
{
|
||||
ingredientQuantities[0] = ingredientQuantity;
|
||||
}
|
||||
else if (ingredientQuantities[1] == 0)
|
||||
{
|
||||
ingredientQuantities[1] = ingredientQuantity;
|
||||
}
|
||||
else if (ingredientQuantities[2] == 0)
|
||||
{
|
||||
ingredientQuantities[2] = ingredientQuantity;
|
||||
}
|
||||
else if (ingredientQuantities[3] == 0)
|
||||
{
|
||||
ingredientQuantities[3] = ingredientQuantity;
|
||||
}
|
||||
else
|
||||
{
|
||||
ingredientQuantities[4] = ingredientQuantity;
|
||||
}
|
||||
|
||||
if (ingredientEnchants[0] == 0)
|
||||
{
|
||||
ingredientEnchants[0] = ingredientEnchant;
|
||||
}
|
||||
else if (ingredientEnchants[1] == 0)
|
||||
{
|
||||
ingredientEnchants[1] = ingredientEnchant;
|
||||
}
|
||||
else if (ingredientEnchants[2] == 0)
|
||||
{
|
||||
ingredientEnchants[2] = ingredientEnchant;
|
||||
}
|
||||
else if (ingredientEnchants[3] == 0)
|
||||
{
|
||||
ingredientEnchants[3] = ingredientEnchant;
|
||||
}
|
||||
else
|
||||
{
|
||||
ingredientEnchants[4] = ingredientEnchant;
|
||||
}
|
||||
}
|
||||
else if ("production".equalsIgnoreCase(b.getNodeName()))
|
||||
{
|
||||
productionId = parseInteger(attrs, "id");
|
||||
accountDailyLimit = parseInteger(attrs, "accountDailyLimit", 0);
|
||||
accountBuyLimit = parseInteger(attrs, "accountBuyLimit", 0);
|
||||
|
||||
final Item item = ItemTable.getInstance().getTemplate(productionId);
|
||||
if (item == null)
|
||||
{
|
||||
LOGGER.severe(getClass().getSimpleName() + ": Item template null for itemId: " + productionId + " productId: " + id);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_products.add(new LimitShopProductHolder(id, category, minLevel, maxLevel, ingredientIds, ingredientQuantities, ingredientEnchants, productionId, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, accountDailyLimit, accountBuyLimit));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public LimitShopProductHolder getProduct(int id)
|
||||
{
|
||||
for (LimitShopProductHolder product : _products)
|
||||
{
|
||||
if (product.getId() == id)
|
||||
{
|
||||
return product;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Collection<LimitShopProductHolder> getProducts()
|
||||
{
|
||||
return _products;
|
||||
}
|
||||
|
||||
public static LimitShopData getInstance()
|
||||
{
|
||||
return SingletonHolder.INSTANCE;
|
||||
}
|
||||
|
||||
private static class SingletonHolder
|
||||
{
|
||||
protected static final LimitShopData INSTANCE = new LimitShopData();
|
||||
}
|
||||
}
|
@@ -357,6 +357,7 @@ import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExActivateAutoSho
|
||||
import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExAutoPlaySettingSend;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.commission.ExResponseCommissionInfo;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.limitshop.ExBloodyCoinCount;
|
||||
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
|
||||
import org.l2jmobius.gameserver.taskmanager.AutoPlayTaskManager;
|
||||
import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager;
|
||||
@@ -3457,6 +3458,12 @@ public class PlayerInstance extends Playable
|
||||
}
|
||||
}
|
||||
|
||||
// Einhasad coin UI update.
|
||||
if (destoyedItem.getId() == Inventory.EINHASAD_COIN_ID)
|
||||
{
|
||||
sendPacket(new ExBloodyCoinCount(this));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3566,6 +3573,12 @@ public class PlayerInstance extends Playable
|
||||
}
|
||||
}
|
||||
|
||||
// Einhasad coin UI update.
|
||||
if (item.getId() == Inventory.EINHASAD_COIN_ID)
|
||||
{
|
||||
sendPacket(new ExBloodyCoinCount(this));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3634,6 +3647,13 @@ public class PlayerInstance extends Playable
|
||||
targetPlayer.sendItemList();
|
||||
}
|
||||
}
|
||||
|
||||
// Einhasad coin UI update.
|
||||
if (newItem.getId() == Inventory.EINHASAD_COIN_ID)
|
||||
{
|
||||
sendPacket(new ExBloodyCoinCount(this));
|
||||
}
|
||||
|
||||
return newItem;
|
||||
}
|
||||
|
||||
@@ -3741,6 +3761,12 @@ public class PlayerInstance extends Playable
|
||||
sendPacket(sm);
|
||||
}
|
||||
|
||||
// Einhasad coin UI update.
|
||||
if (item.getId() == Inventory.EINHASAD_COIN_ID)
|
||||
{
|
||||
sendPacket(new ExBloodyCoinCount(this));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3815,6 +3841,12 @@ public class PlayerInstance extends Playable
|
||||
sendPacket(sm);
|
||||
}
|
||||
|
||||
// Einhasad coin UI update.
|
||||
if (item.getId() == Inventory.EINHASAD_COIN_ID)
|
||||
{
|
||||
sendPacket(new ExBloodyCoinCount(this));
|
||||
}
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,189 @@
|
||||
/*
|
||||
* 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.holders;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class LimitShopProductHolder
|
||||
{
|
||||
private final int _id;
|
||||
private final int _category;
|
||||
private final int _minLevel;
|
||||
private final int _maxLevel;
|
||||
private final int[] _ingredientIds;
|
||||
private final long[] _ingredientQuantities;
|
||||
private final int[] _ingredientEnchants;
|
||||
private final int _productionId;
|
||||
private final long _count;
|
||||
private final float _chance;
|
||||
private final int _productionId2;
|
||||
private final long _count2;
|
||||
private final float _chance2;
|
||||
private final int _productionId3;
|
||||
private final long _count3;
|
||||
private final float _chance3;
|
||||
private final int _productionId4;
|
||||
private final long _count4;
|
||||
private final float _chance4;
|
||||
private final int _productionId5;
|
||||
private final long _count5;
|
||||
private final int _accountDailyLimit;
|
||||
private final int _accountBuyLimit;
|
||||
|
||||
public LimitShopProductHolder(int id, int category, int minLevel, int maxLevel, int[] ingredientIds, long[] ingredientQuantities, int[] ingredientEnchants, int productionId, long count, float chance, int productionId2, long count2, float chance2, int productionId3, long count3, float chance3, int productionId4, long count4, float chance4, int productionId5, long count5, int accountDailyLimit, int accountBuyLimit)
|
||||
{
|
||||
_id = id;
|
||||
_category = category;
|
||||
_minLevel = minLevel;
|
||||
_maxLevel = maxLevel;
|
||||
_ingredientIds = ingredientIds;
|
||||
_ingredientQuantities = ingredientQuantities;
|
||||
_ingredientEnchants = ingredientEnchants;
|
||||
_productionId = productionId;
|
||||
_count = count;
|
||||
_chance = chance;
|
||||
_productionId2 = productionId2;
|
||||
_count2 = count2;
|
||||
_chance2 = chance2;
|
||||
_productionId3 = productionId3;
|
||||
_count3 = count3;
|
||||
_chance3 = chance3;
|
||||
_productionId4 = productionId4;
|
||||
_count4 = count4;
|
||||
_chance4 = chance4;
|
||||
_productionId5 = productionId5;
|
||||
_count5 = count5;
|
||||
_accountDailyLimit = accountDailyLimit;
|
||||
_accountBuyLimit = accountBuyLimit;
|
||||
}
|
||||
|
||||
public int getId()
|
||||
{
|
||||
return _id;
|
||||
}
|
||||
|
||||
public int getCategory()
|
||||
{
|
||||
return _category;
|
||||
}
|
||||
|
||||
public int getMinLevel()
|
||||
{
|
||||
return _minLevel;
|
||||
}
|
||||
|
||||
public int getMaxLevel()
|
||||
{
|
||||
return _maxLevel;
|
||||
}
|
||||
|
||||
public int[] getIngredientIds()
|
||||
{
|
||||
return _ingredientIds;
|
||||
}
|
||||
|
||||
public long[] getIngredientQuantities()
|
||||
{
|
||||
return _ingredientQuantities;
|
||||
}
|
||||
|
||||
public int[] getIngredientEnchants()
|
||||
{
|
||||
return _ingredientEnchants;
|
||||
}
|
||||
|
||||
public int getProductionId()
|
||||
{
|
||||
return _productionId;
|
||||
}
|
||||
|
||||
public long getCount()
|
||||
{
|
||||
return _count;
|
||||
}
|
||||
|
||||
public float getChance()
|
||||
{
|
||||
return _chance;
|
||||
}
|
||||
|
||||
public int getProductionId2()
|
||||
{
|
||||
return _productionId2;
|
||||
}
|
||||
|
||||
public long getCount2()
|
||||
{
|
||||
return _count2;
|
||||
}
|
||||
|
||||
public float getChance2()
|
||||
{
|
||||
return _chance2;
|
||||
}
|
||||
|
||||
public int getProductionId3()
|
||||
{
|
||||
return _productionId3;
|
||||
}
|
||||
|
||||
public long getCount3()
|
||||
{
|
||||
return _count3;
|
||||
}
|
||||
|
||||
public float getChance3()
|
||||
{
|
||||
return _chance3;
|
||||
}
|
||||
|
||||
public int getProductionId4()
|
||||
{
|
||||
return _productionId4;
|
||||
}
|
||||
|
||||
public long getCount4()
|
||||
{
|
||||
return _count4;
|
||||
}
|
||||
|
||||
public float getChance4()
|
||||
{
|
||||
return _chance4;
|
||||
}
|
||||
|
||||
public int getProductionId5()
|
||||
{
|
||||
return _productionId5;
|
||||
}
|
||||
|
||||
public long getCount5()
|
||||
{
|
||||
return _count5;
|
||||
}
|
||||
|
||||
public int getAccountDailyLimit()
|
||||
{
|
||||
return _accountDailyLimit;
|
||||
}
|
||||
|
||||
public int getAccountBuyLimit()
|
||||
{
|
||||
return _accountBuyLimit;
|
||||
}
|
||||
}
|
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* 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.holders;
|
||||
|
||||
/**
|
||||
* @author Gustavo Fonseca
|
||||
*/
|
||||
public class LimitShopRandomCraftReward
|
||||
{
|
||||
private final int _itemId;
|
||||
private final int _count;
|
||||
private final int _rewardIndex;
|
||||
|
||||
public LimitShopRandomCraftReward(int itemId, int count, int rewardIndex)
|
||||
{
|
||||
_itemId = itemId;
|
||||
_count = count;
|
||||
_rewardIndex = rewardIndex;
|
||||
}
|
||||
|
||||
public int getItemId()
|
||||
{
|
||||
return _itemId;
|
||||
}
|
||||
|
||||
public int getCount()
|
||||
{
|
||||
return _count;
|
||||
}
|
||||
|
||||
public int getRewardIndex()
|
||||
{
|
||||
return _rewardIndex;
|
||||
}
|
||||
}
|
@@ -88,7 +88,7 @@ public abstract class Inventory extends ItemContainer
|
||||
public static final int AIR_STONE_ID = 39461;
|
||||
public static final int TEMPEST_STONE_ID = 39592;
|
||||
public static final int ELCYUM_CRYSTAL_ID = 36514;
|
||||
|
||||
public static final int EINHASAD_COIN_ID = 48472; // Lcoin on Essence.
|
||||
public static final long MAX_ADENA = Config.MAX_ADENA;
|
||||
|
||||
public static final int PAPERDOLL_UNDER = 0;
|
||||
|
@@ -41,6 +41,8 @@ public class AccountVariables extends AbstractVariables
|
||||
// Public variable names
|
||||
public static final String HWID = "HWID";
|
||||
public static final String HWIDSLIT_VAR = " ";
|
||||
public static final String LCOIN_SHOP_PRODUCT_TIME = "LCSTime";
|
||||
public static final String LCOIN_SHOP_PRODUCT_COUNT = "LCSCount";
|
||||
|
||||
private final String _accountName;
|
||||
|
||||
|
@@ -99,6 +99,8 @@ import org.l2jmobius.gameserver.network.clientpackets.homunculus.RequestExShowHo
|
||||
import org.l2jmobius.gameserver.network.clientpackets.homunculus.RequestExSummonHomunculusCouponResult;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.huntingzones.ExTimedHuntingZoneEnter;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.huntingzones.ExTimedHuntingZoneList;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.limitshop.RequestPurchaseLimitShopItemBuy;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.limitshop.RequestPurchaseLimitShopItemList;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.luckygame.RequestLuckyGamePlay;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.luckygame.RequestLuckyGameStartInfo;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.mentoring.ConfirmMenteeAdd;
|
||||
@@ -505,8 +507,8 @@ public enum ExIncomingPackets implements IIncomingPackets<GameClient>
|
||||
EX_INTERACT_MODIFY(0x15F, null, ConnectionState.IN_GAME),
|
||||
EX_TRY_ENCHANT_ARTIFACT(0x160, RequestExTryEnchantArtifact::new, ConnectionState.IN_GAME),
|
||||
EX_UPGRADE_SYSTEM_NORMAL_REQUEST(0x161, null, ConnectionState.IN_GAME),
|
||||
EX_PURCHASE_LIMIT_SHOP_ITEM_LIST(0x162, null, ConnectionState.IN_GAME),
|
||||
EX_PURCHASE_LIMIT_SHOP_ITEM_BUY(0x163, null, ConnectionState.IN_GAME),
|
||||
EX_PURCHASE_LIMIT_SHOP_ITEM_LIST(0x162, RequestPurchaseLimitShopItemList::new, ConnectionState.IN_GAME),
|
||||
EX_PURCHASE_LIMIT_SHOP_ITEM_BUY(0x163, RequestPurchaseLimitShopItemBuy::new, ConnectionState.IN_GAME),
|
||||
// 228
|
||||
EX_OPEN_HTML(0x164, ExOpenHtml::new, ConnectionState.IN_GAME),
|
||||
EX_REQUEST_CLASS_CHANGE(0x165, ExRequestClassChange::new, ConnectionState.IN_GAME),
|
||||
|
@@ -0,0 +1,266 @@
|
||||
/*
|
||||
* 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.network.clientpackets.limitshop;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.commons.network.PacketReader;
|
||||
import org.l2jmobius.commons.util.Chronos;
|
||||
import org.l2jmobius.commons.util.Rnd;
|
||||
import org.l2jmobius.gameserver.data.xml.LimitShopCraftData;
|
||||
import org.l2jmobius.gameserver.data.xml.LimitShopData;
|
||||
import org.l2jmobius.gameserver.enums.SpecialItemType;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.request.PrimeShopRequest;
|
||||
import org.l2jmobius.gameserver.model.holders.LimitShopProductHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.LimitShopRandomCraftReward;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.model.variables.AccountVariables;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.limitshop.ExPurchaseLimitShopItemResult;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.primeshop.ExBRBuyProduct;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.primeshop.ExBRBuyProduct.ExBrProductReplyType;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class RequestPurchaseLimitShopItemBuy implements IClientIncomingPacket
|
||||
{
|
||||
private int _productId;
|
||||
private int _amount;
|
||||
private LimitShopProductHolder _product;
|
||||
private int _shopIndex;
|
||||
|
||||
@Override
|
||||
public boolean read(GameClient client, PacketReader packet)
|
||||
{
|
||||
_shopIndex = packet.readC(); // 3 Lcoin Store, 4 Special Craft, 100 Clan Shop
|
||||
_productId = packet.readD();
|
||||
_amount = packet.readD();
|
||||
|
||||
switch (_shopIndex)
|
||||
{
|
||||
case 3: // Normal Lcoin Shop
|
||||
{
|
||||
_product = LimitShopData.getInstance().getProduct(_productId);
|
||||
break;
|
||||
}
|
||||
case 4: // Lcoin Special Craft
|
||||
{
|
||||
_product = LimitShopCraftData.getInstance().getProduct(_productId);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
_product = null;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(GameClient client)
|
||||
{
|
||||
final PlayerInstance player = client.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_amount < 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_product == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((player.getLevel() < _product.getMinLevel()) || (player.getLevel() > _product.getMaxLevel()))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.YOUR_LEVEL_CANNOT_PURCHASE_THIS_ITEM);
|
||||
return;
|
||||
}
|
||||
|
||||
if (player.hasItemRequest() || player.hasRequest(PrimeShopRequest.class))
|
||||
{
|
||||
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVALID_USER_STATE));
|
||||
return;
|
||||
}
|
||||
|
||||
// Add request.
|
||||
player.addRequest(new PrimeShopRequest(player));
|
||||
|
||||
// Check limits.
|
||||
if (_product.getAccountDailyLimit() > 0) // Sale period.
|
||||
{
|
||||
if (player.getAccountVariables().getInt(AccountVariables.LCOIN_SHOP_PRODUCT_COUNT + _product.getProductionId(), 0) >= (_product.getAccountDailyLimit() * _amount))
|
||||
{
|
||||
if ((player.getAccountVariables().getLong(AccountVariables.LCOIN_SHOP_PRODUCT_TIME + _product.getProductionId(), 0) + 86400000) > Chronos.currentTimeMillis())
|
||||
{
|
||||
player.sendMessage("You have reached your daily limit."); // TODO: Retail system message?
|
||||
player.removeRequest(PrimeShopRequest.class);
|
||||
return;
|
||||
}
|
||||
// Reset limit.
|
||||
player.getAccountVariables().set(AccountVariables.LCOIN_SHOP_PRODUCT_COUNT + _product.getProductionId(), 0);
|
||||
}
|
||||
}
|
||||
else if (_product.getAccountBuyLimit() > 0) // Count limit.
|
||||
{
|
||||
if (player.getAccountVariables().getInt(AccountVariables.LCOIN_SHOP_PRODUCT_COUNT + _product.getProductionId(), 0) >= (_product.getAccountBuyLimit() * _amount))
|
||||
{
|
||||
player.sendMessage("You cannot buy any more of this item."); // TODO: Retail system message?
|
||||
player.removeRequest(PrimeShopRequest.class);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Check existing items.
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
if (_product.getIngredientIds()[i] == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (_product.getIngredientIds()[i] == Inventory.ADENA_ID)
|
||||
{
|
||||
if (player.getAdena() < (_product.getIngredientQuantities()[i] * _amount))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2);
|
||||
player.removeRequest(PrimeShopRequest.class);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (_product.getIngredientIds()[i] == SpecialItemType.HONOR_COINS.getClientId())
|
||||
{
|
||||
if (player.getHonorCoins() < (_product.getIngredientQuantities()[i] * _amount))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2);
|
||||
player.removeRequest(PrimeShopRequest.class);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (player.getInventory().getInventoryItemCount(_product.getIngredientIds()[i], _product.getIngredientEnchants()[i] == 0 ? -1 : _product.getIngredientEnchants()[i], true) < (_product.getIngredientQuantities()[i] * _amount))
|
||||
{
|
||||
player.sendPacket(SystemMessageId.INCORRECT_ITEM_COUNT_2);
|
||||
player.removeRequest(PrimeShopRequest.class);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Remove items.
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
if (_product.getIngredientIds()[i] == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (_product.getIngredientIds()[i] == Inventory.ADENA_ID)
|
||||
{
|
||||
player.reduceAdena("LCoinShop", _product.getIngredientQuantities()[i] * _amount, player, true);
|
||||
}
|
||||
else if (_product.getIngredientIds()[i] == SpecialItemType.HONOR_COINS.getClientId())
|
||||
{
|
||||
player.setHonorCoins(player.getHonorCoins() - (_product.getIngredientQuantities()[i] * _amount));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_product.getIngredientEnchants()[i] > 0)
|
||||
{
|
||||
int count = 0;
|
||||
final Collection<ItemInstance> items = player.getInventory().getAllItemsByItemId(_product.getIngredientIds()[i], _product.getIngredientEnchants()[i]);
|
||||
for (ItemInstance item : items)
|
||||
{
|
||||
if (count == _amount)
|
||||
{
|
||||
break;
|
||||
}
|
||||
count++;
|
||||
player.destroyItem("LCoinShop", item, player, true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
player.destroyItemByItemId("LCoinShop", _product.getIngredientIds()[i], _product.getIngredientQuantities()[i] * _amount, player, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Reward.
|
||||
final List<LimitShopRandomCraftReward> rewards = new ArrayList<>();
|
||||
if (_product.getProductionId2() > 0)
|
||||
{
|
||||
for (int i = 0; i < _amount; i++)
|
||||
{
|
||||
if (Rnd.get(100) < _product.getChance())
|
||||
{
|
||||
rewards.add(new LimitShopRandomCraftReward(_product.getProductionId(), (int) _product.getCount(), 0));
|
||||
player.addItem("LCoinShop", _product.getProductionId(), _product.getCount(), player, true);
|
||||
}
|
||||
else if (Rnd.get(100) < _product.getChance2())
|
||||
{
|
||||
rewards.add(new LimitShopRandomCraftReward(_product.getProductionId2(), (int) _product.getCount2(), 1));
|
||||
player.addItem("LCoinShop", _product.getProductionId2(), _product.getCount2(), player, true);
|
||||
}
|
||||
else if (Rnd.get(100) < _product.getChance3())
|
||||
{
|
||||
rewards.add(new LimitShopRandomCraftReward(_product.getProductionId3(), (int) _product.getCount3(), 2));
|
||||
player.addItem("LCoinShop", _product.getProductionId3(), _product.getCount3(), player, true);
|
||||
}
|
||||
else if (Rnd.get(100) < _product.getChance4())
|
||||
{
|
||||
rewards.add(new LimitShopRandomCraftReward(_product.getProductionId4(), (int) _product.getCount4(), 3));
|
||||
player.addItem("LCoinShop", _product.getProductionId4(), _product.getCount4(), player, true);
|
||||
}
|
||||
else if (_product.getProductionId5() > 0)
|
||||
{
|
||||
rewards.add(new LimitShopRandomCraftReward(_product.getProductionId5(), (int) _product.getCount5(), 4));
|
||||
player.addItem("LCoinShop", _product.getProductionId5(), _product.getCount5(), player, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rewards.add(new LimitShopRandomCraftReward(_product.getProductionId(), _amount, 0));
|
||||
player.addItem("LCoinShop", _product.getProductionId(), _amount, player, true);
|
||||
}
|
||||
|
||||
// Update account variables.
|
||||
if (_product.getAccountDailyLimit() > 0)
|
||||
{
|
||||
player.getAccountVariables().set(AccountVariables.LCOIN_SHOP_PRODUCT_TIME + _product.getProductionId(), Chronos.currentTimeMillis());
|
||||
player.getAccountVariables().set(AccountVariables.LCOIN_SHOP_PRODUCT_COUNT + _product.getProductionId(), player.getAccountVariables().getInt(AccountVariables.LCOIN_SHOP_PRODUCT_COUNT + _product.getProductionId(), 0) + _amount);
|
||||
}
|
||||
else if (_product.getAccountBuyLimit() > 0)
|
||||
{
|
||||
player.getAccountVariables().set(AccountVariables.LCOIN_SHOP_PRODUCT_COUNT + _product.getProductionId(), player.getAccountVariables().getInt(AccountVariables.LCOIN_SHOP_PRODUCT_COUNT + _product.getProductionId(), 0) + _amount);
|
||||
}
|
||||
|
||||
player.sendPacket(new ExPurchaseLimitShopItemResult(true, _shopIndex, _productId, rewards));
|
||||
|
||||
// Remove request.
|
||||
player.removeRequest(PrimeShopRequest.class);
|
||||
}
|
||||
}
|
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* 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.network.clientpackets.limitshop;
|
||||
|
||||
import org.l2jmobius.commons.network.PacketReader;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.limitshop.ExPurchaseLimitShopItemListNew;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class RequestPurchaseLimitShopItemList implements IClientIncomingPacket
|
||||
{
|
||||
private int _category;
|
||||
|
||||
@Override
|
||||
public boolean read(GameClient client, PacketReader packet)
|
||||
{
|
||||
_category = packet.readC();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(GameClient client)
|
||||
{
|
||||
final PlayerInstance player = client.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
player.sendPacket(new ExPurchaseLimitShopItemListNew(_category, player));
|
||||
}
|
||||
}
|
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* 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.network.serverpackets.limitshop;
|
||||
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class ExBloodyCoinCount implements IClientOutgoingPacket
|
||||
{
|
||||
private final long _count;
|
||||
|
||||
public ExBloodyCoinCount(PlayerInstance player)
|
||||
{
|
||||
_count = player.getInventory().getInventoryItemCount(Inventory.EINHASAD_COIN_ID, -1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean write(PacketWriter packet)
|
||||
{
|
||||
OutgoingPackets.EX_BLOODY_COIN_COUNT.writeId(packet);
|
||||
packet.writeQ(_count);
|
||||
return true;
|
||||
}
|
||||
}
|
@@ -0,0 +1,136 @@
|
||||
/*
|
||||
* 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.network.serverpackets.limitshop;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.commons.util.Chronos;
|
||||
import org.l2jmobius.gameserver.data.xml.LimitShopCraftData;
|
||||
import org.l2jmobius.gameserver.data.xml.LimitShopData;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.LimitShopProductHolder;
|
||||
import org.l2jmobius.gameserver.model.variables.AccountVariables;
|
||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class ExPurchaseLimitShopItemListNew implements IClientOutgoingPacket
|
||||
{
|
||||
private final int _shopType; // 3 Lcoin Store, 4 Special Craft, 100 Clan Shop
|
||||
private final PlayerInstance _player;
|
||||
private final Collection<LimitShopProductHolder> _products;
|
||||
|
||||
public ExPurchaseLimitShopItemListNew(int shopType, PlayerInstance player)
|
||||
{
|
||||
_shopType = shopType;
|
||||
_player = player;
|
||||
|
||||
switch (shopType)
|
||||
{
|
||||
case 3: // Normal Lcoin Shop
|
||||
{
|
||||
_products = LimitShopData.getInstance().getProducts();
|
||||
break;
|
||||
}
|
||||
case 4: // Lcoin Special Craft
|
||||
{
|
||||
_products = LimitShopCraftData.getInstance().getProducts();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
_products = Collections.emptyList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean write(PacketWriter packet)
|
||||
{
|
||||
OutgoingPackets.EX_PURCHASE_LIMIT_SHOP_ITEM_LIST_NEW.writeId(packet);
|
||||
|
||||
packet.writeC(_shopType);
|
||||
packet.writeC(0x01); // Page. (311)
|
||||
packet.writeC(0x01); // MaxPage. (311)
|
||||
packet.writeD(_products.size());
|
||||
for (LimitShopProductHolder product : _products)
|
||||
{
|
||||
packet.writeD(product.getId());
|
||||
packet.writeD(product.getProductionId());
|
||||
packet.writeD(product.getIngredientIds()[0]);
|
||||
packet.writeD(product.getIngredientIds()[1]);
|
||||
packet.writeD(product.getIngredientIds()[2]);
|
||||
packet.writeD(product.getIngredientIds()[3]); // 306
|
||||
packet.writeD(product.getIngredientIds()[4]); // 306
|
||||
packet.writeQ(product.getIngredientQuantities()[0]);
|
||||
packet.writeQ(product.getIngredientQuantities()[1]);
|
||||
packet.writeQ(product.getIngredientQuantities()[2]);
|
||||
packet.writeQ(product.getIngredientQuantities()[3]); // 306
|
||||
packet.writeQ(product.getIngredientQuantities()[4]); // 306
|
||||
packet.writeH(product.getIngredientEnchants()[0]);
|
||||
packet.writeH(product.getIngredientEnchants()[1]);
|
||||
packet.writeH(product.getIngredientEnchants()[2]);
|
||||
packet.writeH(product.getIngredientEnchants()[3]); // 306
|
||||
packet.writeH(product.getIngredientEnchants()[4]); // 306
|
||||
|
||||
// Check limits.
|
||||
if (product.getAccountDailyLimit() > 0) // Sale period.
|
||||
{
|
||||
if (_player.getAccountVariables().getInt(AccountVariables.LCOIN_SHOP_PRODUCT_COUNT + product.getProductionId(), 0) >= product.getAccountDailyLimit())
|
||||
{
|
||||
if ((_player.getAccountVariables().getLong(AccountVariables.LCOIN_SHOP_PRODUCT_TIME + product.getProductionId(), 0) + 86400000) > Chronos.currentTimeMillis())
|
||||
{
|
||||
packet.writeD(0x00);
|
||||
}
|
||||
else // Reset limit.
|
||||
{
|
||||
_player.getAccountVariables().remove(AccountVariables.LCOIN_SHOP_PRODUCT_COUNT + product.getProductionId());
|
||||
packet.writeD(product.getAccountDailyLimit());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
packet.writeD(product.getAccountDailyLimit() - _player.getAccountVariables().getInt(AccountVariables.LCOIN_SHOP_PRODUCT_COUNT + product.getProductionId(), 0));
|
||||
}
|
||||
}
|
||||
else if (product.getAccountBuyLimit() > 0) // Count limit.
|
||||
{
|
||||
if (_player.getAccountVariables().getInt(AccountVariables.LCOIN_SHOP_PRODUCT_COUNT + product.getProductionId(), 0) >= product.getAccountBuyLimit())
|
||||
{
|
||||
packet.writeD(0x00);
|
||||
}
|
||||
else
|
||||
{
|
||||
packet.writeD(product.getAccountBuyLimit() - _player.getAccountVariables().getInt(AccountVariables.LCOIN_SHOP_PRODUCT_COUNT + product.getProductionId(), 0));
|
||||
}
|
||||
}
|
||||
else // No account limits.
|
||||
{
|
||||
packet.writeD(0x01);
|
||||
}
|
||||
packet.writeD(0x00); // nRemainSec
|
||||
packet.writeD(0x00); // nRemainServerItemAmount
|
||||
packet.writeH(0x00); // sCircleNum (311)
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
* 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.network.serverpackets.limitshop;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.data.xml.LimitShopCraftData;
|
||||
import org.l2jmobius.gameserver.data.xml.LimitShopData;
|
||||
import org.l2jmobius.gameserver.model.holders.LimitShopProductHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.LimitShopRandomCraftReward;
|
||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
|
||||
/**
|
||||
* @author Gustavo Fonseca
|
||||
*/
|
||||
public class ExPurchaseLimitShopItemResult implements IClientOutgoingPacket
|
||||
{
|
||||
private final int _category, _productId;
|
||||
private final boolean _isSuccess;
|
||||
private final List<LimitShopRandomCraftReward> _rewards;
|
||||
private final LimitShopProductHolder _product;
|
||||
|
||||
public ExPurchaseLimitShopItemResult(boolean isSuccess, int category, int productId, List<LimitShopRandomCraftReward> rewards)
|
||||
{
|
||||
_isSuccess = isSuccess;
|
||||
_category = category;
|
||||
_productId = productId;
|
||||
_rewards = rewards;
|
||||
|
||||
switch (_category)
|
||||
{
|
||||
case 3: // Normal Lcoin Shop
|
||||
{
|
||||
_product = LimitShopData.getInstance().getProduct(_productId);
|
||||
break;
|
||||
}
|
||||
case 4: // Lcoin Special Craft
|
||||
{
|
||||
_product = LimitShopCraftData.getInstance().getProduct(_productId);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
_product = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean write(PacketWriter packet)
|
||||
{
|
||||
OutgoingPackets.EX_PURCHASE_LIMIT_SHOP_ITEM_BUY.writeId(packet);
|
||||
if ((_product == null) || !_isSuccess)
|
||||
{
|
||||
packet.writeC(1);
|
||||
packet.writeC(_category);
|
||||
packet.writeD(_productId);
|
||||
packet.writeD(1);
|
||||
packet.writeC(1);
|
||||
packet.writeD(0);
|
||||
packet.writeQ(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
packet.writeC(0); // success
|
||||
packet.writeC(_category);
|
||||
packet.writeD(_productId);
|
||||
packet.writeD(_rewards.size());
|
||||
int counter = 0;
|
||||
for (LimitShopRandomCraftReward entry : _rewards)
|
||||
{
|
||||
if (counter == _rewards.size())
|
||||
{
|
||||
break;
|
||||
}
|
||||
packet.writeC(entry.getRewardIndex());
|
||||
packet.writeD(0);
|
||||
packet.writeD(entry.getCount());
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user