diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java index c6aef1b660..91ad4b640c 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java @@ -856,17 +856,16 @@ public class VillageMasterInstance extends NpcInstance subclasses = EnumSet.copyOf(mainSubclassSet); subclasses.remove(pClass); - // Kamaels can only take Kamael classes as subclasses. - for (ClassId cid : ClassId.values()) - { - if ((cid.getRace() == Race.KAMAEL) && (player.getRace() != Race.KAMAEL)) - { - subclasses.remove(cid); - } - } - if (player.getRace() == Race.KAMAEL) { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() != Race.KAMAEL) + { + subclasses.remove(cid); + } + } + if (player.getAppearance().isFemale()) { subclasses.remove(ClassId.MALE_SOULBREAKER); @@ -881,6 +880,37 @@ public class VillageMasterInstance extends NpcInstance subclasses.remove(ClassId.INSPECTOR); } } + else + { + if (player.getRace() == Race.ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.DARK_ELF) + { + subclasses.remove(cid); + } + } + } + else if (player.getRace() == Race.DARK_ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.ELF) + { + subclasses.remove(cid); + } + } + } + + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.KAMAEL) + { + subclasses.remove(cid); + } + } + } Set unavailableClasses = subclassSetMap.get(pClass); if (unavailableClasses != null) diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java index aa5ed69543..c2ee4f3369 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java @@ -856,17 +856,16 @@ public class VillageMasterInstance extends NpcInstance subclasses = EnumSet.copyOf(mainSubclassSet); subclasses.remove(pClass); - // Kamaels can only take Kamael classes as subclasses. - for (ClassId cid : ClassId.values()) - { - if ((cid.getRace() == Race.KAMAEL) && (player.getRace() != Race.KAMAEL)) - { - subclasses.remove(cid); - } - } - if (player.getRace() == Race.KAMAEL) { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() != Race.KAMAEL) + { + subclasses.remove(cid); + } + } + if (player.getAppearance().isFemale()) { subclasses.remove(ClassId.MALE_SOULBREAKER); @@ -881,6 +880,37 @@ public class VillageMasterInstance extends NpcInstance subclasses.remove(ClassId.INSPECTOR); } } + else + { + if (player.getRace() == Race.ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.DARK_ELF) + { + subclasses.remove(cid); + } + } + } + else if (player.getRace() == Race.DARK_ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.ELF) + { + subclasses.remove(cid); + } + } + } + + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.KAMAEL) + { + subclasses.remove(cid); + } + } + } Set unavailableClasses = subclassSetMap.get(pClass); if (unavailableClasses != null) diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java index 98e5824f3a..492e04e295 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java @@ -840,17 +840,16 @@ public class VillageMasterInstance extends NpcInstance subclasses = EnumSet.copyOf(mainSubclassSet); subclasses.remove(pClass); - // Kamaels can only take Kamael classes as subclasses. - for (ClassId cid : ClassId.values()) - { - if ((cid.getRace() == Race.KAMAEL) && (player.getRace() != Race.KAMAEL)) - { - subclasses.remove(cid); - } - } - if (player.getRace() == Race.KAMAEL) { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() != Race.KAMAEL) + { + subclasses.remove(cid); + } + } + if (player.getAppearance().isFemale()) { subclasses.remove(ClassId.MALE_SOULBREAKER); @@ -865,6 +864,37 @@ public class VillageMasterInstance extends NpcInstance subclasses.remove(ClassId.INSPECTOR); } } + else + { + if (player.getRace() == Race.ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.DARK_ELF) + { + subclasses.remove(cid); + } + } + } + else if (player.getRace() == Race.DARK_ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.ELF) + { + subclasses.remove(cid); + } + } + } + + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.KAMAEL) + { + subclasses.remove(cid); + } + } + } Set unavailableClasses = subclassSetMap.get(pClass); if (unavailableClasses != null) diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java index 98e5824f3a..492e04e295 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java @@ -840,17 +840,16 @@ public class VillageMasterInstance extends NpcInstance subclasses = EnumSet.copyOf(mainSubclassSet); subclasses.remove(pClass); - // Kamaels can only take Kamael classes as subclasses. - for (ClassId cid : ClassId.values()) - { - if ((cid.getRace() == Race.KAMAEL) && (player.getRace() != Race.KAMAEL)) - { - subclasses.remove(cid); - } - } - if (player.getRace() == Race.KAMAEL) { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() != Race.KAMAEL) + { + subclasses.remove(cid); + } + } + if (player.getAppearance().isFemale()) { subclasses.remove(ClassId.MALE_SOULBREAKER); @@ -865,6 +864,37 @@ public class VillageMasterInstance extends NpcInstance subclasses.remove(ClassId.INSPECTOR); } } + else + { + if (player.getRace() == Race.ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.DARK_ELF) + { + subclasses.remove(cid); + } + } + } + else if (player.getRace() == Race.DARK_ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.ELF) + { + subclasses.remove(cid); + } + } + } + + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.KAMAEL) + { + subclasses.remove(cid); + } + } + } Set unavailableClasses = subclassSetMap.get(pClass); if (unavailableClasses != null) diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java index 98e5824f3a..492e04e295 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java @@ -840,17 +840,16 @@ public class VillageMasterInstance extends NpcInstance subclasses = EnumSet.copyOf(mainSubclassSet); subclasses.remove(pClass); - // Kamaels can only take Kamael classes as subclasses. - for (ClassId cid : ClassId.values()) - { - if ((cid.getRace() == Race.KAMAEL) && (player.getRace() != Race.KAMAEL)) - { - subclasses.remove(cid); - } - } - if (player.getRace() == Race.KAMAEL) { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() != Race.KAMAEL) + { + subclasses.remove(cid); + } + } + if (player.getAppearance().isFemale()) { subclasses.remove(ClassId.MALE_SOULBREAKER); @@ -865,6 +864,37 @@ public class VillageMasterInstance extends NpcInstance subclasses.remove(ClassId.INSPECTOR); } } + else + { + if (player.getRace() == Race.ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.DARK_ELF) + { + subclasses.remove(cid); + } + } + } + else if (player.getRace() == Race.DARK_ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.ELF) + { + subclasses.remove(cid); + } + } + } + + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.KAMAEL) + { + subclasses.remove(cid); + } + } + } Set unavailableClasses = subclassSetMap.get(pClass); if (unavailableClasses != null) diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java index 98e5824f3a..492e04e295 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java @@ -840,17 +840,16 @@ public class VillageMasterInstance extends NpcInstance subclasses = EnumSet.copyOf(mainSubclassSet); subclasses.remove(pClass); - // Kamaels can only take Kamael classes as subclasses. - for (ClassId cid : ClassId.values()) - { - if ((cid.getRace() == Race.KAMAEL) && (player.getRace() != Race.KAMAEL)) - { - subclasses.remove(cid); - } - } - if (player.getRace() == Race.KAMAEL) { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() != Race.KAMAEL) + { + subclasses.remove(cid); + } + } + if (player.getAppearance().isFemale()) { subclasses.remove(ClassId.MALE_SOULBREAKER); @@ -865,6 +864,37 @@ public class VillageMasterInstance extends NpcInstance subclasses.remove(ClassId.INSPECTOR); } } + else + { + if (player.getRace() == Race.ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.DARK_ELF) + { + subclasses.remove(cid); + } + } + } + else if (player.getRace() == Race.DARK_ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.ELF) + { + subclasses.remove(cid); + } + } + } + + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.KAMAEL) + { + subclasses.remove(cid); + } + } + } Set unavailableClasses = subclassSetMap.get(pClass); if (unavailableClasses != null) diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java index 98e5824f3a..492e04e295 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java @@ -840,17 +840,16 @@ public class VillageMasterInstance extends NpcInstance subclasses = EnumSet.copyOf(mainSubclassSet); subclasses.remove(pClass); - // Kamaels can only take Kamael classes as subclasses. - for (ClassId cid : ClassId.values()) - { - if ((cid.getRace() == Race.KAMAEL) && (player.getRace() != Race.KAMAEL)) - { - subclasses.remove(cid); - } - } - if (player.getRace() == Race.KAMAEL) { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() != Race.KAMAEL) + { + subclasses.remove(cid); + } + } + if (player.getAppearance().isFemale()) { subclasses.remove(ClassId.MALE_SOULBREAKER); @@ -865,6 +864,37 @@ public class VillageMasterInstance extends NpcInstance subclasses.remove(ClassId.INSPECTOR); } } + else + { + if (player.getRace() == Race.ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.DARK_ELF) + { + subclasses.remove(cid); + } + } + } + else if (player.getRace() == Race.DARK_ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.ELF) + { + subclasses.remove(cid); + } + } + } + + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.KAMAEL) + { + subclasses.remove(cid); + } + } + } Set unavailableClasses = subclassSetMap.get(pClass); if (unavailableClasses != null) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java index 26ce86cba9..e64b7b7ca2 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java @@ -840,32 +840,62 @@ public class VillageMasterInstance extends NpcInstance subclasses = EnumSet.copyOf(mainSubclassSet); subclasses.remove(pClass); - // Kamaels can only take Kamael classes as subclasses. - for (ClassId cid : ClassId.values()) + if (player.getRace() == Race.KAMAEL) { - if ((cid.getRace() == Race.KAMAEL) && (player.getRace() != Race.KAMAEL)) + for (ClassId cid : ClassId.values()) { - subclasses.remove(cid); + if (cid.getRace() != Race.KAMAEL) + { + subclasses.remove(cid); + } + } + + // if (player.getAppearance().isFemale()) + // { + // subclasses.remove(ClassId.MALE_SOULBREAKER); + // } + // else + // { + // subclasses.remove(ClassId.FEMALE_SOULBREAKER); + // } + // + // if (!player.getSubClasses().containsKey(2) || (player.getSubClasses().get(2).getLevel() < 75)) + // { + // subclasses.remove(ClassId.INSPECTOR); + // } + } + else + { + if (player.getRace() == Race.ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.DARK_ELF) + { + subclasses.remove(cid); + } + } + } + else if (player.getRace() == Race.DARK_ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.ELF) + { + subclasses.remove(cid); + } + } + } + + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.KAMAEL) + { + subclasses.remove(cid); + } } } - // if (player.getRace() == Race.KAMAEL) - // { - // if (player.getAppearance().isFemale()) - // { - // subclasses.remove(ClassId.MALE_SOULBREAKER); - // } - // else - // { - // subclasses.remove(ClassId.FEMALE_SOULBREAKER); - // } - // - // if (!player.getSubClasses().containsKey(2) || (player.getSubClasses().get(2).getLevel() < 75)) - // { - // subclasses.remove(ClassId.INSPECTOR); - // } - // } - Set unavailableClasses = subclassSetMap.get(pClass); if (unavailableClasses != null) { diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java index 98e5824f3a..492e04e295 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java @@ -840,17 +840,16 @@ public class VillageMasterInstance extends NpcInstance subclasses = EnumSet.copyOf(mainSubclassSet); subclasses.remove(pClass); - // Kamaels can only take Kamael classes as subclasses. - for (ClassId cid : ClassId.values()) - { - if ((cid.getRace() == Race.KAMAEL) && (player.getRace() != Race.KAMAEL)) - { - subclasses.remove(cid); - } - } - if (player.getRace() == Race.KAMAEL) { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() != Race.KAMAEL) + { + subclasses.remove(cid); + } + } + if (player.getAppearance().isFemale()) { subclasses.remove(ClassId.MALE_SOULBREAKER); @@ -865,6 +864,37 @@ public class VillageMasterInstance extends NpcInstance subclasses.remove(ClassId.INSPECTOR); } } + else + { + if (player.getRace() == Race.ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.DARK_ELF) + { + subclasses.remove(cid); + } + } + } + else if (player.getRace() == Race.DARK_ELF) + { + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.ELF) + { + subclasses.remove(cid); + } + } + } + + for (ClassId cid : ClassId.values()) + { + if (cid.getRace() == Race.KAMAEL) + { + subclasses.remove(cid); + } + } + } Set unavailableClasses = subclassSetMap.get(pClass); if (unavailableClasses != null)