ClassMaster adjustments.

This commit is contained in:
MobiusDev 2017-11-03 18:15:29 +00:00
parent b205e6b989
commit 27ed88baca
6 changed files with 66 additions and 33 deletions

View File

@ -62,7 +62,7 @@
</classChangeOption>
<classChangeOption name="Free">
<appliesTo>
<category>ISS_CANDIDATE</category>
<category>WYNN_CANDIDATE</category>
</appliesTo>
<rewards>
<item id="32269" count="1" />
@ -71,7 +71,7 @@
</classChangeOption>
<classChangeOption name="Free">
<appliesTo>
<category>WYNN_CANDIDATE</category>
<category>ISS_CANDIDATE</category>
</appliesTo>
<rewards>
<item id="32270" count="1" />

View File

@ -84,7 +84,6 @@ public final class Raina extends AbstractNpcAI
private static final Set<PlayerClass> subclasseSet4 = EnumSet.of(PlayerClass.Warlock, PlayerClass.ElementalSummoner, PlayerClass.PhantomSummoner);
private static final Set<PlayerClass> subclasseSet5 = EnumSet.of(PlayerClass.Sorceror, PlayerClass.Spellsinger, PlayerClass.Spellhowler);
private static final EnumMap<PlayerClass, Set<PlayerClass>> subclassSetMap = new EnumMap<>(PlayerClass.class);
static
{
final Set<PlayerClass> subclasses = PlayerClass.getSet(null, THIRD);
@ -109,20 +108,18 @@ public final class Raina extends AbstractNpcAI
}
private static final Map<CategoryType, Integer> classCloak = new HashMap<>();
{
classCloak.put(CategoryType.SIGEL_GROUP, 30310); // Abelius Cloak
classCloak.put(CategoryType.TYRR_GROUP, 30311); // Sapyros Cloak Grade
classCloak.put(CategoryType.OTHELL_GROUP, 30312); // Ashagen Cloak Grade
classCloak.put(CategoryType.YUL_GROUP, 30313); // Cranigg Cloak Grade
classCloak.put(CategoryType.FEOH_GROUP, 30314); // Soltkreig Cloak Grade
classCloak.put(CategoryType.ISS_GROUP, 30315); // Naviarope Cloak Grade
classCloak.put(CategoryType.WYNN_GROUP, 30316); // Leister Cloak Grade
classCloak.put(CategoryType.WYNN_GROUP, 30315); // Naviarope Cloak Grade
classCloak.put(CategoryType.ISS_GROUP, 30316); // Leister Cloak Grade
classCloak.put(CategoryType.AEORE_GROUP, 30317); // Laksis Cloak Grade
}
private static final List<PlayerClass> dualClassList = new ArrayList<>();
{
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));
@ -270,6 +267,10 @@ public final class Raina extends AbstractNpcAI
{
htmltext = "noErtheia.html";
}
else if (!player.isInventoryUnder80(true) || (player.getWeightPenalty() >= 2))
{
htmltext = "inventoryLimit.html";
}
else if (player.getSubClasses().isEmpty())
{
htmltext = "noSubChange.html";
@ -287,7 +288,7 @@ public final class Raina extends AbstractNpcAI
case "ertheiaDualClass":
{
// TODO: Maybe html is different when you have 85lvl but you haven't completed quest
if (player.hasDualClass() || !haveDoneQuest(player, true))
if ((player.getRace() != Race.ERTHEIA) || (player.getLevel() < 85) || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal()) || player.hasDualClass() || !haveDoneQuest(player, true))
{
htmltext = "addDualClassErtheiaFailed.html";
}
@ -306,6 +307,12 @@ public final class Raina extends AbstractNpcAI
case "addDualClass_WYNN_GROUP":
case "addDualClass_AEORE_GROUP":
{
if ((player.getRace() != Race.ERTHEIA) || (player.getLevel() < 85) || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal()) || player.hasDualClass() || !haveDoneQuest(player, true))
{
htmltext = "addDualClassErtheiaFailed.html";
break;
}
final CategoryType cType = CategoryType.valueOf(event.replace("addDualClass_", ""));
if (cType == null)
@ -337,10 +344,14 @@ public final class Raina extends AbstractNpcAI
{
htmltext = "noSummon.html";
}
else if (!player.hasDualClass() || !player.isDualClassActive() || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal()))
else if (!player.hasDualClass() || (player.getLevel() < 85) || !player.isDualClassActive() || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal()))
{
htmltext = "reawakenNoDual.html";
}
else if (!player.isInventoryUnder80(true) || (player.getWeightPenalty() >= 2))
{
htmltext = "inventoryLimit.html";
}
else
{
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "reawaken.html");
@ -623,11 +634,11 @@ public final class Raina extends AbstractNpcAI
{
itemId = SOLTKREIG_POWER;
}
else if (player.isInCategory(CategoryType.ISS_GROUP))
else if (player.isInCategory(CategoryType.WYNN_GROUP))
{
itemId = NAVIAROPE_POWER;
}
else if (player.isInCategory(CategoryType.WYNN_GROUP))
else if (player.isInCategory(CategoryType.ISS_GROUP))
{
itemId = LEISTER_POWER;
}

