Hello. This is my first share after long ages I was posting my codes here as Leki. This code allows players to add/change any sub-classes (except Maestro & Overlord) at any kind of master, Magic/Fighter and and race.
### Eclipse Workspace Patch 1.0
#P L2jFrozen_GameServer
Index: config/head/altsettings.properties
===================================================================
--- config/head/altsettings.properties (revision 1118)
+++ config/head/altsettings.properties (working copy)
@@ -131,8 +131,11 @@
AltGameSkillLearn = False
# Allow player sub-class addition without checking for unique quest items.
AltSubClassWithoutQuests = True
+#Class Master gives ANY sub-class.
+AllowAllSubclassesChange = False
+
# Restore Buffs On Subclass Change.
# IMPORTANT: It's better put it False to avoid exploit
AltRestoreEffectOnSub = False
Index: head-src/com/l2jfrozen/Config.java
===================================================================
--- head-src/com/l2jfrozen/Config.java (revision 1118)
+++ head-src/com/l2jfrozen/Config.java (working copy)
@@ -1038,6 +1038,7 @@
public static boolean ALT_GAME_FREE_TELEPORT;
public static boolean ALT_RECOMMEND;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
+ public static boolean ALL_SUBCLASS;
public static boolean ALT_RESTORE_EFFECTS_ON_SUBCLASS_CHANGE;
public static boolean ALT_GAME_VIEWNPC;
public static int ALT_CLAN_MEMBERS_FOR_WAR;
@@ -1208,6 +1209,7 @@
ALT_GAME_FREE_TELEPORT = Boolean.parseBoolean(altSettings.getProperty("AltFreeTeleporting", "False"));
ALT_RECOMMEND = Boolean.parseBoolean(altSettings.getProperty("AltRecommend", "False"));
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Boolean.parseBoolean(altSettings.getProperty("AltSubClassWithoutQuests", "False"));
+ ALL_SUBCLASS = Boolean.parseBoolean(altSettings.getProperty("AllowAllSubclassesChange", "False"));
ALT_RESTORE_EFFECTS_ON_SUBCLASS_CHANGE = Boolean.parseBoolean(altSettings.getProperty("AltRestoreEffectOnSub", "False"));
ALT_GAME_VIEWNPC = Boolean.parseBoolean(altSettings.getProperty("AltGameViewNpc", "False"));
ALT_GAME_NEW_CHAR_ALWAYS_IS_NEWBIE = Boolean.parseBoolean(altSettings.getProperty("AltNewCharAlwaysIsNewbie", "False"));
Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2VillageMasterInstance.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2VillageMasterInstance.java (revision 1118)
+++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2VillageMasterInstance.java (working copy)
@@ -1086,7 +1086,8 @@
availSubs.remove(PlayerClass.values()[availSub.ordinal()]);
}
}
+ if(Config.ALL_SUBCLASS)
+ {
if (npcRace == PlayerRace.Human || npcRace == PlayerRace.LightElf)
{
// If the master is human or light elf, ensure that fighter-type
// masters only teach fighter classes, and priest-type masters
// only teach priest classes etc.
if (!availSub.isOfType(npcTeachType))
{
availSubs.remove(availSub);
}
else if (!availSub.isOfRace(PlayerRace.Human) && !availSub.isOfRace(PlayerRace.LightElf))
{
availSubs.remove(availSub);
}
}
else
{
// If the master is not human and not light elf,
// then remove any classes not of the same race as the master.
if (npcRace != PlayerRace.Human && npcRace != PlayerRace.LightElf && !availSub.isOfRace(npcRace))
{
availSubs.remove(availSub);
}
}
+ }
}
currClass = null;
return availSubs;
Screens:
http://postimg.org/image/rw9kn7rfb/
http://postimg.org/image/o166kn89j/