Fixed Speed effect reading weaponType as SpeedType.

Contributed by Sahar.
This commit is contained in:
MobiusDevelopment 2020-05-23 23:08:22 +00:00
parent c5ccb65fe8
commit 311feff855
15 changed files with 630 additions and 1515 deletions

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }

View File

@ -16,14 +16,14 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.conditions.ConditionUsingItemType;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,123 +34,64 @@ public class Speed extends AbstractEffect
{ {
private final double _amount; private final double _amount;
private final StatModifierType _mode; private final StatModifierType _mode;
private List<SpeedType> _speedType; private ConditionUsingItemType _condition;
public Speed(StatSet params) public Speed(StatSet params)
{ {
_amount = params.getDouble("amount", 0); _amount = params.getDouble("amount", 0);
_mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF);
_speedType = params.getEnumList("weaponType", SpeedType.class);
if (_speedType == null) int weaponTypesMask = 0;
final List<String> weaponTypes = params.getList("weaponType", String.class);
if (weaponTypes != null)
{ {
_speedType = Arrays.asList(SpeedType.ALL); for (String weaponType : weaponTypes)
{
try
{
weaponTypesMask |= WeaponType.valueOf(weaponType).mask();
}
catch (IllegalArgumentException e)
{
final IllegalArgumentException exception = new IllegalArgumentException("weaponType should contain WeaponType enum value but found " + weaponType);
exception.addSuppressed(e);
throw exception;
}
}
}
if (weaponTypesMask != 0)
{
_condition = new ConditionUsingItemType(weaponTypesMask);
} }
} }
@Override @Override
public void pump(Creature effected, Skill skill) public void pump(Creature effected, Skill skill)
{ {
switch (_mode) if (_condition == null || _condition.test(effected, effected, skill))
{ {
case DIFF: switch (_mode)
{ {
for (SpeedType type : _speedType) case DIFF:
{ {
switch (type) effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
case RUN: effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
{ effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount); effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break; effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
} break;
case WALK:
{
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
break;
}
case FLY_RUN:
{
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
break;
}
case FLY_WALK:
{
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
default:
{
effected.getStat().mergeAdd(Stat.RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.SWIM_WALK_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_RUN_SPEED, _amount);
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
} }
break; case PER:
}
case PER:
{
for (SpeedType type : _speedType)
{ {
switch (type) effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
case RUN: effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
{ effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1); effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break; effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
} break;
case WALK:
{
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_RUN:
{
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
break;
}
case SWIM_WALK:
{
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
break;
}
case FLY_RUN:
{
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
break;
}
case FLY_WALK:
{
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
default:
{
effected.getStat().mergeMul(Stat.RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.SWIM_WALK_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_RUN_SPEED, (_amount / 100) + 1);
effected.getStat().mergeMul(Stat.FLY_WALK_SPEED, (_amount / 100) + 1);
break;
}
}
} }
break;
} }
} }
} }