View File

@ -62,7 +62,7 @@
</classChangeOption>
<classChangeOption name="Free">
<appliesTo>
<category>ISS_CANDIDATE</category>
<category>WYNN_CANDIDATE</category>
</appliesTo>
<rewards>
<item id="32269" count="1" />
@ -71,7 +71,7 @@
</classChangeOption>
<classChangeOption name="Free">
<appliesTo>
<category>WYNN_CANDIDATE</category>
<category>ISS_CANDIDATE</category>
</appliesTo>
<rewards>
<item id="32270" count="1" />

View File

@ -84,7 +84,6 @@ public final class Raina extends AbstractNpcAI
private static final Set<PlayerClass> subclasseSet4 = EnumSet.of(PlayerClass.Warlock, PlayerClass.ElementalSummoner, PlayerClass.PhantomSummoner);
private static final Set<PlayerClass> subclasseSet5 = EnumSet.of(PlayerClass.Sorceror, PlayerClass.Spellsinger, PlayerClass.Spellhowler);
private static final EnumMap<PlayerClass, Set<PlayerClass>> subclassSetMap = new EnumMap<>(PlayerClass.class);
static
{
final Set<PlayerClass> subclasses = PlayerClass.getSet(null, THIRD);
@ -109,20 +108,18 @@ public final class Raina extends AbstractNpcAI
}
private static final Map<CategoryType, Integer> classCloak = new HashMap<>();
{
classCloak.put(CategoryType.SIGEL_GROUP, 30310); // Abelius Cloak
classCloak.put(CategoryType.TYRR_GROUP, 30311); // Sapyros Cloak Grade
classCloak.put(CategoryType.OTHELL_GROUP, 30312); // Ashagen Cloak Grade
classCloak.put(CategoryType.YUL_GROUP, 30313); // Cranigg Cloak Grade
classCloak.put(CategoryType.FEOH_GROUP, 30314); // Soltkreig Cloak Grade
classCloak.put(CategoryType.ISS_GROUP, 30315); // Naviarope Cloak Grade
classCloak.put(CategoryType.WYNN_GROUP, 30316); // Leister Cloak Grade
classCloak.put(CategoryType.WYNN_GROUP, 30315); // Naviarope Cloak Grade
classCloak.put(CategoryType.ISS_GROUP, 30316); // Leister Cloak Grade
classCloak.put(CategoryType.AEORE_GROUP, 30317); // Laksis Cloak Grade
}
private static final List<PlayerClass> dualClassList = new ArrayList<>();
{
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));
@ -270,6 +267,10 @@ public final class Raina extends AbstractNpcAI
{
htmltext = "noErtheia.html";
}
else if (!player.isInventoryUnder80(true) || (player.getWeightPenalty() >= 2))
{
htmltext = "inventoryLimit.html";
}
else if (player.getSubClasses().isEmpty())
{
htmltext = "noSubChange.html";
@ -287,7 +288,7 @@ public final class Raina extends AbstractNpcAI
case "ertheiaDualClass":
{
// TODO: Maybe html is different when you have 85lvl but you haven't completed quest
if (player.hasDualClass() || !haveDoneQuest(player, true))
if ((player.getRace() != Race.ERTHEIA) || (player.getLevel() < 85) || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal()) || player.hasDualClass() || !haveDoneQuest(player, true))
{
htmltext = "addDualClassErtheiaFailed.html";
}
@ -306,6 +307,12 @@ public final class Raina extends AbstractNpcAI
case "addDualClass_WYNN_GROUP":
case "addDualClass_AEORE_GROUP":
{
if ((player.getRace() != Race.ERTHEIA) || (player.getLevel() < 85) || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal()) || player.hasDualClass() || !haveDoneQuest(player, true))
{
htmltext = "addDualClassErtheiaFailed.html";
break;
}
final CategoryType cType = CategoryType.valueOf(event.replace("addDualClass_", ""));
if (cType == null)
@ -337,10 +344,14 @@ public final class Raina extends AbstractNpcAI
{
htmltext = "noSummon.html";
}
else if (!player.hasDualClass() || !player.isDualClassActive() || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal()))
else if (!player.hasDualClass() || (player.getLevel() < 85) || !player.isDualClassActive() || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal()))
{
htmltext = "reawakenNoDual.html";
}
else if (!player.isInventoryUnder80(true) || (player.getWeightPenalty() >= 2))
{
htmltext = "inventoryLimit.html";
}
else
{
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "reawaken.html");
@ -623,11 +634,11 @@ public final class Raina extends AbstractNpcAI
{
itemId = SOLTKREIG_POWER;
}
else if (player.isInCategory(CategoryType.ISS_GROUP))
else if (player.isInCategory(CategoryType.WYNN_GROUP))
{
itemId = NAVIAROPE_POWER;
}
else if (player.isInCategory(CategoryType.WYNN_GROUP))
else if (player.isInCategory(CategoryType.ISS_GROUP))
{
itemId = LEISTER_POWER;
}

