Henna improving system.

Thanks to Index.
This commit is contained in:
MobiusDevelopment 2022-05-01 22:49:26 +00:00
parent 46d411eeca
commit 56d3de98d4
16 changed files with 1738 additions and 14 deletions

View File

@ -0,0 +1,479 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd/CombinationDye.xsd">
<henna dyeId="338" itemTwo="96623" commission="300000" chance="25"> <!-- Potential of STR <STR+1> -->
<reward dyeId="339" type="ON_SUCCESS" />
<reward dyeId="338" type="ON_FAILURE" />
</henna>
<henna dyeId="339" itemTwo="96623" commission="300000" chance="25"> <!-- Potential of STR <STR+2> -->
<reward dyeId="340" type="ON_SUCCESS" />
<reward dyeId="339" type="ON_FAILURE" />
</henna>
<henna dyeId="340" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +25) -->
<reward dyeId="341" type="ON_SUCCESS" />
<reward dyeId="340" type="ON_FAILURE" />
</henna>
<henna dyeId="341" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +50) -->
<reward dyeId="342" type="ON_SUCCESS" />
<reward dyeId="341" type="ON_FAILURE" />
</henna>
<henna dyeId="342" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +75) -->
<reward dyeId="343" type="ON_SUCCESS" />
<reward dyeId="342" type="ON_FAILURE" />
</henna>
<henna dyeId="343" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +100) -->
<reward dyeId="344" type="ON_SUCCESS" />
<reward dyeId="343" type="ON_FAILURE" />
</henna>
<henna dyeId="344" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +125) -->
<reward dyeId="345" type="ON_SUCCESS" />
<reward dyeId="344" type="ON_FAILURE" />
</henna>
<henna dyeId="345" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +150) -->
<reward dyeId="346" type="ON_SUCCESS" />
<reward dyeId="345" type="ON_FAILURE" />
</henna>
<henna dyeId="346" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +175) -->
<reward dyeId="347" type="ON_SUCCESS" />
<reward dyeId="346" type="ON_FAILURE" />
</henna>
<henna dyeId="347" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +200) -->
<reward dyeId="348" type="ON_SUCCESS" />
<reward dyeId="347" type="ON_FAILURE" />
</henna>
<henna dyeId="348" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +225) -->
<reward dyeId="349" type="ON_SUCCESS" />
<reward dyeId="348" type="ON_FAILURE" />
</henna>
<henna dyeId="349" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +250) -->
<reward dyeId="350" type="ON_SUCCESS" />
<reward dyeId="349" type="ON_FAILURE" />
</henna>
<henna dyeId="350" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +275) -->
<reward dyeId="351" type="ON_SUCCESS" />
<reward dyeId="350" type="ON_FAILURE" />
</henna>
<henna dyeId="351" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +300) -->
<reward dyeId="352" type="ON_SUCCESS" />
<reward dyeId="351" type="ON_FAILURE" />
</henna>
<henna dyeId="352" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +325) -->
<reward dyeId="353" type="ON_SUCCESS" />
<reward dyeId="352" type="ON_FAILURE" />
</henna>
<henna dyeId="353" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +350 P. Skill Critical Rate +0.5%) -->
<reward dyeId="354" type="ON_SUCCESS" />
<reward dyeId="353" type="ON_FAILURE" />
</henna>
<henna dyeId="354" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +375 P. Skill Critical Rate +1%) -->
<reward dyeId="355" type="ON_SUCCESS" />
<reward dyeId="354" type="ON_FAILURE" />
</henna>
<henna dyeId="355" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +400 P. Skill Critical Rate +1.5%) -->
<reward dyeId="356" type="ON_SUCCESS" />
<reward dyeId="355" type="ON_FAILURE" />
</henna>
<henna dyeId="356" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +425 P. Skill Critical Rate +2%) -->
<reward dyeId="357" type="ON_SUCCESS" />
<reward dyeId="356" type="ON_FAILURE" />
</henna>
<henna dyeId="358" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+1> -->
<reward dyeId="359" type="ON_SUCCESS" />
<reward dyeId="358" type="ON_FAILURE" />
</henna>
<henna dyeId="359" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+2> -->
<reward dyeId="360" type="ON_SUCCESS" />
<reward dyeId="359" type="ON_FAILURE" />
</henna>
<henna dyeId="360" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+3> -->
<reward dyeId="361" type="ON_SUCCESS" />
<reward dyeId="360" type="ON_FAILURE" />
</henna>
<henna dyeId="361" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +32) -->
<reward dyeId="362" type="ON_SUCCESS" />
<reward dyeId="361" type="ON_FAILURE" />
</henna>
<henna dyeId="362" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +65) -->
<reward dyeId="363" type="ON_SUCCESS" />
<reward dyeId="362" type="ON_FAILURE" />
</henna>
<henna dyeId="363" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +97) -->
<reward dyeId="364" type="ON_SUCCESS" />
<reward dyeId="363" type="ON_FAILURE" />
</henna>
<henna dyeId="364" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +130) -->
<reward dyeId="365" type="ON_SUCCESS" />
<reward dyeId="364" type="ON_FAILURE" />
</henna>
<henna dyeId="365" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +162) -->
<reward dyeId="366" type="ON_SUCCESS" />
<reward dyeId="365" type="ON_FAILURE" />
</henna>
<henna dyeId="366" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +195) -->
<reward dyeId="367" type="ON_SUCCESS" />
<reward dyeId="366" type="ON_FAILURE" />
</henna>
<henna dyeId="367" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +227) -->
<reward dyeId="368" type="ON_SUCCESS" />
<reward dyeId="367" type="ON_FAILURE" />
</henna>
<henna dyeId="368" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +260) -->
<reward dyeId="369" type="ON_SUCCESS" />
<reward dyeId="368" type="ON_FAILURE" />
</henna>
<henna dyeId="369" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +292) -->
<reward dyeId="370" type="ON_SUCCESS" />
<reward dyeId="369" type="ON_FAILURE" />
</henna>
<henna dyeId="370" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +325) -->
<reward dyeId="371" type="ON_SUCCESS" />
<reward dyeId="370" type="ON_FAILURE" />
</henna>
<henna dyeId="371" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +357) -->
<reward dyeId="372" type="ON_SUCCESS" />
<reward dyeId="371" type="ON_FAILURE" />
</henna>
<henna dyeId="372" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +390) -->
<reward dyeId="373" type="ON_SUCCESS" />
<reward dyeId="372" type="ON_FAILURE" />
</henna>
<henna dyeId="373" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +422) -->
<reward dyeId="374" type="ON_SUCCESS" />
<reward dyeId="373" type="ON_FAILURE" />
</henna>
<henna dyeId="374" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +455 P. Skill Damage Received -1%) -->
<reward dyeId="375" type="ON_SUCCESS" />
<reward dyeId="374" type="ON_FAILURE" />
</henna>
<henna dyeId="375" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +487 P. Skill Damage Received -1.5%) -->
<reward dyeId="376" type="ON_SUCCESS" />
<reward dyeId="375" type="ON_FAILURE" />
</henna>
<henna dyeId="376" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +520 P. Skill Damage Received -2%) -->
<reward dyeId="377" type="ON_SUCCESS" />
<reward dyeId="376" type="ON_FAILURE" />
</henna>
<henna dyeId="377" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +552 P. Skill Damage Received -3%) -->
<reward dyeId="378" type="ON_SUCCESS" />
<reward dyeId="377" type="ON_FAILURE" />
</henna>
<henna dyeId="379" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+1> -->
<reward dyeId="380" type="ON_SUCCESS" />
<reward dyeId="379" type="ON_FAILURE" />
</henna>
<henna dyeId="380" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+2> -->
<reward dyeId="381" type="ON_SUCCESS" />
<reward dyeId="380" type="ON_FAILURE" />
</henna>
<henna dyeId="381" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+3> -->
<reward dyeId="382" type="ON_SUCCESS" />
<reward dyeId="381" type="ON_FAILURE" />
</henna>
<henna dyeId="382" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -0.4%) -->
<reward dyeId="383" type="ON_SUCCESS" />
<reward dyeId="382" type="ON_FAILURE" />
</henna>
<henna dyeId="383" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -0.8%) -->
<reward dyeId="384" type="ON_SUCCESS" />
<reward dyeId="383" type="ON_FAILURE" />
</henna>
<henna dyeId="384" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -1.2%) -->
<reward dyeId="385" type="ON_SUCCESS" />
<reward dyeId="384" type="ON_FAILURE" />
</henna>
<henna dyeId="385" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -1.6%) -->
<reward dyeId="386" type="ON_SUCCESS" />
<reward dyeId="385" type="ON_FAILURE" />
</henna>
<henna dyeId="386" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -2.0%) -->
<reward dyeId="387" type="ON_SUCCESS" />
<reward dyeId="386" type="ON_FAILURE" />
</henna>
<henna dyeId="387" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -2.4%) -->
<reward dyeId="388" type="ON_SUCCESS" />
<reward dyeId="387" type="ON_FAILURE" />
</henna>
<henna dyeId="388" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -2.8%) -->
<reward dyeId="389" type="ON_SUCCESS" />
<reward dyeId="388" type="ON_FAILURE" />
</henna>
<henna dyeId="389" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -3.2%) -->
<reward dyeId="390" type="ON_SUCCESS" />
<reward dyeId="389" type="ON_FAILURE" />
</henna>
<henna dyeId="390" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -3.6%) -->
<reward dyeId="391" type="ON_SUCCESS" />
<reward dyeId="390" type="ON_FAILURE" />
</henna>
<henna dyeId="391" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -4.0%) -->
<reward dyeId="392" type="ON_SUCCESS" />
<reward dyeId="391" type="ON_FAILURE" />
</henna>
<henna dyeId="392" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -4.4%) -->
<reward dyeId="393" type="ON_SUCCESS" />
<reward dyeId="392" type="ON_FAILURE" />
</henna>
<henna dyeId="393" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -4.8%) -->
<reward dyeId="394" type="ON_SUCCESS" />
<reward dyeId="393" type="ON_FAILURE" />
</henna>
<henna dyeId="394" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -5.2%) -->
<reward dyeId="395" type="ON_SUCCESS" />
<reward dyeId="394" type="ON_FAILURE" />
</henna>
<henna dyeId="395" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -5.6% Soulshot Damage +1%) -->
<reward dyeId="396" type="ON_SUCCESS" />
<reward dyeId="395" type="ON_FAILURE" />
</henna>
<henna dyeId="396" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -6.0% Soulshot Damage +1.5%) -->
<reward dyeId="397" type="ON_SUCCESS" />
<reward dyeId="396" type="ON_FAILURE" />
</henna>
<henna dyeId="397" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -6.4% Soulshot Damage +2%) -->
<reward dyeId="398" type="ON_SUCCESS" />
<reward dyeId="397" type="ON_FAILURE" />
</henna>
<henna dyeId="398" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -6.8% Soulshot Damage +3%) -->
<reward dyeId="399" type="ON_SUCCESS" />
<reward dyeId="398" type="ON_FAILURE" />
</henna>
<henna dyeId="400" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+1> -->
<reward dyeId="401" type="ON_SUCCESS" />
<reward dyeId="400" type="ON_FAILURE" />
</henna>
<henna dyeId="401" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+2> -->
<reward dyeId="402" type="ON_SUCCESS" />
<reward dyeId="401" type="ON_FAILURE" />
</henna>
<henna dyeId="402" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+3> -->
<reward dyeId="403" type="ON_SUCCESS" />
<reward dyeId="402" type="ON_FAILURE" />
</henna>
<henna dyeId="403" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +25) -->
<reward dyeId="404" type="ON_SUCCESS" />
<reward dyeId="403" type="ON_FAILURE" />
</henna>
<henna dyeId="404" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +50) -->
<reward dyeId="405" type="ON_SUCCESS" />
<reward dyeId="404" type="ON_FAILURE" />
</henna>
<henna dyeId="405" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +75) -->
<reward dyeId="406" type="ON_SUCCESS" />
<reward dyeId="405" type="ON_FAILURE" />
</henna>
<henna dyeId="406" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +100) -->
<reward dyeId="407" type="ON_SUCCESS" />
<reward dyeId="406" type="ON_FAILURE" />
</henna>
<henna dyeId="407" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +125) -->
<reward dyeId="408" type="ON_SUCCESS" />
<reward dyeId="407" type="ON_FAILURE" />
</henna>
<henna dyeId="408" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +150) -->
<reward dyeId="409" type="ON_SUCCESS" />
<reward dyeId="408" type="ON_FAILURE" />
</henna>
<henna dyeId="409" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +175) -->
<reward dyeId="410" type="ON_SUCCESS" />
<reward dyeId="409" type="ON_FAILURE" />
</henna>
<henna dyeId="410" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +200) -->
<reward dyeId="411" type="ON_SUCCESS" />
<reward dyeId="410" type="ON_FAILURE" />
</henna>
<henna dyeId="411" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +225) -->
<reward dyeId="412" type="ON_SUCCESS" />
<reward dyeId="411" type="ON_FAILURE" />
</henna>
<henna dyeId="412" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +250) -->
<reward dyeId="413" type="ON_SUCCESS" />
<reward dyeId="412" type="ON_FAILURE" />
</henna>
<henna dyeId="413" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +275) -->
<reward dyeId="414" type="ON_SUCCESS" />
<reward dyeId="413" type="ON_FAILURE" />
</henna>
<henna dyeId="414" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +300) -->
<reward dyeId="415" type="ON_SUCCESS" />
<reward dyeId="414" type="ON_FAILURE" />
</henna>
<henna dyeId="415" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +325) -->
<reward dyeId="416" type="ON_SUCCESS" />
<reward dyeId="415" type="ON_FAILURE" />
</henna>
<henna dyeId="416" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +350 M. Skill Critical Rate +0.5%) -->
<reward dyeId="417" type="ON_SUCCESS" />
<reward dyeId="416" type="ON_FAILURE" />
</henna>
<henna dyeId="417" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +375 M. Skill Critical Rate +1%) -->
<reward dyeId="418" type="ON_SUCCESS" />
<reward dyeId="417" type="ON_FAILURE" />
</henna>
<henna dyeId="418" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +400 M. Skill Critical Rate +1.5%) -->
<reward dyeId="419" type="ON_SUCCESS" />
<reward dyeId="418" type="ON_FAILURE" />
</henna>
<henna dyeId="419" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +425 M. Skill Critical Rate +2%) -->
<reward dyeId="420" type="ON_SUCCESS" />
<reward dyeId="419" type="ON_FAILURE" />
</henna>
<henna dyeId="421" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+1> -->
<reward dyeId="422" type="ON_SUCCESS" />
<reward dyeId="421" type="ON_FAILURE" />
</henna>
<henna dyeId="422" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+2> -->
<reward dyeId="423" type="ON_SUCCESS" />
<reward dyeId="422" type="ON_FAILURE" />
</henna>
<henna dyeId="423" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+3> -->
<reward dyeId="424" type="ON_SUCCESS" />
<reward dyeId="423" type="ON_FAILURE" />
</henna>
<henna dyeId="424" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +37) -->
<reward dyeId="425" type="ON_SUCCESS" />
<reward dyeId="424" type="ON_FAILURE" />
</henna>
<henna dyeId="425" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +75) -->
<reward dyeId="426" type="ON_SUCCESS" />
<reward dyeId="425" type="ON_FAILURE" />
</henna>
<henna dyeId="426" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +112) -->
<reward dyeId="427" type="ON_SUCCESS" />
<reward dyeId="426" type="ON_FAILURE" />
</henna>
<henna dyeId="427" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +150) -->
<reward dyeId="428" type="ON_SUCCESS" />
<reward dyeId="427" type="ON_FAILURE" />
</henna>
<henna dyeId="428" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +187) -->
<reward dyeId="429" type="ON_SUCCESS" />
<reward dyeId="428" type="ON_FAILURE" />
</henna>
<henna dyeId="429" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +225) -->
<reward dyeId="430" type="ON_SUCCESS" />
<reward dyeId="429" type="ON_FAILURE" />
</henna>
<henna dyeId="430" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +262) -->
<reward dyeId="431" type="ON_SUCCESS" />
<reward dyeId="430" type="ON_FAILURE" />
</henna>
<henna dyeId="431" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +300) -->
<reward dyeId="432" type="ON_SUCCESS" />
<reward dyeId="431" type="ON_FAILURE" />
</henna>
<henna dyeId="432" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +337) -->
<reward dyeId="433" type="ON_SUCCESS" />
<reward dyeId="432" type="ON_FAILURE" />
</henna>
<henna dyeId="433" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +375) -->
<reward dyeId="434" type="ON_SUCCESS" />
<reward dyeId="433" type="ON_FAILURE" />
</henna>
<henna dyeId="434" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +412) -->
<reward dyeId="435" type="ON_SUCCESS" />
<reward dyeId="434" type="ON_FAILURE" />
</henna>
<henna dyeId="435" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +450) -->
<reward dyeId="436" type="ON_SUCCESS" />
<reward dyeId="435" type="ON_FAILURE" />
</henna>
<henna dyeId="436" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +487) -->
<reward dyeId="437" type="ON_SUCCESS" />
<reward dyeId="436" type="ON_FAILURE" />
</henna>
<henna dyeId="437" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +525 M. Skill Damage Received -1%) -->
<reward dyeId="438" type="ON_SUCCESS" />
<reward dyeId="437" type="ON_FAILURE" />
</henna>
<henna dyeId="438" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +562 M. Skill Damage Received -1.5%) -->
<reward dyeId="439" type="ON_SUCCESS" />
<reward dyeId="438" type="ON_FAILURE" />
</henna>
<henna dyeId="439" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +600 M. Skill Damage Received -2%) -->
<reward dyeId="440" type="ON_SUCCESS" />
<reward dyeId="439" type="ON_FAILURE" />
</henna>
<henna dyeId="440" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +637 M. Skill Damage Received -3%) -->
<reward dyeId="441" type="ON_SUCCESS" />
<reward dyeId="440" type="ON_FAILURE" />
</henna>
<henna dyeId="442" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+1> -->
<reward dyeId="443" type="ON_SUCCESS" />
<reward dyeId="442" type="ON_FAILURE" />
</henna>
<henna dyeId="443" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+2> -->
<reward dyeId="444" type="ON_SUCCESS" />
<reward dyeId="443" type="ON_FAILURE" />
</henna>
<henna dyeId="444" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+3> -->
<reward dyeId="445" type="ON_SUCCESS" />
<reward dyeId="444" type="ON_FAILURE" />
</henna>
<henna dyeId="445" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -0.4%) -->
<reward dyeId="446" type="ON_SUCCESS" />
<reward dyeId="445" type="ON_FAILURE" />
</henna>
<henna dyeId="446" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -0.8%) -->
<reward dyeId="447" type="ON_SUCCESS" />
<reward dyeId="446" type="ON_FAILURE" />
</henna>
<henna dyeId="447" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -1.2%) -->
<reward dyeId="448" type="ON_SUCCESS" />
<reward dyeId="447" type="ON_FAILURE" />
</henna>
<henna dyeId="448" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -1.6%) -->
<reward dyeId="449" type="ON_SUCCESS" />
<reward dyeId="448" type="ON_FAILURE" />
</henna>
<henna dyeId="449" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -2.0%) -->
<reward dyeId="450" type="ON_SUCCESS" />
<reward dyeId="449" type="ON_FAILURE" />
</henna>
<henna dyeId="450" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -2.4%) -->
<reward dyeId="451" type="ON_SUCCESS" />
<reward dyeId="450" type="ON_FAILURE" />
</henna>
<henna dyeId="451" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -2.8%) -->
<reward dyeId="452" type="ON_SUCCESS" />
<reward dyeId="451" type="ON_FAILURE" />
</henna>
<henna dyeId="452" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -3.2%) -->
<reward dyeId="453" type="ON_SUCCESS" />
<reward dyeId="452" type="ON_FAILURE" />
</henna>
<henna dyeId="453" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -3.6%) -->
<reward dyeId="454" type="ON_SUCCESS" />
<reward dyeId="453" type="ON_FAILURE" />
</henna>
<henna dyeId="454" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -4.0%) -->
<reward dyeId="455" type="ON_SUCCESS" />
<reward dyeId="454" type="ON_FAILURE" />
</henna>
<henna dyeId="455" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -4.4%) -->
<reward dyeId="456" type="ON_SUCCESS" />
<reward dyeId="455" type="ON_FAILURE" />
</henna>
<henna dyeId="456" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -4.8%) -->
<reward dyeId="457" type="ON_SUCCESS" />
<reward dyeId="456" type="ON_FAILURE" />
</henna>
<henna dyeId="457" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -5.2%) -->
<reward dyeId="458" type="ON_SUCCESS" />
<reward dyeId="457" type="ON_FAILURE" />
</henna>
<henna dyeId="458" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -5.6% Spiritshot Damage +1%) -->
<reward dyeId="459" type="ON_SUCCESS" />
<reward dyeId="458" type="ON_FAILURE" />
</henna>
<henna dyeId="459" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -6.0% Spiritshot Damage +1.5%) -->
<reward dyeId="460" type="ON_SUCCESS" />
<reward dyeId="459" type="ON_FAILURE" />
</henna>
<henna dyeId="460" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -6.4% Spiritshot Damage +2%) -->
<reward dyeId="461" type="ON_SUCCESS" />
<reward dyeId="460" type="ON_FAILURE" />
</henna>
<henna dyeId="461" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -6.8% Spiritshot Damage +3%) -->
<reward dyeId="462" type="ON_SUCCESS" />
<reward dyeId="461" type="ON_FAILURE" />
</henna>
</list>

