Browse Source

config option - change subclass on any village master, thx Notorious

janiii 15 years ago
parent
commit
1e6bffceff

+ 4 - 0
L2_GameServer/java/config/Character.properties

@@ -174,6 +174,10 @@ AltGameSkillLearn = False
 # Default: False
 AltSubClassWithoutQuests = False
 
+# Allow player to add/change subclass at all village master
+# Default: False
+AltSubclassEverywhere = False
+
 # ---------------------------------------------------------------------------
 # Vitality configuration
 # ---------------------------------------------------------------------------

+ 3 - 0
L2_GameServer/java/net/sf/l2j/Config.java

@@ -100,6 +100,7 @@ public final class Config
 	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_EVERYWHERE;
 	public static int MAX_RUN_SPEED;
 	public static int MAX_PCRIT_RATE;
 	public static int MAX_MCRIT_RATE;
@@ -1200,6 +1201,7 @@ public final class Config
 					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_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"));
 					MAX_RUN_SPEED = Integer.parseInt(Character.getProperty("MaxRunSpeed", "250"));
@@ -2365,6 +2367,7 @@ public final class Config
 		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("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);
 		else if (pName.equalsIgnoreCase("CommonRecipeLimit")) COMMON_RECIPE_LIMIT = Integer.parseInt(pValue);

+ 6 - 6
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2VillageMasterInstance.java

@@ -211,14 +211,14 @@ public final class L2VillageMasterInstance extends L2NpcInstance
 				case 0: // Subclass change menu
 					if (getVillageMasterRace() == Race.Kamael)
 					{
-						if (player.getRace() == Race.Kamael)
+						if (player.getRace() == Race.Kamael || Config.ALT_GAME_SUBCLASS_EVERYWHERE)
 							html.setFile("data/html/villagemaster/SubClass.htm");
 						else
 							html.setFile("data/html/villagemaster/SubClass_NoKamael.htm");
 					}
 					else
 					{
-						if (player.getRace() != Race.Kamael)
+						if (player.getRace() != Race.Kamael || Config.ALT_GAME_SUBCLASS_EVERYWHERE)
 							html.setFile("data/html/villagemaster/SubClass.htm");
 						else
 							html.setFile("data/html/villagemaster/SubClass_NoOther.htm");
@@ -268,7 +268,7 @@ public final class L2VillageMasterInstance extends L2NpcInstance
 					{
 						final StringBuilder content2 = StringUtil.startAppend(200);
 
-						if (checkVillageMaster(player.getBaseClass()))
+						if (checkVillageMaster(player.getBaseClass()) || Config.ALT_GAME_SUBCLASS_EVERYWHERE)
 						{
 							StringUtil.append(content2,
 									"<a action=\"bypass -h npc_%objectId%_Subclass 5 0\">",
@@ -279,7 +279,7 @@ public final class L2VillageMasterInstance extends L2NpcInstance
 						for (Iterator<SubClass> subList = iterSubClasses(player); subList.hasNext();)
 						{
 							SubClass subClass = subList.next();
-							if (checkVillageMaster(subClass.getClassDefinition()))
+							if (checkVillageMaster(subClass.getClassDefinition()) || Config.ALT_GAME_SUBCLASS_EVERYWHERE)
 							{
 								StringUtil.append(content2,
 										"<a action=\"bypass -h npc_%objectId%_Subclass 5 ",
@@ -454,14 +454,14 @@ public final class L2VillageMasterInstance extends L2NpcInstance
 
 					if (paramOne == 0)
 					{
-						if (!checkVillageMaster(player.getBaseClass()))
+						if (!checkVillageMaster(player.getBaseClass()) && !Config.ALT_GAME_SUBCLASS_EVERYWHERE)
 							return;
 					}
 					else
 					{
 						try
 						{
-							if (!checkVillageMaster(player.getSubClasses().get(paramOne).getClassDefinition()))
+							if (!checkVillageMaster(player.getSubClasses().get(paramOne).getClassDefinition()) && !Config.ALT_GAME_SUBCLASS_EVERYWHERE)
 								return;
 						}
 						catch (NullPointerException e)