StatUp support for multiple stats on same effect.
This commit is contained in:
		@@ -16,66 +16,56 @@
 | 
			
		||||
 */
 | 
			
		||||
package handlers.effecthandlers;
 | 
			
		||||
 | 
			
		||||
import java.util.EnumSet;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
import org.l2jmobius.gameserver.model.StatSet;
 | 
			
		||||
import org.l2jmobius.gameserver.model.actor.Creature;
 | 
			
		||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
 | 
			
		||||
import org.l2jmobius.gameserver.model.skill.Skill;
 | 
			
		||||
import org.l2jmobius.gameserver.model.stats.BaseStat;
 | 
			
		||||
import org.l2jmobius.gameserver.model.stats.Stat;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Sdw
 | 
			
		||||
 * @author Mobius
 | 
			
		||||
 */
 | 
			
		||||
public class StatUp extends AbstractEffect
 | 
			
		||||
{
 | 
			
		||||
	private final BaseStat _stat;
 | 
			
		||||
	private final double _amount;
 | 
			
		||||
	private final Stat _singleStat;
 | 
			
		||||
	private final Set<Stat> _multipleStats;
 | 
			
		||||
	
 | 
			
		||||
	public StatUp(StatSet params)
 | 
			
		||||
	{
 | 
			
		||||
		_amount = params.getDouble("amount", 0);
 | 
			
		||||
		_stat = params.getEnum("stat", BaseStat.class, BaseStat.STR);
 | 
			
		||||
		final String stats = params.getString("stat", "STR");
 | 
			
		||||
		if (stats.contains(","))
 | 
			
		||||
		{
 | 
			
		||||
			_singleStat = null;
 | 
			
		||||
			_multipleStats = EnumSet.noneOf(Stat.class);
 | 
			
		||||
			for (String stat : stats.split(","))
 | 
			
		||||
			{
 | 
			
		||||
				_multipleStats.add(Stat.valueOf("STAT_" + stat));
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			_singleStat = Stat.valueOf("STAT_" + stats);
 | 
			
		||||
			_multipleStats = null;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
	public void pump(Creature effected, Skill skill)
 | 
			
		||||
	{
 | 
			
		||||
		Stat stat = Stat.STAT_STR;
 | 
			
		||||
		
 | 
			
		||||
		switch (_stat)
 | 
			
		||||
		if (_singleStat != null)
 | 
			
		||||
		{
 | 
			
		||||
			case INT:
 | 
			
		||||
			{
 | 
			
		||||
				stat = Stat.STAT_INT;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case DEX:
 | 
			
		||||
			{
 | 
			
		||||
				stat = Stat.STAT_DEX;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case WIT:
 | 
			
		||||
			{
 | 
			
		||||
				stat = Stat.STAT_WIT;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case CON:
 | 
			
		||||
			{
 | 
			
		||||
				stat = Stat.STAT_CON;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case MEN:
 | 
			
		||||
			{
 | 
			
		||||
				stat = Stat.STAT_MEN;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			effected.getStat().mergeAdd(_singleStat, _amount);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		effected.getStat().mergeAdd(stat, _amount);
 | 
			
		||||
		
 | 
			
		||||
		// Calculate stat increase skills.
 | 
			
		||||
		if (effected.isPlayer())
 | 
			
		||||
		for (Stat stat : _multipleStats)
 | 
			
		||||
		{
 | 
			
		||||
			effected.getActingPlayer().calculateStatIncreaseSkills();
 | 
			
		||||
			effected.getStat().mergeAdd(stat, _amount);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user