Sync with L2JServer Jan 9th 2015.

This commit is contained in:
mobius
2015-01-09 19:55:02 +00:00
parent 9c9b0aaff7
commit 4c2db62a63
618 changed files with 19803 additions and 7853 deletions

View File

@@ -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);
}
}

View File

@@ -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()));
}
}
}