Index: java/com/l2jserver/Config.java===================================================================
--- Config.java (revision 4211)
+++ Config.java (working copy)
@@ -115,6 +115,7 @@
public static boolean DIVINE_SP_BOOK_NEEDED;
public static boolean ALT_GAME_SKILL_LEARN;
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
+ public static boolean ALT_GAME_SUBCLASS_ALL_CLASSES;
public static boolean ALT_GAME_SUBCLASS_EVERYWHERE;
public static int MAX_RUN_SPEED;
public static int MAX_PCRIT_RATE;
@@ -1390,6 +1394,7 @@
DIVINE_SP_BOOK_NEEDED = Boolean.parseBoolean(Character.getProperty("DivineInspirationSpBookNeeded", "true"));
ALT_GAME_SKILL_LEARN = Boolean.parseBoolean(Character.getProperty("AltGameSkillLearn", "false"));
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Boolean.parseBoolean(Character.getProperty("AltSubClassWithoutQuests", "False"));
+ ALT_GAME_SUBCLASS_ALL_CLASSES = Boolean.parseBoolean(Character.getProperty("AltSubclassAllClasses", "False"));
ALT_GAME_SUBCLASS_EVERYWHERE = Boolean.parseBoolean(Character.getProperty("AltSubclassEverywhere", "False"));
ENABLE_VITALITY = Boolean.parseBoolean(Character.getProperty("EnableVitality", "True"));
RECOVER_VITALITY_ON_RECONNECT = Boolean.parseBoolean(Character.getProperty("RecoverVitalityOnReconnect", "True"));
@@ -2844,6 +2860,7 @@
else if (pName.equalsIgnoreCase("AltRequireClanCastle")) ALT_GAME_REQUIRE_CLAN_CASTLE = Boolean.parseBoolean(pValue);
else if (pName.equalsIgnoreCase("AltFreeTeleporting")) ALT_GAME_FREE_TELEPORT = Boolean.parseBoolean(pValue);
else if (pName.equalsIgnoreCase("AltSubClassWithoutQuests")) ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Boolean.parseBoolean(pValue);
+ else if (pName.equalsIgnoreCase("AltSubclassAllClasses")) ALT_GAME_SUBCLASS_ALL_CLASSES = Boolean.parseBoolean(pValue);
else if (pName.equalsIgnoreCase("AltSubclassEverywhere")) ALT_GAME_SUBCLASS_EVERYWHERE = Boolean.parseBoolean(pValue);
else if (pName.equalsIgnoreCase("AltMembersCanWithdrawFromClanWH")) ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH = Boolean.parseBoolean(pValue);
else if (pName.equalsIgnoreCase("DwarfRecipeLimit")) DWARF_RECIPE_LIMIT = Integer.parseInt(pValue);
Index: java/com/l2jserver/gameserver/model/base/PlayerClass.java
===================================================================
--- PlayerClass.java (revision 4211)
+++ PlayerClass.java (working copy)
@@ -43,6 +43,7 @@
import java.util.Set;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.Config;
/**
@@ -261,7 +262,13 @@
if (_level == Third)
{
- if (player.getRace() != Kamael)
+ if (Config.ALT_GAME_SUBCLASS_ALL_CLASSES)
+ {
+ subclasses = EnumSet.copyOf(mainSubclassSet);
+ subclasses.addAll(neverSubclassed);
+ subclasses.remove(this);
+ }
+ else if (player.getRace() != Kamael)
{
subclasses = EnumSet.copyOf(mainSubclassSet);
Index: java/config/Character.properties
===================================================================
--- Character.properties (revision 4211)
+++ Character.properties (working copy)
@@ -203,6 +203,11 @@
# Default: False
AltSubClassWithoutQuests = False
+# Allow player to take any sub-class without any restriction.
+# Including Warsmith and Overlord.
+# Default: False
+AltSubclassAllClasses = False
+
# Allow player to add/change subclass at all village master
# Default: False
AltSubclassEverywhere = False