View File

@ -0,0 +1,33 @@
<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="henna" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="reward" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:int" name="dyeId" use="required"/>
<xs:attribute type="xs:int" name="id" use="optional" />
<xs:attribute type="xs:short" name="count" use="optional" />
<xs:attribute type="xs:string" name="type" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:short" name="dyeId" use="required" />
<xs:attribute type="xs:int" name="itemOne" use="optional" />
<xs:attribute type="xs:long" name="countOne" use="optional" />
<xs:attribute type="xs:int" name="itemTwo" use="required" />
<xs:attribute type="xs:long" name="countTwo" use="optional" />
<xs:attribute type="xs:long" name="commission" use="optional" />
<xs:attribute type="xs:float" name="chance" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.data.xml.ClanHallData;
import org.l2jmobius.gameserver.data.xml.ClanRewardData;
import org.l2jmobius.gameserver.data.xml.ClassListData;
import org.l2jmobius.gameserver.data.xml.CollectionData;
import org.l2jmobius.gameserver.data.xml.CombinationDyeData;
import org.l2jmobius.gameserver.data.xml.CombinationItemsData;
import org.l2jmobius.gameserver.data.xml.CubicData;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
@ -260,7 +261,6 @@ public class GameServer
ActionData.getInstance();
CategoryData.getInstance();
SecondaryAuthData.getInstance();
CombinationItemsData.getInstance();
SayuneData.getInstance();
ClanRewardData.getInstance();
DailyMissionHandler.getInstance().executeScript();
@ -293,6 +293,8 @@ public class GameServer
EnchantItemHPBonusData.getInstance();
BuyListData.getInstance();
MultisellData.getInstance();
CombinationItemsData.getInstance();
CombinationDyeData.getInstance();
EquipmentUpgradeData.getInstance();
AgathionData.getInstance();
RaidTeleportListData.getInstance();

