diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/areas/TalkingIsland/Raina/Raina.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/areas/TalkingIsland/Raina/Raina.java index 7785084e4f..9ba9117939 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/areas/TalkingIsland/Raina/Raina.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/areas/TalkingIsland/Raina/Raina.java @@ -16,8 +16,6 @@ */ package ai.areas.TalkingIsland.Raina; -import static org.l2jmobius.gameserver.model.base.ClassLevel.THIRD; - import java.util.ArrayList; import java.util.Arrays; import java.util.EnumMap; @@ -25,7 +23,9 @@ import java.util.EnumSet; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; +import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.gameserver.data.xml.impl.CategoryData; @@ -37,8 +37,6 @@ import org.l2jmobius.gameserver.enums.SubclassInfoType; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.base.ClassId; -import org.l2jmobius.gameserver.model.base.ClassLevel; -import org.l2jmobius.gameserver.model.base.PlayerClass; import org.l2jmobius.gameserver.model.base.SubClass; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; @@ -68,45 +66,37 @@ public class Raina extends AbstractNpcAI private static final int RAINA = 33491; // Items private static final int SUBCLASS_CERTIFICATE = 30433; - private static final int CHAOS_POMANDER_DUAL_CLASS = 37375; - private static final int ABELIUS_POWER = 32264; - private static final int SAPYROS_POWER = 32265; - private static final int ASHAGEN_POWER = 32266; - private static final int CRANIGG_POWER = 32267; - private static final int SOLTKREIG_POWER = 32268; - private static final int NAVIAROPE_POWER = 32269; - private static final int LEISTER_POWER = 32270; - private static final int LAKCIS_POWER = 32271; + private static final int CHAOS_POMANDER = 37375; // Misc - private static final Set mainSubclassSet; - private static final Set neverSubclassed = EnumSet.of(PlayerClass.Overlord, PlayerClass.Warsmith); - private static final Set subclasseSet1 = EnumSet.of(PlayerClass.DarkAvenger, PlayerClass.Paladin, PlayerClass.TempleKnight, PlayerClass.ShillienKnight); - private static final Set subclasseSet2 = EnumSet.of(PlayerClass.TreasureHunter, PlayerClass.AbyssWalker, PlayerClass.Plainswalker); - private static final Set subclasseSet3 = EnumSet.of(PlayerClass.Hawkeye, PlayerClass.SilverRanger, PlayerClass.PhantomRanger); - private static final Set subclasseSet4 = EnumSet.of(PlayerClass.Warlock, PlayerClass.ElementalSummoner, PlayerClass.PhantomSummoner); - private static final Set subclasseSet5 = EnumSet.of(PlayerClass.Sorceror, PlayerClass.Spellsinger, PlayerClass.Spellhowler); - private static final EnumMap> subclassSetMap = new EnumMap<>(PlayerClass.class); + private static final Set mainSubclassSet; + private static final Set neverSubclassed = EnumSet.of(ClassId.OVERLORD, ClassId.WARSMITH); + private static final Set subclasseSet1 = EnumSet.of(ClassId.DARK_AVENGER, ClassId.PALADIN, ClassId.TEMPLE_KNIGHT, ClassId.SHILLIEN_KNIGHT); + private static final Set subclasseSet2 = EnumSet.of(ClassId.TREASURE_HUNTER, ClassId.ABYSS_WALKER, ClassId.PLAINS_WALKER); + private static final Set subclasseSet3 = EnumSet.of(ClassId.HAWKEYE, ClassId.SILVER_RANGER, ClassId.PHANTOM_RANGER); + private static final Set subclasseSet4 = EnumSet.of(ClassId.WARLOCK, ClassId.ELEMENTAL_SUMMONER, ClassId.PHANTOM_SUMMONER); + private static final Set subclasseSet5 = EnumSet.of(ClassId.SORCERER, ClassId.SPELLSINGER, ClassId.SPELLHOWLER); + private static final EnumMap> subclassSetMap = new EnumMap<>(ClassId.class); static { - final Set subclasses = PlayerClass.getSet(null, THIRD); + final Set subclasses = CategoryData.getInstance().getCategoryByType(CategoryType.THIRD_CLASS_GROUP).stream().map(ClassId::getClassId).collect(Collectors.toSet()); subclasses.removeAll(neverSubclassed); mainSubclassSet = subclasses; - subclassSetMap.put(PlayerClass.DarkAvenger, subclasseSet1); - subclassSetMap.put(PlayerClass.Paladin, subclasseSet1); - subclassSetMap.put(PlayerClass.TempleKnight, subclasseSet1); - subclassSetMap.put(PlayerClass.ShillienKnight, subclasseSet1); - subclassSetMap.put(PlayerClass.TreasureHunter, subclasseSet2); - subclassSetMap.put(PlayerClass.AbyssWalker, subclasseSet2); - subclassSetMap.put(PlayerClass.Plainswalker, subclasseSet2); - subclassSetMap.put(PlayerClass.Hawkeye, subclasseSet3); - subclassSetMap.put(PlayerClass.SilverRanger, subclasseSet3); - subclassSetMap.put(PlayerClass.PhantomRanger, subclasseSet3); - subclassSetMap.put(PlayerClass.Warlock, subclasseSet4); - subclassSetMap.put(PlayerClass.ElementalSummoner, subclasseSet4); - subclassSetMap.put(PlayerClass.PhantomSummoner, subclasseSet4); - subclassSetMap.put(PlayerClass.Sorceror, subclasseSet5); - subclassSetMap.put(PlayerClass.Spellsinger, subclasseSet5); - subclassSetMap.put(PlayerClass.Spellhowler, subclasseSet5); + subclassSetMap.put(ClassId.DARK_AVENGER, subclasseSet1); + subclassSetMap.put(ClassId.PALADIN, subclasseSet1); + subclassSetMap.put(ClassId.TEMPLE_KNIGHT, subclasseSet1); + subclassSetMap.put(ClassId.SHILLIEN_KNIGHT, subclasseSet1); + subclassSetMap.put(ClassId.TREASURE_HUNTER, subclasseSet2); + subclassSetMap.put(ClassId.ABYSS_WALKER, subclasseSet2); + subclassSetMap.put(ClassId.PLAINS_WALKER, subclasseSet2); + subclassSetMap.put(ClassId.HAWKEYE, subclasseSet3); + subclassSetMap.put(ClassId.SILVER_RANGER, subclasseSet3); + subclassSetMap.put(ClassId.PHANTOM_RANGER, subclasseSet3); + subclassSetMap.put(ClassId.WARLOCK, subclasseSet4); + subclassSetMap.put(ClassId.ELEMENTAL_SUMMONER, subclasseSet4); + subclassSetMap.put(ClassId.PHANTOM_SUMMONER, subclasseSet4); + subclassSetMap.put(ClassId.SORCERER, subclasseSet5); + subclassSetMap.put(ClassId.SPELLSINGER, subclasseSet5); + subclassSetMap.put(ClassId.SPELLHOWLER, subclasseSet5); } private static final Map classCloak = new HashMap<>(); @@ -122,17 +112,30 @@ public class Raina extends AbstractNpcAI classCloak.put(CategoryType.SIXTH_EOLH_GROUP, 30317); // Laksis Cloak Grade } - private static final List dualClassList = new ArrayList<>(); + private static final Map powerItem = new HashMap<>(); static { - dualClassList.addAll(Arrays.asList(PlayerClass.sigelPhoenixKnight, PlayerClass.sigelHellKnight, PlayerClass.sigelEvasTemplar, PlayerClass.sigelShilenTemplar)); - dualClassList.addAll(Arrays.asList(PlayerClass.tyrrDuelist, PlayerClass.tyrrDreadnought, PlayerClass.tyrrTitan, PlayerClass.tyrrGrandKhavatari, PlayerClass.tyrrDoombringer)); - dualClassList.addAll(Arrays.asList(PlayerClass.othellAdventurer, PlayerClass.othellWindRider, PlayerClass.othellGhostHunter, PlayerClass.othellFortuneSeeker)); - dualClassList.addAll(Arrays.asList(PlayerClass.yulSagittarius, PlayerClass.yulMoonlightSentinel, PlayerClass.yulGhostSentinel, PlayerClass.yulTrickster)); - dualClassList.addAll(Arrays.asList(PlayerClass.feohArchmage, PlayerClass.feohSoultaker, PlayerClass.feohMysticMuse, PlayerClass.feoStormScreamer, PlayerClass.feohSoulHound)); - dualClassList.addAll(Arrays.asList(PlayerClass.issHierophant, PlayerClass.issSwordMuse, PlayerClass.issSpectralDancer, PlayerClass.issDoomcryer)); - dualClassList.addAll(Arrays.asList(PlayerClass.wynnArcanaLord, PlayerClass.wynnElementalMaster, PlayerClass.wynnSpectralMaster)); - dualClassList.addAll(Arrays.asList(PlayerClass.aeoreCardinal, PlayerClass.aeoreEvaSaint, PlayerClass.aeoreShillienSaint)); + powerItem.put(CategoryType.SIXTH_SIGEL_GROUP, 32264); // Abelius Power + powerItem.put(CategoryType.SIXTH_TIR_GROUP, 32265); // Sapyros Power + powerItem.put(CategoryType.SIXTH_OTHEL_GROUP, 32266); // Ashagen Power + powerItem.put(CategoryType.SIXTH_YR_GROUP, 32267); // Cranigg Power + powerItem.put(CategoryType.SIXTH_FEOH_GROUP, 32268); // Soltkreig Power + powerItem.put(CategoryType.SIXTH_WYNN_GROUP, 32269); // Naviarope Power + powerItem.put(CategoryType.SIXTH_IS_GROUP, 32270); // Leister Power + powerItem.put(CategoryType.SIXTH_EOLH_GROUP, 32271); // Laksis Power + } + + private static final List dualClassList = new ArrayList<>(); + static + { + dualClassList.addAll(Arrays.asList(ClassId.SIGEL_PHOENIX_KNIGHT, ClassId.SIGEL_HELL_KNIGHT, ClassId.SIGEL_EVA_TEMPLAR, ClassId.SIGEL_SHILLIEN_TEMPLAR)); + dualClassList.addAll(Arrays.asList(ClassId.TYRR_DUELIST, ClassId.TYRR_DREADNOUGHT, ClassId.TYRR_TITAN, ClassId.TYRR_GRAND_KHAVATARI, ClassId.TYRR_DOOMBRINGER)); + dualClassList.addAll(Arrays.asList(ClassId.OTHELL_ADVENTURER, ClassId.OTHELL_WIND_RIDER, ClassId.OTHELL_GHOST_HUNTER, ClassId.OTHELL_FORTUNE_SEEKER)); + dualClassList.addAll(Arrays.asList(ClassId.YUL_SAGITTARIUS, ClassId.YUL_MOONLIGHT_SENTINEL, ClassId.YUL_GHOST_SENTINEL, ClassId.YUL_TRICKSTER)); + dualClassList.addAll(Arrays.asList(ClassId.FEOH_ARCHMAGE, ClassId.FEOH_SOULTAKER, ClassId.FEOH_MYSTIC_MUSE, ClassId.FEOH_STORM_SCREAMER, ClassId.FEOH_SOUL_HOUND)); + dualClassList.addAll(Arrays.asList(ClassId.ISS_HIEROPHANT, ClassId.ISS_SWORD_MUSE, ClassId.ISS_SPECTRAL_DANCER, ClassId.ISS_DOOMCRYER)); + dualClassList.addAll(Arrays.asList(ClassId.WYNN_ARCANA_LORD, ClassId.WYNN_ELEMENTAL_MASTER, ClassId.WYNN_SPECTRAL_MASTER)); + dualClassList.addAll(Arrays.asList(ClassId.AEORE_CARDINAL, ClassId.AEORE_EVA_SAINT, ClassId.AEORE_SHILLIEN_SAINT)); } // @formatter:off @@ -193,7 +196,7 @@ public class Raina extends AbstractNpcAI } else { - final Set availSubs = getAvailableSubClasses(player); + final Set availSubs = getAvailableSubClasses(player); final StringBuilder sb = new StringBuilder(); final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "subclassList.html"); @@ -202,11 +205,11 @@ public class Raina extends AbstractNpcAI break; } - for (PlayerClass subClass : availSubs) + for (ClassId subClass : availSubs) { if (subClass != null) { - final int classId = subClass.ordinal(); + final int classId = subClass.getId(); final int npcStringId = 11170000 + classId; sb.append("" + npcStringId + ""); } @@ -327,11 +330,11 @@ public class Raina extends AbstractNpcAI final StringBuilder sb = new StringBuilder(); final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "addDualClassErtheiaList.html"); - for (PlayerClass dualClasses : getDualClasses(player, cType)) + for (ClassId dualClasses : getDualClasses(player, cType)) { if (dualClasses != null) { - sb.append("