Two handed bonus mode additions and various skill fixes.
Contributed by gamelike85.
This commit is contained in:
		@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
 | 
			
		||||
import org.l2jmobius.gameserver.model.stats.Stats;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Sdw
 | 
			
		||||
 * @author Sdw, Mobius
 | 
			
		||||
 */
 | 
			
		||||
public class TwoHandedBluntBonus extends AbstractEffect
 | 
			
		||||
{
 | 
			
		||||
@@ -37,18 +37,72 @@ public class TwoHandedBluntBonus extends AbstractEffect
 | 
			
		||||
	private static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
 | 
			
		||||
	
 | 
			
		||||
	private final double _pAtkAmount;
 | 
			
		||||
	private final StatModifierType _pAtkmode;
 | 
			
		||||
	private final StatModifierType _pAtkMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _accuracyAmount;
 | 
			
		||||
	private final StatModifierType _accuracyMode;
 | 
			
		||||
	private final double _mAtkAmount;
 | 
			
		||||
	private final StatModifierType _mAtkMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _pAtkSpeedAmount;
 | 
			
		||||
	private final StatModifierType _pAtkSpeedMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _mAtkSpeedAmount;
 | 
			
		||||
	private final StatModifierType _mAtkSpeedMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _pAccuracyAmount;
 | 
			
		||||
	private final StatModifierType _pAccuracyMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _mAccuracyAmount;
 | 
			
		||||
	private final StatModifierType _mAccuracyMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _pCritRateAmount;
 | 
			
		||||
	private final StatModifierType _pCritRateMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _mCritRateAmount;
 | 
			
		||||
	private final StatModifierType _mCritRateMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _pCritDamageAmount;
 | 
			
		||||
	private final StatModifierType _pCritDamageMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _mCritDamageAmount;
 | 
			
		||||
	private final StatModifierType _mCritDamageMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _speedAmount;
 | 
			
		||||
	private final StatModifierType _speedMode;
 | 
			
		||||
	
 | 
			
		||||
	public TwoHandedBluntBonus(StatsSet params)
 | 
			
		||||
	{
 | 
			
		||||
		_pAtkAmount = params.getDouble("pAtkAmount", 0);
 | 
			
		||||
		_pAtkmode = params.getEnum("pAtkmode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		_pAtkMode = params.getEnum("pAtkMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_accuracyAmount = params.getDouble("accuracyAmount", 0);
 | 
			
		||||
		_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		_mAtkAmount = params.getDouble("mAtkAmount", 0);
 | 
			
		||||
		_mAtkMode = params.getEnum("mAtkMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_pAtkSpeedAmount = params.getDouble("pAtkSpeedAmount", 0);
 | 
			
		||||
		_pAtkSpeedMode = params.getEnum("pAtkSpeedMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_mAtkSpeedAmount = params.getDouble("mAtkSpeedAmount", 0);
 | 
			
		||||
		_mAtkSpeedMode = params.getEnum("mAtkSpeedMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_pAccuracyAmount = params.getDouble("pAccuracyAmount", 0);
 | 
			
		||||
		_pAccuracyMode = params.getEnum("pAccuracyMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_mAccuracyAmount = params.getDouble("mAccuracyAmount", 0);
 | 
			
		||||
		_mAccuracyMode = params.getEnum("mAccuracyMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_pCritRateAmount = params.getDouble("pCritRateAmount", 0);
 | 
			
		||||
		_pCritRateMode = params.getEnum("pCritRateMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_mCritRateAmount = params.getDouble("mCritRateAmount", 0);
 | 
			
		||||
		_mCritRateMode = params.getEnum("mCritRateMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_pCritDamageAmount = params.getDouble("pCritDamageAmount", 0);
 | 
			
		||||
		_pCritDamageMode = params.getEnum("pCritDamageMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_mCritDamageAmount = params.getDouble("mCritDamageAmount", 0);
 | 
			
		||||
		_mCritDamageMode = params.getEnum("mCritDamageMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_speedAmount = params.getDouble("speedAmount", 0);
 | 
			
		||||
		_speedMode = params.getEnum("speedMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
@@ -56,7 +110,7 @@ public class TwoHandedBluntBonus extends AbstractEffect
 | 
			
		||||
	{
 | 
			
		||||
		if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
 | 
			
		||||
		{
 | 
			
		||||
			switch (_pAtkmode)
 | 
			
		||||
			switch (_pAtkMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
@@ -70,16 +124,268 @@ public class TwoHandedBluntBonus extends AbstractEffect
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_accuracyMode)
 | 
			
		||||
			switch (_mAtkMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.ACCURACY_COMBAT, (_accuracyAmount / 100) + 1);
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_ATTACK, (_mAtkAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_pAtkSpeedMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.PHYSICAL_ATTACK_SPEED, _pAtkSpeedAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.PHYSICAL_ATTACK_SPEED, (_pAtkSpeedAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mAtkSpeedMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_ATTACK_SPEED, _mAtkSpeedAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_ATTACK_SPEED, (_mAtkSpeedAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mAtkMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_ATTACK, (_mAtkAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_pAtkSpeedMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.PHYSICAL_ATTACK_SPEED, _pAtkSpeedAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.PHYSICAL_ATTACK_SPEED, (_pAtkSpeedAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mAtkSpeedMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_ATTACK_SPEED, _mAtkSpeedAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_ATTACK_SPEED, (_mAtkSpeedAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_pAccuracyMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _pAccuracyAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.ACCURACY_COMBAT, (_pAccuracyAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mAccuracyMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.ACCURACY_MAGIC, _mAccuracyAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.ACCURACY_MAGIC, (_mAccuracyAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_pCritRateMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.CRITICAL_RATE, _pCritRateAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.CRITICAL_RATE, (_pCritRateAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mCritRateMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_CRITICAL_RATE, _mCritRateAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_CRITICAL_RATE, (_mCritRateAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_pCritDamageMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.CRITICAL_DAMAGE_ADD, _pCritDamageAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.CRITICAL_DAMAGE, (_pCritDamageAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mCritDamageMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_CRITICAL_DAMAGE_ADD, _mCritDamageAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_CRITICAL_DAMAGE, (_mCritDamageAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_speedMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MOVE_SPEED, _speedAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MOVE_SPEED, (_speedAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mAccuracyMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.ACCURACY_MAGIC, _mAccuracyAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.ACCURACY_MAGIC, (_mAccuracyAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_pCritRateMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.CRITICAL_RATE, _pCritRateAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.CRITICAL_RATE, (_pCritRateAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mCritRateMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_CRITICAL_RATE, _mCritRateAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_CRITICAL_RATE, (_mCritRateAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_pCritDamageMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.CRITICAL_DAMAGE_ADD, _pCritDamageAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.CRITICAL_DAMAGE, (_pCritDamageAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mCritDamageMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_CRITICAL_DAMAGE_ADD, _mCritDamageAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_CRITICAL_DAMAGE, (_mCritDamageAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_speedMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MOVE_SPEED, _speedAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MOVE_SPEED, (_speedAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
 | 
			
		||||
import org.l2jmobius.gameserver.model.stats.Stats;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Sdw
 | 
			
		||||
 * @author Sdw, Mobius
 | 
			
		||||
 */
 | 
			
		||||
public class TwoHandedSwordBonus extends AbstractEffect
 | 
			
		||||
{
 | 
			
		||||
@@ -37,18 +37,72 @@ public class TwoHandedSwordBonus extends AbstractEffect
 | 
			
		||||
	private static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
 | 
			
		||||
	
 | 
			
		||||
	private final double _pAtkAmount;
 | 
			
		||||
	private final StatModifierType _pAtkmode;
 | 
			
		||||
	private final StatModifierType _pAtkMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _accuracyAmount;
 | 
			
		||||
	private final StatModifierType _accuracyMode;
 | 
			
		||||
	private final double _mAtkAmount;
 | 
			
		||||
	private final StatModifierType _mAtkMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _pAtkSpeedAmount;
 | 
			
		||||
	private final StatModifierType _pAtkSpeedMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _mAtkSpeedAmount;
 | 
			
		||||
	private final StatModifierType _mAtkSpeedMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _pAccuracyAmount;
 | 
			
		||||
	private final StatModifierType _pAccuracyMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _mpAccuracyAmount;
 | 
			
		||||
	private final StatModifierType _mpAccuracyMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _pCritRateAmount;
 | 
			
		||||
	private final StatModifierType _pCritRateMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _mCritRateAmount;
 | 
			
		||||
	private final StatModifierType _mCritRateMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _pCritDamageAmount;
 | 
			
		||||
	private final StatModifierType _pCritDamageMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _mCritDamageAmount;
 | 
			
		||||
	private final StatModifierType _mCritDamageMode;
 | 
			
		||||
	
 | 
			
		||||
	private final double _speedAmount;
 | 
			
		||||
	private final StatModifierType _speedMode;
 | 
			
		||||
	
 | 
			
		||||
	public TwoHandedSwordBonus(StatsSet params)
 | 
			
		||||
	{
 | 
			
		||||
		_pAtkAmount = params.getDouble("pAtkAmount", 0);
 | 
			
		||||
		_pAtkmode = params.getEnum("pAtkmode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		_pAtkMode = params.getEnum("pAtkMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_accuracyAmount = params.getDouble("accuracyAmount", 0);
 | 
			
		||||
		_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		_mAtkAmount = params.getDouble("mAtkAmount", 0);
 | 
			
		||||
		_mAtkMode = params.getEnum("mAtkMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_pAtkSpeedAmount = params.getDouble("pAtkSpeedAmount", 0);
 | 
			
		||||
		_pAtkSpeedMode = params.getEnum("pAtkSpeedMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_mAtkSpeedAmount = params.getDouble("mAtkSpeedAmount", 0);
 | 
			
		||||
		_mAtkSpeedMode = params.getEnum("mAtkSpeedMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_pAccuracyAmount = params.getDouble("pAccuracyAmount", 0);
 | 
			
		||||
		_pAccuracyMode = params.getEnum("pAccuracyMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_mpAccuracyAmount = params.getDouble("mpAccuracyAmount", 0);
 | 
			
		||||
		_mpAccuracyMode = params.getEnum("mpAccuracyMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_pCritRateAmount = params.getDouble("pCritRateAmount", 0);
 | 
			
		||||
		_pCritRateMode = params.getEnum("pCritRateMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_mCritRateAmount = params.getDouble("mCritRateAmount", 0);
 | 
			
		||||
		_mCritRateMode = params.getEnum("mCritRateMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_pCritDamageAmount = params.getDouble("pCritDamageAmount", 0);
 | 
			
		||||
		_pCritDamageMode = params.getEnum("pCritDamageMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_mCritDamageAmount = params.getDouble("mCritDamageAmount", 0);
 | 
			
		||||
		_mCritDamageMode = params.getEnum("mCritDamageMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
		
 | 
			
		||||
		_speedAmount = params.getDouble("speedAmount", 0);
 | 
			
		||||
		_speedMode = params.getEnum("speedMode", StatModifierType.class, StatModifierType.DIFF);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
@@ -56,7 +110,7 @@ public class TwoHandedSwordBonus extends AbstractEffect
 | 
			
		||||
	{
 | 
			
		||||
		if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
 | 
			
		||||
		{
 | 
			
		||||
			switch (_pAtkmode)
 | 
			
		||||
			switch (_pAtkMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
@@ -70,16 +124,268 @@ public class TwoHandedSwordBonus extends AbstractEffect
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_accuracyMode)
 | 
			
		||||
			switch (_mAtkMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.ACCURACY_COMBAT, (_accuracyAmount / 100) + 1);
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_ATTACK, (_mAtkAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_pAtkSpeedMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.PHYSICAL_ATTACK_SPEED, _pAtkSpeedAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.PHYSICAL_ATTACK_SPEED, (_pAtkSpeedAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mAtkSpeedMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_ATTACK_SPEED, _mAtkSpeedAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_ATTACK_SPEED, (_mAtkSpeedAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mAtkMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_ATTACK, (_mAtkAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_pAtkSpeedMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.PHYSICAL_ATTACK_SPEED, _pAtkSpeedAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.PHYSICAL_ATTACK_SPEED, (_pAtkSpeedAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mAtkSpeedMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_ATTACK_SPEED, _mAtkSpeedAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_ATTACK_SPEED, (_mAtkSpeedAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_pAccuracyMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _pAccuracyAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.ACCURACY_COMBAT, (_pAccuracyAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mpAccuracyMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.ACCURACY_MAGIC, _mpAccuracyAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.ACCURACY_MAGIC, (_mpAccuracyAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_pCritRateMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.CRITICAL_RATE, _pCritRateAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.CRITICAL_RATE, (_pCritRateAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mCritRateMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_CRITICAL_RATE, _mCritRateAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_CRITICAL_RATE, (_mCritRateAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_pCritDamageMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.CRITICAL_DAMAGE_ADD, _pCritDamageAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.CRITICAL_DAMAGE, (_pCritDamageAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mCritDamageMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_CRITICAL_DAMAGE_ADD, _mCritDamageAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_CRITICAL_DAMAGE, (_mCritDamageAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_speedMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MOVE_SPEED, _speedAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MOVE_SPEED, (_speedAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mpAccuracyMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.ACCURACY_MAGIC, _mpAccuracyAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.ACCURACY_MAGIC, (_mpAccuracyAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_pCritRateMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.CRITICAL_RATE, _pCritRateAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.CRITICAL_RATE, (_pCritRateAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mCritRateMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_CRITICAL_RATE, _mCritRateAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_CRITICAL_RATE, (_mCritRateAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_pCritDamageMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.CRITICAL_DAMAGE_ADD, _pCritDamageAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.CRITICAL_DAMAGE, (_pCritDamageAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_mCritDamageMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MAGIC_CRITICAL_DAMAGE_ADD, _mCritDamageAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MAGIC_CRITICAL_DAMAGE, (_mCritDamageAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			switch (_speedMode)
 | 
			
		||||
			{
 | 
			
		||||
				case DIFF:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeAdd(Stats.MOVE_SPEED, _speedAmount);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				case PER:
 | 
			
		||||
				{
 | 
			
		||||
					effected.getStat().mergeMul(Stats.MOVE_SPEED, (_speedAmount / 100) + 1);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -6727,7 +6727,7 @@
 | 
			
		||||
					<value level="7">15</value>
 | 
			
		||||
					<value level="8">20</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>
 | 
			
		||||
@@ -6740,7 +6740,7 @@
 | 
			
		||||
					<value level="7">15</value>
 | 
			
		||||
					<value level="8">20</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="PAtk">
 | 
			
		||||
				<amount>15</amount>
 | 
			
		||||
 
 | 
			
		||||
@@ -2948,15 +2948,15 @@
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedSwordBonus">
 | 
			
		||||
				<pAtkAmount>10</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<accuracyAmount>8</accuracyAmount>
 | 
			
		||||
				<accuracyMode>DIFF</accuracyMode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
				<pAccuracyAmount>8</pAccuracyAmount>
 | 
			
		||||
				<pAccuracyMode>DIFF</pAccuracyMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>10</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<accuracyAmount>8</accuracyAmount>
 | 
			
		||||
				<accuracyMode>DIFF</accuracyMode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
				<pAccuracyAmount>8</pAccuracyAmount>
 | 
			
		||||
				<pAccuracyMode>DIFF</pAccuracyMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="PAtk">
 | 
			
		||||
				<amount>10</amount>
 | 
			
		||||
 
 | 
			
		||||
@@ -6481,9 +6481,9 @@
 | 
			
		||||
					<value level="19">122.1</value>
 | 
			
		||||
					<value level="20">129.3</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<accuracyAmount>3</accuracyAmount>
 | 
			
		||||
				<accuracyMode>DIFF</accuracyMode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
				<pAccuracyAmount>3</pAccuracyAmount>
 | 
			
		||||
				<pAccuracyMode>DIFF</pAccuracyMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
		</effects>
 | 
			
		||||
	</skill>
 | 
			
		||||
 
 | 
			
		||||
@@ -910,7 +910,7 @@
 | 
			
		||||
					<value level="5">7.4</value>
 | 
			
		||||
					<value level="6">8.3</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>
 | 
			
		||||
@@ -921,7 +921,7 @@
 | 
			
		||||
					<value level="5">7.4</value>
 | 
			
		||||
					<value level="6">8.3</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="PAtk">
 | 
			
		||||
				<amount>
 | 
			
		||||
@@ -1225,11 +1225,11 @@
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedSwordBonus">
 | 
			
		||||
				<pAtkAmount>5</pAtkAmount>
 | 
			
		||||
				<pAtkmode>DIFF</pAtkmode>
 | 
			
		||||
				<pAtkMode>DIFF</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>5</pAtkAmount>
 | 
			
		||||
				<pAtkmode>DIFF</pAtkmode>
 | 
			
		||||
				<pAtkMode>DIFF</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
		</effects>
 | 
			
		||||
	</skill>
 | 
			
		||||
 
 | 
			
		||||
@@ -218,8 +218,8 @@
 | 
			
		||||
				<mode>PER</mode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedSwordBonus">
 | 
			
		||||
				<accuracyAmount>1</accuracyAmount>
 | 
			
		||||
				<accuracyMode>DIFF</accuracyMode>
 | 
			
		||||
				<pAccuracyAmount>1</pAccuracyAmount>
 | 
			
		||||
				<pAccuracyMode>DIFF</pAccuracyMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
		</effects>
 | 
			
		||||
	</skill>
 | 
			
		||||
@@ -301,8 +301,8 @@
 | 
			
		||||
				<mode>PER</mode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedSwordBonus">
 | 
			
		||||
				<accuracyAmount>1</accuracyAmount>
 | 
			
		||||
				<accuracyMode>DIFF</accuracyMode>
 | 
			
		||||
				<pAccuracyAmount>1</pAccuracyAmount>
 | 
			
		||||
				<pAccuracyMode>DIFF</pAccuracyMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
		</effects>
 | 
			
		||||
	</skill>
 | 
			
		||||
 
 | 
			
		||||
@@ -1803,7 +1803,7 @@
 | 
			
		||||
				<minAttackerLevel>1</minAttackerLevel>
 | 
			
		||||
				<maxAttackerLevel>127</maxAttackerLevel>
 | 
			
		||||
				<minDamage>1</minDamage>
 | 
			
		||||
				<chance>2</chance>
 | 
			
		||||
				<chance>4</chance>
 | 
			
		||||
				<targetType>SELF</targetType>
 | 
			
		||||
				<isCritical>true</isCritical>
 | 
			
		||||
				<allowWeapons>ALL</allowWeapons>
 | 
			
		||||
 
 | 
			
		||||
@@ -655,9 +655,9 @@
 | 
			
		||||
		<operateType>P</operateType>
 | 
			
		||||
		<magicCriticalRate>5</magicCriticalRate>
 | 
			
		||||
		<effects>
 | 
			
		||||
			<effect name="PhysicalAttackSpeed">
 | 
			
		||||
				<amount>5</amount>
 | 
			
		||||
				<mode>PER</mode>
 | 
			
		||||
			<effect name="TwoHandedSwordBonus">
 | 
			
		||||
				<pAtkSpeedAmount>5</pAtkSpeedAmount>
 | 
			
		||||
				<pAtkSpeedMode>PER</pAtkSpeedMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
		</effects>
 | 
			
		||||
	</skill>
 | 
			
		||||
@@ -668,9 +668,9 @@
 | 
			
		||||
		<operateType>P</operateType>
 | 
			
		||||
		<magicCriticalRate>5</magicCriticalRate>
 | 
			
		||||
		<effects>
 | 
			
		||||
			<effect name="Accuracy">
 | 
			
		||||
				<amount>3.9</amount>
 | 
			
		||||
				<mode>DIFF</mode>
 | 
			
		||||
			<effect name="TwoHandedSwordBonus">
 | 
			
		||||
				<pAccuracyAmount>3.9</pAccuracyAmount>
 | 
			
		||||
				<pAccuracyMode>DIFF</pAccuracyMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
		</effects>
 | 
			
		||||
	</skill>
 | 
			
		||||
@@ -707,9 +707,9 @@
 | 
			
		||||
		<operateType>P</operateType>
 | 
			
		||||
		<magicCriticalRate>5</magicCriticalRate>
 | 
			
		||||
		<effects>
 | 
			
		||||
			<effect name="CriticalDamage">
 | 
			
		||||
				<amount>340</amount>
 | 
			
		||||
				<mode>DIFF</mode>
 | 
			
		||||
			<effect name="TwoHandedSwordBonus">
 | 
			
		||||
				<pCritDamageAmount>340</pCritDamageAmount>
 | 
			
		||||
				<pCritDamageMode>DIFF</pCritDamageMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
		</effects>
 | 
			
		||||
	</skill>
 | 
			
		||||
@@ -723,9 +723,9 @@
 | 
			
		||||
		<operateType>P</operateType>
 | 
			
		||||
		<magicCriticalRate>5</magicCriticalRate>
 | 
			
		||||
		<effects>
 | 
			
		||||
			<effect name="CriticalRate">
 | 
			
		||||
				<amount>54.4</amount>
 | 
			
		||||
				<mode>DIFF</mode>
 | 
			
		||||
			<effect name="TwoHandedSwordBonus">
 | 
			
		||||
				<pCritRateAmount>54.4</pCritRateAmount>
 | 
			
		||||
				<pCritRateMode>DIFF</pCritRateMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
		</effects>
 | 
			
		||||
	</skill>
 | 
			
		||||
 
 | 
			
		||||
@@ -1492,14 +1492,9 @@
 | 
			
		||||
		<basicProperty>NONE</basicProperty>
 | 
			
		||||
		<hitCancelTime>0</hitCancelTime>
 | 
			
		||||
		<reuseDelay>300000</reuseDelay>
 | 
			
		||||
		<targetType>OTHERS</targetType>
 | 
			
		||||
		<targetType>SELF</targetType>
 | 
			
		||||
		<affectScope>PARTY</affectScope>
 | 
			
		||||
		<affectObject>FRIEND_PC</affectObject>
 | 
			
		||||
		<conditions>
 | 
			
		||||
			<condition name="TargetMyParty">
 | 
			
		||||
				<includeMe>false</includeMe>
 | 
			
		||||
			</condition>
 | 
			
		||||
		</conditions>
 | 
			
		||||
		<effects>
 | 
			
		||||
			<effect name="TransferDamageToPlayer">
 | 
			
		||||
				<amount>
 | 
			
		||||
 
 | 
			
		||||
@@ -484,7 +484,7 @@
 | 
			
		||||
					<value level="3">4</value>
 | 
			
		||||
					<value level="4">5</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>
 | 
			
		||||
@@ -493,7 +493,7 @@
 | 
			
		||||
					<value level="3">4</value>
 | 
			
		||||
					<value level="4">5</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedSwordBonus">
 | 
			
		||||
				<pAtkAmount>
 | 
			
		||||
@@ -1590,11 +1590,11 @@
 | 
			
		||||
		<effects>
 | 
			
		||||
			<effect name="TwoHandedSwordBonus">
 | 
			
		||||
				<pAtkAmount>30</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>30</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="HitNumber">
 | 
			
		||||
				<amount>5</amount>
 | 
			
		||||
 
 | 
			
		||||
@@ -77,7 +77,7 @@
 | 
			
		||||
		</effects>
 | 
			
		||||
	</skill>
 | 
			
		||||
	<skill id="10608" toLevel="4" name="Superior Haste">
 | 
			
		||||
		<!-- P. Skill Cooldown -$s1, Infection Atk. Rate +$s2. Also doubles the duration of Shadow Dash. -->
 | 
			
		||||
		<!-- P. Skill Cooldown -5%, Infection Atk. Rate +10%. Also doubles the duration of Shadow Dash. -->
 | 
			
		||||
		<icon>icon.skill10608</icon>
 | 
			
		||||
		<magicLvl>
 | 
			
		||||
			<value level="1">85</value>
 | 
			
		||||
@@ -87,14 +87,13 @@
 | 
			
		||||
		</magicLvl>
 | 
			
		||||
		<operateType>P</operateType>
 | 
			
		||||
		<effects>
 | 
			
		||||
			<effect name="Speed">
 | 
			
		||||
				<amount>
 | 
			
		||||
					<value level="1">5</value>
 | 
			
		||||
					<value level="2">6</value>
 | 
			
		||||
					<value level="3">7</value>
 | 
			
		||||
					<value level="4">10</value>
 | 
			
		||||
				</amount>
 | 
			
		||||
				<mode>DIFF</mode>
 | 
			
		||||
			<effect name="AttackTrait">
 | 
			
		||||
				<BLEED>
 | 
			
		||||
					<value level="1">10</value>
 | 
			
		||||
					<value level="2">11</value>
 | 
			
		||||
					<value level="3">13</value>
 | 
			
		||||
					<value level="4">15</value>
 | 
			
		||||
				</BLEED>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="Reuse">
 | 
			
		||||
				<amount>
 | 
			
		||||
 
 | 
			
		||||
@@ -433,7 +433,7 @@
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>120</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>
 | 
			
		||||
@@ -448,11 +448,11 @@
 | 
			
		||||
					<value level="9">1786</value>
 | 
			
		||||
					<value level="10">1894</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkmode>DIFF</pAtkmode>
 | 
			
		||||
				<pAtkMode>DIFF</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<accuracyAmount>4</accuracyAmount>
 | 
			
		||||
				<accuracyMode>DIFF</accuracyMode>
 | 
			
		||||
				<pAccuracyAmount>4</pAccuracyAmount>
 | 
			
		||||
				<pAccuracyMode>DIFF</pAccuracyMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="StatUp">
 | 
			
		||||
				<amount>2</amount>
 | 
			
		||||
 
 | 
			
		||||
@@ -686,14 +686,14 @@
 | 
			
		||||
					<value level="1">3</value>
 | 
			
		||||
					<value level="2">5</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>
 | 
			
		||||
					<value level="1">3</value>
 | 
			
		||||
					<value level="2">5</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="PhysicalAttackSpeed">
 | 
			
		||||
				<amount>
 | 
			
		||||
 
 | 
			
		||||
@@ -3511,15 +3511,15 @@
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedSwordBonus">
 | 
			
		||||
				<pAtkAmount>5</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<accuracyAmount>4</accuracyAmount>
 | 
			
		||||
				<accuracyMode>DIFF</accuracyMode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
				<pAccuracyAmount>4</pAccuracyAmount>
 | 
			
		||||
				<pAccuracyMode>DIFF</pAccuracyMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>5</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<accuracyAmount>4</accuracyAmount>
 | 
			
		||||
				<accuracyMode>DIFF</accuracyMode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
				<pAccuracyAmount>4</pAccuracyAmount>
 | 
			
		||||
				<pAccuracyMode>DIFF</pAccuracyMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="PAtk">
 | 
			
		||||
				<amount>5</amount>
 | 
			
		||||
 
 | 
			
		||||
@@ -239,16 +239,27 @@
 | 
			
		||||
			<value level="2">76</value>
 | 
			
		||||
		</magicLvl>
 | 
			
		||||
		<effects>
 | 
			
		||||
			<effect name="TwoHandedSwordBonus">
 | 
			
		||||
				<pAtkAmount>1</pAtkAmount>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedSwordBonus">
 | 
			
		||||
				<pAtkAmount>
 | 
			
		||||
					<value level="1">51</value>
 | 
			
		||||
					<value level="2">102</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkMode>DIFF</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>1</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>
 | 
			
		||||
					<value level="1">51</value>
 | 
			
		||||
					<value level="2">102</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkmode>DIFF</pAtkmode>
 | 
			
		||||
				<pAtkMode>DIFF</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
		</effects>
 | 
			
		||||
	</skill>
 | 
			
		||||
@@ -1514,6 +1525,47 @@
 | 
			
		||||
				<amount>1</amount>
 | 
			
		||||
				<stat>INT</stat>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>
 | 
			
		||||
					<value level="1">51</value>
 | 
			
		||||
					<value level="2">112</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkMode>DIFF</pAtkMode>
 | 
			
		||||
				<mAtkAmount>
 | 
			
		||||
					<value level="1">70</value>
 | 
			
		||||
					<value level="2">140</value>
 | 
			
		||||
				</mAtkAmount>
 | 
			
		||||
				<mAtkMode>DIFF</mAtkMode>
 | 
			
		||||
				<pAccuracyAmount>
 | 
			
		||||
					<value level="1">1</value>
 | 
			
		||||
					<value level="2">2</value>
 | 
			
		||||
				</pAccuracyAmount>
 | 
			
		||||
				<pAccuracyMode>DIFF</pAccuracyMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>
 | 
			
		||||
					<value level="1">80</value>
 | 
			
		||||
					<value level="2">100</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
				<mAtkAmount>
 | 
			
		||||
					<value level="1">8</value>
 | 
			
		||||
					<value level="2">12</value>
 | 
			
		||||
				</mAtkAmount>
 | 
			
		||||
				<mAtkMode>PER</mAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<mAtkSpeedAmount>
 | 
			
		||||
					<value level="1">12</value>
 | 
			
		||||
					<value level="2">15</value>
 | 
			
		||||
				</mAtkSpeedAmount>
 | 
			
		||||
				<mAtkSpeedMode>PER</mAtkSpeedMode>
 | 
			
		||||
				<mCritRateAmount>
 | 
			
		||||
					<value level="1">3</value>
 | 
			
		||||
					<value level="2">4</value>
 | 
			
		||||
				</mCritRateAmount>
 | 
			
		||||
				<mCritRateMode>PER</mCritRateMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
		</effects>
 | 
			
		||||
	</skill>
 | 
			
		||||
	<skill id="30730" toLevel="2" name="Intermediate Robe Mastery">
 | 
			
		||||
@@ -3221,7 +3273,7 @@
 | 
			
		||||
					<value level="3">15</value>
 | 
			
		||||
					<value level="4">20</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>
 | 
			
		||||
@@ -3230,7 +3282,7 @@
 | 
			
		||||
					<value level="3">15</value>
 | 
			
		||||
					<value level="4">20</value>
 | 
			
		||||
				</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="PAtk">
 | 
			
		||||
				<amount>
 | 
			
		||||
@@ -3473,15 +3525,15 @@
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedSwordBonus">
 | 
			
		||||
				<pAtkAmount>10</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<accuracyAmount>8</accuracyAmount>
 | 
			
		||||
				<accuracyMode>DIFF</accuracyMode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
				<pAccuracyAmount>8</pAccuracyAmount>
 | 
			
		||||
				<pAccuracyMode>DIFF</pAccuracyMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="TwoHandedBluntBonus">
 | 
			
		||||
				<pAtkAmount>10</pAtkAmount>
 | 
			
		||||
				<pAtkmode>PER</pAtkmode>
 | 
			
		||||
				<accuracyAmount>8</accuracyAmount>
 | 
			
		||||
				<accuracyMode>DIFF</accuracyMode>
 | 
			
		||||
				<pAtkMode>PER</pAtkMode>
 | 
			
		||||
				<pAccuracyAmount>8</pAccuracyAmount>
 | 
			
		||||
				<pAccuracyMode>DIFF</pAccuracyMode>
 | 
			
		||||
			</effect>
 | 
			
		||||
			<effect name="PAtk">
 | 
			
		||||
				<amount>10</amount>
 | 
			
		||||
@@ -4863,6 +4915,7 @@
 | 
			
		||||
				<SWORD>-5</SWORD>
 | 
			
		||||
				<BLUNT>-5</BLUNT>
 | 
			
		||||
				<DUAL>-5</DUAL>
 | 
			
		||||
				<DUALBLUNT>-5</DUALBLUNT>
 | 
			
		||||
			</effect>
 | 
			
		||||
		</pvpEffects>
 | 
			
		||||
		<pveEffects>
 | 
			
		||||
@@ -4896,6 +4949,7 @@
 | 
			
		||||
				<SWORD>-5</SWORD>
 | 
			
		||||
				<BLUNT>-5</BLUNT>
 | 
			
		||||
				<DUAL>-5</DUAL>
 | 
			
		||||
				<DUALBLUNT>-5</DUALBLUNT>
 | 
			
		||||
			</effect>
 | 
			
		||||
		</pveEffects>
 | 
			
		||||
	</skill>
 | 
			
		||||
 
 | 
			
		||||
@@ -872,22 +872,6 @@
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="pAtkAmount">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
																		<xs:element maxOccurs="unbounded" name="value">
 | 
			
		||||
																			<xs:complexType>
 | 
			
		||||
																				<xs:simpleContent>
 | 
			
		||||
																					<xs:extension base="xs:decimal">
 | 
			
		||||
																						<xs:attribute name="level" type="xs:unsignedByte" use="required" />
 | 
			
		||||
																					</xs:extension>
 | 
			
		||||
																				</xs:simpleContent>
 | 
			
		||||
																			</xs:complexType>
 | 
			
		||||
																		</xs:element>
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="pAtkmode" type="xs:string" />
 | 
			
		||||
															<xs:element name="PLANT_WEAKNESS">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
@@ -903,6 +887,166 @@
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="pAtkAmount">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
																		<xs:element maxOccurs="unbounded" name="value">
 | 
			
		||||
																			<xs:complexType>
 | 
			
		||||
																				<xs:simpleContent>
 | 
			
		||||
																					<xs:extension base="xs:decimal">
 | 
			
		||||
																						<xs:attribute name="level" type="xs:unsignedByte" use="required" />
 | 
			
		||||
																					</xs:extension>
 | 
			
		||||
																				</xs:simpleContent>
 | 
			
		||||
																			</xs:complexType>
 | 
			
		||||
																		</xs:element>
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="pAtkMode" type="xs:string" />
 | 
			
		||||
															<xs:element name="mAtkAmount">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
																		<xs:element maxOccurs="unbounded" name="value">
 | 
			
		||||
																			<xs:complexType>
 | 
			
		||||
																				<xs:simpleContent>
 | 
			
		||||
																					<xs:extension base="xs:decimal">
 | 
			
		||||
																						<xs:attribute name="level" type="xs:unsignedByte" use="required" />
 | 
			
		||||
																					</xs:extension>
 | 
			
		||||
																				</xs:simpleContent>
 | 
			
		||||
																			</xs:complexType>
 | 
			
		||||
																		</xs:element>
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="mAtkMode" type="xs:string" />
 | 
			
		||||
															<xs:element name="pAccuracyAmount">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
																		<xs:element maxOccurs="unbounded" name="value">
 | 
			
		||||
																			<xs:complexType>
 | 
			
		||||
																				<xs:simpleContent>
 | 
			
		||||
																					<xs:extension base="xs:decimal">
 | 
			
		||||
																						<xs:attribute name="level" type="xs:unsignedByte" use="required" />
 | 
			
		||||
																					</xs:extension>
 | 
			
		||||
																				</xs:simpleContent>
 | 
			
		||||
																			</xs:complexType>
 | 
			
		||||
																		</xs:element>
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="pAccuracyMode" type="xs:string" />
 | 
			
		||||
															<xs:element name="mAccuracyAmount">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
																		<xs:element maxOccurs="unbounded" name="value">
 | 
			
		||||
																			<xs:complexType>
 | 
			
		||||
																				<xs:simpleContent>
 | 
			
		||||
																					<xs:extension base="xs:decimal">
 | 
			
		||||
																						<xs:attribute name="level" type="xs:unsignedByte" use="required" />
 | 
			
		||||
																					</xs:extension>
 | 
			
		||||
																				</xs:simpleContent>
 | 
			
		||||
																			</xs:complexType>
 | 
			
		||||
																		</xs:element>
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="mAccuracyMode" type="xs:string" />
 | 
			
		||||
															<xs:element name="pAtkSpeedAmount">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
																		<xs:element maxOccurs="unbounded" name="value">
 | 
			
		||||
																			<xs:complexType>
 | 
			
		||||
																				<xs:simpleContent>
 | 
			
		||||
																					<xs:extension base="xs:decimal">
 | 
			
		||||
																						<xs:attribute name="level" type="xs:unsignedByte" use="required" />
 | 
			
		||||
																					</xs:extension>
 | 
			
		||||
																				</xs:simpleContent>
 | 
			
		||||
																			</xs:complexType>
 | 
			
		||||
																		</xs:element>
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="pAtkSpeedMode" type="xs:string" />
 | 
			
		||||
															<xs:element name="mAtkSpeedAmount">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
																		<xs:element maxOccurs="unbounded" name="value">
 | 
			
		||||
																			<xs:complexType>
 | 
			
		||||
																				<xs:simpleContent>
 | 
			
		||||
																					<xs:extension base="xs:decimal">
 | 
			
		||||
																						<xs:attribute name="level" type="xs:unsignedByte" use="required" />
 | 
			
		||||
																					</xs:extension>
 | 
			
		||||
																				</xs:simpleContent>
 | 
			
		||||
																			</xs:complexType>
 | 
			
		||||
																		</xs:element>
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="mAtkSpeedMode" type="xs:string" />
 | 
			
		||||
															<xs:element name="pCritDamageAmount">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
																		<xs:element maxOccurs="unbounded" name="value">
 | 
			
		||||
																			<xs:complexType>
 | 
			
		||||
																				<xs:simpleContent>
 | 
			
		||||
																					<xs:extension base="xs:decimal">
 | 
			
		||||
																						<xs:attribute name="level" type="xs:unsignedByte" use="required" />
 | 
			
		||||
																					</xs:extension>
 | 
			
		||||
																				</xs:simpleContent>
 | 
			
		||||
																			</xs:complexType>
 | 
			
		||||
																		</xs:element>
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="pCritDamageMode" type="xs:string" />
 | 
			
		||||
															<xs:element name="pCritRateAmount">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
																		<xs:element maxOccurs="unbounded" name="value">
 | 
			
		||||
																			<xs:complexType>
 | 
			
		||||
																				<xs:simpleContent>
 | 
			
		||||
																					<xs:extension base="xs:decimal">
 | 
			
		||||
																						<xs:attribute name="level" type="xs:unsignedByte" use="required" />
 | 
			
		||||
																					</xs:extension>
 | 
			
		||||
																				</xs:simpleContent>
 | 
			
		||||
																			</xs:complexType>
 | 
			
		||||
																		</xs:element>
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="pCritRateMode" type="xs:string" />
 | 
			
		||||
															<xs:element name="mCritDamageAmount">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
																		<xs:element maxOccurs="unbounded" name="value">
 | 
			
		||||
																			<xs:complexType>
 | 
			
		||||
																				<xs:simpleContent>
 | 
			
		||||
																					<xs:extension base="xs:decimal">
 | 
			
		||||
																						<xs:attribute name="level" type="xs:unsignedByte" use="required" />
 | 
			
		||||
																					</xs:extension>
 | 
			
		||||
																				</xs:simpleContent>
 | 
			
		||||
																			</xs:complexType>
 | 
			
		||||
																		</xs:element>
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="mpCritDamageMode" type="xs:string" />
 | 
			
		||||
															<xs:element name="mCritRateAmount">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
																		<xs:element maxOccurs="unbounded" name="value">
 | 
			
		||||
																			<xs:complexType>
 | 
			
		||||
																				<xs:simpleContent>
 | 
			
		||||
																					<xs:extension base="xs:decimal">
 | 
			
		||||
																						<xs:attribute name="level" type="xs:unsignedByte" use="required" />
 | 
			
		||||
																					</xs:extension>
 | 
			
		||||
																				</xs:simpleContent>
 | 
			
		||||
																			</xs:complexType>
 | 
			
		||||
																		</xs:element>
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="mCritRateMode" type="xs:string" />
 | 
			
		||||
															<xs:element name="HOLD">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
@@ -1006,8 +1150,6 @@
 | 
			
		||||
																	<xs:attribute name="level" type="xs:unsignedByte" use="optional" />
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="accuracyAmount" type="xs:unsignedByte" />
 | 
			
		||||
															<xs:element name="accuracyMode" type="xs:string" />
 | 
			
		||||
															<xs:element name="hpPercent" type="xs:unsignedByte" />
 | 
			
		||||
															<xs:element name="attribute" type="xs:string" />
 | 
			
		||||
															<xs:element name="attackerType" type="xs:string" />
 | 
			
		||||
@@ -1345,6 +1487,21 @@
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="DUALBLUNT">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
																		<xs:element maxOccurs="unbounded" name="value">
 | 
			
		||||
																			<xs:complexType>
 | 
			
		||||
																				<xs:simpleContent>
 | 
			
		||||
																					<xs:extension base="xs:byte">
 | 
			
		||||
																						<xs:attribute name="level" type="xs:unsignedByte" use="required" />
 | 
			
		||||
																					</xs:extension>
 | 
			
		||||
																				</xs:simpleContent>
 | 
			
		||||
																			</xs:complexType>
 | 
			
		||||
																		</xs:element>
 | 
			
		||||
																	</xs:sequence>
 | 
			
		||||
																</xs:complexType>
 | 
			
		||||
															</xs:element>
 | 
			
		||||
															<xs:element name="DUAL">
 | 
			
		||||
																<xs:complexType mixed="true">
 | 
			
		||||
																	<xs:sequence minOccurs="0">
 | 
			
		||||
@@ -2590,6 +2747,7 @@
 | 
			
		||||
														<xs:element minOccurs="0" name="SWORD" type="xs:byte" />
 | 
			
		||||
														<xs:element minOccurs="0" name="BLUNT" type="xs:byte" />
 | 
			
		||||
														<xs:element minOccurs="0" name="DUAL" type="xs:byte" />
 | 
			
		||||
														<xs:element minOccurs="0" name="DUALBLUNT" type="xs:byte" />
 | 
			
		||||
														<xs:element minOccurs="0" name="skillId" type="xs:unsignedShort" />
 | 
			
		||||
														<xs:element minOccurs="0" name="skillLevel">
 | 
			
		||||
															<xs:complexType mixed="true">
 | 
			
		||||
@@ -2759,6 +2917,7 @@
 | 
			
		||||
															<xs:element name="SWORD" type="xs:byte" />
 | 
			
		||||
															<xs:element name="BLUNT" type="xs:byte" />
 | 
			
		||||
															<xs:element name="DUAL" type="xs:byte" />
 | 
			
		||||
															<xs:element name="DUALBLUNT" type="xs:byte" />
 | 
			
		||||
														</xs:choice>
 | 
			
		||||
													</xs:sequence>
 | 
			
		||||
													<xs:attribute name="name" type="xs:string" use="required" />
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user