Support for multiple AttackAttribute and DefenceAttribute element values.

This commit is contained in:
MobiusDevelopment
2022-10-29 21:43:43 +00:00
parent 75bea9840c
commit 1f50186351
4 changed files with 172 additions and 116 deletions

View File

@@ -16,6 +16,9 @@
*/
package handlers.effecthandlers;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.enums.AttributeType;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
@@ -28,48 +31,59 @@ import org.l2jmobius.gameserver.model.stats.Stat;
*/
public class AttackAttribute extends AbstractEffect
{
private final AttributeType _attribute;
private final Set<AttributeType> _attributes = new HashSet<>();
private final double _amount;
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(","))
{
for (String attribute : attributes.split(","))
{
_attributes.add(AttributeType.findByName(attribute.trim()));
}
}
else
{
_attributes.add(AttributeType.findByName(attributes));
}
}
@Override
public void pump(Creature effected, Skill skill)
{
Stat stat = Stat.FIRE_POWER;
switch (_attribute)
for (AttributeType attribute : _attributes)
{
case WATER:
switch (attribute)
{
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;
case WATER:
{
effected.getStat().mergeAdd(Stat.WATER_POWER, _amount);
break;
}
case WIND:
{
effected.getStat().mergeAdd(Stat.WIND_POWER, _amount);
break;
}
case EARTH:
{
effected.getStat().mergeAdd(Stat.EARTH_POWER, _amount);
break;
}
case HOLY:
{
effected.getStat().mergeAdd(Stat.HOLY_POWER, _amount);
break;
}
case DARK:
{
effected.getStat().mergeAdd(Stat.DARK_POWER, _amount);
break;
}
}
}
effected.getStat().mergeAdd(stat, _amount);
}
}

View File

@@ -16,6 +16,9 @@
*/
package handlers.effecthandlers;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.enums.AttributeType;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
@@ -28,48 +31,59 @@ import org.l2jmobius.gameserver.model.stats.Stat;
*/
public class DefenceAttribute extends AbstractEffect
{
private final AttributeType _attribute;
private final Set<AttributeType> _attributes = new HashSet<>();
private final double _amount;
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(","))
{
for (String attribute : attributes.split(","))
{
_attributes.add(AttributeType.findByName(attribute.trim()));
}
}
else
{
_attributes.add(AttributeType.findByName(attributes));
}
}
@Override
public void pump(Creature effected, Skill skill)
{
Stat stat = Stat.FIRE_RES;
switch (_attribute)
for (AttributeType attribute : _attributes)
{
case WATER:
switch (attribute)
{
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;
case WATER:
{
effected.getStat().mergeAdd(Stat.WATER_RES, _amount);
break;
}
case WIND:
{
effected.getStat().mergeAdd(Stat.WIND_RES, _amount);
break;
}
case EARTH:
{
effected.getStat().mergeAdd(Stat.EARTH_RES, _amount);
break;
}
case HOLY:
{
effected.getStat().mergeAdd(Stat.HOLY_RES, _amount);
break;
}
case DARK:
{
effected.getStat().mergeAdd(Stat.DARK_RES, _amount);
break;
}
}
}
effected.getStat().mergeAdd(stat, _amount);
}
}

View File

@@ -16,6 +16,9 @@
*/
package handlers.effecthandlers;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.enums.AttributeType;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
@@ -28,48 +31,59 @@ import org.l2jmobius.gameserver.model.stats.Stat;
*/
public class AttackAttribute extends AbstractEffect
{
private final AttributeType _attribute;
private final Set<AttributeType> _attributes = new HashSet<>();
private final double _amount;
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(","))
{
for (String attribute : attributes.split(","))
{
_attributes.add(AttributeType.findByName(attribute.trim()));
}
}
else
{
_attributes.add(AttributeType.findByName(attributes));
}
}
@Override
public void pump(Creature effected, Skill skill)
{
Stat stat = Stat.FIRE_POWER;
switch (_attribute)
for (AttributeType attribute : _attributes)
{
case WATER:
switch (attribute)
{
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;
case WATER:
{
effected.getStat().mergeAdd(Stat.WATER_POWER, _amount);
break;
}
case WIND:
{
effected.getStat().mergeAdd(Stat.WIND_POWER, _amount);
break;
}
case EARTH:
{
effected.getStat().mergeAdd(Stat.EARTH_POWER, _amount);
break;
}
case HOLY:
{
effected.getStat().mergeAdd(Stat.HOLY_POWER, _amount);
break;
}
case DARK:
{
effected.getStat().mergeAdd(Stat.DARK_POWER, _amount);
break;
}
}
}
effected.getStat().mergeAdd(stat, _amount);
}
}

View File

@@ -16,6 +16,9 @@
*/
package handlers.effecthandlers;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.enums.AttributeType;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
@@ -28,48 +31,59 @@ import org.l2jmobius.gameserver.model.stats.Stat;
*/
public class DefenceAttribute extends AbstractEffect
{
private final AttributeType _attribute;
private final Set<AttributeType> _attributes = new HashSet<>();
private final double _amount;
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(","))
{
for (String attribute : attributes.split(","))
{
_attributes.add(AttributeType.findByName(attribute.trim()));
}
}
else
{
_attributes.add(AttributeType.findByName(attributes));
}
}
@Override
public void pump(Creature effected, Skill skill)
{
Stat stat = Stat.FIRE_RES;
switch (_attribute)
for (AttributeType attribute : _attributes)
{
case WATER:
switch (attribute)
{
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;
case WATER:
{
effected.getStat().mergeAdd(Stat.WATER_RES, _amount);
break;
}
case WIND:
{
effected.getStat().mergeAdd(Stat.WIND_RES, _amount);
break;
}
case EARTH:
{
effected.getStat().mergeAdd(Stat.EARTH_RES, _amount);
break;
}
case HOLY:
{
effected.getStat().mergeAdd(Stat.HOLY_RES, _amount);
break;
}
case DARK:
{
effected.getStat().mergeAdd(Stat.DARK_RES, _amount);
break;
}
}
}
effected.getStat().mergeAdd(stat, _amount);
}
}