diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ClassMasterInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ClassMasterInstance.java
index 43c7bbaff2..857bc9ea7d 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ClassMasterInstance.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ClassMasterInstance.java
@@ -22,8 +22,6 @@ import org.l2jmobius.gameserver.datatables.sql.CharTemplateTable;
import org.l2jmobius.gameserver.datatables.xml.ItemTable;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
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.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.network.SystemMessageId;
@@ -84,20 +82,20 @@ public class ClassMasterInstance extends FolkInstance
final ClassId classId = player.getClassId();
int jobLevel = 0;
final int level = player.getLevel();
- final ClassLevel lvl = PlayerClass.values()[classId.getId()].getLevel();
+ final int lvl = classId.level();
switch (lvl)
{
- case FIRST:
+ case 0:
{
jobLevel = 1;
break;
}
- case SECOND:
+ case 1:
{
jobLevel = 2;
break;
}
- case THIRD:
+ case 2:
{
jobLevel = 3;
break;
@@ -123,7 +121,7 @@ public class ClassMasterInstance extends FolkInstance
{
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
final StringBuilder sb = new StringBuilder();
- sb.append("
Class Manager

");
+ sb.append("Class Manager

");
if (((level >= 20) && (jobLevel == 1) && Config.ALLOW_CLASS_MASTERS_FIRST_CLASS) || ((level >= 40) && (jobLevel == 2) && Config.ALLOW_CLASS_MASTERS_SECOND_CLASS) || ((level >= 76) && (jobLevel == 3) && Config.ALLOW_CLASS_MASTERS_THIRD_CLASS))
{
@@ -153,7 +151,7 @@ public class ClassMasterInstance extends FolkInstance
{
sb.append("
Upgrade Hatchling to Strider
");
}
- sb.append("
");
+ sb.append("
");
html.setHtml(sb.toString());
player.sendPacket(html);
}
@@ -244,8 +242,7 @@ public class ClassMasterInstance extends FolkInstance
player.setTarget(player);
- final ClassLevel lvlnow = PlayerClass.values()[classId.getId()].getLevel();
-
+ final int lvlnow = classId.level();
if (player.isGM())
{
changeClass(player, val);
@@ -262,9 +259,9 @@ public class ClassMasterInstance extends FolkInstance
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
final StringBuilder sb = new StringBuilder();
- sb.append("Class Manager

");
+ sb.append("Class Manager

");
sb.append("You have now become a " + CharTemplateTable.getClassNameById(player.getClassId().getId()) + ".");
- sb.append("
");
+ sb.append("
");
html.setHtml(sb.toString());
player.sendPacket(html);
@@ -272,17 +269,17 @@ public class ClassMasterInstance extends FolkInstance
}
switch (lvlnow)
{
- case FIRST:
+ case 0:
{
jobLevel = 1;
break;
}
- case SECOND:
+ case 1:
{
jobLevel = 2;
break;
}
- case THIRD:
+ case 2:
{
jobLevel = 3;
break;
@@ -298,20 +295,20 @@ public class ClassMasterInstance extends FolkInstance
return; // no more job changes
}
- final ClassLevel lvlnext = PlayerClass.values()[val].getLevel();
+ final int lvlnext = ClassId.getClassId(val).level();
switch (lvlnext)
{
- case FIRST:
+ case 0:
{
newJobLevel = 1;
break;
}
- case SECOND:
+ case 1:
{
newJobLevel = 2;
break;
}
- case THIRD:
+ case 2:
{
newJobLevel = 3;
break;
@@ -403,9 +400,9 @@ public class ClassMasterInstance extends FolkInstance
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
final StringBuilder sb = new StringBuilder();
- sb.append("Class Manager

");
+ sb.append("Class Manager

");
sb.append("You have now become a " + CharTemplateTable.getClassNameById(player.getClassId().getId()) + ".");
- sb.append("
");
+ sb.append("
");
html.setHtml(sb.toString());
player.sendPacket(html);
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
index 2cd667acd3..64b1d1fc9a 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
@@ -129,8 +129,6 @@ import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
import org.l2jmobius.gameserver.model.actor.status.PlayerStatus;
import org.l2jmobius.gameserver.model.actor.templates.PlayerTemplate;
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.clan.Clan;
import org.l2jmobius.gameserver.model.clan.ClanMember;
@@ -2918,7 +2916,7 @@ public class PlayerInstance extends Playable
*/
public void setClassId(int id)
{
- if ((getLvlJoinedAcademy() != 0) && (_clan != null) && (PlayerClass.values()[id].getLevel() == ClassLevel.THIRD))
+ if ((getLvlJoinedAcademy() != 0) && (_clan != null) && (ClassId.getClassId(id).level() == 2))
{
if (getLvlJoinedAcademy() <= 16)
{
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java
index 6f439fce29..50a12a7db6 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/VillageMasterInstance.java
@@ -963,9 +963,7 @@ public class VillageMasterInstance extends FolkInstance
* follows: Treasure Hunter, Plainswalker and Abyss Walker Hawkeye, Silver Ranger and Phantom Ranger Paladin, Dark Avenger, Temple Knight and Shillien Knight Warlocks, Elemental Summoner and Phantom Summoner Elder and Shillien Elder Swordsinger and Bladedancer Sorcerer, Spellsinger and
* Spellhowler
*/
-
final Set availSubs = currClass.getAvailableSubclasses(player);
-
if (availSubs != null)
{
for (PlayerClass availSub : availSubs)
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java
index bb0b741510..17070bce66 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java
@@ -23,8 +23,6 @@ import org.l2jmobius.gameserver.datatables.xml.ExperienceData;
import org.l2jmobius.gameserver.model.actor.instance.ClassMasterInstance;
import org.l2jmobius.gameserver.model.actor.instance.PetInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
-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.entity.event.TvT;
import org.l2jmobius.gameserver.model.quest.QuestState;
@@ -178,24 +176,22 @@ public class PlayerStat extends PlayableStat
if (Config.ALLOW_CLASS_MASTERS && Config.ALLOW_REMOTE_CLASS_MASTERS)
{
final ClassMasterInstance masterInstance = ClassMasterInstance.getInstance();
-
if (masterInstance != null)
{
- final ClassLevel curLevel = PlayerClass.values()[getActiveChar().getClassId().getId()].getLevel();
- if ((getLevel() >= 20) && (curLevel == ClassLevel.FIRST))
+ final int curLevel = getActiveChar().getClassId().level();
+ if ((getLevel() >= 20) && (curLevel == 0))
{
ClassMasterInstance.getInstance().onAction(getActiveChar());
}
- else if ((getLevel() >= 40) && (curLevel == ClassLevel.SECOND))
+ else if ((getLevel() >= 40) && (curLevel == 1))
{
ClassMasterInstance.getInstance().onAction(getActiveChar());
}
- else if ((getLevel() >= 76) && (curLevel == ClassLevel.THIRD))
+ else if ((getLevel() >= 76) && (curLevel == 2))
{
ClassMasterInstance.getInstance().onAction(getActiveChar());
}
-
}
else
{
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/base/PlayerClass.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/base/PlayerClass.java
index 5eead5862e..cac15d45b4 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/base/PlayerClass.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/base/PlayerClass.java
@@ -99,6 +99,38 @@ public enum PlayerClass
DwarvenArtisan(Race.DWARF, Fighter, SECOND),
Warsmith(Race.DWARF, Fighter, THIRD),
+ // TODO: Diminish the use of PlayerClass.values() and drop this class.
+ dummyEntry1(null, null, null),
+ dummyEntry2(null, null, null),
+ dummyEntry3(null, null, null),
+ dummyEntry4(null, null, null),
+ dummyEntry5(null, null, null),
+ dummyEntry6(null, null, null),
+ dummyEntry7(null, null, null),
+ dummyEntry8(null, null, null),
+ dummyEntry9(null, null, null),
+ dummyEntry10(null, null, null),
+ dummyEntry11(null, null, null),
+ dummyEntry12(null, null, null),
+ dummyEntry13(null, null, null),
+ dummyEntry14(null, null, null),
+ dummyEntry15(null, null, null),
+ dummyEntry16(null, null, null),
+ dummyEntry17(null, null, null),
+ dummyEntry18(null, null, null),
+ dummyEntry19(null, null, null),
+ dummyEntry20(null, null, null),
+ dummyEntry21(null, null, null),
+ dummyEntry22(null, null, null),
+ dummyEntry23(null, null, null),
+ dummyEntry24(null, null, null),
+ dummyEntry25(null, null, null),
+ dummyEntry26(null, null, null),
+ dummyEntry27(null, null, null),
+ dummyEntry28(null, null, null),
+ dummyEntry29(null, null, null),
+ dummyEntry30(null, null, null),
+
/*
* (3rd classes)
*/
@@ -152,7 +184,6 @@ public enum PlayerClass
private static final Set subclasseSet5 = EnumSet.of(Sorceror, Spellsinger, Spellhowler);
private static final EnumMap> subclassSetMap = new EnumMap<>(PlayerClass.class);
-
static
{
final Set subclasses = getSet(null, THIRD);
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/base/SubClass.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/base/SubClass.java
index dec104ae9c..618d33e373 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/base/SubClass.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/base/SubClass.java
@@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.datatables.xml.ExperienceData;
*/
public class SubClass
{
- private PlayerClass _class;
+ private ClassId _class;
private long _exp = ExperienceData.getInstance().getExpForLevel(Config.BASE_SUBCLASS_LEVEL);
private int _sp = 0;
private int _level = Config.BASE_SUBCLASS_LEVEL;
@@ -34,7 +34,7 @@ public class SubClass
public SubClass(int classId, long exp, int sp, byte level, int classIndex)
{
- _class = PlayerClass.values()[classId];
+ _class = ClassId.getClassId(classId);
_exp = exp;
_sp = sp;
_level = level;
@@ -44,7 +44,7 @@ public class SubClass
public SubClass(int classId, int classIndex)
{
// Used for defining a sub class using default values for XP, SP and player level.
- _class = PlayerClass.values()[classId];
+ _class = ClassId.getClassId(classId);
_classIndex = classIndex;
}
@@ -53,14 +53,14 @@ public class SubClass
// Used for specifying ALL attributes of a sub class directly, using the preset default values.
}
- public PlayerClass getClassDefinition()
+ public ClassId getClassDefinition()
{
return _class;
}
public int getClassId()
{
- return _class.ordinal();
+ return _class.getId();
}
public long getExp()
@@ -85,7 +85,7 @@ public class SubClass
public void setClassId(int classId)
{
- _class = PlayerClass.values()[classId];
+ _class = ClassId.getClassId(classId);
}
public void setExp(long expValue)
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java
index 68bcb74a3f..266910a17a 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java
@@ -49,8 +49,6 @@ import org.l2jmobius.gameserver.model.Skill;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.instance.ClassMasterInstance;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
-import org.l2jmobius.gameserver.model.base.ClassLevel;
-import org.l2jmobius.gameserver.model.base.PlayerClass;
import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.entity.Announcements;
import org.l2jmobius.gameserver.model.entity.ClanHall;
@@ -465,17 +463,16 @@ public class EnterWorld extends GameClientPacket
final ClassMasterInstance master = ClassMasterInstance.getInstance();
if (master != null)
{
- final ClassLevel lvlnow = PlayerClass.values()[player.getClassId().getId()].getLevel();
-
- if ((player.getLevel() >= 20) && (lvlnow == ClassLevel.FIRST))
+ final int lvlnow = player.getClassId().level();
+ if ((player.getLevel() >= 20) && (lvlnow == 0))
{
ClassMasterInstance.getInstance().onAction(player);
}
- else if ((player.getLevel() >= 40) && (lvlnow == ClassLevel.SECOND))
+ else if ((player.getLevel() >= 40) && (lvlnow == 1))
{
ClassMasterInstance.getInstance().onAction(player);
}
- else if ((player.getLevel() >= 76) && (lvlnow == ClassLevel.THIRD))
+ else if ((player.getLevel() >= 76) && (lvlnow == 2))
{
ClassMasterInstance.getInstance().onAction(player);
}
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java
index 67e2de99f3..ad9cba7c18 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java
@@ -125,9 +125,8 @@ public class RequestBypassToServer extends GameClientPacket
return;
}
- final int endOfId = _command.indexOf('_', 5);
String id;
-
+ final int endOfId = _command.indexOf('_', 5);
if (endOfId > 0)
{
id = _command.substring(4, endOfId);
@@ -139,8 +138,6 @@ public class RequestBypassToServer extends GameClientPacket
try
{
- final WorldObject object = World.getInstance().findObject(Integer.parseInt(id));
-
if (_command.substring(endOfId + 1).startsWith("event_participate"))
{
GameEvent.inscribePlayer(player);
@@ -158,7 +155,6 @@ public class RequestBypassToServer extends GameClientPacket
player.sendMessage("The event is already started. You can not join now!");
}
}
-
else if (_command.substring(endOfId + 1).startsWith("tvt_player_leave"))
{
if (TvT.isJoining())
@@ -170,7 +166,6 @@ public class RequestBypassToServer extends GameClientPacket
player.sendMessage("The event is already started. You can not leave now!");
}
}
-
else if (_command.substring(endOfId + 1).startsWith("dmevent_player_join"))
{
if (DM.isJoining())
@@ -182,7 +177,6 @@ public class RequestBypassToServer extends GameClientPacket
player.sendMessage("The event is already started. You can't join now!");
}
}
-
else if (_command.substring(endOfId + 1).startsWith("dmevent_player_leave"))
{
if (DM.isJoining())
@@ -194,7 +188,6 @@ public class RequestBypassToServer extends GameClientPacket
player.sendMessage("The event is already started. You can't leave now!");
}
}
-
else if (_command.substring(endOfId + 1).startsWith("ctf_player_join "))
{
final String teamName = _command.substring(endOfId + 1).substring(16);
@@ -207,7 +200,6 @@ public class RequestBypassToServer extends GameClientPacket
player.sendMessage("The event is already started. You can't join now!");
}
}
-
else if (_command.substring(endOfId + 1).startsWith("ctf_player_leave"))
{
if (CTF.isJoining())
@@ -240,9 +232,11 @@ public class RequestBypassToServer extends GameClientPacket
GameEvent.inscribePlayer(player);
}
- else if ((Config.ALLOW_CLASS_MASTERS && Config.ALLOW_REMOTE_CLASS_MASTERS && (object instanceof ClassMasterInstance)) || ((object instanceof NpcInstance) && (endOfId > 0) && player.isInsideRadius(object, NpcInstance.INTERACTION_DISTANCE, false, false)))
+ final WorldObject object = World.getInstance().findObject(Integer.parseInt(id));
+ if ((Config.ALLOW_CLASS_MASTERS && Config.ALLOW_REMOTE_CLASS_MASTERS && (object instanceof ClassMasterInstance)) //
+ || ((object instanceof NpcInstance) && (endOfId > 0) && player.isInsideRadius(object, NpcInstance.INTERACTION_DISTANCE, false, false)))
{
- ((NpcInstance) object).onBypassFeedback(player, _command.substring(endOfId + 1));
+ ((NpcInstance) object).onBypassFeedback(player, _command.replace("npc_" + object.getObjectId() + "_", ""));
}
player.sendPacket(ActionFailed.STATIC_PACKET);