View File

@ -0,0 +1,110 @@
/*
* 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.List;
import java.util.logging.Logger;
import org.w3c.dom.Document;
import org.l2jmobius.commons.util.IXmlReader;
import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.item.combination.CombinationItemType;
import org.l2jmobius.gameserver.model.item.henna.CombinationHennaReward;
import org.l2jmobius.gameserver.model.item.henna.CombinationHenna;
/**
* @author Index
*/
public class CombinationDyeData implements IXmlReader
{
private static final Logger LOGGER = Logger.getLogger(CombinationDyeData.class.getName());
private final List<CombinationHenna> _henna = new ArrayList<>();
protected CombinationDyeData()
{
load();
}
@Override
public synchronized void load()
{
_henna.clear();
parseDatapackFile("data/CombinationDye.xml");
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _henna.size() + " henna combinations.");
}
@Override
public void parseDocument(Document doc, File f)
{
forEach(doc, "list", listNode ->
{
forEach(listNode, "henna", hennaNode ->
{
final CombinationHenna henna = new CombinationHenna(new StatSet(parseAttributes(hennaNode)));
forEach(hennaNode, "reward", rewardNode ->
{
final int hennaId = parseInteger(rewardNode.getAttributes(), "dyeId");
final int id = parseInteger(rewardNode.getAttributes(), "id", -1);
final int count = parseInteger(rewardNode.getAttributes(), "count", 0);
final CombinationItemType type = parseEnum(rewardNode.getAttributes(), CombinationItemType.class, "type");
henna.addReward(new CombinationHennaReward(hennaId, id, count, type));
if ((id != -1) && (ItemTable.getInstance().getTemplate(id) == null))
{
LOGGER.info(getClass().getSimpleName() + ": Could not find item with id " + id);
}
if ((hennaId != 0) && (HennaData.getInstance().getHenna(hennaId) == null))
{
LOGGER.info(getClass().getSimpleName() + ": Could not find henna with id " + id);
}
});
_henna.add(henna);
});
});
}
public List<CombinationHenna> getHenna()
{
return _henna;
}
public CombinationHenna getByHenna(int hennaId)
{
for (CombinationHenna henna : _henna)
{
if (henna.getHenna() == hennaId)
{
return henna;
}
}
return null;
}
public static final CombinationDyeData getInstance()
{
return SingletonHolder.INSTANCE;
}
private static class SingletonHolder
{
protected static final CombinationDyeData INSTANCE = new CombinationDyeData();
}
}

