Improved AttackAttribute and DefenceAttribute logic.
This commit is contained in:
		| @@ -16,7 +16,9 @@ | ||||
|  */ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import org.l2jmobius.gameserver.enums.AttributeType; | ||||
| 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; | ||||
| @@ -24,52 +26,46 @@ import org.l2jmobius.gameserver.model.skill.Skill; | ||||
| import org.l2jmobius.gameserver.model.stats.Stat; | ||||
|  | ||||
| /** | ||||
|  * @author Sdw | ||||
|  * @author Mobius | ||||
|  */ | ||||
| public class AttackAttribute extends AbstractEffect | ||||
| { | ||||
| 	private final AttributeType _attribute; | ||||
| 	private final double _amount; | ||||
| 	private final Stat _singleStat; | ||||
| 	private final Set<Stat> _multipleStats; | ||||
| 	 | ||||
| 	public AttackAttribute(StatSet params) | ||||
| 	{ | ||||
| 		_amount = params.getDouble("amount", 0); | ||||
| 		_attribute = params.getEnum("attribute", AttributeType.class, AttributeType.FIRE); | ||||
| 		final String attributes = params.getString("attribute", "FIRE"); | ||||
| 		if (attributes.contains(",")) | ||||
| 		{ | ||||
| 			_singleStat = null; | ||||
| 			_multipleStats = EnumSet.noneOf(Stat.class); | ||||
| 			for (String attribute : attributes.split(",")) | ||||
| 			{ | ||||
| 				_multipleStats.add(Stat.valueOf(attribute + "_POWER")); | ||||
| 			} | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			_singleStat = Stat.valueOf(attributes + "_POWER"); | ||||
| 			_multipleStats = null; | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void pump(Creature effected, Skill skill) | ||||
| 	{ | ||||
| 		Stat stat = Stat.FIRE_POWER; | ||||
| 		 | ||||
| 		switch (_attribute) | ||||
| 		if (_singleStat != null) | ||||
| 		{ | ||||
| 			case WATER: | ||||
| 			{ | ||||
| 				stat = Stat.WATER_POWER; | ||||
| 				break; | ||||
| 			} | ||||
| 			case WIND: | ||||
| 			{ | ||||
| 				stat = Stat.WIND_POWER; | ||||
| 				break; | ||||
| 			} | ||||
| 			case EARTH: | ||||
| 			{ | ||||
| 				stat = Stat.EARTH_POWER; | ||||
| 				break; | ||||
| 			} | ||||
| 			case HOLY: | ||||
| 			{ | ||||
| 				stat = Stat.HOLY_POWER; | ||||
| 				break; | ||||
| 			} | ||||
| 			case DARK: | ||||
| 			{ | ||||
| 				stat = Stat.DARK_POWER; | ||||
| 				break; | ||||
| 			} | ||||
| 			effected.getStat().mergeAdd(_singleStat, _amount); | ||||
| 			return; | ||||
| 		} | ||||
| 		 | ||||
| 		for (Stat stat : _multipleStats) | ||||
| 		{ | ||||
| 			effected.getStat().mergeAdd(stat, _amount); | ||||
| 		} | ||||
| 		effected.getStat().mergeAdd(stat, _amount); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -54,6 +54,11 @@ public class AttackAttributeAdd extends AbstractEffect | ||||
| 		 | ||||
| 		switch (maxAttribute) | ||||
| 		{ | ||||
| 			case FIRE: | ||||
| 			{ | ||||
| 				stat = Stat.FIRE_POWER; | ||||
| 				break; | ||||
| 			} | ||||
| 			case WATER: | ||||
| 			{ | ||||
| 				stat = Stat.WATER_POWER; | ||||
|   | ||||
| @@ -16,7 +16,9 @@ | ||||
|  */ | ||||
| package handlers.effecthandlers; | ||||
|  | ||||
| import org.l2jmobius.gameserver.enums.AttributeType; | ||||
| 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; | ||||
| @@ -24,52 +26,46 @@ import org.l2jmobius.gameserver.model.skill.Skill; | ||||
| import org.l2jmobius.gameserver.model.stats.Stat; | ||||
|  | ||||
| /** | ||||
|  * @author Sdw | ||||
|  * @author Mobius | ||||
|  */ | ||||
| public class DefenceAttribute extends AbstractEffect | ||||
| { | ||||
| 	private final AttributeType _attribute; | ||||
| 	private final double _amount; | ||||
| 	private final Stat _singleStat; | ||||
| 	private final Set<Stat> _multipleStats; | ||||
| 	 | ||||
| 	public DefenceAttribute(StatSet params) | ||||
| 	{ | ||||
| 		_amount = params.getDouble("amount", 0); | ||||
| 		_attribute = params.getEnum("attribute", AttributeType.class, AttributeType.FIRE); | ||||
| 		final String attributes = params.getString("attribute", "FIRE"); | ||||
| 		if (attributes.contains(",")) | ||||
| 		{ | ||||
| 			_singleStat = null; | ||||
| 			_multipleStats = EnumSet.noneOf(Stat.class); | ||||
| 			for (String attribute : attributes.split(",")) | ||||
| 			{ | ||||
| 				_multipleStats.add(Stat.valueOf(attribute + "_RES")); | ||||
| 			} | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			_singleStat = Stat.valueOf(attributes + "_RES"); | ||||
| 			_multipleStats = null; | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void pump(Creature effected, Skill skill) | ||||
| 	{ | ||||
| 		Stat stat = Stat.FIRE_RES; | ||||
| 		 | ||||
| 		switch (_attribute) | ||||
| 		if (_singleStat != null) | ||||
| 		{ | ||||
| 			case WATER: | ||||
| 			{ | ||||
| 				stat = Stat.WATER_RES; | ||||
| 				break; | ||||
| 			} | ||||
| 			case WIND: | ||||
| 			{ | ||||
| 				stat = Stat.WIND_RES; | ||||
| 				break; | ||||
| 			} | ||||
| 			case EARTH: | ||||
| 			{ | ||||
| 				stat = Stat.EARTH_RES; | ||||
| 				break; | ||||
| 			} | ||||
| 			case HOLY: | ||||
| 			{ | ||||
| 				stat = Stat.HOLY_RES; | ||||
| 				break; | ||||
| 			} | ||||
| 			case DARK: | ||||
| 			{ | ||||
| 				stat = Stat.DARK_RES; | ||||
| 				break; | ||||
| 			} | ||||
| 			effected.getStat().mergeAdd(_singleStat, _amount); | ||||
| 			return; | ||||
| 		} | ||||
| 		 | ||||
| 		for (Stat stat : _multipleStats) | ||||
| 		{ | ||||
| 			effected.getStat().mergeAdd(stat, _amount); | ||||
| 		} | ||||
| 		effected.getStat().mergeAdd(stat, _amount); | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDevelopment
					MobiusDevelopment