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

View File

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

View File

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

View File

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