View File

@ -8041,6 +8041,17 @@ public class Player extends Playable
* @return
*/
public boolean removeHenna(int slot)
{
return removeHenna(slot, true);
}
/**
* Remove a Henna of the Player, save update in the character_hennas table of the database and send Server->Client HennaInfo/UserInfo packet to this Player.
* @param slot
* @param restoreDye
* @return
*/
public boolean removeHenna(int slot, boolean restoreDye)
{
if ((slot < 1) || (slot > _hennaPoten.length))
{
@ -8082,7 +8093,7 @@ public class Player extends Playable
{
reduceAdena("Henna", henna.getCancelFee(), this, false);
}
if (henna.getCancelCount() > 0)
if ((henna.getCancelCount() > 0) && restoreDye)
{
_inventory.addItem("Henna", henna.getDyeItemId(), henna.getCancelCount(), this, null);
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1_X_S2);

View File

@ -0,0 +1,94 @@
/*
* 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.item.henna;
import java.util.EnumMap;
import java.util.Map;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.item.combination.CombinationItemType;
/**
* @author Index
*/
public class CombinationHenna
{
private final int _henna;
private final int _itemOne;
private final long _countOne;
private final int _itemTwo;
private final long _countTwo;
private final long _commission;
private final float _chance;
private final Map<CombinationItemType, CombinationHennaReward> _rewards = new EnumMap<>(CombinationItemType.class);
public CombinationHenna(StatSet set)
{
_henna = set.getInt("dyeId");
_itemOne = set.getInt("itemOne", -1);
_countOne = set.getLong("countOne", 1);
_itemTwo = set.getInt("itemTwo", -1);
_countTwo = set.getLong("countTwo", 1);
_commission = set.getLong("commission", 0);
_chance = set.getFloat("chance", 33);
}
public int getHenna()
{
return _henna;
}
public int getItemOne()
{
return _itemOne;
}
public long getCountOne()
{
return _countOne;
}
public int getItemTwo()
{
return _itemTwo;
}
public long getCountTwo()
{
return _countTwo;
}
public long getCommission()
{
return _commission;
}
public float getChance()
{
return _chance;
}
public void addReward(CombinationHennaReward item)
{
_rewards.put(item.getType(), item);
}
public CombinationHennaReward getReward(CombinationItemType type)
{
return _rewards.get(type);
}
}

View File

@ -0,0 +1,53 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.l2jmobius.gameserver.model.item.henna;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.combination.CombinationItemType;
/**
* @author Index
*/
public class CombinationHennaReward extends ItemHolder
{
private final int _hennaId;
private final CombinationItemType _type;
public CombinationHennaReward(int id, int count, CombinationItemType type)
{
super(id, count);
_hennaId = 0;
_type = type;
}
public CombinationHennaReward(int hennaId, int id, int count, CombinationItemType type)
{
super(id, count);
_hennaId = hennaId;
_type = type;
}
public int getHennaId()
{
return _hennaId;
}
public CombinationItemType getType()
{
return _type;
}
}

View File

@ -17,9 +17,20 @@
package org.l2jmobius.gameserver.network.clientpackets.newhenna;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.CombinationDyeData;
import org.l2jmobius.gameserver.data.xml.HennaData;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.combination.CombinationItemType;
import org.l2jmobius.gameserver.model.item.henna.CombinationHenna;
import org.l2jmobius.gameserver.model.item.henna.CombinationHennaReward;
import org.l2jmobius.gameserver.model.item.henna.Henna;
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.PacketLogger;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import org.l2jmobius.gameserver.network.serverpackets.newhenna.NewHennaPotenCompose;
/**
@ -27,7 +38,6 @@ import org.l2jmobius.gameserver.network.serverpackets.newhenna.NewHennaPotenComp
*/
public class RequestNewHennaCompose implements IClientIncomingPacket
{
@SuppressWarnings("unused")
private int _slotOneIndex;
private int _slotOneItemId;
private int _slotTwoItemId;
@ -35,9 +45,9 @@ public class RequestNewHennaCompose implements IClientIncomingPacket
@Override
public boolean read(GameClient client, PacketReader packet)
{
_slotOneIndex = packet.readC();
_slotOneItemId = packet.readC();
_slotTwoItemId = packet.readC();
_slotOneIndex = packet.readD();
_slotOneItemId = packet.readD();
_slotTwoItemId = packet.readD();
return true;
}
@ -49,6 +59,76 @@ public class RequestNewHennaCompose implements IClientIncomingPacket
{
return;
}
player.sendPacket(new NewHennaPotenCompose(_slotTwoItemId, _slotOneItemId, true));
final Inventory inventory = player.getInventory();
if ((player.getHenna(_slotOneIndex) == null) || ((_slotOneItemId != -1) && (inventory.getItemByObjectId(_slotOneItemId) == null)) || ((_slotTwoItemId != -1) && (inventory.getItemByObjectId(_slotTwoItemId) == null)))
{
return;
}
final Henna henna = player.getHenna(_slotOneIndex);
final CombinationHenna combinationHennas = CombinationDyeData.getInstance().getByHenna(henna.getDyeId());
if (combinationHennas == null)
{
player.sendPacket(new NewHennaPotenCompose(henna.getDyeId(), -1, false));
return;
}
if (((_slotOneItemId != -1) && (combinationHennas.getItemOne() != inventory.getItemByObjectId(_slotOneItemId).getId())) || ((_slotTwoItemId != -1) && (combinationHennas.getItemTwo() != inventory.getItemByObjectId(_slotTwoItemId).getId())))
{
PacketLogger.info(getClass().getSimpleName() + ": player " + player.getName() + " - " + player.getObjectId() + " have modified client or combination data is outdated!");
}
final long commission = combinationHennas.getCommission();
if (commission > player.getAdena())
{
return;
}
final ItemHolder one = new ItemHolder(combinationHennas.getItemOne(), combinationHennas.getCountOne());
final ItemHolder two = new ItemHolder(combinationHennas.getItemTwo(), combinationHennas.getCountTwo());
if (((_slotOneItemId != -1) && (inventory.getItemByItemId(one.getId()) == null) && (inventory.getItemByItemId(one.getId()).getCount() < one.getCount())) || ((_slotTwoItemId != -1) && (inventory.getItemByItemId(two.getId()) == null) && (inventory.getItemByItemId(two.getId()).getCount() < two.getCount())))
{
player.sendPacket(new NewHennaPotenCompose(henna.getDyeId(), -1, false));
return;
}
final InventoryUpdate iu = new InventoryUpdate();
if (_slotOneItemId != -1)
{
iu.addModifiedItem(inventory.getItemByItemId(one.getId()));
}
if (_slotTwoItemId != -1)
{
iu.addModifiedItem(inventory.getItemByItemId(two.getId()));
}
iu.addModifiedItem(inventory.getItemByItemId(Inventory.ADENA_ID));
if (((_slotOneItemId != -1) && (inventory.destroyItemByItemId("Henna Improving", one.getId(), one.getCount(), player, null) == null)) || ((_slotTwoItemId != -1) && (inventory.destroyItemByItemId("Henna Improving", two.getId(), two.getCount(), player, null) == null)) || (inventory.destroyItemByItemId("Henna Improving", Inventory.ADENA_ID, commission, player, null) == null))
{
player.sendPacket(new NewHennaPotenCompose(henna.getDyeId(), -1, false));
return;
}
if (Rnd.get(0, 100) <= combinationHennas.getChance())
{
final CombinationHennaReward reward = combinationHennas.getReward(CombinationItemType.ON_SUCCESS);
player.removeHenna(_slotOneIndex, false);
player.addHenna(_slotOneIndex, HennaData.getInstance().getHenna(reward.getHennaId()));
player.addItem("Henna Improving", reward.getId(), reward.getCount(), null, false);
player.sendPacket(new NewHennaPotenCompose(reward.getHennaId(), reward.getId() == 0 ? -1 : reward.getId(), true));
}
else
{
final CombinationHennaReward reward = combinationHennas.getReward(CombinationItemType.ON_FAILURE);
if (henna.getDyeId() != reward.getHennaId())
{
player.removeHenna(_slotOneIndex, false);
player.addHenna(_slotOneIndex, HennaData.getInstance().getHenna(reward.getHennaId()));
}
player.addItem("Henna Improving", reward.getId(), reward.getCount(), null, false);
player.sendPacket(new NewHennaPotenCompose(reward.getHennaId(), reward.getId() == 0 ? -1 : reward.getId(), false));
}
player.sendPacket(iu);
}
}

View File

@ -0,0 +1,479 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd/CombinationDye.xsd">
<henna dyeId="338" itemTwo="96623" commission="300000" chance="25"> <!-- Potential of STR <STR+1> -->
<reward dyeId="339" type="ON_SUCCESS" />
<reward dyeId="338" type="ON_FAILURE" />
</henna>
<henna dyeId="339" itemTwo="96623" commission="300000" chance="25"> <!-- Potential of STR <STR+2> -->
<reward dyeId="340" type="ON_SUCCESS" />
<reward dyeId="339" type="ON_FAILURE" />
</henna>
<henna dyeId="340" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +25) -->
<reward dyeId="341" type="ON_SUCCESS" />
<reward dyeId="340" type="ON_FAILURE" />
</henna>
<henna dyeId="341" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +50) -->
<reward dyeId="342" type="ON_SUCCESS" />
<reward dyeId="341" type="ON_FAILURE" />
</henna>
<henna dyeId="342" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +75) -->
<reward dyeId="343" type="ON_SUCCESS" />
<reward dyeId="342" type="ON_FAILURE" />
</henna>
<henna dyeId="343" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +100) -->
<reward dyeId="344" type="ON_SUCCESS" />
<reward dyeId="343" type="ON_FAILURE" />
</henna>
<henna dyeId="344" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +125) -->
<reward dyeId="345" type="ON_SUCCESS" />
<reward dyeId="344" type="ON_FAILURE" />
</henna>
<henna dyeId="345" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +150) -->
<reward dyeId="346" type="ON_SUCCESS" />
<reward dyeId="345" type="ON_FAILURE" />
</henna>
<henna dyeId="346" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +175) -->
<reward dyeId="347" type="ON_SUCCESS" />
<reward dyeId="346" type="ON_FAILURE" />
</henna>
<henna dyeId="347" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+4> (P. Atk. +200) -->
<reward dyeId="348" type="ON_SUCCESS" />
<reward dyeId="347" type="ON_FAILURE" />
</henna>
<henna dyeId="348" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +225) -->
<reward dyeId="349" type="ON_SUCCESS" />
<reward dyeId="348" type="ON_FAILURE" />
</henna>
<henna dyeId="349" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +250) -->
<reward dyeId="350" type="ON_SUCCESS" />
<reward dyeId="349" type="ON_FAILURE" />
</henna>
<henna dyeId="350" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +275) -->
<reward dyeId="351" type="ON_SUCCESS" />
<reward dyeId="350" type="ON_FAILURE" />
</henna>
<henna dyeId="351" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +300) -->
<reward dyeId="352" type="ON_SUCCESS" />
<reward dyeId="351" type="ON_FAILURE" />
</henna>
<henna dyeId="352" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +325) -->
<reward dyeId="353" type="ON_SUCCESS" />
<reward dyeId="352" type="ON_FAILURE" />
</henna>
<henna dyeId="353" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +350 P. Skill Critical Rate +0.5%) -->
<reward dyeId="354" type="ON_SUCCESS" />
<reward dyeId="353" type="ON_FAILURE" />
</henna>
<henna dyeId="354" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +375 P. Skill Critical Rate +1%) -->
<reward dyeId="355" type="ON_SUCCESS" />
<reward dyeId="354" type="ON_FAILURE" />
</henna>
<henna dyeId="355" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +400 P. Skill Critical Rate +1.5%) -->
<reward dyeId="356" type="ON_SUCCESS" />
<reward dyeId="355" type="ON_FAILURE" />
</henna>
<henna dyeId="356" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of STR <STR+5> (P. Atk. +425 P. Skill Critical Rate +2%) -->
<reward dyeId="357" type="ON_SUCCESS" />
<reward dyeId="356" type="ON_FAILURE" />
</henna>
<henna dyeId="358" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+1> -->
<reward dyeId="359" type="ON_SUCCESS" />
<reward dyeId="358" type="ON_FAILURE" />
</henna>
<henna dyeId="359" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+2> -->
<reward dyeId="360" type="ON_SUCCESS" />
<reward dyeId="359" type="ON_FAILURE" />
</henna>
<henna dyeId="360" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+3> -->
<reward dyeId="361" type="ON_SUCCESS" />
<reward dyeId="360" type="ON_FAILURE" />
</henna>
<henna dyeId="361" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +32) -->
<reward dyeId="362" type="ON_SUCCESS" />
<reward dyeId="361" type="ON_FAILURE" />
</henna>
<henna dyeId="362" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +65) -->
<reward dyeId="363" type="ON_SUCCESS" />
<reward dyeId="362" type="ON_FAILURE" />
</henna>
<henna dyeId="363" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +97) -->
<reward dyeId="364" type="ON_SUCCESS" />
<reward dyeId="363" type="ON_FAILURE" />
</henna>
<henna dyeId="364" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +130) -->
<reward dyeId="365" type="ON_SUCCESS" />
<reward dyeId="364" type="ON_FAILURE" />
</henna>
<henna dyeId="365" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +162) -->
<reward dyeId="366" type="ON_SUCCESS" />
<reward dyeId="365" type="ON_FAILURE" />
</henna>
<henna dyeId="366" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +195) -->
<reward dyeId="367" type="ON_SUCCESS" />
<reward dyeId="366" type="ON_FAILURE" />
</henna>
<henna dyeId="367" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +227) -->
<reward dyeId="368" type="ON_SUCCESS" />
<reward dyeId="367" type="ON_FAILURE" />
</henna>
<henna dyeId="368" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+4> (P. Def. +260) -->
<reward dyeId="369" type="ON_SUCCESS" />
<reward dyeId="368" type="ON_FAILURE" />
</henna>
<henna dyeId="369" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +292) -->
<reward dyeId="370" type="ON_SUCCESS" />
<reward dyeId="369" type="ON_FAILURE" />
</henna>
<henna dyeId="370" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +325) -->
<reward dyeId="371" type="ON_SUCCESS" />
<reward dyeId="370" type="ON_FAILURE" />
</henna>
<henna dyeId="371" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +357) -->
<reward dyeId="372" type="ON_SUCCESS" />
<reward dyeId="371" type="ON_FAILURE" />
</henna>
<henna dyeId="372" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +390) -->
<reward dyeId="373" type="ON_SUCCESS" />
<reward dyeId="372" type="ON_FAILURE" />
</henna>
<henna dyeId="373" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +422) -->
<reward dyeId="374" type="ON_SUCCESS" />
<reward dyeId="373" type="ON_FAILURE" />
</henna>
<henna dyeId="374" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +455 P. Skill Damage Received -1%) -->
<reward dyeId="375" type="ON_SUCCESS" />
<reward dyeId="374" type="ON_FAILURE" />
</henna>
<henna dyeId="375" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +487 P. Skill Damage Received -1.5%) -->
<reward dyeId="376" type="ON_SUCCESS" />
<reward dyeId="375" type="ON_FAILURE" />
</henna>
<henna dyeId="376" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +520 P. Skill Damage Received -2%) -->
<reward dyeId="377" type="ON_SUCCESS" />
<reward dyeId="376" type="ON_FAILURE" />
</henna>
<henna dyeId="377" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of CON <CON+5> (P. Def. +552 P. Skill Damage Received -3%) -->
<reward dyeId="378" type="ON_SUCCESS" />
<reward dyeId="377" type="ON_FAILURE" />
</henna>
<henna dyeId="379" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+1> -->
<reward dyeId="380" type="ON_SUCCESS" />
<reward dyeId="379" type="ON_FAILURE" />
</henna>
<henna dyeId="380" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+2> -->
<reward dyeId="381" type="ON_SUCCESS" />
<reward dyeId="380" type="ON_FAILURE" />
</henna>
<henna dyeId="381" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+3> -->
<reward dyeId="382" type="ON_SUCCESS" />
<reward dyeId="381" type="ON_FAILURE" />
</henna>
<henna dyeId="382" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -0.4%) -->
<reward dyeId="383" type="ON_SUCCESS" />
<reward dyeId="382" type="ON_FAILURE" />
</henna>
<henna dyeId="383" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -0.8%) -->
<reward dyeId="384" type="ON_SUCCESS" />
<reward dyeId="383" type="ON_FAILURE" />
</henna>
<henna dyeId="384" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -1.2%) -->
<reward dyeId="385" type="ON_SUCCESS" />
<reward dyeId="384" type="ON_FAILURE" />
</henna>
<henna dyeId="385" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -1.6%) -->
<reward dyeId="386" type="ON_SUCCESS" />
<reward dyeId="385" type="ON_FAILURE" />
</henna>
<henna dyeId="386" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -2.0%) -->
<reward dyeId="387" type="ON_SUCCESS" />
<reward dyeId="386" type="ON_FAILURE" />
</henna>
<henna dyeId="387" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -2.4%) -->
<reward dyeId="388" type="ON_SUCCESS" />
<reward dyeId="387" type="ON_FAILURE" />
</henna>
<henna dyeId="388" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -2.8%) -->
<reward dyeId="389" type="ON_SUCCESS" />
<reward dyeId="388" type="ON_FAILURE" />
</henna>
<henna dyeId="389" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+4> (P. Skill Critical Rate Received -3.2%) -->
<reward dyeId="390" type="ON_SUCCESS" />
<reward dyeId="389" type="ON_FAILURE" />
</henna>
<henna dyeId="390" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -3.6%) -->
<reward dyeId="391" type="ON_SUCCESS" />
<reward dyeId="390" type="ON_FAILURE" />
</henna>
<henna dyeId="391" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -4.0%) -->
<reward dyeId="392" type="ON_SUCCESS" />
<reward dyeId="391" type="ON_FAILURE" />
</henna>
<henna dyeId="392" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -4.4%) -->
<reward dyeId="393" type="ON_SUCCESS" />
<reward dyeId="392" type="ON_FAILURE" />
</henna>
<henna dyeId="393" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -4.8%) -->
<reward dyeId="394" type="ON_SUCCESS" />
<reward dyeId="393" type="ON_FAILURE" />
</henna>
<henna dyeId="394" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -5.2%) -->
<reward dyeId="395" type="ON_SUCCESS" />
<reward dyeId="394" type="ON_FAILURE" />
</henna>
<henna dyeId="395" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -5.6% Soulshot Damage +1%) -->
<reward dyeId="396" type="ON_SUCCESS" />
<reward dyeId="395" type="ON_FAILURE" />
</henna>
<henna dyeId="396" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -6.0% Soulshot Damage +1.5%) -->
<reward dyeId="397" type="ON_SUCCESS" />
<reward dyeId="396" type="ON_FAILURE" />
</henna>
<henna dyeId="397" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -6.4% Soulshot Damage +2%) -->
<reward dyeId="398" type="ON_SUCCESS" />
<reward dyeId="397" type="ON_FAILURE" />
</henna>
<henna dyeId="398" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of DEX <DEX+5> (P. Skill Critical Rate Received -6.8% Soulshot Damage +3%) -->
<reward dyeId="399" type="ON_SUCCESS" />
<reward dyeId="398" type="ON_FAILURE" />
</henna>
<henna dyeId="400" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+1> -->
<reward dyeId="401" type="ON_SUCCESS" />
<reward dyeId="400" type="ON_FAILURE" />
</henna>
<henna dyeId="401" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+2> -->
<reward dyeId="402" type="ON_SUCCESS" />
<reward dyeId="401" type="ON_FAILURE" />
</henna>
<henna dyeId="402" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+3> -->
<reward dyeId="403" type="ON_SUCCESS" />
<reward dyeId="402" type="ON_FAILURE" />
</henna>
<henna dyeId="403" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +25) -->
<reward dyeId="404" type="ON_SUCCESS" />
<reward dyeId="403" type="ON_FAILURE" />
</henna>
<henna dyeId="404" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +50) -->
<reward dyeId="405" type="ON_SUCCESS" />
<reward dyeId="404" type="ON_FAILURE" />
</henna>
<henna dyeId="405" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +75) -->
<reward dyeId="406" type="ON_SUCCESS" />
<reward dyeId="405" type="ON_FAILURE" />
</henna>
<henna dyeId="406" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +100) -->
<reward dyeId="407" type="ON_SUCCESS" />
<reward dyeId="406" type="ON_FAILURE" />
</henna>
<henna dyeId="407" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +125) -->
<reward dyeId="408" type="ON_SUCCESS" />
<reward dyeId="407" type="ON_FAILURE" />
</henna>
<henna dyeId="408" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +150) -->
<reward dyeId="409" type="ON_SUCCESS" />
<reward dyeId="408" type="ON_FAILURE" />
</henna>
<henna dyeId="409" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +175) -->
<reward dyeId="410" type="ON_SUCCESS" />
<reward dyeId="409" type="ON_FAILURE" />
</henna>
<henna dyeId="410" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+4> (M. Atk. +200) -->
<reward dyeId="411" type="ON_SUCCESS" />
<reward dyeId="410" type="ON_FAILURE" />
</henna>
<henna dyeId="411" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +225) -->
<reward dyeId="412" type="ON_SUCCESS" />
<reward dyeId="411" type="ON_FAILURE" />
</henna>
<henna dyeId="412" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +250) -->
<reward dyeId="413" type="ON_SUCCESS" />
<reward dyeId="412" type="ON_FAILURE" />
</henna>
<henna dyeId="413" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +275) -->
<reward dyeId="414" type="ON_SUCCESS" />
<reward dyeId="413" type="ON_FAILURE" />
</henna>
<henna dyeId="414" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +300) -->
<reward dyeId="415" type="ON_SUCCESS" />
<reward dyeId="414" type="ON_FAILURE" />
</henna>
<henna dyeId="415" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +325) -->
<reward dyeId="416" type="ON_SUCCESS" />
<reward dyeId="415" type="ON_FAILURE" />
</henna>
<henna dyeId="416" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +350 M. Skill Critical Rate +0.5%) -->
<reward dyeId="417" type="ON_SUCCESS" />
<reward dyeId="416" type="ON_FAILURE" />
</henna>
<henna dyeId="417" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +375 M. Skill Critical Rate +1%) -->
<reward dyeId="418" type="ON_SUCCESS" />
<reward dyeId="417" type="ON_FAILURE" />
</henna>
<henna dyeId="418" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +400 M. Skill Critical Rate +1.5%) -->
<reward dyeId="419" type="ON_SUCCESS" />
<reward dyeId="418" type="ON_FAILURE" />
</henna>
<henna dyeId="419" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of INT <INT+5> (M. Atk. +425 M. Skill Critical Rate +2%) -->
<reward dyeId="420" type="ON_SUCCESS" />
<reward dyeId="419" type="ON_FAILURE" />
</henna>
<henna dyeId="421" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+1> -->
<reward dyeId="422" type="ON_SUCCESS" />
<reward dyeId="421" type="ON_FAILURE" />
</henna>
<henna dyeId="422" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+2> -->
<reward dyeId="423" type="ON_SUCCESS" />
<reward dyeId="422" type="ON_FAILURE" />
</henna>
<henna dyeId="423" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+3> -->
<reward dyeId="424" type="ON_SUCCESS" />
<reward dyeId="423" type="ON_FAILURE" />
</henna>
<henna dyeId="424" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +37) -->
<reward dyeId="425" type="ON_SUCCESS" />
<reward dyeId="424" type="ON_FAILURE" />
</henna>
<henna dyeId="425" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +75) -->
<reward dyeId="426" type="ON_SUCCESS" />
<reward dyeId="425" type="ON_FAILURE" />
</henna>
<henna dyeId="426" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +112) -->
<reward dyeId="427" type="ON_SUCCESS" />
<reward dyeId="426" type="ON_FAILURE" />
</henna>
<henna dyeId="427" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +150) -->
<reward dyeId="428" type="ON_SUCCESS" />
<reward dyeId="427" type="ON_FAILURE" />
</henna>
<henna dyeId="428" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +187) -->
<reward dyeId="429" type="ON_SUCCESS" />
<reward dyeId="428" type="ON_FAILURE" />
</henna>
<henna dyeId="429" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +225) -->
<reward dyeId="430" type="ON_SUCCESS" />
<reward dyeId="429" type="ON_FAILURE" />
</henna>
<henna dyeId="430" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +262) -->
<reward dyeId="431" type="ON_SUCCESS" />
<reward dyeId="430" type="ON_FAILURE" />
</henna>
<henna dyeId="431" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+4> (M. Def. +300) -->
<reward dyeId="432" type="ON_SUCCESS" />
<reward dyeId="431" type="ON_FAILURE" />
</henna>
<henna dyeId="432" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +337) -->
<reward dyeId="433" type="ON_SUCCESS" />
<reward dyeId="432" type="ON_FAILURE" />
</henna>
<henna dyeId="433" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +375) -->
<reward dyeId="434" type="ON_SUCCESS" />
<reward dyeId="433" type="ON_FAILURE" />
</henna>
<henna dyeId="434" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +412) -->
<reward dyeId="435" type="ON_SUCCESS" />
<reward dyeId="434" type="ON_FAILURE" />
</henna>
<henna dyeId="435" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +450) -->
<reward dyeId="436" type="ON_SUCCESS" />
<reward dyeId="435" type="ON_FAILURE" />
</henna>
<henna dyeId="436" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +487) -->
<reward dyeId="437" type="ON_SUCCESS" />
<reward dyeId="436" type="ON_FAILURE" />
</henna>
<henna dyeId="437" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +525 M. Skill Damage Received -1%) -->
<reward dyeId="438" type="ON_SUCCESS" />
<reward dyeId="437" type="ON_FAILURE" />
</henna>
<henna dyeId="438" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +562 M. Skill Damage Received -1.5%) -->
<reward dyeId="439" type="ON_SUCCESS" />
<reward dyeId="438" type="ON_FAILURE" />
</henna>
<henna dyeId="439" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +600 M. Skill Damage Received -2%) -->
<reward dyeId="440" type="ON_SUCCESS" />
<reward dyeId="439" type="ON_FAILURE" />
</henna>
<henna dyeId="440" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of MEN <MEN+5> (M. Def. +637 M. Skill Damage Received -3%) -->
<reward dyeId="441" type="ON_SUCCESS" />
<reward dyeId="440" type="ON_FAILURE" />
</henna>
<henna dyeId="442" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+1> -->
<reward dyeId="443" type="ON_SUCCESS" />
<reward dyeId="442" type="ON_FAILURE" />
</henna>
<henna dyeId="443" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+2> -->
<reward dyeId="444" type="ON_SUCCESS" />
<reward dyeId="443" type="ON_FAILURE" />
</henna>
<henna dyeId="444" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+3> -->
<reward dyeId="445" type="ON_SUCCESS" />
<reward dyeId="444" type="ON_FAILURE" />
</henna>
<henna dyeId="445" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -0.4%) -->
<reward dyeId="446" type="ON_SUCCESS" />
<reward dyeId="445" type="ON_FAILURE" />
</henna>
<henna dyeId="446" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -0.8%) -->
<reward dyeId="447" type="ON_SUCCESS" />
<reward dyeId="446" type="ON_FAILURE" />
</henna>
<henna dyeId="447" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -1.2%) -->
<reward dyeId="448" type="ON_SUCCESS" />
<reward dyeId="447" type="ON_FAILURE" />
</henna>
<henna dyeId="448" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -1.6%) -->
<reward dyeId="449" type="ON_SUCCESS" />
<reward dyeId="448" type="ON_FAILURE" />
</henna>
<henna dyeId="449" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -2.0%) -->
<reward dyeId="450" type="ON_SUCCESS" />
<reward dyeId="449" type="ON_FAILURE" />
</henna>
<henna dyeId="450" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -2.4%) -->
<reward dyeId="451" type="ON_SUCCESS" />
<reward dyeId="450" type="ON_FAILURE" />
</henna>
<henna dyeId="451" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -2.8%) -->
<reward dyeId="452" type="ON_SUCCESS" />
<reward dyeId="451" type="ON_FAILURE" />
</henna>
<henna dyeId="452" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+4> (M. Critical Rate Received -3.2%) -->
<reward dyeId="453" type="ON_SUCCESS" />
<reward dyeId="452" type="ON_FAILURE" />
</henna>
<henna dyeId="453" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -3.6%) -->
<reward dyeId="454" type="ON_SUCCESS" />
<reward dyeId="453" type="ON_FAILURE" />
</henna>
<henna dyeId="454" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -4.0%) -->
<reward dyeId="455" type="ON_SUCCESS" />
<reward dyeId="454" type="ON_FAILURE" />
</henna>
<henna dyeId="455" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -4.4%) -->
<reward dyeId="456" type="ON_SUCCESS" />
<reward dyeId="455" type="ON_FAILURE" />
</henna>
<henna dyeId="456" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -4.8%) -->
<reward dyeId="457" type="ON_SUCCESS" />
<reward dyeId="456" type="ON_FAILURE" />
</henna>
<henna dyeId="457" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -5.2%) -->
<reward dyeId="458" type="ON_SUCCESS" />
<reward dyeId="457" type="ON_FAILURE" />
</henna>
<henna dyeId="458" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -5.6% Spiritshot Damage +1%) -->
<reward dyeId="459" type="ON_SUCCESS" />
<reward dyeId="458" type="ON_FAILURE" />
</henna>
<henna dyeId="459" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -6.0% Spiritshot Damage +1.5%) -->
<reward dyeId="460" type="ON_SUCCESS" />
<reward dyeId="459" type="ON_FAILURE" />
</henna>
<henna dyeId="460" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -6.4% Spiritshot Damage +2%) -->
<reward dyeId="461" type="ON_SUCCESS" />
<reward dyeId="460" type="ON_FAILURE" />
</henna>
<henna dyeId="461" itemTwo="96623" commission="300000" chance="25"> <!-- Tattoo of WIT <WIT+5> (M. Critical Rate Received -6.8% Spiritshot Damage +3%) -->
<reward dyeId="462" type="ON_SUCCESS" />
<reward dyeId="461" type="ON_FAILURE" />
</henna>
</list>

