Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate
Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectatelink off
Debes de estar registrado para poder ver el contenido indicado. Registrate o ConectateDebes de estar registrado para poder ver el contenido indicado. Registrate o ConectateCierto la descarga ya no está activa, cuando tengas un seg para subirla se agradece, y felicidades por el trabajasoDebes de estar registrado para poder ver el contenido indicado. Registrate o ConectateSe podrán resubir los files a mega u otra plataforma? Me figura como no disponible el link de descarga
Lo reviso y te digo, gracias por avisar.
### Eclipse Workspace Patch 1.0
Index: head-src/com/l2jfrozen/Config.java
===================================================================
--- head-src/com/l2jfrozen/Config.java (revision 43)
+++ head-src/com/l2jfrozen/Config.java (working copy)
public static boolean TVT_STATS_LOGGER;
public static boolean TVT_REMOVE_BUFFS_ON_DIE;
public static boolean TVT_ALLOW_HEALER_CLASSES;
public static String DISABLE_ID_CLASSES_STRING;
public static FastList<Integer> DISABLE_ID_CLASSES = new FastList<>();
+ /* TVT BUFF CONFIG */
+ public static List<int[]> CUSTOM_BUFFS_MTVT = new ArrayList<>();
+ public static List<int[]> CUSTOM_BUFFS_FTVT = new ArrayList<>();
+/* ============================================================================ */
public static boolean CTF_AURA;
public static boolean CTF_STATS_LOGGER;
public static int CTF_SPAWN_OFFSET;
public static boolean CTF_REMOVE_BUFFS_ON_DIE;
+ /* CTF BUFF CONFIG */
+ public static List<int[]> CUSTOM_BUFFS_MCTF = new ArrayList<>();
+ public static List<int[]> CUSTOM_BUFFS_FCTF = new ArrayList<>();
+/* ============================================================================ */
public static boolean DM_STATS_LOGGER;
public static boolean DM_ALLOW_HEALER_CLASSES;
public static boolean DM_REMOVE_BUFFS_ON_DIE;
+ /* DM BUFF CONFIG */
+ public static List<int[]> CUSTOM_BUFFS_MDM = new ArrayList<>();
+ public static List<int[]> CUSTOM_BUFFS_FDM = new ArrayList<>();
+/* ============================================================================ */
TVT_STATS_LOGGER = p.getProperty("TvTStatsLogger", true);
TVT_REMOVE_BUFFS_ON_DIE = p.getProperty("TvTRemoveBuffsOnPlayerDie", false);
TVT_ALLOW_HEALER_CLASSES = p.getProperty("TvTAllowedHealerClasses", true);
DISABLE_ID_CLASSES_STRING = p.getProperty("DisableIdForClasses", "");
+ /*==============================================================================================================================================*/
+ /* TVT BUFF CONFIG */
+ String[] propertySplit = p.getProperty("TvTBuffsMage", "1204,2").split(";");
+ CUSTOM_BUFFS_MTVT.clear();
+ for (String buff : propertySplit)
+ {
+ String[] buffSplit = buff.split(",");
+ if (buffSplit.length != 2)
+ LOGGER.warn("TvTBuffsMage[Config.load()]: invalid config property -> TvTBuffsMage \"" + buff + "\"");
+ else
+ {
+ try
+ {
+ CUSTOM_BUFFS_MTVT.add(new int[]{Integer.parseInt(buffSplit[0]), Integer.parseInt(buffSplit[1])});
+ }
+ catch (NumberFormatException nfe)
+ {
+ if(Config.ENABLE_ALL_EXCEPTIONS)
+ nfe.printStackTrace();
+ if (!buff.isEmpty())
+ LOGGER.warn("TvTBuffsMage[Config.load()]: invalid config property -> TvTBuffsMage \"" + buff + "\"");
+ }
+ }
+ }
+
+ propertySplit = p.getProperty("TvTBuffsFighter", "1204,2").split(";");
+ CUSTOM_BUFFS_FTVT.clear();
+ for (String buff : propertySplit)
+ {
+ String[] buffSplit = buff.split(",");
+ if (buffSplit.length != 2)
+ LOGGER.warn("TvTBuffsFighter[Config.load()]: invalid config property -> TvTBuffsFighter \"" + buff + "\"");
+ else
+ {
+ try
+ {
+ CUSTOM_BUFFS_FTVT.add(new int[]{Integer.parseInt(buffSplit[0]), Integer.parseInt(buffSplit[1])});
+ }
+ catch (NumberFormatException nfe)
+ {
+ if(Config.ENABLE_ALL_EXCEPTIONS)
+ nfe.printStackTrace();
+
+ if (!buff.isEmpty())
+ LOGGER.warn("TvTBuffsFighter[Config.load()]: invalid config property -> TvTBuffsFighter \"" + buff + "\"");
+ }
+ }
+ }
+ /*==============================================================================================================================================*/
CTF_STATS_LOGGER = p.getProperty("CTFStatsLogger", true);
CTF_SPAWN_OFFSET = Integer.parseInt(p.getProperty("CTFSpawnOffset", "100"));
CTF_REMOVE_BUFFS_ON_DIE = p.getProperty("CTFRemoveBuffsOnPlayerDie", false);
+ /*==============================================================================================================================================*/
+ /* CTF BUFF CONFIG */
+ String[] propertySplit2 = p.getProperty("CTFBuffsMage", "1204,2").split(";");
+ CUSTOM_BUFFS_MCTF.clear();
+ for (String buff : propertySplit2)
+ {
+ String[] buffSplit = buff.split(",");
+ if (buffSplit.length != 2)
+ LOGGER.warn("CTFBuffsMage[Config.load()]: invalid config property -> CTFBuffsMage \"" + buff + "\"");
+ else
+ {
+ try
+ {
+ CUSTOM_BUFFS_MCTF.add(new int[]{Integer.parseInt(buffSplit[0]), Integer.parseInt(buffSplit[1])});
+ }
+ catch (NumberFormatException nfe)
+ {
+ if(Config.ENABLE_ALL_EXCEPTIONS)
+ nfe.printStackTrace();
+ if (!buff.isEmpty())
+ LOGGER.warn("CTFBuffsMage[Config.load()]: invalid config property -> CTFBuffsMage \"" + buff + "\"");
+ }
+ }
+ }
+
+ propertySplit2 = p.getProperty("CTFBuffsFighter", "1204,2").split(";");
+ CUSTOM_BUFFS_FCTF.clear();
+ for (String buff : propertySplit2)
+ {
+ String[] buffSplit = buff.split(",");
+ if (buffSplit.length != 2)
+ LOGGER.warn("CTFBuffsFighter[Config.load()]: invalid config property -> CTFBuffsFighter \"" + buff + "\"");
+ else
+ {
+ try
+ {
+ CUSTOM_BUFFS_FCTF.add(new int[]{Integer.parseInt(buffSplit[0]), Integer.parseInt(buffSplit[1])});
+ }
+ catch (NumberFormatException nfe)
+ {
+ if(Config.ENABLE_ALL_EXCEPTIONS)
+ nfe.printStackTrace();
+
+ if (!buff.isEmpty())
+ LOGGER.warn("CTFBuffsFighter[Config.load()]: invalid config property -> CTFBuffsFighter \"" + buff + "\"");
+ }
+ }
+ }
+ /*==============================================================================================================================================*/
DM_SPAWN_OFFSET = Integer.parseInt(p.getProperty("DMSpawnOffset", "100"));
DM_STATS_LOGGER = p.getProperty("DMStatsLogger", true);
DM_ALLOW_HEALER_CLASSES = p.getProperty("DMAllowedHealerClasses", true);
DM_REMOVE_BUFFS_ON_DIE = p.getProperty("DMRemoveBuffsOnPlayerDie", false);
+ /*==============================================================================================================================================*/
+ /* DM BUFF CONFIG */
+ String[] propertySplit3 = p.getProperty("DMBuffsMage", "1204,2").split(";");
+ CUSTOM_BUFFS_MDM.clear();
+ for (String buff : propertySplit33)
+ {
+ String[] buffSplit = buff.split(",");
+ if (buffSplit.length != 2)
+ LOGGER.warn("DMBuffsMage[Config.load()]: invalid config property -> DMBuffsMage \"" + buff + "\"");
+ else
+ {
+ try
+ {
+ CUSTOM_BUFFS_MDM.add(new int[]{Integer.parseInt(buffSplit[0]), Integer.parseInt(buffSplit[1])});
+ }
+ catch (NumberFormatException nfe)
+ {
+ if(Config.ENABLE_ALL_EXCEPTIONS)
+ nfe.printStackTrace();
+ if (!buff.isEmpty())
+ LOGGER.warn("DMBuffsMage[Config.load()]: invalid config property -> DMBuffsMage \"" + buff + "\"");
+ }
+ }
+ }
+
+ propertySplit3 = p.getProperty("DMBuffsFighter", "1204,2").split(";");
+ CUSTOM_BUFFS_FDM.clear();
+ for (String buff : propertySplit3)
+ {
+ String[] buffSplit = buff.split(",");
+ if (buffSplit.length != 2)
+ LOGGER.warn("DMBuffsFighter[Config.load()]: invalid config property -> DMBuffsFighter \"" + buff + "\"");
+ else
+ {
+ try
+ {
+ CUSTOM_BUFFS_FDM.add(new int[]{Integer.parseInt(buffSplit[0]), Integer.parseInt(buffSplit[1])});
+ }
+ catch (NumberFormatException nfe)
+ {
+ if(Config.ENABLE_ALL_EXCEPTIONS)
+ nfe.printStackTrace();
+
+ if (!buff.isEmpty())
+ LOGGER.warn("DMBuffsFighter[Config.load()]: invalid config property -> DMBuffsFighter \"" + buff + "\"");
+ }
+ }
+ }
+ /*==============================================================================================================================================*/
Index: head-src/com/l2jfrozen/gameserver/model/entity/event/TVT.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/entity/event/TVT.java (revision 43)
+++ head-src/com/l2jfrozen/gameserver/model/entity/event/TVT.java (working copy)
+import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
+import com.l2jfrozen.gameserver.network.SystemMessageId;
+import com.l2jfrozen.gameserver.model.L2Skill;
if (Config.TVT_ON_START_REMOVE_ALL_EFFECTS)
{
player.stopAllEffects();
}
+ //TVTBuff
+ L2Skill skill;
+ SystemMessage sm;
+ if(!player.isMageClass())
+ {
+ for (int[] buff : Config.CUSTOM_BUFFS_FTVT) //Custom buffs for fighters
+ {
+ skill = SkillTable.getInstance().getInfo(buff[0], buff[1]);
+ skill.getEffects(player, player,false,false,false);
+ sm = new SystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);
+ sm.addSkillName(buff[0]);
+ player.sendPacket(sm);
+ }
+ }
+ else
+ {
+ for (int[] buff : Config.CUSTOM_BUFFS_MTVT) //Custom buffs for mystics
+ {
+ skill = SkillTable.getInstance().getInfo(buff[0], buff[1]);
+ skill.getEffects(player, player,false,false,false);
+ sm = new SystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);
+ sm.addSkillName(buff[0]);
+ player.sendPacket(sm);
+ }
+ }
+ //-------------------------
Index: head-src/com/l2jfrozen/gameserver/model/entity/event/CTF.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/entity/event/CTF.java (revision 43)
+++ head-src/com/l2jfrozen/gameserver/model/entity/event/CTF.java (working copy)
+import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
+import com.l2jfrozen.gameserver.network.SystemMessageId;
+import com.l2jfrozen.gameserver.model.L2Skill;
if (Config.CTF_ON_START_REMOVE_ALL_EFFECTS)
{
for (final L2Effect e : player.getAllEffects())
{
if (e != null)
e.exit(true);
}
}
+ //CTFBuff
+ L2Skill skill;
+ SystemMessage sm;
+ if(!player.isMageClass())
+ {
+ for (int[] buff : Config.CUSTOM_BUFFS_FCTF) //Custom buffs for fighters
+ {
+ skill = SkillTable.getInstance().getInfo(buff[0], buff[1]);
+ skill.getEffects(player, player,false,false,false);
+ sm = new SystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);
+ sm.addSkillName(buff[0]);
+ player.sendPacket(sm);
+ }
+ }
+ else
+ {
+ for (int[] buff : Config.CUSTOM_BUFFS_MCTF) //Custom buffs for mystics
+ {
+ skill = SkillTable.getInstance().getInfo(buff[0], buff[1]);
+ skill.getEffects(player, player,false,false,false);
+ sm = new SystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);
+ sm.addSkillName(buff[0]);
+ player.sendPacket(sm);
+ }
+ }
+ //-------------------------
Index: head-src/com/l2jfrozen/gameserver/model/entity/event/DM.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/entity/event/DM.java (revision 43)
+++ head-src/com/l2jfrozen/gameserver/model/entity/event/DM.java (working copy)
+import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
+import com.l2jfrozen.gameserver.network.SystemMessageId;
+import com.l2jfrozen.gameserver.model.L2Skill;
if (Config.DM_ON_START_REMOVE_ALL_EFFECTS)
{
player.stopAllEffects();
}
+ //DMBuff
+ L2Skill skill;
+ SystemMessage sm;
+ if(!player.isMageClass())
+ {
+ for (int[] buff : Config.CUSTOM_BUFFS_FDM) //Custom buffs for fighters
+ {
+ skill = SkillTable.getInstance().getInfo(buff[0], buff[1]);
+ skill.getEffects(player, player,false,false,false);
+ sm = new SystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);
+ sm.addSkillName(buff[0]);
+ player.sendPacket(sm);
+ }
+ }
+ else
+ {
+ for (int[] buff : Config.CUSTOM_BUFFS_MDM) //Custom buffs for mystics
+ {
+ skill = SkillTable.getInstance().getInfo(buff[0], buff[1]);
+ skill.getEffects(player, player,false,false,false);
+ sm = new SystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);
+ sm.addSkillName(buff[0]);
+ player.sendPacket(sm);
+ }
+ }
+ //-------------------------
+
GameServer/Config/Function/eventmanager.ini
+# ----------------------------------------
+# Custom TVT buffs
+#------------------------------------------
+#Buffs for mage classes:
+#Retail: Wind Walk(lvl 2) and Acumen(lvl 1)
+TvTBuffsMage = 1204,2;1040,3;1035,4;1045,6;1048,6;1036,2;1303,2;1085,3;1059,3;1078,6;1062,2;1397,3;264,1;267,1;268,1;304,1;349,1;364,1;273,1;276,1;365,1;1413,1;1391,3;4703,1;
+
+#Buffs for fighter classes:
+#Retail: Wind Walk(lvl 2) and Haste(lvl 1)
+TvTBuffsFighter = 1204,2;1068,3;1040,3;1035,4;1036,2;1045,6;1086,2;1077,3;1240,3;1242,3;264,1;267,1;268,1;269,1;304,1;349,1;364,1;271,1;274,1;275,1;1363,1;1391,3;4699,1;4703,1;
+
+# ----------------------------------------
+# Custom CTF buffs
+#------------------------------------------
+#Buffs for mage classes:
+#Retail: Wind Walk(lvl 2) and Acumen(lvl 1)
+CTFBuffsMage = 1204,2;1040,3;1035,4;1045,6;1048,6;1036,2;1303,2;1085,3;1059,3;1078,6;1062,2;1397,3;264,1;267,1;268,1;304,1;349,1;364,1;273,1;276,1;365,1;1413,1;1391,3;4703,1;
+
+#Buffs for fighter classes:
+#Retail: Wind Walk(lvl 2) and Haste(lvl 1)
+CTFBuffsFighter = 1204,2;1068,3;1040,3;1035,4;1036,2;1045,6;1086,2;1077,3;1240,3;1242,3;264,1;267,1;268,1;269,1;304,1;349,1;364,1;271,1;274,1;275,1;1363,1;1391,3;4699,1;4703,1;
+
+
+# ----------------------------------------
+# Custom DM buffs
+#------------------------------------------
+#Buffs for mage classes:
+#Retail: Wind Walk(lvl 2) and Acumen(lvl 1)
+DMBuffsMage = 1204,2;1040,3;1035,4;1045,6;1048,6;1036,2;1303,2;1085,3;1059,3;1078,6;1062,2;1397,3;264,1;267,1;268,1;304,1;349,1;364,1;273,1;276,1;365,1;1413,1;1391,3;4703,1;
+
+#Buffs for fighter classes:
+#Retail: Wind Walk(lvl 2) and Haste(lvl 1)
+DMBuffsFighter = 1204,2;1068,3;1040,3;1035,4;1036,2;1045,6;1086,2;1077,3;1240,3;1242,3;264,1;267,1;268,1;269,1;304,1;349,1;364,1;271,1;274,1;275,1;1363,1;1391,3;4699,1;4703,1;
Config.java
//HiddenBastard
public static boolean ENABLE_HIDDENBASTARD_EVENT;
public static String[] HIDDENBASTARD_INTERVAL;
public static int HIDDENBASTARD_EVENT_REWARD_ID;
public static int HIDDENBASTARD_EVENT_REWARD_AMOUNT;
//HiddenBastard
ENABLE_HIDDENBASTARD_EVENT = p.getProperty("HBEnableEvent", false);
HIDDENBASTARD_INTERVAL = p.getProperty("HBInterval", "20:00").split(",");
HIDDENBASTARD_EVENT_REWARD_ID = Integer.parseInt(p.getProperty("HBRewardId", "6392"));
HIDDENBASTARD_EVENT_REWARD_AMOUNT = Integer.parseInt(p.getProperty("HBRewardAmount", "1"));
L2PcInstance.java
//HiddenBastard
private boolean isBastard;
public void setIsBastard(boolean isBastard) {
this.isBastard = isBastard;
}
public boolean getIsBastard() {
return isBastard;
}
#============================================================#
# Hidden Bastard #
#============================================================#
HBEnableEvent = True
HBInterval = 23:00
HBRewardId = 9252
HBRewardAmount = 1
Debes de estar registrado para poder ver el contenido indicado. Registrate o ConectateCierto la descarga ya no está activa, cuando tengas un seg para subirla se agradece, y felicidades por el trabajasoDebes de estar registrado para poder ver el contenido indicado. Registrate o ConectateSe podrán resubir los files a mega u otra plataforma? Me figura como no disponible el link de descarga
Lo reviso y te digo, gracias por avisar.
Debes de estar registrado para poder ver el contenido indicado. Registrate o ConectateSe podrán resubir los files a mega u otra plataforma? Me figura como no disponible el link de descarga
Debes de estar registrado para poder ver el contenido indicado. Registrate o ConectateCODIGO Adaptado para L2JFrozen y Corregido/* CODIGO DE SUBACUMULATIVA */
[/b]
public synchronized void restoreSkills() {
boolean isAcumulative = Config.ACUMULATIVE_SUBCLASS_SKILLS;
try (Connection con = L2DatabaseFactory.getInstance().getConnection(false)) {
// Eliminar habilidades específicas 146 y 147 antes de restaurar
// try (PreparedStatement deleteStatement = con.prepareStatement("DELETE FROM character_skills WHERE char_obj_id = ? AND skill_id IN (146, 147, 141, 249, 250)")) {
try (PreparedStatement deleteStatement = con.prepareStatement("DELETE FROM character_skills WHERE char_obj_id = ? AND skill_id IN (146, 147, 141, 249, 250, 227, 233, 236, 252, 258, 234, 235, 251, 231, 232, 253, 259)")) {
deleteStatement.setInt(1, getObjectId());
deleteStatement.executeUpdate();
}
PreparedStatement statement;
if (Config.KEEP_SUBCLASS_SKILLS) {
statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR_ALT_SUBCLASS);
statement.setInt(1, getObjectId());
} else {
statement = con.prepareStatement(isAcumulative ? ACUMULATE_SKILLS_FOR_CHAR_SUB : RESTORE_SKILLS_FOR_CHAR);
statement.setInt(1, getObjectId());
if (!isAcumulative) {
statement.setInt(2, getClassIndex());
}
}
// Usamos un conjunto para almacenar los skills que ya han sido agregados
Set<Integer> addedSkills = new HashSet<>();
try (ResultSet rset = statement.executeQuery()) {
while (rset.next()) {
int id = rset.getInt("skill_id");
int level = rset.getInt("skill_level");
// if (id > 9000 || id == 146 || id == 147 || id == 141 || id == 249 || id == 250) {
if (id > 9000 || id == 146 || id == 147 || id == 141 || id == 249 || id == 250 || id == 227 || id == 233 || id == 236 || id == 252 || id == 258 || id == 234 || id == 235 || id == 251 || id == 231 || id == 232 || id == 253 || id == 259) {
// Fake skills for base stats or excluded skills, skipping
continue;
}
// Verifica si la habilidad ya ha sido añadida para evitar duplicados
if (addedSkills.contains(id)) {
continue;
}
// Omite habilidades específicas de otras clases si no se deben conservar las habilidades de subclase
if (!Config.KEEP_SUBCLASS_SKILLS && rset.getInt("class_index") != getClassIndex()) {
continue; // Solo continuar si no es la clase actual y no estamos manteniendo las habilidades de subclase
}
// Añade la habilidad y registra su ID para evitar duplicados
L2Skill skill = SkillTable.getInstance().getInfo(id, level);
addSkill(skill);
addedSkills.add(id);
}
}
} catch (Exception e) {
if (Config.ENABLE_ALL_EXCEPTIONS) {
e.printStackTrace();
}
LOGGER.warn("Could not restore character skills: " + e);
}
}
/* CODIGO DE SUBACUMULATIVA */
public synchronized void restoreSkills() {
boolean isAcumulative = Config.ACUMULATIVE_SUBCLASS_SKILLS;
try (Connection con = L2DatabaseFactory.getInstance().getConnection(false)) {
// Eliminar habilidades específicas 146 y 147 antes de restaurar
// try (PreparedStatement deleteStatement = con.prepareStatement("DELETE FROM character_skills WHERE char_obj_id = ? AND skill_id IN (146, 147, 141, 249, 250)")) {
try (PreparedStatement deleteStatement = con.prepareStatement("DELETE FROM character_skills WHERE char_obj_id = ? AND skill_id IN (146, 147, 141, 249, 250, 227, 233, 236, 252, 258, 234, 235, 251, 231, 232, 253, 259)")) {
deleteStatement.setInt(1, getObjectId());
deleteStatement.executeUpdate();
}
PreparedStatement statement;
if (Config.KEEP_SUBCLASS_SKILLS) {
statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR_ALT_SUBCLASS);
statement.setInt(1, getObjectId());
} else {
statement = con.prepareStatement(isAcumulative ? ACUMULATE_SKILLS_FOR_CHAR_SUB : RESTORE_SKILLS_FOR_CHAR);
statement.setInt(1, getObjectId());
if (!isAcumulative) {
statement.setInt(2, getClassIndex());
}
}
// Usamos un conjunto para almacenar los skills que ya han sido agregados
Set<Integer> addedSkills = new HashSet<>();
try (ResultSet rset = statement.executeQuery()) {
while (rset.next()) {
int id = rset.getInt("skill_id");
int level = rset.getInt("skill_level");
// if (id > 9000 || id == 146 || id == 147 || id == 141 || id == 249 || id == 250) {
if (id > 9000 || id == 146 || id == 147 || id == 141 || id == 249 || id == 250 || id == 227 || id == 233 || id == 236 || id == 252 || id == 258 || id == 234 || id == 235 || id == 251 || id == 231 || id == 232 || id == 253 || id == 259) {
// Fake skills for base stats or excluded skills, skipping
continue;
}
// Verifica si la habilidad ya ha sido añadida para evitar duplicados
if (addedSkills.contains(id)) {
continue;
}
// Omite habilidades específicas de otras clases si no se deben conservar las habilidades de subclase
if (!Config.KEEP_SUBCLASS_SKILLS && rset.getInt("class_index") != getClassIndex()) {
continue; // Solo continuar si no es la clase actual y no estamos manteniendo las habilidades de subclase
}
// Añade la habilidad y registra su ID para evitar duplicados
L2Skill skill = SkillTable.getInstance().getInfo(id, level);
addSkill(skill);
addedSkills.add(id);
}
}
} catch (Exception e) {
if (Config.ENABLE_ALL_EXCEPTIONS) {
e.printStackTrace();
}
LOGGER.warn("Could not restore character skills: " + e);
}
}
[/b]