View File

@ -62,7 +62,7 @@
</classChangeOption>
<classChangeOption name="Free">
<appliesTo>
<category>ISS_CANDIDATE</category>
<category>WYNN_CANDIDATE</category>
</appliesTo>
<rewards>
<item id="32269" count="1" />
@ -71,7 +71,7 @@
</classChangeOption>
<classChangeOption name="Free">
<appliesTo>
<category>WYNN_CANDIDATE</category>
<category>ISS_CANDIDATE</category>
</appliesTo>
<rewards>
<item id="32270" count="1" />

View File

@ -84,7 +84,6 @@ public final class Raina extends AbstractNpcAI
private static final Set<PlayerClass> subclasseSet4 = EnumSet.of(PlayerClass.Warlock, PlayerClass.ElementalSummoner, PlayerClass.PhantomSummoner);
private static final Set<PlayerClass> subclasseSet5 = EnumSet.of(PlayerClass.Sorceror, PlayerClass.Spellsinger, PlayerClass.Spellhowler);
private static final EnumMap<PlayerClass, Set<PlayerClass>> subclassSetMap = new EnumMap<>(PlayerClass.class);
static
{
final Set<PlayerClass> subclasses = PlayerClass.getSet(null, THIRD);
@ -109,20 +108,18 @@ public final class Raina extends AbstractNpcAI
}
private static final Map<CategoryType, Integer> classCloak = new HashMap<>();
{
classCloak.put(CategoryType.SIGEL_GROUP, 30310); // Abelius Cloak
classCloak.put(CategoryType.TYRR_GROUP, 30311); // Sapyros Cloak Grade
classCloak.put(CategoryType.OTHELL_GROUP, 30312); // Ashagen Cloak Grade
classCloak.put(CategoryType.YUL_GROUP, 30313); // Cranigg Cloak Grade
classCloak.put(CategoryType.FEOH_GROUP, 30314); // Soltkreig Cloak Grade
classCloak.put(CategoryType.ISS_GROUP, 30315); // Naviarope Cloak Grade
classCloak.put(CategoryType.WYNN_GROUP, 30316); // Leister Cloak Grade
classCloak.put(CategoryType.WYNN_GROUP, 30315); // Naviarope Cloak Grade
classCloak.put(CategoryType.ISS_GROUP, 30316); // Leister Cloak Grade
classCloak.put(CategoryType.AEORE_GROUP, 30317); // Laksis Cloak Grade
}
private static final List<PlayerClass> dualClassList = new ArrayList<>();
{
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));
@ -270,6 +267,10 @@ public final class Raina extends AbstractNpcAI
{
htmltext = "noErtheia.html";
}
else if (!player.isInventoryUnder80(true) || (player.getWeightPenalty() >= 2))
{
htmltext = "inventoryLimit.html";
}
else if (player.getSubClasses().isEmpty())
{
htmltext = "noSubChange.html";
@ -287,7 +288,7 @@ public final class Raina extends AbstractNpcAI
case "ertheiaDualClass":
{
// TODO: Maybe html is different when you have 85lvl but you haven't completed quest
if (player.hasDualClass() || !haveDoneQuest(player, true))
if ((player.getRace() != Race.ERTHEIA) || (player.getLevel() < 85) || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal()) || player.hasDualClass() || !haveDoneQuest(player, true))
{
htmltext = "addDualClassErtheiaFailed.html";
}
@ -306,6 +307,12 @@ public final class Raina extends AbstractNpcAI
case "addDualClass_WYNN_GROUP":
case "addDualClass_AEORE_GROUP":
{
if ((player.getRace() != Race.ERTHEIA) || (player.getLevel() < 85) || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal()) || player.hasDualClass() || !haveDoneQuest(player, true))
{
htmltext = "addDualClassErtheiaFailed.html";
break;
}
final CategoryType cType = CategoryType.valueOf(event.replace("addDualClass_", ""));
if (cType == null)
@ -337,10 +344,14 @@ public final class Raina extends AbstractNpcAI
{
htmltext = "noSummon.html";
}
else if (!player.hasDualClass() || !player.isDualClassActive() || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal()))
else if (!player.hasDualClass() || (player.getLevel() < 85) || !player.isDualClassActive() || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal()))
{
htmltext = "reawakenNoDual.html";
}
else if (!player.isInventoryUnder80(true) || (player.getWeightPenalty() >= 2))
{
htmltext = "inventoryLimit.html";
}
else
{
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "reawaken.html");
@ -623,11 +634,11 @@ public final class Raina extends AbstractNpcAI
{
itemId = SOLTKREIG_POWER;
}
else if (player.isInCategory(CategoryType.ISS_GROUP))
else if (player.isInCategory(CategoryType.WYNN_GROUP))
{
itemId = NAVIAROPE_POWER;
}
else if (player.isInCategory(CategoryType.WYNN_GROUP))
else if (player.isInCategory(CategoryType.ISS_GROUP))
{
itemId = LEISTER_POWER;
}