View File

@ -0,0 +1,33 @@
<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="henna" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="reward" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:int" name="dyeId" use="required"/>
<xs:attribute type="xs:int" name="id" use="optional" />
<xs:attribute type="xs:short" name="count" use="optional" />
<xs:attribute type="xs:string" name="type" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:short" name="dyeId" use="required" />
<xs:attribute type="xs:int" name="itemOne" use="optional" />
<xs:attribute type="xs:long" name="countOne" use="optional" />
<xs:attribute type="xs:int" name="itemTwo" use="required" />
<xs:attribute type="xs:long" name="countTwo" use="optional" />
<xs:attribute type="xs:long" name="commission" use="optional" />
<xs:attribute type="xs:float" name="chance" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.data.xml.ClanHallData;
import org.l2jmobius.gameserver.data.xml.ClanRewardData;
import org.l2jmobius.gameserver.data.xml.ClassListData;
import org.l2jmobius.gameserver.data.xml.CollectionData;
import org.l2jmobius.gameserver.data.xml.CombinationDyeData;
import org.l2jmobius.gameserver.data.xml.CombinationItemsData;
import org.l2jmobius.gameserver.data.xml.CubicData;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
@ -260,7 +261,6 @@ public class GameServer
ActionData.getInstance();
CategoryData.getInstance();
SecondaryAuthData.getInstance();
CombinationItemsData.getInstance();
SayuneData.getInstance();
ClanRewardData.getInstance();
DailyMissionHandler.getInstance().executeScript();
@ -293,6 +293,8 @@ public class GameServer
EnchantItemHPBonusData.getInstance();
BuyListData.getInstance();
MultisellData.getInstance();
CombinationItemsData.getInstance();
CombinationDyeData.getInstance();
EquipmentUpgradeData.getInstance();
AgathionData.getInstance();
RaidTeleportListData.getInstance();

