Retail Agent of Chaos behavior.

This commit is contained in:
MobiusDev
2017-09-13 20:04:42 +00:00
parent cf161d08c7
commit 215fcaa1b4
22 changed files with 256 additions and 22 deletions

View File

@@ -436,6 +436,8 @@ public final class L2PcInstance extends L2Playable
/** The list of sub-classes this character has. */
private volatile Map<Integer, SubClass> _subClasses;
private static final String ORIGINAL_CLASS_VAR = "OriginalClass";
private final PcAppearance _appearance;
/** The Experience of the L2PcInstance before the last Death Penalty */
@@ -1173,9 +1175,29 @@ public final class L2PcInstance extends L2Playable
*/
public final L2PcTemplate getBaseTemplate()
{
final ClassId originalClass = getOriginalClass();
if (originalClass != null)
{
return PlayerTemplateData.getInstance().getTemplate(originalClass.getId());
}
return PlayerTemplateData.getInstance().getTemplate(_baseClass);
}
public ClassId getOriginalClass()
{
return getVariables().getEnum(ORIGINAL_CLASS_VAR, ClassId.class, null);
}
public void setOriginalClass(ClassId newClass)
{
getVariables().set(ORIGINAL_CLASS_VAR, newClass);
}
public void resetOriginalClass()
{
getVariables().remove(ORIGINAL_CLASS_VAR);
}
/**
* @return the L2PcTemplate link to the L2PcInstance.
*/
@@ -2656,6 +2678,11 @@ public final class L2PcInstance extends L2Playable
{
if (!isSubClassActive())
{
final ClassId originalClass = getOriginalClass();
if (originalClass != null)
{
return originalClass.getRace();
}
return getTemplate().getRace();
}
return PlayerTemplateData.getInstance().getTemplate(_baseClass).getRace();

View File

@@ -147,7 +147,7 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
packet.writeC(_activeChar.isGM() ? 0x01 : 0x00);
packet.writeC(_activeChar.getRace().ordinal());
packet.writeC(_activeChar.getAppearance().getSex() ? 0x01 : 0x00);
packet.writeD(ClassId.getClassId(_activeChar.getBaseClass()).getRootClassId().getId());
packet.writeD(ClassId.getClassId(_activeChar.getBaseTemplate().getClassId().getId()).getRootClassId().getId());
packet.writeD(_activeChar.getClassId().getId());
packet.writeC(_activeChar.getLevel());
}