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;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}

View File

@ -16,14 +16,14 @@
*/
package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}

View File

@ -16,14 +16,14 @@
*/
package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}

View File

@ -16,14 +16,14 @@
*/
package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}

View File

@ -16,14 +16,14 @@
*/
package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}

View File

@ -16,14 +16,14 @@
*/
package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}

View File

@ -16,14 +16,14 @@
*/
package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}

View File

@ -16,14 +16,14 @@
*/
package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}

View File

@ -16,14 +16,14 @@
*/
package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}

View File

@ -16,14 +16,14 @@
*/
package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}

View File

@ -16,14 +16,14 @@
*/
package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}

View File

@ -16,14 +16,14 @@
*/
package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}

View File

@ -16,14 +16,14 @@
*/
package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}

View File

@ -16,14 +16,14 @@
*/
package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}

View File

@ -16,14 +16,14 @@
*/
package handlers.effecthandlers;
import java.util.Arrays;
import java.util.List;
import org.l2jmobius.gameserver.enums.SpeedType;
import org.l2jmobius.gameserver.enums.StatModifierType;
import org.l2jmobius.gameserver.model.StatSet;
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.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat;
@ -34,61 +34,45 @@ public class Speed extends AbstractEffect
{
private final double _amount;
private final StatModifierType _mode;
private List<SpeedType> _speedType;
private ConditionUsingItemType _condition;
public Speed(StatSet params)
{
_amount = params.getDouble("amount", 0);
_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
public void pump(Creature effected, Skill skill)
{
if (_condition == null || _condition.test(effected, effected, skill))
{
switch (_mode)
{
case DIFF:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeAdd(Stat.RUN_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);
@ -98,47 +82,7 @@ public class Speed extends AbstractEffect
effected.getStat().mergeAdd(Stat.FLY_WALK_SPEED, _amount);
break;
}
}
}
break;
}
case PER:
{
for (SpeedType type : _speedType)
{
switch (type)
{
case RUN:
{
effected.getStat().mergeMul(Stat.RUN_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);
@ -150,8 +94,5 @@ public class Speed extends AbstractEffect
}
}
}
break;
}
}
}
}