# Created by Zoey76
# Version 0.3
# Updated to High Five Rev.5771
# Shortened the algorithm.
# Added check to avoid skill overenchanting.
# Based on Starter's idea/work to cutoff skill enchanting.
# Based on Lineage's Work to avoid skill overenchanting.
# Thanks SolidSnake for time and tips.
#P L2J_Server_BETA
Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (revision 5769)
+++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -15769,6 +15769,31 @@
for (int id : getSkills().keySet())
{
int level = getSkillLevel(id);
+ if (Config.ENABLE_SKILL_MAX_ENCHANT_LIMIT)
+ {
+ L2Skill fixedSkill = null;
+ int oldLevel = level % 100;
+ if (Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL > 0) // Nerf enchantment
+ {
+ if (oldLevel > Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL)
+ {
+ level = ((level / 100) * 100) + Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL;
+ fixedSkill = SkillTable.getInstance().getInfo(id, level);
+ }
+ }
+ else if (Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL == 0) // Remove enchantment
+ {
+ level = SkillTable.getInstance().getMaxLevel(id);
+ fixedSkill = SkillTable.getInstance().getInfo(id, level);
+ }
+ // Setting the new level enchat for the skill.
+ if (fixedSkill != null)
+ {
+ _log.info("Decreasing skill enchantment from " + oldLevel + " to " + level + " on skill " + id + " from Player: " + getName() + "!");
+ addSkill(fixedSkill, true);
+ }
+ }
+
if (level >= 100)
{
level = SkillTable.getInstance().getMaxLevel(id);
Index: java/com/l2jserver/Config.java
===================================================================
--- java/com/l2jserver/Config.java (revision 5741)
+++ java/com/l2jserver/Config.java (working copy)
@@ -252,6 +252,9 @@
public static boolean STORE_UI_SETTINGS;
public static String[] FORBIDDEN_NAMES;
public static boolean SILENCE_MODE_EXCLUDE;
+ public static boolean ENABLE_SKILL_ENCHANT;
+ public static boolean ENABLE_SKILL_MAX_ENCHANT_LIMIT;
+ public static int SKILL_MAX_ENCHANT_LIMIT_LEVEL;
// --------------------------------------------------
// ClanHall Settings
@@ -1720,6 +1723,9 @@
FORBIDDEN_NAMES = Character.getProperty("ForbiddenNames", "").split(",");
SILENCE_MODE_EXCLUDE = Boolean.parseBoolean(Character.getProperty("SilenceModeExclude", "False"));
PLAYER_MOVEMENT_BLOCK_TIME = Integer.parseInt(Character.getProperty("NpcTalkBlockingTime", "0")) * 1000;
+ ENABLE_SKILL_ENCHANT = Boolean.parseBoolean(Character.getProperty("EnableSkillEnchant", "True"));
+ ENABLE_SKILL_MAX_ENCHANT_LIMIT = Boolean.parseBoolean(Character.getProperty("EnableSkillMaxEnchantLimit", "False"));
+ SKILL_MAX_ENCHANT_LIMIT_LEVEL = Integer.parseInt(Character.getProperty("SkillMaxEnchantLimitLevel", "30"));
// Load L2J Server Version L2Properties file (if exists)
L2Properties serverVersion = new L2Properties();
Index: java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkill.java
===================================================================
--- java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkill.java (revision 5741)
+++ java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkill.java (working copy)
@@ -73,6 +73,20 @@
return;
}
+ if (Config.ENABLE_SKILL_ENCHANT)
+ {
+ if ((_skillLvl % 100) >= Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL)
+ {
+ player.sendMessage("You have reached maximum skill enchantment level. Allowed on this server up to " + Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL + ".");
+ return;
+ }
+ }
+ else
+ {
+ player.sendMessage("You may not use the skill enchantment system is currently turned off.");
+ return;
+ }
+
if (player.getClassId().level() < 3) // requires to have 3rd class quest completed
{
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILL_ENCHANT_IN_THIS_CLASS);
Index: java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkillSafe.java
===================================================================
--- java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkillSafe.java (revision 5741)
+++ java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkillSafe.java (working copy)
@@ -73,6 +73,20 @@
return;
}
+ if (Config.ENABLE_SKILL_ENCHANT)
+ {
+ if ((_skillLvl % 100) >= Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL)
+ {
+ player.sendMessage("You have reached maximum skill enchantment level. Allowed on this server up to " + Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL + ".");
+ return;
+ }
+ }
+ else
+ {
+ player.sendMessage("You may not use the skill enchantment system is currently turned off.");
+ return;
+ }
+
if (player.getClassId().level() < 3) // requires to have 3rd class quest completed
{
player.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILL_ENCHANT_IN_THIS_CLASS);
Index: dist/game/config/Character.properties
===================================================================
--- dist/game/config/Character.properties (revision 5722)
+++ dist/game/config/Character.properties (working copy)
@@ -81,7 +81,18 @@
# Default: False
AutoLearnForgottenScrollSkills = False
+# Turn this off to avoid skill enchanting.
+# Default: True
+EnableSkillEnchant = True
+# When this is enabled it will read the "SkillMaxEnchantLimitLevel" option.
# Default: False
+EnableSkillMaxEnchantLimit = False
+# When this is over 0, it will cutoff the skill enchant level to it's value.
+# When it's 0 it will removed the current skill enchant.
+# Default: 30
+SkillMaxEnchantLimitLevel = 30
+
+# Default: False
AutoLootHerbs = False
# Maximum number of buffs and songs/dances.
Básicamente es para configurar algo mas el encantamiento de las habilidades, el si se pueden mejorar las skills o no, el nivel máximo de enchant, etc.. todo lo configurable esta en la properties de este código.
Créditos en el código.