Index: l2jfree-core/config/altsettings.properties
===================================================================
--- l2jfree-core/config/altsettings.properties (revision 0)
+++ l2jfree-core/config/altsettings.properties (working copy)
@@ -666,6 +666,10 @@
# False on European servers.
AltEnableDimensionalMerchants = False
+# Limit of Attributes
+AltMaxAtkElem = 200
+AltMaxDefElem = 200
+
Index: l2jfree-core/src/main/java/com/l2jfree/Config.java
===================================================================
--- l2jfree-core/src/main/java/com/l2jfree/Config.java (revision 0)
+++ l2jfree-core/src/main/java/com/l2jfree/Config.java (working copy)
@@ -1492,6 +1492,8 @@
public static int ALT_MAX_RUN_SPEED; // Runspeed limit
public static float ALT_MCRIT_RATE;
public static float ALT_MCRIT_PVP_RATE;
+ public static int ALT_MAX_ATK_ELEM;
+ public static int ALT_MAX_DEF_ELEM;
public static double ALT_POLEARM_DAMAGE_MULTI;
public static double ALT_POLEARM_VAMPIRIC_MULTI;
@@ -1850,6 +1852,8 @@
ALT_MAX_RUN_SPEED = Integer.parseInt(altSettings.getProperty("MaxRunSpeed", "250"));
ALT_MCRIT_RATE = Float.parseFloat(altSettings.getProperty("AltMCritRate", "3.0"));
ALT_MCRIT_PVP_RATE = Float.parseFloat(altSettings.getProperty("AltMCritPvpRate", "2.5"));
+ ALT_MAX_ATK_ELEM = Integer.parseInt(altSettings.getProperty("MaxAtkElem", "200"));
+ ALT_MAX_DEF_ELEM = Integer.parseInt(altSettings.getProperty("MaxDefElem", "200"));
ALT_POLEARM_DAMAGE_MULTI = Double.parseDouble(altSettings.getProperty("AltPolearmDamageMulti", "1.0"));
ALT_POLEARM_VAMPIRIC_MULTI = Double.parseDouble(altSettings.getProperty("AltPolearmVampiricMulti", "0.5"));
@@ -4476,6 +4480,12 @@
CASTLE_ZONE_FAME_TASK_FREQUENCY = Integer.parseInt(pValue);
else if (pName.equalsIgnoreCase("CastleZoneFameAquirePoints"))
CASTLE_ZONE_FAME_AQUIRE_POINTS = Integer.parseInt(pValue);
+
+ //Elemental system
+ else if (pName.equalsIgnoreCase("MaxAtkElem"))
+ ALT_GRADE_PENALTY = Boolean.parseBoolean(pValue);
+ else if (pName.equalsIgnoreCase("MaxDefElem"))
+ ALT_GRADE_PENALTY = Boolean.parseBoolean(pValue);
else
return false;
Index: l2jfree-core/src/main/java/com/l2jfree/gameserver/model/actor/stat/PcStat.java
===================================================================
--- l2jfree-core/src/main/java/com/l2jfree/gameserver/model/actor/stat/PcStat.java (revision 0)
+++ l2jfree-core/src/main/java/com/l2jfree/gameserver/model/actor/stat/PcStat.java (working copy)
@@ -487,18 +487,32 @@
return Config.ALT_MAX_EVASION;
return val;
}
-
+
@Override
public int getAttackElementValue(byte attribute)
{
- int value = super.getAttackElementValue(attribute);
+ int value = super.getAttackElementValue(attribute);
+
+ if (value > Config.ALT_MAX_ATK_ELEM && Config.ALT_MAX_ATK_ELEM > 0 && !getActiveChar().isGM())
+ return Config.ALT_MAX_ATK_ELEM;
- // 20% if summon exist
- if (summonShouldHaveAttackElemental(getActiveChar().getPet()))
- return value / 5;
-
+ // 20% if summon exist
+ if (summonShouldHaveAttackElemental(getActiveChar().getPet()))
+ return value / 5;
+
return value;
}
+
+ @Override
+ public int getDefenseElementValue(byte attribute)
+ {
+ int value = super.getDefenseElementValue(attribute);
+
+ if (value > Config.ALT_MAX_DEF_ELEM && Config.ALT_MAX_DEF_ELEM > 0 && !getActiveChar().isGM())
+ return Config.ALT_MAX_DEF_ELEM;
+
+ return value;
+ }
public boolean summonShouldHaveAttackElemental(L2Summon pet)
{