View File

@ -0,0 +1,110 @@
/*
* 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.List;
import java.util.logging.Logger;
import org.w3c.dom.Document;
import org.l2jmobius.commons.util.IXmlReader;
import org.l2jmobius.gameserver.data.ItemTable;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.item.combination.CombinationItemType;
import org.l2jmobius.gameserver.model.item.henna.CombinationHennaReward;
import org.l2jmobius.gameserver.model.item.henna.CombinationHenna;
/**
* @author Index
*/
public class CombinationDyeData implements IXmlReader
{
private static final Logger LOGGER = Logger.getLogger(CombinationDyeData.class.getName());
private final List<CombinationHenna> _henna = new ArrayList<>();
protected CombinationDyeData()
{
load();
}
@Override
public synchronized void load()
{
_henna.clear();
parseDatapackFile("data/CombinationDye.xml");
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _henna.size() + " henna combinations.");
}
@Override
public void parseDocument(Document doc, File f)
{
forEach(doc, "list", listNode ->
{
forEach(listNode, "henna", hennaNode ->
{
final CombinationHenna henna = new CombinationHenna(new StatSet(parseAttributes(hennaNode)));
forEach(hennaNode, "reward", rewardNode ->
{
final int hennaId = parseInteger(rewardNode.getAttributes(), "dyeId");
final int id = parseInteger(rewardNode.getAttributes(), "id", -1);
final int count = parseInteger(rewardNode.getAttributes(), "count", 0);
final CombinationItemType type = parseEnum(rewardNode.getAttributes(), CombinationItemType.class, "type");
henna.addReward(new CombinationHennaReward(hennaId, id, count, type));
if ((id != -1) && (ItemTable.getInstance().getTemplate(id) == null))
{
LOGGER.info(getClass().getSimpleName() + ": Could not find item with id " + id);
}
if ((hennaId != 0) && (HennaData.getInstance().getHenna(hennaId) == null))
{
LOGGER.info(getClass().getSimpleName() + ": Could not find henna with id " + id);
}
});
_henna.add(henna);
});
});
}
public List<CombinationHenna> getHenna()
{
return _henna;
}
public CombinationHenna getByHenna(int hennaId)
{
for (CombinationHenna henna : _henna)
{
if (henna.getHenna() == hennaId)
{
return henna;
}
}
return null;
}
public static final CombinationDyeData getInstance()
{
return SingletonHolder.INSTANCE;
}
private static class SingletonHolder
{
protected static final CombinationDyeData INSTANCE = new CombinationDyeData();
}
}

