Sync with L2JServer Jan 24th 2015.

This commit is contained in:
mobius
2015-01-24 20:02:32 +00:00
parent d349bd3924
commit 1c6301c46d
1012 changed files with 23069 additions and 6307 deletions

View File

@ -26,12 +26,9 @@ import static com.l2jserver.gameserver.model.base.ClassType.Fighter;
import static com.l2jserver.gameserver.model.base.ClassType.Mystic;
import static com.l2jserver.gameserver.model.base.ClassType.Priest;
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Set;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
/**
* @author luisantonioa
@ -208,20 +205,20 @@ public enum PlayerClass
sigelHellKnight(Race.HUMAN, Fighter, ClassLevel.AWAKEN),
sigelEvasTemplar(Race.ELF, Fighter, ClassLevel.AWAKEN),
sigelShilenTemplar(Race.DARK_ELF, Fighter, ClassLevel.AWAKEN),
tyrDuelist(Race.HUMAN, Fighter, ClassLevel.AWAKEN),
tyrDreadnought(Race.HUMAN, Fighter, ClassLevel.AWAKEN),
tyrTitan(Race.ORC, Fighter, ClassLevel.AWAKEN),
tyrGrandKhavatari(Race.ORC, Fighter, ClassLevel.AWAKEN),
tyrMaestro(Race.DWARF, Fighter, ClassLevel.AWAKEN),
tyrDoombringer(Race.KAMAEL, Fighter, ClassLevel.AWAKEN),
tyrrDuelist(Race.HUMAN, Fighter, ClassLevel.AWAKEN),
tyrrDreadnought(Race.HUMAN, Fighter, ClassLevel.AWAKEN),
tyrrTitan(Race.ORC, Fighter, ClassLevel.AWAKEN),
tyrrGrandKhavatari(Race.ORC, Fighter, ClassLevel.AWAKEN),
tyrrMaestro(Race.DWARF, Fighter, ClassLevel.AWAKEN),
tyrrDoombringer(Race.KAMAEL, Fighter, ClassLevel.AWAKEN),
othellAdventurer(Race.HUMAN, Fighter, ClassLevel.AWAKEN),
othellWindRider(Race.ELF, Fighter, ClassLevel.AWAKEN),
othellGhostHunter(Race.DARK_ELF, Fighter, ClassLevel.AWAKEN),
othellFortuneSeeker(Race.DWARF, Fighter, ClassLevel.AWAKEN),
yrSagittarius(Race.HUMAN, Fighter, ClassLevel.AWAKEN),
yrMoonlightSentinel(Race.ELF, Fighter, ClassLevel.AWAKEN),
yrGhostSentinel(Race.DARK_ELF, Fighter, ClassLevel.AWAKEN),
yrTrickster(Race.KAMAEL, Fighter, ClassLevel.AWAKEN),
yulSagittarius(Race.HUMAN, Fighter, ClassLevel.AWAKEN),
yulMoonlightSentinel(Race.ELF, Fighter, ClassLevel.AWAKEN),
yulGhostSentinel(Race.DARK_ELF, Fighter, ClassLevel.AWAKEN),
yulTrickster(Race.KAMAEL, Fighter, ClassLevel.AWAKEN),
feohArchmage(Race.HUMAN, Mystic, ClassLevel.AWAKEN),
feohSoultaker(Race.HUMAN, Mystic, ClassLevel.AWAKEN),
feohMysticMuse(Race.ELF, Mystic, ClassLevel.AWAKEN),
@ -235,9 +232,9 @@ public enum PlayerClass
wynnArcanaLord(Race.HUMAN, Mystic, ClassLevel.AWAKEN),
wynnElementalMaster(Race.ELF, Mystic, ClassLevel.AWAKEN),
wynnSpectralMaster(Race.DARK_ELF, Mystic, ClassLevel.AWAKEN),
eolhCardinal(Race.HUMAN, Priest, ClassLevel.AWAKEN),
eolhEvaSaint(Race.ELF, Priest, ClassLevel.AWAKEN),
eolhShillienSaint(Race.DARK_ELF, Priest, ClassLevel.AWAKEN),
aeoreCardinal(Race.HUMAN, Priest, ClassLevel.AWAKEN),
aeoreEvaSaint(Race.ELF, Priest, ClassLevel.AWAKEN),
aeoreShillienSaint(Race.DARK_ELF, Priest, ClassLevel.AWAKEN),
ertheiaFighter(Race.ERTHEIA, Fighter, ClassLevel.FIRST),
ertheiaWizzard(Race.ERTHEIA, Mystic, ClassLevel.FIRST),
@ -255,46 +252,6 @@ public enum PlayerClass
private ClassLevel _level;
private ClassType _type;
private static final Set<PlayerClass> mainSubclassSet;
private static final Set<PlayerClass> neverSubclassed = EnumSet.of(Overlord, Warsmith);
private static final Set<PlayerClass> subclasseSet1 = EnumSet.of(DarkAvenger, Paladin, TempleKnight, ShillienKnight);
private static final Set<PlayerClass> subclasseSet2 = EnumSet.of(TreasureHunter, AbyssWalker, Plainswalker);
private static final Set<PlayerClass> subclasseSet3 = EnumSet.of(Hawkeye, SilverRanger, PhantomRanger);
private static final Set<PlayerClass> subclasseSet4 = EnumSet.of(Warlock, ElementalSummoner, PhantomSummoner);
private static final Set<PlayerClass> subclasseSet5 = EnumSet.of(Sorceror, Spellsinger, Spellhowler);
private static final EnumMap<PlayerClass, Set<PlayerClass>> subclassSetMap = new EnumMap<>(PlayerClass.class);
static
{
Set<PlayerClass> subclasses = getSet(null, THIRD);
subclasses.removeAll(neverSubclassed);
mainSubclassSet = subclasses;
subclassSetMap.put(DarkAvenger, subclasseSet1);
subclassSetMap.put(Paladin, subclasseSet1);
subclassSetMap.put(TempleKnight, subclasseSet1);
subclassSetMap.put(ShillienKnight, subclasseSet1);
subclassSetMap.put(TreasureHunter, subclasseSet2);
subclassSetMap.put(AbyssWalker, subclasseSet2);
subclassSetMap.put(Plainswalker, subclasseSet2);
subclassSetMap.put(Hawkeye, subclasseSet3);
subclassSetMap.put(SilverRanger, subclasseSet3);
subclassSetMap.put(PhantomRanger, subclasseSet3);
subclassSetMap.put(Warlock, subclasseSet4);
subclassSetMap.put(ElementalSummoner, subclasseSet4);
subclassSetMap.put(PhantomSummoner, subclasseSet4);
subclassSetMap.put(Sorceror, subclasseSet5);
subclassSetMap.put(Spellsinger, subclasseSet5);
subclassSetMap.put(Spellhowler, subclasseSet5);
}
private PlayerClass(Race race, ClassType pType, ClassLevel pLevel)
{
_race = race;
@ -302,50 +259,6 @@ public enum PlayerClass
_type = pType;
}
public final Set<PlayerClass> getAvailableSubclasses(L2PcInstance player)
{
Set<PlayerClass> subclasses = null;
if (_level == THIRD)
{
subclasses = EnumSet.copyOf(mainSubclassSet);
subclasses.remove(this);
subclasses.removeAll(getSet(Race.ERTHEIA, THIRD));
if (player.getRace() == Race.KAMAEL)
{
if (player.getAppearance().getSex())
{
subclasses.remove(femaleSoulbreaker);
}
else
{
subclasses.remove(maleSoulbreaker);
}
if (!player.getSubClasses().containsKey(2) || (player.getSubClasses().get(2).getLevel() < 75))
{
subclasses.remove(inspector);
}
}
else
{
// Only Kamael can take Kamael classes as subclasses.
subclasses.removeAll(getSet(Race.KAMAEL, THIRD));
}
Set<PlayerClass> unavailableClasses = subclassSetMap.get(this);
if (unavailableClasses != null)
{
subclasses.removeAll(unavailableClasses);
}
}
return subclasses;
}
public static final EnumSet<PlayerClass> getSet(Race race, ClassLevel level)
{
EnumSet<PlayerClass> allOf = EnumSet.noneOf(PlayerClass.class);

View File

@ -19,7 +19,7 @@
package com.l2jserver.gameserver.model.base;
import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.ExperienceTable;
import com.l2jserver.gameserver.data.xml.impl.ExperienceData;
/**
* Character Sub-Class Definition <BR>
@ -28,10 +28,10 @@ import com.l2jserver.gameserver.datatables.ExperienceTable;
*/
public final class SubClass
{
private static final byte _maxLevel = Config.MAX_SUBCLASS_LEVEL < ExperienceTable.getInstance().getMaxLevel() ? Config.MAX_SUBCLASS_LEVEL : (byte) (ExperienceTable.getInstance().getMaxLevel() - 1);
private static final byte _maxLevel = Config.MAX_SUBCLASS_LEVEL < ExperienceData.getInstance().getMaxLevel() ? Config.MAX_SUBCLASS_LEVEL : (byte) (ExperienceData.getInstance().getMaxLevel() - 1);
private PlayerClass _class;
private long _exp = ExperienceTable.getInstance().getExpForLevel(Config.BASE_SUBCLASS_LEVEL);
private long _exp = ExperienceData.getInstance().getExpForLevel(Config.BASE_SUBCLASS_LEVEL);
private long _sp = 0;
private byte _level = Config.BASE_SUBCLASS_LEVEL;
private int _classIndex = 1;
@ -84,9 +84,9 @@ public final class SubClass
public void setExp(long expValue)
{
if (expValue > (ExperienceTable.getInstance().getExpForLevel(_maxLevel + 1) - 1))
if (!_dualClass && (expValue > (ExperienceData.getInstance().getExpForLevel(_maxLevel + 1) - 1)))
{
expValue = ExperienceTable.getInstance().getExpForLevel(_maxLevel + 1) - 1;
expValue = ExperienceData.getInstance().getExpForLevel(_maxLevel + 1) - 1;
}
_exp = expValue;
@ -134,7 +134,7 @@ public final class SubClass
}
_level++;
setExp(ExperienceTable.getInstance().getExpForLevel(getLevel()));
setExp(ExperienceData.getInstance().getExpForLevel(getLevel()));
}
public void decLevel()
@ -145,6 +145,6 @@ public final class SubClass
}
_level--;
setExp(ExperienceTable.getInstance().getExpForLevel(getLevel()));
setExp(ExperienceData.getInstance().getExpForLevel(getLevel()));
}
}