Henna improving system.
Thanks to Index.
This commit is contained in:
		
							
								
								
									
										479
									
								
								L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/CombinationDye.xml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										479
									
								
								L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/CombinationDye.xml
									
									
									
									
										vendored
									
									
										Normal 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> | ||||||
							
								
								
									
										33
									
								
								L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/xsd/CombinationDye.xsd
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/xsd/CombinationDye.xsd
									
									
									
									
										vendored
									
									
										Normal 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> | ||||||
| @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.data.xml.ClanHallData; | |||||||
| import org.l2jmobius.gameserver.data.xml.ClanRewardData; | import org.l2jmobius.gameserver.data.xml.ClanRewardData; | ||||||
| import org.l2jmobius.gameserver.data.xml.ClassListData; | import org.l2jmobius.gameserver.data.xml.ClassListData; | ||||||
| import org.l2jmobius.gameserver.data.xml.CollectionData; | 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.CombinationItemsData; | ||||||
| import org.l2jmobius.gameserver.data.xml.CubicData; | import org.l2jmobius.gameserver.data.xml.CubicData; | ||||||
| import org.l2jmobius.gameserver.data.xml.DailyMissionData; | import org.l2jmobius.gameserver.data.xml.DailyMissionData; | ||||||
| @@ -260,7 +261,6 @@ public class GameServer | |||||||
| 		ActionData.getInstance(); | 		ActionData.getInstance(); | ||||||
| 		CategoryData.getInstance(); | 		CategoryData.getInstance(); | ||||||
| 		SecondaryAuthData.getInstance(); | 		SecondaryAuthData.getInstance(); | ||||||
| 		CombinationItemsData.getInstance(); |  | ||||||
| 		SayuneData.getInstance(); | 		SayuneData.getInstance(); | ||||||
| 		ClanRewardData.getInstance(); | 		ClanRewardData.getInstance(); | ||||||
| 		DailyMissionHandler.getInstance().executeScript(); | 		DailyMissionHandler.getInstance().executeScript(); | ||||||
| @@ -293,6 +293,8 @@ public class GameServer | |||||||
| 		EnchantItemHPBonusData.getInstance(); | 		EnchantItemHPBonusData.getInstance(); | ||||||
| 		BuyListData.getInstance(); | 		BuyListData.getInstance(); | ||||||
| 		MultisellData.getInstance(); | 		MultisellData.getInstance(); | ||||||
|  | 		CombinationItemsData.getInstance(); | ||||||
|  | 		CombinationDyeData.getInstance(); | ||||||
| 		EquipmentUpgradeData.getInstance(); | 		EquipmentUpgradeData.getInstance(); | ||||||
| 		AgathionData.getInstance(); | 		AgathionData.getInstance(); | ||||||
| 		RaidTeleportListData.getInstance(); | 		RaidTeleportListData.getInstance(); | ||||||
|   | |||||||
| @@ -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(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -8041,6 +8041,17 @@ public class Player extends Playable | |||||||
| 	 * @return | 	 * @return | ||||||
| 	 */ | 	 */ | ||||||
| 	public boolean removeHenna(int slot) | 	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)) | 		if ((slot < 1) || (slot > _hennaPoten.length)) | ||||||
| 		{ | 		{ | ||||||
| @@ -8082,7 +8093,7 @@ public class Player extends Playable | |||||||
| 			{ | 			{ | ||||||
| 				reduceAdena("Henna", henna.getCancelFee(), this, false); | 				reduceAdena("Henna", henna.getCancelFee(), this, false); | ||||||
| 			} | 			} | ||||||
| 			if (henna.getCancelCount() > 0) | 			if ((henna.getCancelCount() > 0) && restoreDye) | ||||||
| 			{ | 			{ | ||||||
| 				_inventory.addItem("Henna", henna.getDyeItemId(), henna.getCancelCount(), this, null); | 				_inventory.addItem("Henna", henna.getDyeItemId(), henna.getCancelCount(), this, null); | ||||||
| 				final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1_X_S2); | 				final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1_X_S2); | ||||||
|   | |||||||
| @@ -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); | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -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; | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -17,9 +17,20 @@ | |||||||
| package org.l2jmobius.gameserver.network.clientpackets.newhenna; | package org.l2jmobius.gameserver.network.clientpackets.newhenna; | ||||||
|  |  | ||||||
| import org.l2jmobius.commons.network.PacketReader; | 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.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.GameClient; | ||||||
|  | import org.l2jmobius.gameserver.network.PacketLogger; | ||||||
| import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; | import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; | ||||||
|  | import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; | ||||||
| import org.l2jmobius.gameserver.network.serverpackets.newhenna.NewHennaPotenCompose; | 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 | public class RequestNewHennaCompose implements IClientIncomingPacket | ||||||
| { | { | ||||||
| 	@SuppressWarnings("unused") |  | ||||||
| 	private int _slotOneIndex; | 	private int _slotOneIndex; | ||||||
| 	private int _slotOneItemId; | 	private int _slotOneItemId; | ||||||
| 	private int _slotTwoItemId; | 	private int _slotTwoItemId; | ||||||
| @@ -35,9 +45,9 @@ public class RequestNewHennaCompose implements IClientIncomingPacket | |||||||
| 	@Override | 	@Override | ||||||
| 	public boolean read(GameClient client, PacketReader packet) | 	public boolean read(GameClient client, PacketReader packet) | ||||||
| 	{ | 	{ | ||||||
| 		_slotOneIndex = packet.readC(); | 		_slotOneIndex = packet.readD(); | ||||||
| 		_slotOneItemId = packet.readC(); | 		_slotOneItemId = packet.readD(); | ||||||
| 		_slotTwoItemId = packet.readC(); | 		_slotTwoItemId = packet.readD(); | ||||||
| 		return true; | 		return true; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| @@ -49,6 +59,76 @@ public class RequestNewHennaCompose implements IClientIncomingPacket | |||||||
| 		{ | 		{ | ||||||
| 			return; | 			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); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										479
									
								
								L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/CombinationDye.xml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										479
									
								
								L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/CombinationDye.xml
									
									
									
									
										vendored
									
									
										Normal 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> | ||||||
							
								
								
									
										33
									
								
								L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/xsd/CombinationDye.xsd
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/xsd/CombinationDye.xsd
									
									
									
									
										vendored
									
									
										Normal 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> | ||||||
| @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.data.xml.ClanHallData; | |||||||
| import org.l2jmobius.gameserver.data.xml.ClanRewardData; | import org.l2jmobius.gameserver.data.xml.ClanRewardData; | ||||||
| import org.l2jmobius.gameserver.data.xml.ClassListData; | import org.l2jmobius.gameserver.data.xml.ClassListData; | ||||||
| import org.l2jmobius.gameserver.data.xml.CollectionData; | 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.CombinationItemsData; | ||||||
| import org.l2jmobius.gameserver.data.xml.CubicData; | import org.l2jmobius.gameserver.data.xml.CubicData; | ||||||
| import org.l2jmobius.gameserver.data.xml.DailyMissionData; | import org.l2jmobius.gameserver.data.xml.DailyMissionData; | ||||||
| @@ -260,7 +261,6 @@ public class GameServer | |||||||
| 		ActionData.getInstance(); | 		ActionData.getInstance(); | ||||||
| 		CategoryData.getInstance(); | 		CategoryData.getInstance(); | ||||||
| 		SecondaryAuthData.getInstance(); | 		SecondaryAuthData.getInstance(); | ||||||
| 		CombinationItemsData.getInstance(); |  | ||||||
| 		SayuneData.getInstance(); | 		SayuneData.getInstance(); | ||||||
| 		ClanRewardData.getInstance(); | 		ClanRewardData.getInstance(); | ||||||
| 		DailyMissionHandler.getInstance().executeScript(); | 		DailyMissionHandler.getInstance().executeScript(); | ||||||
| @@ -293,6 +293,8 @@ public class GameServer | |||||||
| 		EnchantItemHPBonusData.getInstance(); | 		EnchantItemHPBonusData.getInstance(); | ||||||
| 		BuyListData.getInstance(); | 		BuyListData.getInstance(); | ||||||
| 		MultisellData.getInstance(); | 		MultisellData.getInstance(); | ||||||
|  | 		CombinationItemsData.getInstance(); | ||||||
|  | 		CombinationDyeData.getInstance(); | ||||||
| 		EquipmentUpgradeData.getInstance(); | 		EquipmentUpgradeData.getInstance(); | ||||||
| 		AgathionData.getInstance(); | 		AgathionData.getInstance(); | ||||||
| 		RaidTeleportListData.getInstance(); | 		RaidTeleportListData.getInstance(); | ||||||
|   | |||||||
| @@ -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(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -8050,6 +8050,17 @@ public class Player extends Playable | |||||||
| 	 * @return | 	 * @return | ||||||
| 	 */ | 	 */ | ||||||
| 	public boolean removeHenna(int slot) | 	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)) | 		if ((slot < 1) || (slot > _hennaPoten.length)) | ||||||
| 		{ | 		{ | ||||||
| @@ -8091,7 +8102,7 @@ public class Player extends Playable | |||||||
| 			{ | 			{ | ||||||
| 				reduceAdena("Henna", henna.getCancelFee(), this, false); | 				reduceAdena("Henna", henna.getCancelFee(), this, false); | ||||||
| 			} | 			} | ||||||
| 			if (henna.getCancelCount() > 0) | 			if ((henna.getCancelCount() > 0) && restoreDye) | ||||||
| 			{ | 			{ | ||||||
| 				_inventory.addItem("Henna", henna.getDyeItemId(), henna.getCancelCount(), this, null); | 				_inventory.addItem("Henna", henna.getDyeItemId(), henna.getCancelCount(), this, null); | ||||||
| 				final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1_X_S2); | 				final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_OBTAINED_S1_X_S2); | ||||||
|   | |||||||
| @@ -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); | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -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; | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -17,9 +17,20 @@ | |||||||
| package org.l2jmobius.gameserver.network.clientpackets.newhenna; | package org.l2jmobius.gameserver.network.clientpackets.newhenna; | ||||||
|  |  | ||||||
| import org.l2jmobius.commons.network.PacketReader; | 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.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.GameClient; | ||||||
|  | import org.l2jmobius.gameserver.network.PacketLogger; | ||||||
| import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; | import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; | ||||||
|  | import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; | ||||||
| import org.l2jmobius.gameserver.network.serverpackets.newhenna.NewHennaPotenCompose; | 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 | public class RequestNewHennaCompose implements IClientIncomingPacket | ||||||
| { | { | ||||||
| 	@SuppressWarnings("unused") |  | ||||||
| 	private int _slotOneIndex; | 	private int _slotOneIndex; | ||||||
| 	private int _slotOneItemId; | 	private int _slotOneItemId; | ||||||
| 	private int _slotTwoItemId; | 	private int _slotTwoItemId; | ||||||
| @@ -35,9 +45,9 @@ public class RequestNewHennaCompose implements IClientIncomingPacket | |||||||
| 	@Override | 	@Override | ||||||
| 	public boolean read(GameClient client, PacketReader packet) | 	public boolean read(GameClient client, PacketReader packet) | ||||||
| 	{ | 	{ | ||||||
| 		_slotOneIndex = packet.readC(); | 		_slotOneIndex = packet.readD(); | ||||||
| 		_slotOneItemId = packet.readC(); | 		_slotOneItemId = packet.readD(); | ||||||
| 		_slotTwoItemId = packet.readC(); | 		_slotTwoItemId = packet.readD(); | ||||||
| 		return true; | 		return true; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| @@ -49,6 +59,76 @@ public class RequestNewHennaCompose implements IClientIncomingPacket | |||||||
| 		{ | 		{ | ||||||
| 			return; | 			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); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 MobiusDevelopment
					MobiusDevelopment