View File

@ -8050,6 +8050,17 @@ public class Player extends Playable
* @return
*/
public boolean removeHenna(int slot)
{
return removeHenna(slot, true);
}
/**
* Remove a Henna of the Player, save update in the character_hennas table of the database and send Server->Client HennaInfo/UserInfo packet to this Player.
* @param slot
* @param restoreDye
* @return
*/
public boolean removeHenna(int slot, boolean restoreDye)
{
if ((slot < 1) || (slot > _hennaPoten.length))
{
@ -8091,7 +8102,7 @@ public class Player extends Playable
{
reduceAdena("Henna", henna.getCancelFee(), this, false);
}
if (henna.getCancelCount() > 0)
if ((henna.getCancelCount() > 0) && restoreDye)
{
_inventory.addItem("Henna", henna.getDyeItemId(), henna.getCancelCount(), this, null);
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1_X_S2);

View File

@ -0,0 +1,94 @@
/*
* 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.item.henna;
import java.util.EnumMap;
import java.util.Map;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.item.combination.CombinationItemType;
/**
* @author Index
*/
public class CombinationHenna
{
private final int _henna;
private final int _itemOne;
private final long _countOne;
private final int _itemTwo;
private final long _countTwo;
private final long _commission;
private final float _chance;
private final Map<CombinationItemType, CombinationHennaReward> _rewards = new EnumMap<>(CombinationItemType.class);
public CombinationHenna(StatSet set)
{
_henna = set.getInt("dyeId");
_itemOne = set.getInt("itemOne", -1);
_countOne = set.getLong("countOne", 1);
_itemTwo = set.getInt("itemTwo", -1);
_countTwo = set.getLong("countTwo", 1);
_commission = set.getLong("commission", 0);
_chance = set.getFloat("chance", 33);
}
public int getHenna()
{
return _henna;
}
public int getItemOne()
{
return _itemOne;
}
public long getCountOne()
{
return _countOne;
}
public int getItemTwo()
{
return _itemTwo;
}
public long getCountTwo()
{
return _countTwo;
}
public long getCommission()
{
return _commission;
}
public float getChance()
{
return _chance;
}
public void addReward(CombinationHennaReward item)
{
_rewards.put(item.getType(), item);
}
public CombinationHennaReward getReward(CombinationItemType type)
{
return _rewards.get(type);
}
}

View File

@ -0,0 +1,53 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.l2jmobius.gameserver.model.item.henna;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.combination.CombinationItemType;
/**
* @author Index
*/
public class CombinationHennaReward extends ItemHolder
{
private final int _hennaId;
private final CombinationItemType _type;
public CombinationHennaReward(int id, int count, CombinationItemType type)
{
super(id, count);
_hennaId = 0;
_type = type;
}
public CombinationHennaReward(int hennaId, int id, int count, CombinationItemType type)
{
super(id, count);
_hennaId = hennaId;
_type = type;
}
public int getHennaId()
{
return _hennaId;
}
public CombinationItemType getType()
{
return _type;
}
}

View File

@ -17,9 +17,20 @@
package org.l2jmobius.gameserver.network.clientpackets.newhenna;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.data.xml.CombinationDyeData;
import org.l2jmobius.gameserver.data.xml.HennaData;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.combination.CombinationItemType;
import org.l2jmobius.gameserver.model.item.henna.CombinationHenna;
import org.l2jmobius.gameserver.model.item.henna.CombinationHennaReward;
import org.l2jmobius.gameserver.model.item.henna.Henna;
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.PacketLogger;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import org.l2jmobius.gameserver.network.serverpackets.newhenna.NewHennaPotenCompose;
/**
@ -27,7 +38,6 @@ import org.l2jmobius.gameserver.network.serverpackets.newhenna.NewHennaPotenComp
*/
public class RequestNewHennaCompose implements IClientIncomingPacket
{
@SuppressWarnings("unused")
private int _slotOneIndex;
private int _slotOneItemId;
private int _slotTwoItemId;
@ -35,9 +45,9 @@ public class RequestNewHennaCompose implements IClientIncomingPacket
@Override
public boolean read(GameClient client, PacketReader packet)
{
_slotOneIndex = packet.readC();
_slotOneItemId = packet.readC();
_slotTwoItemId = packet.readC();
_slotOneIndex = packet.readD();
_slotOneItemId = packet.readD();
_slotTwoItemId = packet.readD();
return true;
}
@ -49,6 +59,76 @@ public class RequestNewHennaCompose implements IClientIncomingPacket
{
return;
}
player.sendPacket(new NewHennaPotenCompose(_slotTwoItemId, _slotOneItemId, true));
final Inventory inventory = player.getInventory();
if ((player.getHenna(_slotOneIndex) == null) || ((_slotOneItemId != -1) && (inventory.getItemByObjectId(_slotOneItemId) == null)) || ((_slotTwoItemId != -1) && (inventory.getItemByObjectId(_slotTwoItemId) == null)))
{
return;
}
final Henna henna = player.getHenna(_slotOneIndex);
final CombinationHenna combinationHennas = CombinationDyeData.getInstance().getByHenna(henna.getDyeId());
if (combinationHennas == null)
{
player.sendPacket(new NewHennaPotenCompose(henna.getDyeId(), -1, false));
return;
}
if (((_slotOneItemId != -1) && (combinationHennas.getItemOne() != inventory.getItemByObjectId(_slotOneItemId).getId())) || ((_slotTwoItemId != -1) && (combinationHennas.getItemTwo() != inventory.getItemByObjectId(_slotTwoItemId).getId())))
{
PacketLogger.info(getClass().getSimpleName() + ": player " + player.getName() + " - " + player.getObjectId() + " have modified client or combination data is outdated!");
}
final long commission = combinationHennas.getCommission();
if (commission > player.getAdena())
{
return;
}
final ItemHolder one = new ItemHolder(combinationHennas.getItemOne(), combinationHennas.getCountOne());
final ItemHolder two = new ItemHolder(combinationHennas.getItemTwo(), combinationHennas.getCountTwo());
if (((_slotOneItemId != -1) && (inventory.getItemByItemId(one.getId()) == null) && (inventory.getItemByItemId(one.getId()).getCount() < one.getCount())) || ((_slotTwoItemId != -1) && (inventory.getItemByItemId(two.getId()) == null) && (inventory.getItemByItemId(two.getId()).getCount() < two.getCount())))
{
player.sendPacket(new NewHennaPotenCompose(henna.getDyeId(), -1, false));
return;
}
final InventoryUpdate iu = new InventoryUpdate();
if (_slotOneItemId != -1)
{
iu.addModifiedItem(inventory.getItemByItemId(one.getId()));
}
if (_slotTwoItemId != -1)
{
iu.addModifiedItem(inventory.getItemByItemId(two.getId()));
}
iu.addModifiedItem(inventory.getItemByItemId(Inventory.ADENA_ID));
if (((_slotOneItemId != -1) && (inventory.destroyItemByItemId("Henna Improving", one.getId(), one.getCount(), player, null) == null)) || ((_slotTwoItemId != -1) && (inventory.destroyItemByItemId("Henna Improving", two.getId(), two.getCount(), player, null) == null)) || (inventory.destroyItemByItemId("Henna Improving", Inventory.ADENA_ID, commission, player, null) == null))
{
player.sendPacket(new NewHennaPotenCompose(henna.getDyeId(), -1, false));
return;
}
if (Rnd.get(0, 100) <= combinationHennas.getChance())
{
final CombinationHennaReward reward = combinationHennas.getReward(CombinationItemType.ON_SUCCESS);
player.removeHenna(_slotOneIndex, false);
player.addHenna(_slotOneIndex, HennaData.getInstance().getHenna(reward.getHennaId()));
player.addItem("Henna Improving", reward.getId(), reward.getCount(), null, false);
player.sendPacket(new NewHennaPotenCompose(reward.getHennaId(), reward.getId() == 0 ? -1 : reward.getId(), true));
}
else
{
final CombinationHennaReward reward = combinationHennas.getReward(CombinationItemType.ON_FAILURE);
if (henna.getDyeId() != reward.getHennaId())
{
player.removeHenna(_slotOneIndex, false);
player.addHenna(_slotOneIndex, HennaData.getInstance().getHenna(reward.getHennaId()));
}
player.addItem("Henna Improving", reward.getId(), reward.getCount(), null, false);
player.sendPacket(new NewHennaPotenCompose(reward.getHennaId(), reward.getId() == 0 ? -1 : reward.getId(), false));
}
player.sendPacket(iu);
}
}