Two handed bonus mode additions and various skill fixes.
Contributed by gamelike85.
This commit is contained in:
Vendored
+317
-11
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sdw
|
* @author Sdw, Mobius
|
||||||
*/
|
*/
|
||||||
public class TwoHandedBluntBonus extends AbstractEffect
|
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 static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
private final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
private final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkMode;
|
||||||
|
|
||||||
private final double _accuracyAmount;
|
private final double _mAtkAmount;
|
||||||
private final StatModifierType _accuracyMode;
|
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)
|
public TwoHandedBluntBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
_pAtkAmount = params.getDouble("pAtkAmount", 0);
|
_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);
|
_mAtkAmount = params.getDouble("mAtkAmount", 0);
|
||||||
_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
|
_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
|
@Override
|
||||||
@@ -56,7 +110,7 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
|||||||
{
|
{
|
||||||
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
||||||
{
|
{
|
||||||
switch (_pAtkmode)
|
switch (_pAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
@@ -70,16 +124,268 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_accuracyMode)
|
switch (_mAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
|
effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PER:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+317
-11
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sdw
|
* @author Sdw, Mobius
|
||||||
*/
|
*/
|
||||||
public class TwoHandedSwordBonus extends AbstractEffect
|
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 static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
private final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
private final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkMode;
|
||||||
|
|
||||||
private final double _accuracyAmount;
|
private final double _mAtkAmount;
|
||||||
private final StatModifierType _accuracyMode;
|
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)
|
public TwoHandedSwordBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
_pAtkAmount = params.getDouble("pAtkAmount", 0);
|
_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);
|
_mAtkAmount = params.getDouble("mAtkAmount", 0);
|
||||||
_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
|
_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
|
@Override
|
||||||
@@ -56,7 +110,7 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
|||||||
{
|
{
|
||||||
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
||||||
{
|
{
|
||||||
switch (_pAtkmode)
|
switch (_pAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
@@ -70,16 +124,268 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_accuracyMode)
|
switch (_mAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
|
effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PER:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6700,7 +6700,7 @@
|
|||||||
<value level="6">10</value>
|
<value level="6">10</value>
|
||||||
<value level="7">15</value>
|
<value level="7">15</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -6712,7 +6712,7 @@
|
|||||||
<value level="6">10</value>
|
<value level="6">10</value>
|
||||||
<value level="7">15</value>
|
<value level="7">15</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>15</amount>
|
<amount>15</amount>
|
||||||
|
|||||||
@@ -2922,15 +2922,15 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>10</pAtkAmount>
|
<pAtkAmount>10</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>8</accuracyAmount>
|
<pAccuracyAmount>8</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>10</pAtkAmount>
|
<pAtkAmount>10</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>8</accuracyAmount>
|
<pAccuracyAmount>8</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>10</amount>
|
<amount>10</amount>
|
||||||
|
|||||||
@@ -6449,9 +6449,9 @@
|
|||||||
<value level="19">122.1</value>
|
<value level="19">122.1</value>
|
||||||
<value level="20">129.3</value>
|
<value level="20">129.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>3</accuracyAmount>
|
<pAccuracyAmount>3</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -910,7 +910,7 @@
|
|||||||
<value level="5">7.4</value>
|
<value level="5">7.4</value>
|
||||||
<value level="6">8.3</value>
|
<value level="6">8.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -921,7 +921,7 @@
|
|||||||
<value level="5">7.4</value>
|
<value level="5">7.4</value>
|
||||||
<value level="6">8.3</value>
|
<value level="6">8.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>
|
<amount>
|
||||||
@@ -1225,11 +1225,11 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>5</pAtkAmount>
|
<pAtkAmount>5</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>5</pAtkAmount>
|
<pAtkAmount>5</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -220,8 +220,8 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<accuracyAmount>1</accuracyAmount>
|
<pAccuracyAmount>1</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -303,8 +303,8 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<accuracyAmount>1</accuracyAmount>
|
<pAccuracyAmount>1</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -1819,7 +1819,7 @@
|
|||||||
<minAttackerLevel>1</minAttackerLevel>
|
<minAttackerLevel>1</minAttackerLevel>
|
||||||
<maxAttackerLevel>127</maxAttackerLevel>
|
<maxAttackerLevel>127</maxAttackerLevel>
|
||||||
<minDamage>1</minDamage>
|
<minDamage>1</minDamage>
|
||||||
<chance>2</chance>
|
<chance>4</chance>
|
||||||
<targetType>SELF</targetType>
|
<targetType>SELF</targetType>
|
||||||
<isCritical>true</isCritical>
|
<isCritical>true</isCritical>
|
||||||
<allowWeapons>ALL</allowWeapons>
|
<allowWeapons>ALL</allowWeapons>
|
||||||
|
|||||||
@@ -655,9 +655,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="PhysicalAttackSpeed">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>5</amount>
|
<pAtkSpeedAmount>5</pAtkSpeedAmount>
|
||||||
<mode>PER</mode>
|
<pAtkSpeedMode>PER</pAtkSpeedMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -668,9 +668,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="Accuracy">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>3.9</amount>
|
<pAccuracyAmount>3.9</pAccuracyAmount>
|
||||||
<mode>DIFF</mode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -707,9 +707,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="CriticalDamage">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>340</amount>
|
<pCritDamageAmount>340</pCritDamageAmount>
|
||||||
<mode>DIFF</mode>
|
<pCritDamageMode>DIFF</pCritDamageMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -723,9 +723,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="CriticalRate">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>54.4</amount>
|
<pCritRateAmount>54.4</pCritRateAmount>
|
||||||
<mode>DIFF</mode>
|
<pCritRateMode>DIFF</pCritRateMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -471,7 +471,7 @@
|
|||||||
<value level="3">4</value>
|
<value level="3">4</value>
|
||||||
<value level="4">5</value>
|
<value level="4">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -480,7 +480,7 @@
|
|||||||
<value level="3">4</value>
|
<value level="3">4</value>
|
||||||
<value level="4">5</value>
|
<value level="4">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -1483,11 +1483,11 @@
|
|||||||
<effects>
|
<effects>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>30</pAtkAmount>
|
<pAtkAmount>30</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>30</pAtkAmount>
|
<pAtkAmount>30</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="HitNumber">
|
<effect name="HitNumber">
|
||||||
<amount>5</amount>
|
<amount>5</amount>
|
||||||
|
|||||||
@@ -87,14 +87,13 @@
|
|||||||
</magicLvl>
|
</magicLvl>
|
||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="Speed">
|
<effect name="AttackTrait">
|
||||||
<amount>
|
<BLEED>
|
||||||
<value level="1">5</value>
|
<value level="1">10</value>
|
||||||
<value level="2">6</value>
|
<value level="2">11</value>
|
||||||
<value level="3">7</value>
|
<value level="3">13</value>
|
||||||
<value level="4">10</value>
|
<value level="4">15</value>
|
||||||
</amount>
|
</BLEED>
|
||||||
<mode>DIFF</mode>
|
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="Reuse">
|
<effect name="Reuse">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
@@ -359,30 +359,11 @@
|
|||||||
<effect name="SkillCritical">
|
<effect name="SkillCritical">
|
||||||
<stat>INT</stat>
|
<stat>INT</stat>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
|
||||||
<amount>105</amount>
|
|
||||||
<mode>PER</mode>
|
|
||||||
</effect>
|
|
||||||
<effect name="MAtk">
|
<effect name="MAtk">
|
||||||
<amount>24</amount>
|
<amount>24</amount>
|
||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
|
||||||
<effect name="PAtk">
|
|
||||||
<amount>
|
|
||||||
<value level="1">822</value>
|
|
||||||
<value level="2">953</value>
|
|
||||||
<value level="3">1105</value>
|
|
||||||
<value level="4">1244</value>
|
|
||||||
<value level="5">1409</value>
|
|
||||||
<value level="6">1495</value>
|
|
||||||
<value level="7">1586</value>
|
|
||||||
<value level="8">1683</value>
|
|
||||||
<value level="9">1786</value>
|
|
||||||
<value level="10">1894</value>
|
|
||||||
</amount>
|
|
||||||
<mode>DIFF</mode>
|
|
||||||
<weaponType>
|
<weaponType>
|
||||||
<item>DUALBLUNT</item>
|
<item>BLUNT</item>
|
||||||
</weaponType>
|
</weaponType>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="MAtk">
|
<effect name="MAtk">
|
||||||
@@ -399,26 +380,51 @@
|
|||||||
<value level="10">2478</value>
|
<value level="10">2478</value>
|
||||||
</amount>
|
</amount>
|
||||||
<mode>DIFF</mode>
|
<mode>DIFF</mode>
|
||||||
</effect>
|
|
||||||
<effect name="Accuracy">
|
|
||||||
<amount>4</amount>
|
|
||||||
<mode>DIFF</mode>
|
|
||||||
<weaponType>
|
<weaponType>
|
||||||
<item>DUALBLUNT</item>
|
<item>BLUNT</item>
|
||||||
</weaponType>
|
</weaponType>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="MagicalAttackSpeed">
|
<effect name="MagicalAttackSpeed">
|
||||||
<amount>23</amount>
|
<amount>23</amount>
|
||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
|
<weaponType>
|
||||||
|
<item>BLUNT</item>
|
||||||
|
</weaponType>
|
||||||
|
</effect>
|
||||||
|
<effect name="MagicCriticalRate">
|
||||||
|
<amount>6</amount>
|
||||||
|
<mode>PER</mode>
|
||||||
|
<weaponType>
|
||||||
|
<item>BLUNT</item>
|
||||||
|
</weaponType>
|
||||||
|
</effect>
|
||||||
|
<effect name="TwoHandedBluntBonus">
|
||||||
|
<pAtkAmount>120</pAtkAmount>
|
||||||
|
<pAtkMode>PER</pAtkMode>
|
||||||
|
</effect>
|
||||||
|
<effect name="TwoHandedBluntBonus">
|
||||||
|
<pAtkAmount>
|
||||||
|
<value level="1">822</value>
|
||||||
|
<value level="2">953</value>
|
||||||
|
<value level="3">1105</value>
|
||||||
|
<value level="4">1244</value>
|
||||||
|
<value level="5">1409</value>
|
||||||
|
<value level="6">1495</value>
|
||||||
|
<value level="7">1586</value>
|
||||||
|
<value level="8">1683</value>
|
||||||
|
<value level="9">1786</value>
|
||||||
|
<value level="10">1894</value>
|
||||||
|
</pAtkAmount>
|
||||||
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
|
</effect>
|
||||||
|
<effect name="TwoHandedBluntBonus">
|
||||||
|
<pAccuracyAmount>4</pAccuracyAmount>
|
||||||
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="StatUp">
|
<effect name="StatUp">
|
||||||
<amount>2</amount>
|
<amount>2</amount>
|
||||||
<stat>INT</stat>
|
<stat>INT</stat>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="MagicCriticalRate">
|
|
||||||
<amount>6</amount>
|
|
||||||
<mode>DIFF</mode>
|
|
||||||
</effect>
|
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
<skill id="11252" toLevel="10" name="Superior Robe Mastery">
|
<skill id="11252" toLevel="10" name="Superior Robe Mastery">
|
||||||
@@ -2478,7 +2484,6 @@
|
|||||||
</condition>
|
</condition>
|
||||||
</conditions>
|
</conditions>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="PhysicalAttack" />
|
|
||||||
<effect name="Speed">
|
<effect name="Speed">
|
||||||
<amount>-100</amount>
|
<amount>-100</amount>
|
||||||
<mode>DIFF</mode>
|
<mode>DIFF</mode>
|
||||||
@@ -3409,7 +3414,7 @@
|
|||||||
<abnormalType>LIFE_FORCE_OTHERS</abnormalType>
|
<abnormalType>LIFE_FORCE_OTHERS</abnormalType>
|
||||||
<isMagic>1</isMagic>
|
<isMagic>1</isMagic>
|
||||||
<targetType>SUMMON</targetType>
|
<targetType>SUMMON</targetType>
|
||||||
<affectScope>SUMMON_EXCEPT_MASTER</affectScope>
|
<affectScope>SINGLE</affectScope>
|
||||||
<affectObject>FRIEND</affectObject>
|
<affectObject>FRIEND</affectObject>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="RebalanceHPSummon" />
|
<effect name="RebalanceHPSummon" />
|
||||||
|
|||||||
@@ -686,14 +686,14 @@
|
|||||||
<value level="1">3</value>
|
<value level="1">3</value>
|
||||||
<value level="2">5</value>
|
<value level="2">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
<value level="1">3</value>
|
<value level="1">3</value>
|
||||||
<value level="2">5</value>
|
<value level="2">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PhysicalAttackSpeed">
|
<effect name="PhysicalAttackSpeed">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
+175
-16
@@ -931,22 +931,6 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="PLANT_WEAKNESS">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
@@ -962,6 +946,166 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="HOLD">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
@@ -1389,6 +1533,21 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="DUAL">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
|
|||||||
Vendored
+317
-11
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sdw
|
* @author Sdw, Mobius
|
||||||
*/
|
*/
|
||||||
public class TwoHandedBluntBonus extends AbstractEffect
|
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 static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
private final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
private final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkMode;
|
||||||
|
|
||||||
private final double _accuracyAmount;
|
private final double _mAtkAmount;
|
||||||
private final StatModifierType _accuracyMode;
|
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)
|
public TwoHandedBluntBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
_pAtkAmount = params.getDouble("pAtkAmount", 0);
|
_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);
|
_mAtkAmount = params.getDouble("mAtkAmount", 0);
|
||||||
_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
|
_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
|
@Override
|
||||||
@@ -56,7 +110,7 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
|||||||
{
|
{
|
||||||
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
||||||
{
|
{
|
||||||
switch (_pAtkmode)
|
switch (_pAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
@@ -70,16 +124,268 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_accuracyMode)
|
switch (_mAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
|
effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PER:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+317
-11
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sdw
|
* @author Sdw, Mobius
|
||||||
*/
|
*/
|
||||||
public class TwoHandedSwordBonus extends AbstractEffect
|
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 static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
private final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
private final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkMode;
|
||||||
|
|
||||||
private final double _accuracyAmount;
|
private final double _mAtkAmount;
|
||||||
private final StatModifierType _accuracyMode;
|
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)
|
public TwoHandedSwordBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
_pAtkAmount = params.getDouble("pAtkAmount", 0);
|
_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);
|
_mAtkAmount = params.getDouble("mAtkAmount", 0);
|
||||||
_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
|
_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
|
@Override
|
||||||
@@ -56,7 +110,7 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
|||||||
{
|
{
|
||||||
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
||||||
{
|
{
|
||||||
switch (_pAtkmode)
|
switch (_pAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
@@ -70,16 +124,268 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_accuracyMode)
|
switch (_mAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
|
effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PER:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6698,7 +6698,7 @@
|
|||||||
<value level="6">10</value>
|
<value level="6">10</value>
|
||||||
<value level="7">15</value>
|
<value level="7">15</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -6710,7 +6710,7 @@
|
|||||||
<value level="6">10</value>
|
<value level="6">10</value>
|
||||||
<value level="7">15</value>
|
<value level="7">15</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>15</amount>
|
<amount>15</amount>
|
||||||
|
|||||||
@@ -2922,15 +2922,15 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>10</pAtkAmount>
|
<pAtkAmount>10</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>8</accuracyAmount>
|
<pAccuracyAmount>8</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>10</pAtkAmount>
|
<pAtkAmount>10</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>8</accuracyAmount>
|
<pAccuracyAmount>8</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>10</amount>
|
<amount>10</amount>
|
||||||
|
|||||||
@@ -6447,9 +6447,9 @@
|
|||||||
<value level="19">122.1</value>
|
<value level="19">122.1</value>
|
||||||
<value level="20">129.3</value>
|
<value level="20">129.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>3</accuracyAmount>
|
<pAccuracyAmount>3</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -910,7 +910,7 @@
|
|||||||
<value level="5">7.4</value>
|
<value level="5">7.4</value>
|
||||||
<value level="6">8.3</value>
|
<value level="6">8.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -921,7 +921,7 @@
|
|||||||
<value level="5">7.4</value>
|
<value level="5">7.4</value>
|
||||||
<value level="6">8.3</value>
|
<value level="6">8.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>
|
<amount>
|
||||||
@@ -1225,11 +1225,11 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>5</pAtkAmount>
|
<pAtkAmount>5</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>5</pAtkAmount>
|
<pAtkAmount>5</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -220,8 +220,8 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<accuracyAmount>1</accuracyAmount>
|
<pAccuracyAmount>1</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -303,8 +303,8 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<accuracyAmount>1</accuracyAmount>
|
<pAccuracyAmount>1</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -1819,7 +1819,7 @@
|
|||||||
<minAttackerLevel>1</minAttackerLevel>
|
<minAttackerLevel>1</minAttackerLevel>
|
||||||
<maxAttackerLevel>127</maxAttackerLevel>
|
<maxAttackerLevel>127</maxAttackerLevel>
|
||||||
<minDamage>1</minDamage>
|
<minDamage>1</minDamage>
|
||||||
<chance>2</chance>
|
<chance>4</chance>
|
||||||
<targetType>SELF</targetType>
|
<targetType>SELF</targetType>
|
||||||
<isCritical>true</isCritical>
|
<isCritical>true</isCritical>
|
||||||
<allowWeapons>ALL</allowWeapons>
|
<allowWeapons>ALL</allowWeapons>
|
||||||
|
|||||||
@@ -655,9 +655,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="PhysicalAttackSpeed">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>5</amount>
|
<pAtkSpeedAmount>5</pAtkSpeedAmount>
|
||||||
<mode>PER</mode>
|
<pAtkSpeedMode>PER</pAtkSpeedMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -668,9 +668,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="Accuracy">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>3.9</amount>
|
<pAccuracyAmount>3.9</pAccuracyAmount>
|
||||||
<mode>DIFF</mode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -707,9 +707,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="CriticalDamage">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>340</amount>
|
<pCritDamageAmount>340</pCritDamageAmount>
|
||||||
<mode>DIFF</mode>
|
<pCritDamageMode>DIFF</pCritDamageMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -723,9 +723,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="CriticalRate">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>54.4</amount>
|
<pCritRateAmount>54.4</pCritRateAmount>
|
||||||
<mode>DIFF</mode>
|
<pCritRateMode>DIFF</pCritRateMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -478,7 +478,7 @@
|
|||||||
<value level="3">4</value>
|
<value level="3">4</value>
|
||||||
<value level="4">5</value>
|
<value level="4">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -487,7 +487,7 @@
|
|||||||
<value level="3">4</value>
|
<value level="3">4</value>
|
||||||
<value level="4">5</value>
|
<value level="4">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -1520,11 +1520,11 @@
|
|||||||
<effects>
|
<effects>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>30</pAtkAmount>
|
<pAtkAmount>30</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>30</pAtkAmount>
|
<pAtkAmount>30</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="HitNumber">
|
<effect name="HitNumber">
|
||||||
<amount>5</amount>
|
<amount>5</amount>
|
||||||
|
|||||||
@@ -87,14 +87,13 @@
|
|||||||
</magicLvl>
|
</magicLvl>
|
||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="Speed">
|
<effect name="AttackTrait">
|
||||||
<amount>
|
<BLEED>
|
||||||
<value level="1">5</value>
|
<value level="1">10</value>
|
||||||
<value level="2">6</value>
|
<value level="2">11</value>
|
||||||
<value level="3">7</value>
|
<value level="3">13</value>
|
||||||
<value level="4">10</value>
|
<value level="4">15</value>
|
||||||
</amount>
|
</BLEED>
|
||||||
<mode>DIFF</mode>
|
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="Reuse">
|
<effect name="Reuse">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
@@ -366,30 +366,11 @@
|
|||||||
<effect name="SkillCritical">
|
<effect name="SkillCritical">
|
||||||
<stat>INT</stat>
|
<stat>INT</stat>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
|
||||||
<amount>105</amount>
|
|
||||||
<mode>PER</mode>
|
|
||||||
</effect>
|
|
||||||
<effect name="MAtk">
|
<effect name="MAtk">
|
||||||
<amount>24</amount>
|
<amount>24</amount>
|
||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
|
||||||
<effect name="PAtk">
|
|
||||||
<amount>
|
|
||||||
<value level="1">822</value>
|
|
||||||
<value level="2">953</value>
|
|
||||||
<value level="3">1105</value>
|
|
||||||
<value level="4">1244</value>
|
|
||||||
<value level="5">1409</value>
|
|
||||||
<value level="6">1495</value>
|
|
||||||
<value level="7">1586</value>
|
|
||||||
<value level="8">1683</value>
|
|
||||||
<value level="9">1786</value>
|
|
||||||
<value level="10">1894</value>
|
|
||||||
</amount>
|
|
||||||
<mode>DIFF</mode>
|
|
||||||
<weaponType>
|
<weaponType>
|
||||||
<item>DUALBLUNT</item>
|
<item>BLUNT</item>
|
||||||
</weaponType>
|
</weaponType>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="MAtk">
|
<effect name="MAtk">
|
||||||
@@ -406,26 +387,51 @@
|
|||||||
<value level="10">2478</value>
|
<value level="10">2478</value>
|
||||||
</amount>
|
</amount>
|
||||||
<mode>DIFF</mode>
|
<mode>DIFF</mode>
|
||||||
</effect>
|
|
||||||
<effect name="Accuracy">
|
|
||||||
<amount>4</amount>
|
|
||||||
<mode>DIFF</mode>
|
|
||||||
<weaponType>
|
<weaponType>
|
||||||
<item>DUALBLUNT</item>
|
<item>BLUNT</item>
|
||||||
</weaponType>
|
</weaponType>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="MagicalAttackSpeed">
|
<effect name="MagicalAttackSpeed">
|
||||||
<amount>23</amount>
|
<amount>23</amount>
|
||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
|
<weaponType>
|
||||||
|
<item>BLUNT</item>
|
||||||
|
</weaponType>
|
||||||
|
</effect>
|
||||||
|
<effect name="MagicCriticalRate">
|
||||||
|
<amount>6</amount>
|
||||||
|
<mode>PER</mode>
|
||||||
|
<weaponType>
|
||||||
|
<item>BLUNT</item>
|
||||||
|
</weaponType>
|
||||||
|
</effect>
|
||||||
|
<effect name="TwoHandedBluntBonus">
|
||||||
|
<pAtkAmount>120</pAtkAmount>
|
||||||
|
<pAtkMode>PER</pAtkMode>
|
||||||
|
</effect>
|
||||||
|
<effect name="TwoHandedBluntBonus">
|
||||||
|
<pAtkAmount>
|
||||||
|
<value level="1">822</value>
|
||||||
|
<value level="2">953</value>
|
||||||
|
<value level="3">1105</value>
|
||||||
|
<value level="4">1244</value>
|
||||||
|
<value level="5">1409</value>
|
||||||
|
<value level="6">1495</value>
|
||||||
|
<value level="7">1586</value>
|
||||||
|
<value level="8">1683</value>
|
||||||
|
<value level="9">1786</value>
|
||||||
|
<value level="10">1894</value>
|
||||||
|
</pAtkAmount>
|
||||||
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
|
</effect>
|
||||||
|
<effect name="TwoHandedBluntBonus">
|
||||||
|
<pAccuracyAmount>4</pAccuracyAmount>
|
||||||
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="StatUp">
|
<effect name="StatUp">
|
||||||
<amount>2</amount>
|
<amount>2</amount>
|
||||||
<stat>INT</stat>
|
<stat>INT</stat>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="MagicCriticalRate">
|
|
||||||
<amount>6</amount>
|
|
||||||
<mode>DIFF</mode>
|
|
||||||
</effect>
|
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
<skill id="11252" toLevel="10" name="Superior Robe Mastery">
|
<skill id="11252" toLevel="10" name="Superior Robe Mastery">
|
||||||
@@ -2490,7 +2496,6 @@
|
|||||||
</condition>
|
</condition>
|
||||||
</conditions>
|
</conditions>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="PhysicalAttack" />
|
|
||||||
<effect name="Speed">
|
<effect name="Speed">
|
||||||
<amount>-100</amount>
|
<amount>-100</amount>
|
||||||
<mode>DIFF</mode>
|
<mode>DIFF</mode>
|
||||||
@@ -3421,7 +3426,7 @@
|
|||||||
<abnormalType>LIFE_FORCE_OTHERS</abnormalType>
|
<abnormalType>LIFE_FORCE_OTHERS</abnormalType>
|
||||||
<isMagic>1</isMagic>
|
<isMagic>1</isMagic>
|
||||||
<targetType>SUMMON</targetType>
|
<targetType>SUMMON</targetType>
|
||||||
<affectScope>SUMMON_EXCEPT_MASTER</affectScope>
|
<affectScope>SINGLE</affectScope>
|
||||||
<affectObject>FRIEND</affectObject>
|
<affectObject>FRIEND</affectObject>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="RebalanceHPSummon" />
|
<effect name="RebalanceHPSummon" />
|
||||||
|
|||||||
@@ -686,14 +686,14 @@
|
|||||||
<value level="1">3</value>
|
<value level="1">3</value>
|
||||||
<value level="2">5</value>
|
<value level="2">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
<value level="1">3</value>
|
<value level="1">3</value>
|
||||||
<value level="2">5</value>
|
<value level="2">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PhysicalAttackSpeed">
|
<effect name="PhysicalAttackSpeed">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
+175
-16
@@ -935,22 +935,6 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="PLANT_WEAKNESS">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
@@ -966,6 +950,166 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="HOLD">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
@@ -1393,6 +1537,21 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="DUAL">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
|
|||||||
Vendored
+317
-11
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sdw
|
* @author Sdw, Mobius
|
||||||
*/
|
*/
|
||||||
public class TwoHandedBluntBonus extends AbstractEffect
|
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 static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
private final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
private final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkMode;
|
||||||
|
|
||||||
private final double _accuracyAmount;
|
private final double _mAtkAmount;
|
||||||
private final StatModifierType _accuracyMode;
|
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)
|
public TwoHandedBluntBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
_pAtkAmount = params.getDouble("pAtkAmount", 0);
|
_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);
|
_mAtkAmount = params.getDouble("mAtkAmount", 0);
|
||||||
_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
|
_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
|
@Override
|
||||||
@@ -56,7 +110,7 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
|||||||
{
|
{
|
||||||
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
||||||
{
|
{
|
||||||
switch (_pAtkmode)
|
switch (_pAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
@@ -70,16 +124,268 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_accuracyMode)
|
switch (_mAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
|
effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PER:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+317
-11
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sdw
|
* @author Sdw, Mobius
|
||||||
*/
|
*/
|
||||||
public class TwoHandedSwordBonus extends AbstractEffect
|
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 static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
private final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
private final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkMode;
|
||||||
|
|
||||||
private final double _accuracyAmount;
|
private final double _mAtkAmount;
|
||||||
private final StatModifierType _accuracyMode;
|
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)
|
public TwoHandedSwordBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
_pAtkAmount = params.getDouble("pAtkAmount", 0);
|
_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);
|
_mAtkAmount = params.getDouble("mAtkAmount", 0);
|
||||||
_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
|
_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
|
@Override
|
||||||
@@ -56,7 +110,7 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
|||||||
{
|
{
|
||||||
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
||||||
{
|
{
|
||||||
switch (_pAtkmode)
|
switch (_pAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
@@ -70,16 +124,268 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_accuracyMode)
|
switch (_mAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
|
effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PER:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6698,7 +6698,7 @@
|
|||||||
<value level="6">10</value>
|
<value level="6">10</value>
|
||||||
<value level="7">15</value>
|
<value level="7">15</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -6710,7 +6710,7 @@
|
|||||||
<value level="6">10</value>
|
<value level="6">10</value>
|
||||||
<value level="7">15</value>
|
<value level="7">15</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>15</amount>
|
<amount>15</amount>
|
||||||
|
|||||||
@@ -2922,15 +2922,15 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>10</pAtkAmount>
|
<pAtkAmount>10</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>8</accuracyAmount>
|
<pAccuracyAmount>8</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>10</pAtkAmount>
|
<pAtkAmount>10</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>8</accuracyAmount>
|
<pAccuracyAmount>8</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>10</amount>
|
<amount>10</amount>
|
||||||
|
|||||||
@@ -6447,9 +6447,9 @@
|
|||||||
<value level="19">122.1</value>
|
<value level="19">122.1</value>
|
||||||
<value level="20">129.3</value>
|
<value level="20">129.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>3</accuracyAmount>
|
<pAccuracyAmount>3</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -910,7 +910,7 @@
|
|||||||
<value level="5">7.4</value>
|
<value level="5">7.4</value>
|
||||||
<value level="6">8.3</value>
|
<value level="6">8.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -921,7 +921,7 @@
|
|||||||
<value level="5">7.4</value>
|
<value level="5">7.4</value>
|
||||||
<value level="6">8.3</value>
|
<value level="6">8.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>
|
<amount>
|
||||||
@@ -1225,11 +1225,11 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>5</pAtkAmount>
|
<pAtkAmount>5</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>5</pAtkAmount>
|
<pAtkAmount>5</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -220,8 +220,8 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<accuracyAmount>1</accuracyAmount>
|
<pAccuracyAmount>1</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -303,8 +303,8 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<accuracyAmount>1</accuracyAmount>
|
<pAccuracyAmount>1</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -1819,7 +1819,7 @@
|
|||||||
<minAttackerLevel>1</minAttackerLevel>
|
<minAttackerLevel>1</minAttackerLevel>
|
||||||
<maxAttackerLevel>127</maxAttackerLevel>
|
<maxAttackerLevel>127</maxAttackerLevel>
|
||||||
<minDamage>1</minDamage>
|
<minDamage>1</minDamage>
|
||||||
<chance>2</chance>
|
<chance>4</chance>
|
||||||
<targetType>SELF</targetType>
|
<targetType>SELF</targetType>
|
||||||
<isCritical>true</isCritical>
|
<isCritical>true</isCritical>
|
||||||
<allowWeapons>ALL</allowWeapons>
|
<allowWeapons>ALL</allowWeapons>
|
||||||
|
|||||||
@@ -655,9 +655,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="PhysicalAttackSpeed">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>5</amount>
|
<pAtkSpeedAmount>5</pAtkSpeedAmount>
|
||||||
<mode>PER</mode>
|
<pAtkSpeedMode>PER</pAtkSpeedMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -668,9 +668,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="Accuracy">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>3.9</amount>
|
<pAccuracyAmount>3.9</pAccuracyAmount>
|
||||||
<mode>DIFF</mode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -707,9 +707,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="CriticalDamage">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>340</amount>
|
<pCritDamageAmount>340</pCritDamageAmount>
|
||||||
<mode>DIFF</mode>
|
<pCritDamageMode>DIFF</pCritDamageMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -723,9 +723,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="CriticalRate">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>54.4</amount>
|
<pCritRateAmount>54.4</pCritRateAmount>
|
||||||
<mode>DIFF</mode>
|
<pCritRateMode>DIFF</pCritRateMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -479,7 +479,7 @@
|
|||||||
<value level="3">4</value>
|
<value level="3">4</value>
|
||||||
<value level="4">5</value>
|
<value level="4">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -488,7 +488,7 @@
|
|||||||
<value level="3">4</value>
|
<value level="3">4</value>
|
||||||
<value level="4">5</value>
|
<value level="4">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -1521,11 +1521,11 @@
|
|||||||
<effects>
|
<effects>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>30</pAtkAmount>
|
<pAtkAmount>30</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>30</pAtkAmount>
|
<pAtkAmount>30</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="HitNumber">
|
<effect name="HitNumber">
|
||||||
<amount>5</amount>
|
<amount>5</amount>
|
||||||
|
|||||||
@@ -87,14 +87,13 @@
|
|||||||
</magicLvl>
|
</magicLvl>
|
||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="Speed">
|
<effect name="AttackTrait">
|
||||||
<amount>
|
<BLEED>
|
||||||
<value level="1">5</value>
|
<value level="1">10</value>
|
||||||
<value level="2">6</value>
|
<value level="2">11</value>
|
||||||
<value level="3">7</value>
|
<value level="3">13</value>
|
||||||
<value level="4">10</value>
|
<value level="4">15</value>
|
||||||
</amount>
|
</BLEED>
|
||||||
<mode>DIFF</mode>
|
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="Reuse">
|
<effect name="Reuse">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
@@ -101,7 +101,7 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="DefenceCriticalDamage">
|
<effect name="DefenceCriticalDamage">
|
||||||
<amount>25</amount>
|
<amount>-25</amount>
|
||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="DefenceTrait">
|
<effect name="DefenceTrait">
|
||||||
@@ -390,30 +390,11 @@
|
|||||||
<effect name="SkillCritical">
|
<effect name="SkillCritical">
|
||||||
<stat>INT</stat>
|
<stat>INT</stat>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
|
||||||
<amount>105</amount>
|
|
||||||
<mode>PER</mode>
|
|
||||||
</effect>
|
|
||||||
<effect name="MAtk">
|
<effect name="MAtk">
|
||||||
<amount>24</amount>
|
<amount>24</amount>
|
||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
|
||||||
<effect name="PAtk">
|
|
||||||
<amount>
|
|
||||||
<value level="1">822</value>
|
|
||||||
<value level="2">953</value>
|
|
||||||
<value level="3">1105</value>
|
|
||||||
<value level="4">1244</value>
|
|
||||||
<value level="5">1409</value>
|
|
||||||
<value level="6">1495</value>
|
|
||||||
<value level="7">1586</value>
|
|
||||||
<value level="8">1683</value>
|
|
||||||
<value level="9">1786</value>
|
|
||||||
<value level="10">1894</value>
|
|
||||||
</amount>
|
|
||||||
<mode>DIFF</mode>
|
|
||||||
<weaponType>
|
<weaponType>
|
||||||
<item>DUALBLUNT</item>
|
<item>BLUNT</item>
|
||||||
</weaponType>
|
</weaponType>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="MAtk">
|
<effect name="MAtk">
|
||||||
@@ -430,26 +411,51 @@
|
|||||||
<value level="10">2478</value>
|
<value level="10">2478</value>
|
||||||
</amount>
|
</amount>
|
||||||
<mode>DIFF</mode>
|
<mode>DIFF</mode>
|
||||||
</effect>
|
|
||||||
<effect name="Accuracy">
|
|
||||||
<amount>4</amount>
|
|
||||||
<mode>DIFF</mode>
|
|
||||||
<weaponType>
|
<weaponType>
|
||||||
<item>DUALBLUNT</item>
|
<item>BLUNT</item>
|
||||||
</weaponType>
|
</weaponType>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="MagicalAttackSpeed">
|
<effect name="MagicalAttackSpeed">
|
||||||
<amount>23</amount>
|
<amount>23</amount>
|
||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
|
<weaponType>
|
||||||
|
<item>BLUNT</item>
|
||||||
|
</weaponType>
|
||||||
|
</effect>
|
||||||
|
<effect name="MagicCriticalRate">
|
||||||
|
<amount>6</amount>
|
||||||
|
<mode>PER</mode>
|
||||||
|
<weaponType>
|
||||||
|
<item>BLUNT</item>
|
||||||
|
</weaponType>
|
||||||
|
</effect>
|
||||||
|
<effect name="TwoHandedBluntBonus">
|
||||||
|
<pAtkAmount>120</pAtkAmount>
|
||||||
|
<pAtkMode>PER</pAtkMode>
|
||||||
|
</effect>
|
||||||
|
<effect name="TwoHandedBluntBonus">
|
||||||
|
<pAtkAmount>
|
||||||
|
<value level="1">822</value>
|
||||||
|
<value level="2">953</value>
|
||||||
|
<value level="3">1105</value>
|
||||||
|
<value level="4">1244</value>
|
||||||
|
<value level="5">1409</value>
|
||||||
|
<value level="6">1495</value>
|
||||||
|
<value level="7">1586</value>
|
||||||
|
<value level="8">1683</value>
|
||||||
|
<value level="9">1786</value>
|
||||||
|
<value level="10">1894</value>
|
||||||
|
</pAtkAmount>
|
||||||
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
|
</effect>
|
||||||
|
<effect name="TwoHandedBluntBonus">
|
||||||
|
<pAccuracyAmount>4</pAccuracyAmount>
|
||||||
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="StatUp">
|
<effect name="StatUp">
|
||||||
<amount>2</amount>
|
<amount>2</amount>
|
||||||
<stat>INT</stat>
|
<stat>INT</stat>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="MagicCriticalRate">
|
|
||||||
<amount>6</amount>
|
|
||||||
<mode>DIFF</mode>
|
|
||||||
</effect>
|
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
<skill id="11252" toLevel="10" name="Superior Robe Mastery">
|
<skill id="11252" toLevel="10" name="Superior Robe Mastery">
|
||||||
@@ -2515,7 +2521,6 @@
|
|||||||
</condition>
|
</condition>
|
||||||
</conditions>
|
</conditions>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="PhysicalAttack" />
|
|
||||||
<effect name="Speed">
|
<effect name="Speed">
|
||||||
<amount>-100</amount>
|
<amount>-100</amount>
|
||||||
<mode>DIFF</mode>
|
<mode>DIFF</mode>
|
||||||
@@ -3446,7 +3451,7 @@
|
|||||||
<abnormalType>LIFE_FORCE_OTHERS</abnormalType>
|
<abnormalType>LIFE_FORCE_OTHERS</abnormalType>
|
||||||
<isMagic>1</isMagic>
|
<isMagic>1</isMagic>
|
||||||
<targetType>SUMMON</targetType>
|
<targetType>SUMMON</targetType>
|
||||||
<affectScope>SUMMON_EXCEPT_MASTER</affectScope>
|
<affectScope>SINGLE</affectScope>
|
||||||
<affectObject>FRIEND</affectObject>
|
<affectObject>FRIEND</affectObject>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="RebalanceHPSummon" />
|
<effect name="RebalanceHPSummon" />
|
||||||
|
|||||||
@@ -686,14 +686,14 @@
|
|||||||
<value level="1">3</value>
|
<value level="1">3</value>
|
||||||
<value level="2">5</value>
|
<value level="2">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
<value level="1">3</value>
|
<value level="1">3</value>
|
||||||
<value level="2">5</value>
|
<value level="2">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PhysicalAttackSpeed">
|
<effect name="PhysicalAttackSpeed">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
+175
-16
@@ -967,22 +967,6 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="PLANT_WEAKNESS">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
@@ -998,6 +982,166 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="HOLD">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
@@ -1425,6 +1569,21 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="DUAL">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
|
|||||||
Vendored
+317
-11
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sdw
|
* @author Sdw, Mobius
|
||||||
*/
|
*/
|
||||||
public class TwoHandedBluntBonus extends AbstractEffect
|
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 static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
private final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
private final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkMode;
|
||||||
|
|
||||||
private final double _accuracyAmount;
|
private final double _mAtkAmount;
|
||||||
private final StatModifierType _accuracyMode;
|
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)
|
public TwoHandedBluntBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
_pAtkAmount = params.getDouble("pAtkAmount", 0);
|
_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);
|
_mAtkAmount = params.getDouble("mAtkAmount", 0);
|
||||||
_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
|
_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
|
@Override
|
||||||
@@ -56,7 +110,7 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
|||||||
{
|
{
|
||||||
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
||||||
{
|
{
|
||||||
switch (_pAtkmode)
|
switch (_pAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
@@ -70,16 +124,268 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_accuracyMode)
|
switch (_mAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
|
effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PER:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+317
-11
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sdw
|
* @author Sdw, Mobius
|
||||||
*/
|
*/
|
||||||
public class TwoHandedSwordBonus extends AbstractEffect
|
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 static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
private final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
private final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkMode;
|
||||||
|
|
||||||
private final double _accuracyAmount;
|
private final double _mAtkAmount;
|
||||||
private final StatModifierType _accuracyMode;
|
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)
|
public TwoHandedSwordBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
_pAtkAmount = params.getDouble("pAtkAmount", 0);
|
_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);
|
_mAtkAmount = params.getDouble("mAtkAmount", 0);
|
||||||
_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
|
_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
|
@Override
|
||||||
@@ -56,7 +110,7 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
|||||||
{
|
{
|
||||||
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
||||||
{
|
{
|
||||||
switch (_pAtkmode)
|
switch (_pAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
@@ -70,16 +124,268 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_accuracyMode)
|
switch (_mAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
|
effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PER:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6698,7 +6698,7 @@
|
|||||||
<value level="6">10</value>
|
<value level="6">10</value>
|
||||||
<value level="7">15</value>
|
<value level="7">15</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -6710,7 +6710,7 @@
|
|||||||
<value level="6">10</value>
|
<value level="6">10</value>
|
||||||
<value level="7">15</value>
|
<value level="7">15</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>15</amount>
|
<amount>15</amount>
|
||||||
|
|||||||
@@ -2933,15 +2933,15 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>10</pAtkAmount>
|
<pAtkAmount>10</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>8</accuracyAmount>
|
<pAccuracyAmount>8</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>10</pAtkAmount>
|
<pAtkAmount>10</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>8</accuracyAmount>
|
<pAccuracyAmount>8</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>10</amount>
|
<amount>10</amount>
|
||||||
|
|||||||
@@ -6475,9 +6475,9 @@
|
|||||||
<value level="19">122.1</value>
|
<value level="19">122.1</value>
|
||||||
<value level="20">129.3</value>
|
<value level="20">129.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>3</accuracyAmount>
|
<pAccuracyAmount>3</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -910,7 +910,7 @@
|
|||||||
<value level="5">7.4</value>
|
<value level="5">7.4</value>
|
||||||
<value level="6">8.3</value>
|
<value level="6">8.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -921,7 +921,7 @@
|
|||||||
<value level="5">7.4</value>
|
<value level="5">7.4</value>
|
||||||
<value level="6">8.3</value>
|
<value level="6">8.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>
|
<amount>
|
||||||
@@ -1225,11 +1225,11 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>5</pAtkAmount>
|
<pAtkAmount>5</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>5</pAtkAmount>
|
<pAtkAmount>5</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -220,8 +220,8 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<accuracyAmount>1</accuracyAmount>
|
<pAccuracyAmount>1</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -303,8 +303,8 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<accuracyAmount>1</accuracyAmount>
|
<pAccuracyAmount>1</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -1819,7 +1819,7 @@
|
|||||||
<minAttackerLevel>1</minAttackerLevel>
|
<minAttackerLevel>1</minAttackerLevel>
|
||||||
<maxAttackerLevel>127</maxAttackerLevel>
|
<maxAttackerLevel>127</maxAttackerLevel>
|
||||||
<minDamage>1</minDamage>
|
<minDamage>1</minDamage>
|
||||||
<chance>2</chance>
|
<chance>4</chance>
|
||||||
<targetType>SELF</targetType>
|
<targetType>SELF</targetType>
|
||||||
<isCritical>true</isCritical>
|
<isCritical>true</isCritical>
|
||||||
<allowWeapons>ALL</allowWeapons>
|
<allowWeapons>ALL</allowWeapons>
|
||||||
|
|||||||
@@ -655,9 +655,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="PhysicalAttackSpeed">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>5</amount>
|
<pAtkSpeedAmount>5</pAtkSpeedAmount>
|
||||||
<mode>PER</mode>
|
<pAtkSpeedMode>PER</pAtkSpeedMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -668,9 +668,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="Accuracy">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>3.9</amount>
|
<pAccuracyAmount>3.9</pAccuracyAmount>
|
||||||
<mode>DIFF</mode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -707,9 +707,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="CriticalDamage">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>340</amount>
|
<pCritDamageAmount>340</pCritDamageAmount>
|
||||||
<mode>DIFF</mode>
|
<pCritDamageMode>DIFF</pCritDamageMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -723,9 +723,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="CriticalRate">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>54.4</amount>
|
<pCritRateAmount>54.4</pCritRateAmount>
|
||||||
<mode>DIFF</mode>
|
<pCritRateMode>DIFF</pCritRateMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -476,7 +476,7 @@
|
|||||||
<value level="3">4</value>
|
<value level="3">4</value>
|
||||||
<value level="4">5</value>
|
<value level="4">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -485,7 +485,7 @@
|
|||||||
<value level="3">4</value>
|
<value level="3">4</value>
|
||||||
<value level="4">5</value>
|
<value level="4">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -1534,11 +1534,11 @@
|
|||||||
<effects>
|
<effects>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>30</pAtkAmount>
|
<pAtkAmount>30</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>30</pAtkAmount>
|
<pAtkAmount>30</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="HitNumber">
|
<effect name="HitNumber">
|
||||||
<amount>5</amount>
|
<amount>5</amount>
|
||||||
|
|||||||
@@ -87,14 +87,13 @@
|
|||||||
</magicLvl>
|
</magicLvl>
|
||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="Speed">
|
<effect name="AttackTrait">
|
||||||
<amount>
|
<BLEED>
|
||||||
<value level="1">5</value>
|
<value level="1">10</value>
|
||||||
<value level="2">6</value>
|
<value level="2">11</value>
|
||||||
<value level="3">7</value>
|
<value level="3">13</value>
|
||||||
<value level="4">10</value>
|
<value level="4">15</value>
|
||||||
</amount>
|
</BLEED>
|
||||||
<mode>DIFF</mode>
|
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="Reuse">
|
<effect name="Reuse">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
@@ -101,7 +101,7 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="DefenceCriticalDamage">
|
<effect name="DefenceCriticalDamage">
|
||||||
<amount>25</amount>
|
<amount>-25</amount>
|
||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="DefenceTrait">
|
<effect name="DefenceTrait">
|
||||||
@@ -381,30 +381,11 @@
|
|||||||
<effect name="SkillCritical">
|
<effect name="SkillCritical">
|
||||||
<stat>INT</stat>
|
<stat>INT</stat>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
|
||||||
<amount>105</amount>
|
|
||||||
<mode>PER</mode>
|
|
||||||
</effect>
|
|
||||||
<effect name="MAtk">
|
<effect name="MAtk">
|
||||||
<amount>24</amount>
|
<amount>24</amount>
|
||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
|
||||||
<effect name="PAtk">
|
|
||||||
<amount>
|
|
||||||
<value level="1">822</value>
|
|
||||||
<value level="2">953</value>
|
|
||||||
<value level="3">1105</value>
|
|
||||||
<value level="4">1244</value>
|
|
||||||
<value level="5">1409</value>
|
|
||||||
<value level="6">1495</value>
|
|
||||||
<value level="7">1586</value>
|
|
||||||
<value level="8">1683</value>
|
|
||||||
<value level="9">1786</value>
|
|
||||||
<value level="10">1894</value>
|
|
||||||
</amount>
|
|
||||||
<mode>DIFF</mode>
|
|
||||||
<weaponType>
|
<weaponType>
|
||||||
<item>DUALBLUNT</item>
|
<item>BLUNT</item>
|
||||||
</weaponType>
|
</weaponType>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="MAtk">
|
<effect name="MAtk">
|
||||||
@@ -421,26 +402,51 @@
|
|||||||
<value level="10">2478</value>
|
<value level="10">2478</value>
|
||||||
</amount>
|
</amount>
|
||||||
<mode>DIFF</mode>
|
<mode>DIFF</mode>
|
||||||
</effect>
|
|
||||||
<effect name="Accuracy">
|
|
||||||
<amount>4</amount>
|
|
||||||
<mode>DIFF</mode>
|
|
||||||
<weaponType>
|
<weaponType>
|
||||||
<item>DUALBLUNT</item>
|
<item>BLUNT</item>
|
||||||
</weaponType>
|
</weaponType>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="MagicalAttackSpeed">
|
<effect name="MagicalAttackSpeed">
|
||||||
<amount>23</amount>
|
<amount>23</amount>
|
||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
|
<weaponType>
|
||||||
|
<item>BLUNT</item>
|
||||||
|
</weaponType>
|
||||||
|
</effect>
|
||||||
|
<effect name="MagicCriticalRate">
|
||||||
|
<amount>6</amount>
|
||||||
|
<mode>PER</mode>
|
||||||
|
<weaponType>
|
||||||
|
<item>BLUNT</item>
|
||||||
|
</weaponType>
|
||||||
|
</effect>
|
||||||
|
<effect name="TwoHandedBluntBonus">
|
||||||
|
<pAtkAmount>120</pAtkAmount>
|
||||||
|
<pAtkMode>PER</pAtkMode>
|
||||||
|
</effect>
|
||||||
|
<effect name="TwoHandedBluntBonus">
|
||||||
|
<pAtkAmount>
|
||||||
|
<value level="1">822</value>
|
||||||
|
<value level="2">953</value>
|
||||||
|
<value level="3">1105</value>
|
||||||
|
<value level="4">1244</value>
|
||||||
|
<value level="5">1409</value>
|
||||||
|
<value level="6">1495</value>
|
||||||
|
<value level="7">1586</value>
|
||||||
|
<value level="8">1683</value>
|
||||||
|
<value level="9">1786</value>
|
||||||
|
<value level="10">1894</value>
|
||||||
|
</pAtkAmount>
|
||||||
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
|
</effect>
|
||||||
|
<effect name="TwoHandedBluntBonus">
|
||||||
|
<pAccuracyAmount>4</pAccuracyAmount>
|
||||||
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="StatUp">
|
<effect name="StatUp">
|
||||||
<amount>2</amount>
|
<amount>2</amount>
|
||||||
<stat>INT</stat>
|
<stat>INT</stat>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="MagicCriticalRate">
|
|
||||||
<amount>6</amount>
|
|
||||||
<mode>DIFF</mode>
|
|
||||||
</effect>
|
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
<skill id="11252" toLevel="10" name="Superior Robe Mastery">
|
<skill id="11252" toLevel="10" name="Superior Robe Mastery">
|
||||||
@@ -1320,7 +1326,6 @@
|
|||||||
<!-- Creates a Danger Zone for $s1. The summoned Danger Zone continuously inflicts damage and Hold on nearby enemies. -->
|
<!-- Creates a Danger Zone for $s1. The summoned Danger Zone continuously inflicts damage and Hold on nearby enemies. -->
|
||||||
<icon>icon.skill11266</icon>
|
<icon>icon.skill11266</icon>
|
||||||
<operateType>A1</operateType>
|
<operateType>A1</operateType>
|
||||||
<effectPoint>-676</effectPoint>
|
|
||||||
<magicLvl>
|
<magicLvl>
|
||||||
<value level="1">99</value>
|
<value level="1">99</value>
|
||||||
<value level="2">101</value>
|
<value level="2">101</value>
|
||||||
@@ -3357,7 +3362,7 @@
|
|||||||
<abnormalType>LIFE_FORCE_OTHERS</abnormalType>
|
<abnormalType>LIFE_FORCE_OTHERS</abnormalType>
|
||||||
<isMagic>1</isMagic>
|
<isMagic>1</isMagic>
|
||||||
<targetType>SUMMON</targetType>
|
<targetType>SUMMON</targetType>
|
||||||
<affectScope>SUMMON_EXCEPT_MASTER</affectScope>
|
<affectScope>SINGLE</affectScope>
|
||||||
<affectObject>FRIEND</affectObject>
|
<affectObject>FRIEND</affectObject>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="RebalanceHPSummon" />
|
<effect name="RebalanceHPSummon" />
|
||||||
|
|||||||
@@ -686,14 +686,14 @@
|
|||||||
<value level="1">3</value>
|
<value level="1">3</value>
|
||||||
<value level="2">5</value>
|
<value level="2">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
<value level="1">3</value>
|
<value level="1">3</value>
|
||||||
<value level="2">5</value>
|
<value level="2">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PhysicalAttackSpeed">
|
<effect name="PhysicalAttackSpeed">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
+175
-16
@@ -969,22 +969,6 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="PLANT_WEAKNESS">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
@@ -1000,6 +984,166 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="HOLD">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
@@ -1441,6 +1585,21 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="DUAL">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
|
|||||||
Vendored
+317
-11
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sdw
|
* @author Sdw, Mobius
|
||||||
*/
|
*/
|
||||||
public class TwoHandedBluntBonus extends AbstractEffect
|
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 static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
private final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
private final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkMode;
|
||||||
|
|
||||||
private final double _accuracyAmount;
|
private final double _mAtkAmount;
|
||||||
private final StatModifierType _accuracyMode;
|
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)
|
public TwoHandedBluntBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
_pAtkAmount = params.getDouble("pAtkAmount", 0);
|
_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);
|
_mAtkAmount = params.getDouble("mAtkAmount", 0);
|
||||||
_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
|
_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
|
@Override
|
||||||
@@ -56,7 +110,7 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
|||||||
{
|
{
|
||||||
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
||||||
{
|
{
|
||||||
switch (_pAtkmode)
|
switch (_pAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
@@ -70,16 +124,268 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_accuracyMode)
|
switch (_mAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
|
effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PER:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+317
-11
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sdw
|
* @author Sdw, Mobius
|
||||||
*/
|
*/
|
||||||
public class TwoHandedSwordBonus extends AbstractEffect
|
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 static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
private final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
private final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkMode;
|
||||||
|
|
||||||
private final double _accuracyAmount;
|
private final double _mAtkAmount;
|
||||||
private final StatModifierType _accuracyMode;
|
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)
|
public TwoHandedSwordBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
_pAtkAmount = params.getDouble("pAtkAmount", 0);
|
_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);
|
_mAtkAmount = params.getDouble("mAtkAmount", 0);
|
||||||
_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
|
_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
|
@Override
|
||||||
@@ -56,7 +110,7 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
|||||||
{
|
{
|
||||||
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
||||||
{
|
{
|
||||||
switch (_pAtkmode)
|
switch (_pAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
@@ -70,16 +124,268 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_accuracyMode)
|
switch (_mAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
|
effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PER:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6698,7 +6698,7 @@
|
|||||||
<value level="6">10</value>
|
<value level="6">10</value>
|
||||||
<value level="7">15</value>
|
<value level="7">15</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -6710,7 +6710,7 @@
|
|||||||
<value level="6">10</value>
|
<value level="6">10</value>
|
||||||
<value level="7">15</value>
|
<value level="7">15</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>15</amount>
|
<amount>15</amount>
|
||||||
|
|||||||
@@ -2933,15 +2933,15 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>10</pAtkAmount>
|
<pAtkAmount>10</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>8</accuracyAmount>
|
<pAccuracyAmount>8</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>10</pAtkAmount>
|
<pAtkAmount>10</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>8</accuracyAmount>
|
<pAccuracyAmount>8</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>10</amount>
|
<amount>10</amount>
|
||||||
|
|||||||
@@ -6475,9 +6475,9 @@
|
|||||||
<value level="19">122.1</value>
|
<value level="19">122.1</value>
|
||||||
<value level="20">129.3</value>
|
<value level="20">129.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>3</accuracyAmount>
|
<pAccuracyAmount>3</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -910,7 +910,7 @@
|
|||||||
<value level="5">7.4</value>
|
<value level="5">7.4</value>
|
||||||
<value level="6">8.3</value>
|
<value level="6">8.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -921,7 +921,7 @@
|
|||||||
<value level="5">7.4</value>
|
<value level="5">7.4</value>
|
||||||
<value level="6">8.3</value>
|
<value level="6">8.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>
|
<amount>
|
||||||
@@ -1225,11 +1225,11 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>5</pAtkAmount>
|
<pAtkAmount>5</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>5</pAtkAmount>
|
<pAtkAmount>5</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -220,8 +220,8 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<accuracyAmount>1</accuracyAmount>
|
<pAccuracyAmount>1</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -303,8 +303,8 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<accuracyAmount>1</accuracyAmount>
|
<pAccuracyAmount>1</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -1819,7 +1819,7 @@
|
|||||||
<minAttackerLevel>1</minAttackerLevel>
|
<minAttackerLevel>1</minAttackerLevel>
|
||||||
<maxAttackerLevel>127</maxAttackerLevel>
|
<maxAttackerLevel>127</maxAttackerLevel>
|
||||||
<minDamage>1</minDamage>
|
<minDamage>1</minDamage>
|
||||||
<chance>2</chance>
|
<chance>4</chance>
|
||||||
<targetType>SELF</targetType>
|
<targetType>SELF</targetType>
|
||||||
<isCritical>true</isCritical>
|
<isCritical>true</isCritical>
|
||||||
<allowWeapons>ALL</allowWeapons>
|
<allowWeapons>ALL</allowWeapons>
|
||||||
|
|||||||
@@ -655,9 +655,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="PhysicalAttackSpeed">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>5</amount>
|
<pAtkSpeedAmount>5</pAtkSpeedAmount>
|
||||||
<mode>PER</mode>
|
<pAtkSpeedMode>PER</pAtkSpeedMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -668,9 +668,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="Accuracy">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>3.9</amount>
|
<pAccuracyAmount>3.9</pAccuracyAmount>
|
||||||
<mode>DIFF</mode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -707,9 +707,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="CriticalDamage">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>340</amount>
|
<pCritDamageAmount>340</pCritDamageAmount>
|
||||||
<mode>DIFF</mode>
|
<pCritDamageMode>DIFF</pCritDamageMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -723,9 +723,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="CriticalRate">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>54.4</amount>
|
<pCritRateAmount>54.4</pCritRateAmount>
|
||||||
<mode>DIFF</mode>
|
<pCritRateMode>DIFF</pCritRateMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -1428,14 +1428,9 @@
|
|||||||
<basicProperty>NONE</basicProperty>
|
<basicProperty>NONE</basicProperty>
|
||||||
<hitCancelTime>0</hitCancelTime>
|
<hitCancelTime>0</hitCancelTime>
|
||||||
<reuseDelay>300000</reuseDelay>
|
<reuseDelay>300000</reuseDelay>
|
||||||
<targetType>OTHERS</targetType>
|
<targetType>SELF</targetType>
|
||||||
<affectScope>PARTY</affectScope>
|
<affectScope>PARTY</affectScope>
|
||||||
<affectObject>FRIEND_PC</affectObject>
|
<affectObject>FRIEND_PC</affectObject>
|
||||||
<conditions>
|
|
||||||
<condition name="TargetMyParty">
|
|
||||||
<includeMe>false</includeMe>
|
|
||||||
</condition>
|
|
||||||
</conditions>
|
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="TransferDamageToPlayer">
|
<effect name="TransferDamageToPlayer">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
@@ -476,7 +476,7 @@
|
|||||||
<value level="3">4</value>
|
<value level="3">4</value>
|
||||||
<value level="4">5</value>
|
<value level="4">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -485,7 +485,7 @@
|
|||||||
<value level="3">4</value>
|
<value level="3">4</value>
|
||||||
<value level="4">5</value>
|
<value level="4">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -1547,11 +1547,11 @@
|
|||||||
<effects>
|
<effects>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>30</pAtkAmount>
|
<pAtkAmount>30</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>30</pAtkAmount>
|
<pAtkAmount>30</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="HitNumber">
|
<effect name="HitNumber">
|
||||||
<amount>5</amount>
|
<amount>5</amount>
|
||||||
|
|||||||
@@ -87,14 +87,13 @@
|
|||||||
</magicLvl>
|
</magicLvl>
|
||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="Speed">
|
<effect name="AttackTrait">
|
||||||
<amount>
|
<BLEED>
|
||||||
<value level="1">5</value>
|
<value level="1">10</value>
|
||||||
<value level="2">6</value>
|
<value level="2">11</value>
|
||||||
<value level="3">7</value>
|
<value level="3">13</value>
|
||||||
<value level="4">10</value>
|
<value level="4">15</value>
|
||||||
</amount>
|
</BLEED>
|
||||||
<mode>DIFF</mode>
|
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="Reuse">
|
<effect name="Reuse">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
@@ -429,7 +429,7 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>120</pAtkAmount>
|
<pAtkAmount>120</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -444,11 +444,11 @@
|
|||||||
<value level="9">1786</value>
|
<value level="9">1786</value>
|
||||||
<value level="10">1894</value>
|
<value level="10">1894</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<accuracyAmount>4</accuracyAmount>
|
<pAccuracyAmount>4</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="StatUp">
|
<effect name="StatUp">
|
||||||
<amount>2</amount>
|
<amount>2</amount>
|
||||||
|
|||||||
@@ -686,14 +686,14 @@
|
|||||||
<value level="1">3</value>
|
<value level="1">3</value>
|
||||||
<value level="2">5</value>
|
<value level="2">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
<value level="1">3</value>
|
<value level="1">3</value>
|
||||||
<value level="2">5</value>
|
<value level="2">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PhysicalAttackSpeed">
|
<effect name="PhysicalAttackSpeed">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
+175
-18
@@ -872,22 +872,6 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="PLANT_WEAKNESS">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
@@ -903,6 +887,166 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="HOLD">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
@@ -1006,8 +1150,6 @@
|
|||||||
<xs:attribute name="level" type="xs:unsignedByte" use="optional" />
|
<xs:attribute name="level" type="xs:unsignedByte" use="optional" />
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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="hpPercent" type="xs:unsignedByte" />
|
||||||
<xs:element name="attribute" type="xs:string" />
|
<xs:element name="attribute" type="xs:string" />
|
||||||
<xs:element name="attackerType" type="xs:string" />
|
<xs:element name="attackerType" type="xs:string" />
|
||||||
@@ -1345,6 +1487,21 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="DUAL">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
|
|||||||
Vendored
+317
-11
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sdw
|
* @author Sdw, Mobius
|
||||||
*/
|
*/
|
||||||
public class TwoHandedBluntBonus extends AbstractEffect
|
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 static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
private final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
private final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkMode;
|
||||||
|
|
||||||
private final double _accuracyAmount;
|
private final double _mAtkAmount;
|
||||||
private final StatModifierType _accuracyMode;
|
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)
|
public TwoHandedBluntBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
_pAtkAmount = params.getDouble("pAtkAmount", 0);
|
_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);
|
_mAtkAmount = params.getDouble("mAtkAmount", 0);
|
||||||
_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
|
_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
|
@Override
|
||||||
@@ -56,7 +110,7 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
|||||||
{
|
{
|
||||||
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
||||||
{
|
{
|
||||||
switch (_pAtkmode)
|
switch (_pAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
@@ -70,16 +124,268 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_accuracyMode)
|
switch (_mAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
|
effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PER:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+317
-11
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sdw
|
* @author Sdw, Mobius
|
||||||
*/
|
*/
|
||||||
public class TwoHandedSwordBonus extends AbstractEffect
|
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 static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
private final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
private final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkMode;
|
||||||
|
|
||||||
private final double _accuracyAmount;
|
private final double _mAtkAmount;
|
||||||
private final StatModifierType _accuracyMode;
|
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)
|
public TwoHandedSwordBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
_pAtkAmount = params.getDouble("pAtkAmount", 0);
|
_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);
|
_mAtkAmount = params.getDouble("mAtkAmount", 0);
|
||||||
_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
|
_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
|
@Override
|
||||||
@@ -56,7 +110,7 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
|||||||
{
|
{
|
||||||
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
||||||
{
|
{
|
||||||
switch (_pAtkmode)
|
switch (_pAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
@@ -70,16 +124,268 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_accuracyMode)
|
switch (_mAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
|
effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PER:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6699,7 +6699,7 @@
|
|||||||
<value level="6">10</value>
|
<value level="6">10</value>
|
||||||
<value level="7">15</value>
|
<value level="7">15</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -6711,7 +6711,7 @@
|
|||||||
<value level="6">10</value>
|
<value level="6">10</value>
|
||||||
<value level="7">15</value>
|
<value level="7">15</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>15</amount>
|
<amount>15</amount>
|
||||||
|
|||||||
@@ -2933,15 +2933,15 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>10</pAtkAmount>
|
<pAtkAmount>10</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>8</accuracyAmount>
|
<pAccuracyAmount>8</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>10</pAtkAmount>
|
<pAtkAmount>10</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>8</accuracyAmount>
|
<pAccuracyAmount>8</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>10</amount>
|
<amount>10</amount>
|
||||||
|
|||||||
@@ -6475,9 +6475,9 @@
|
|||||||
<value level="19">122.1</value>
|
<value level="19">122.1</value>
|
||||||
<value level="20">129.3</value>
|
<value level="20">129.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>3</accuracyAmount>
|
<pAccuracyAmount>3</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -910,7 +910,7 @@
|
|||||||
<value level="5">7.4</value>
|
<value level="5">7.4</value>
|
||||||
<value level="6">8.3</value>
|
<value level="6">8.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -921,7 +921,7 @@
|
|||||||
<value level="5">7.4</value>
|
<value level="5">7.4</value>
|
||||||
<value level="6">8.3</value>
|
<value level="6">8.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>
|
<amount>
|
||||||
@@ -1225,11 +1225,11 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>5</pAtkAmount>
|
<pAtkAmount>5</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>5</pAtkAmount>
|
<pAtkAmount>5</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -220,8 +220,8 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<accuracyAmount>1</accuracyAmount>
|
<pAccuracyAmount>1</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -303,8 +303,8 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<accuracyAmount>1</accuracyAmount>
|
<pAccuracyAmount>1</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -1837,7 +1837,7 @@
|
|||||||
<minAttackerLevel>1</minAttackerLevel>
|
<minAttackerLevel>1</minAttackerLevel>
|
||||||
<maxAttackerLevel>127</maxAttackerLevel>
|
<maxAttackerLevel>127</maxAttackerLevel>
|
||||||
<minDamage>1</minDamage>
|
<minDamage>1</minDamage>
|
||||||
<chance>2</chance>
|
<chance>4</chance>
|
||||||
<targetType>SELF</targetType>
|
<targetType>SELF</targetType>
|
||||||
<isCritical>true</isCritical>
|
<isCritical>true</isCritical>
|
||||||
<allowWeapons>ALL</allowWeapons>
|
<allowWeapons>ALL</allowWeapons>
|
||||||
|
|||||||
@@ -655,9 +655,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="PhysicalAttackSpeed">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>5</amount>
|
<pAtkSpeedAmount>5</pAtkSpeedAmount>
|
||||||
<mode>PER</mode>
|
<pAtkSpeedMode>PER</pAtkSpeedMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -668,9 +668,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="Accuracy">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>3.9</amount>
|
<pAccuracyAmount>3.9</pAccuracyAmount>
|
||||||
<mode>DIFF</mode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -707,9 +707,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="CriticalDamage">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>340</amount>
|
<pCritDamageAmount>340</pCritDamageAmount>
|
||||||
<mode>DIFF</mode>
|
<pCritDamageMode>DIFF</pCritDamageMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -723,9 +723,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="CriticalRate">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>54.4</amount>
|
<pCritRateAmount>54.4</pCritRateAmount>
|
||||||
<mode>DIFF</mode>
|
<pCritRateMode>DIFF</pCritRateMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -1428,14 +1428,9 @@
|
|||||||
<basicProperty>NONE</basicProperty>
|
<basicProperty>NONE</basicProperty>
|
||||||
<hitCancelTime>0</hitCancelTime>
|
<hitCancelTime>0</hitCancelTime>
|
||||||
<reuseDelay>300000</reuseDelay>
|
<reuseDelay>300000</reuseDelay>
|
||||||
<targetType>OTHERS</targetType>
|
<targetType>SELF</targetType>
|
||||||
<affectScope>PARTY</affectScope>
|
<affectScope>PARTY</affectScope>
|
||||||
<affectObject>FRIEND_PC</affectObject>
|
<affectObject>FRIEND_PC</affectObject>
|
||||||
<conditions>
|
|
||||||
<condition name="TargetMyParty">
|
|
||||||
<includeMe>false</includeMe>
|
|
||||||
</condition>
|
|
||||||
</conditions>
|
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="TransferDamageToPlayer">
|
<effect name="TransferDamageToPlayer">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
@@ -476,7 +476,7 @@
|
|||||||
<value level="3">4</value>
|
<value level="3">4</value>
|
||||||
<value level="4">5</value>
|
<value level="4">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -485,7 +485,7 @@
|
|||||||
<value level="3">4</value>
|
<value level="3">4</value>
|
||||||
<value level="4">5</value>
|
<value level="4">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -1547,11 +1547,11 @@
|
|||||||
<effects>
|
<effects>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>30</pAtkAmount>
|
<pAtkAmount>30</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>30</pAtkAmount>
|
<pAtkAmount>30</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="HitNumber">
|
<effect name="HitNumber">
|
||||||
<amount>5</amount>
|
<amount>5</amount>
|
||||||
|
|||||||
@@ -87,14 +87,13 @@
|
|||||||
</magicLvl>
|
</magicLvl>
|
||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="Speed">
|
<effect name="AttackTrait">
|
||||||
<amount>
|
<BLEED>
|
||||||
<value level="1">5</value>
|
<value level="1">10</value>
|
||||||
<value level="2">6</value>
|
<value level="2">11</value>
|
||||||
<value level="3">7</value>
|
<value level="3">13</value>
|
||||||
<value level="4">10</value>
|
<value level="4">15</value>
|
||||||
</amount>
|
</BLEED>
|
||||||
<mode>DIFF</mode>
|
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="Reuse">
|
<effect name="Reuse">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
@@ -429,7 +429,7 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>120</pAtkAmount>
|
<pAtkAmount>120</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -444,11 +444,11 @@
|
|||||||
<value level="9">1786</value>
|
<value level="9">1786</value>
|
||||||
<value level="10">1894</value>
|
<value level="10">1894</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<accuracyAmount>4</accuracyAmount>
|
<pAccuracyAmount>4</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="StatUp">
|
<effect name="StatUp">
|
||||||
<amount>2</amount>
|
<amount>2</amount>
|
||||||
|
|||||||
@@ -686,14 +686,14 @@
|
|||||||
<value level="1">3</value>
|
<value level="1">3</value>
|
||||||
<value level="2">5</value>
|
<value level="2">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
<value level="1">3</value>
|
<value level="1">3</value>
|
||||||
<value level="2">5</value>
|
<value level="2">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PhysicalAttackSpeed">
|
<effect name="PhysicalAttackSpeed">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
+175
-18
@@ -872,22 +872,6 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="PLANT_WEAKNESS">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
@@ -903,6 +887,166 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="HOLD">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
@@ -1006,8 +1150,6 @@
|
|||||||
<xs:attribute name="level" type="xs:unsignedByte" use="optional" />
|
<xs:attribute name="level" type="xs:unsignedByte" use="optional" />
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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="hpPercent" type="xs:unsignedByte" />
|
||||||
<xs:element name="attribute" type="xs:string" />
|
<xs:element name="attribute" type="xs:string" />
|
||||||
<xs:element name="attackerType" type="xs:string" />
|
<xs:element name="attackerType" type="xs:string" />
|
||||||
@@ -1345,6 +1487,21 @@
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</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:element name="DUAL">
|
||||||
<xs:complexType mixed="true">
|
<xs:complexType mixed="true">
|
||||||
<xs:sequence minOccurs="0">
|
<xs:sequence minOccurs="0">
|
||||||
|
|||||||
Vendored
+317
-11
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sdw
|
* @author Sdw, Mobius
|
||||||
*/
|
*/
|
||||||
public class TwoHandedBluntBonus extends AbstractEffect
|
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 static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
private final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
private final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkMode;
|
||||||
|
|
||||||
private final double _accuracyAmount;
|
private final double _mAtkAmount;
|
||||||
private final StatModifierType _accuracyMode;
|
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)
|
public TwoHandedBluntBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
_pAtkAmount = params.getDouble("pAtkAmount", 0);
|
_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);
|
_mAtkAmount = params.getDouble("mAtkAmount", 0);
|
||||||
_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
|
_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
|
@Override
|
||||||
@@ -56,7 +110,7 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
|||||||
{
|
{
|
||||||
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
||||||
{
|
{
|
||||||
switch (_pAtkmode)
|
switch (_pAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
@@ -70,16 +124,268 @@ public class TwoHandedBluntBonus extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_accuracyMode)
|
switch (_mAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
|
effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PER:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+317
-11
@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
|
|||||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sdw
|
* @author Sdw, Mobius
|
||||||
*/
|
*/
|
||||||
public class TwoHandedSwordBonus extends AbstractEffect
|
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 static final Condition _slotCondition = new ConditionUsingSlotType(Item.SLOT_LR_HAND);
|
||||||
|
|
||||||
private final double _pAtkAmount;
|
private final double _pAtkAmount;
|
||||||
private final StatModifierType _pAtkmode;
|
private final StatModifierType _pAtkMode;
|
||||||
|
|
||||||
private final double _accuracyAmount;
|
private final double _mAtkAmount;
|
||||||
private final StatModifierType _accuracyMode;
|
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)
|
public TwoHandedSwordBonus(StatsSet params)
|
||||||
{
|
{
|
||||||
_pAtkAmount = params.getDouble("pAtkAmount", 0);
|
_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);
|
_mAtkAmount = params.getDouble("mAtkAmount", 0);
|
||||||
_accuracyMode = params.getEnum("accuracyMode", StatModifierType.class, StatModifierType.DIFF);
|
_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
|
@Override
|
||||||
@@ -56,7 +110,7 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
|||||||
{
|
{
|
||||||
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
if (_weaponTypeCondition.test(effected, effected, skill) && _slotCondition.test(effected, effected, skill))
|
||||||
{
|
{
|
||||||
switch (_pAtkmode)
|
switch (_pAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
@@ -70,16 +124,268 @@ public class TwoHandedSwordBonus extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_accuracyMode)
|
switch (_mAtkMode)
|
||||||
{
|
{
|
||||||
case DIFF:
|
case DIFF:
|
||||||
{
|
{
|
||||||
effected.getStat().mergeAdd(Stats.ACCURACY_COMBAT, _accuracyAmount);
|
effected.getStat().mergeAdd(Stats.MAGIC_ATTACK, _mAtkAmount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PER:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6727,7 +6727,7 @@
|
|||||||
<value level="7">15</value>
|
<value level="7">15</value>
|
||||||
<value level="8">20</value>
|
<value level="8">20</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -6740,7 +6740,7 @@
|
|||||||
<value level="7">15</value>
|
<value level="7">15</value>
|
||||||
<value level="8">20</value>
|
<value level="8">20</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>15</amount>
|
<amount>15</amount>
|
||||||
|
|||||||
@@ -2948,15 +2948,15 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>10</pAtkAmount>
|
<pAtkAmount>10</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>8</accuracyAmount>
|
<pAccuracyAmount>8</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>10</pAtkAmount>
|
<pAtkAmount>10</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>8</accuracyAmount>
|
<pAccuracyAmount>8</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>10</amount>
|
<amount>10</amount>
|
||||||
|
|||||||
@@ -6498,9 +6498,9 @@
|
|||||||
<value level="19">122.1</value>
|
<value level="19">122.1</value>
|
||||||
<value level="20">129.3</value>
|
<value level="20">129.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
<accuracyAmount>3</accuracyAmount>
|
<pAccuracyAmount>3</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -910,7 +910,7 @@
|
|||||||
<value level="5">7.4</value>
|
<value level="5">7.4</value>
|
||||||
<value level="6">8.3</value>
|
<value level="6">8.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -921,7 +921,7 @@
|
|||||||
<value level="5">7.4</value>
|
<value level="5">7.4</value>
|
||||||
<value level="6">8.3</value>
|
<value level="6">8.3</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PAtk">
|
<effect name="PAtk">
|
||||||
<amount>
|
<amount>
|
||||||
@@ -1225,11 +1225,11 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>5</pAtkAmount>
|
<pAtkAmount>5</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>5</pAtkAmount>
|
<pAtkAmount>5</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -218,8 +218,8 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<accuracyAmount>1</accuracyAmount>
|
<pAccuracyAmount>1</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -301,8 +301,8 @@
|
|||||||
<mode>PER</mode>
|
<mode>PER</mode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<accuracyAmount>1</accuracyAmount>
|
<pAccuracyAmount>1</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -1832,7 +1832,7 @@
|
|||||||
<minAttackerLevel>1</minAttackerLevel>
|
<minAttackerLevel>1</minAttackerLevel>
|
||||||
<maxAttackerLevel>127</maxAttackerLevel>
|
<maxAttackerLevel>127</maxAttackerLevel>
|
||||||
<minDamage>1</minDamage>
|
<minDamage>1</minDamage>
|
||||||
<chance>2</chance>
|
<chance>4</chance>
|
||||||
<targetType>SELF</targetType>
|
<targetType>SELF</targetType>
|
||||||
<isCritical>true</isCritical>
|
<isCritical>true</isCritical>
|
||||||
<allowWeapons>ALL</allowWeapons>
|
<allowWeapons>ALL</allowWeapons>
|
||||||
|
|||||||
@@ -655,9 +655,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="PhysicalAttackSpeed">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>5</amount>
|
<pAtkSpeedAmount>5</pAtkSpeedAmount>
|
||||||
<mode>PER</mode>
|
<pAtkSpeedMode>PER</pAtkSpeedMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -668,9 +668,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="Accuracy">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>3.9</amount>
|
<pAccuracyAmount>3.9</pAccuracyAmount>
|
||||||
<mode>DIFF</mode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -707,9 +707,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="CriticalDamage">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>340</amount>
|
<pCritDamageAmount>340</pCritDamageAmount>
|
||||||
<mode>DIFF</mode>
|
<pCritDamageMode>DIFF</pCritDamageMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
@@ -723,9 +723,9 @@
|
|||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<magicCriticalRate>5</magicCriticalRate>
|
<magicCriticalRate>5</magicCriticalRate>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="CriticalRate">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<amount>54.4</amount>
|
<pCritRateAmount>54.4</pCritRateAmount>
|
||||||
<mode>DIFF</mode>
|
<pCritRateMode>DIFF</pCritRateMode>
|
||||||
</effect>
|
</effect>
|
||||||
</effects>
|
</effects>
|
||||||
</skill>
|
</skill>
|
||||||
|
|||||||
@@ -1492,14 +1492,9 @@
|
|||||||
<basicProperty>NONE</basicProperty>
|
<basicProperty>NONE</basicProperty>
|
||||||
<hitCancelTime>0</hitCancelTime>
|
<hitCancelTime>0</hitCancelTime>
|
||||||
<reuseDelay>300000</reuseDelay>
|
<reuseDelay>300000</reuseDelay>
|
||||||
<targetType>OTHERS</targetType>
|
<targetType>SELF</targetType>
|
||||||
<affectScope>PARTY</affectScope>
|
<affectScope>PARTY</affectScope>
|
||||||
<affectObject>FRIEND_PC</affectObject>
|
<affectObject>FRIEND_PC</affectObject>
|
||||||
<conditions>
|
|
||||||
<condition name="TargetMyParty">
|
|
||||||
<includeMe>false</includeMe>
|
|
||||||
</condition>
|
|
||||||
</conditions>
|
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="TransferDamageToPlayer">
|
<effect name="TransferDamageToPlayer">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
@@ -484,7 +484,7 @@
|
|||||||
<value level="3">4</value>
|
<value level="3">4</value>
|
||||||
<value level="4">5</value>
|
<value level="4">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -493,7 +493,7 @@
|
|||||||
<value level="3">4</value>
|
<value level="3">4</value>
|
||||||
<value level="4">5</value>
|
<value level="4">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -1590,11 +1590,11 @@
|
|||||||
<effects>
|
<effects>
|
||||||
<effect name="TwoHandedSwordBonus">
|
<effect name="TwoHandedSwordBonus">
|
||||||
<pAtkAmount>30</pAtkAmount>
|
<pAtkAmount>30</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>30</pAtkAmount>
|
<pAtkAmount>30</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="HitNumber">
|
<effect name="HitNumber">
|
||||||
<amount>5</amount>
|
<amount>5</amount>
|
||||||
|
|||||||
@@ -87,14 +87,13 @@
|
|||||||
</magicLvl>
|
</magicLvl>
|
||||||
<operateType>P</operateType>
|
<operateType>P</operateType>
|
||||||
<effects>
|
<effects>
|
||||||
<effect name="Speed">
|
<effect name="AttackTrait">
|
||||||
<amount>
|
<BLEED>
|
||||||
<value level="1">5</value>
|
<value level="1">10</value>
|
||||||
<value level="2">6</value>
|
<value level="2">11</value>
|
||||||
<value level="3">7</value>
|
<value level="3">13</value>
|
||||||
<value level="4">10</value>
|
<value level="4">15</value>
|
||||||
</amount>
|
</BLEED>
|
||||||
<mode>DIFF</mode>
|
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="Reuse">
|
<effect name="Reuse">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
@@ -433,7 +433,7 @@
|
|||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>120</pAtkAmount>
|
<pAtkAmount>120</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
@@ -448,11 +448,11 @@
|
|||||||
<value level="9">1786</value>
|
<value level="9">1786</value>
|
||||||
<value level="10">1894</value>
|
<value level="10">1894</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>DIFF</pAtkmode>
|
<pAtkMode>DIFF</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<accuracyAmount>4</accuracyAmount>
|
<pAccuracyAmount>4</pAccuracyAmount>
|
||||||
<accuracyMode>DIFF</accuracyMode>
|
<pAccuracyMode>DIFF</pAccuracyMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="StatUp">
|
<effect name="StatUp">
|
||||||
<amount>2</amount>
|
<amount>2</amount>
|
||||||
|
|||||||
@@ -686,14 +686,14 @@
|
|||||||
<value level="1">3</value>
|
<value level="1">3</value>
|
||||||
<value level="2">5</value>
|
<value level="2">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="TwoHandedBluntBonus">
|
<effect name="TwoHandedBluntBonus">
|
||||||
<pAtkAmount>
|
<pAtkAmount>
|
||||||
<value level="1">3</value>
|
<value level="1">3</value>
|
||||||
<value level="2">5</value>
|
<value level="2">5</value>
|
||||||
</pAtkAmount>
|
</pAtkAmount>
|
||||||
<pAtkmode>PER</pAtkmode>
|
<pAtkMode>PER</pAtkMode>
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="PhysicalAttackSpeed">
|
<effect name="PhysicalAttackSpeed">
|
||||||
<amount>
|
<amount>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user