Sync with L2JServer Jan 9th 2015.
This commit is contained in:
@@ -18,6 +18,9 @@
|
||||
*/
|
||||
package com.l2jserver.gameserver.model.base;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.l2jserver.gameserver.enums.Race;
|
||||
import com.l2jserver.gameserver.model.interfaces.IIdentifiable;
|
||||
|
||||
@@ -265,6 +268,9 @@ public enum ClassId implements IIdentifiable
|
||||
/** The parent ClassId or null if this class is a root */
|
||||
private final ClassId _parent;
|
||||
|
||||
/** List of available Class for next transfer **/
|
||||
private final Set<ClassId> _nextClassIds = new HashSet<>(1);
|
||||
|
||||
/**
|
||||
* Class constructor.
|
||||
* @param pId the class Id.
|
||||
@@ -279,6 +285,11 @@ public enum ClassId implements IIdentifiable
|
||||
_isSummoner = false;
|
||||
_race = race;
|
||||
_parent = pParent;
|
||||
|
||||
if (_parent != null)
|
||||
{
|
||||
_parent.addNextClassId(this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -296,6 +307,11 @@ public enum ClassId implements IIdentifiable
|
||||
_isSummoner = pIsSummoner;
|
||||
_race = race;
|
||||
_parent = pParent;
|
||||
|
||||
if (_parent != null)
|
||||
{
|
||||
_parent.addNextClassId(this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -382,6 +398,14 @@ public enum ClassId implements IIdentifiable
|
||||
return _parent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list of possible class transfer for this class
|
||||
*/
|
||||
public Set<ClassId> getNextClassIds()
|
||||
{
|
||||
return _nextClassIds;
|
||||
}
|
||||
|
||||
public static ClassId getClassId(int cId)
|
||||
{
|
||||
try
|
||||
@@ -393,4 +417,9 @@ public enum ClassId implements IIdentifiable
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private final void addNextClassId(ClassId cId)
|
||||
{
|
||||
_nextClassIds.add(cId);
|
||||
}
|
||||
}
|
||||
|
@@ -35,22 +35,7 @@ public final class SubClass
|
||||
private long _sp = 0;
|
||||
private byte _level = Config.BASE_SUBCLASS_LEVEL;
|
||||
private int _classIndex = 1;
|
||||
|
||||
public SubClass(int classId, long exp, int sp, byte level, int classIndex)
|
||||
{
|
||||
_class = PlayerClass.values()[classId];
|
||||
_exp = exp;
|
||||
_sp = sp;
|
||||
_level = level;
|
||||
_classIndex = classIndex;
|
||||
}
|
||||
|
||||
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];
|
||||
_classIndex = classIndex;
|
||||
}
|
||||
private boolean _dualClass = false;
|
||||
|
||||
public SubClass()
|
||||
{
|
||||
@@ -117,9 +102,19 @@ public final class SubClass
|
||||
_classIndex = classIndex;
|
||||
}
|
||||
|
||||
public boolean isDualClass()
|
||||
{
|
||||
return _dualClass;
|
||||
}
|
||||
|
||||
public void setIsDualClass(boolean dualClass)
|
||||
{
|
||||
_dualClass = dualClass;
|
||||
}
|
||||
|
||||
public void setLevel(byte levelValue)
|
||||
{
|
||||
if (levelValue > _maxLevel)
|
||||
if (!_dualClass && (levelValue > _maxLevel))
|
||||
{
|
||||
levelValue = _maxLevel;
|
||||
}
|
||||
@@ -133,7 +128,7 @@ public final class SubClass
|
||||
|
||||
public void incLevel()
|
||||
{
|
||||
if (getLevel() == _maxLevel)
|
||||
if (!_dualClass && (getLevel() == _maxLevel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -152,4 +147,4 @@ public final class SubClass
|
||||
_level--;
|
||||
setExp(ExperienceTable.getInstance().getExpForLevel(getLevel()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user