public Skill( Skills owner, SkillInfo info, GenericReader reader )
{
m_Owner = owner;
m_Info = info;
int version = reader.ReadByte();
switch ( version )
{
case 0:
{
m_Base = reader.ReadUShort();
m_Cap = reader.ReadUShort();
m_Lock = (SkillLock)reader.ReadByte();
break;
}
case 0xFF:
{
m_Base = 0;
m_Cap = 1000;
m_Lock = SkillLock.Up;
break;
}
default:
{
if ( (version & 0xC0) == 0x00 )
{
if ( (version & 0x1) != 0 )
m_Base = reader.ReadUShort();
if ( (version & 0x2) != 0 )
m_Cap = reader.ReadUShort();
else
m_Cap = 1000;
if ( (version & 0x4) != 0 )
m_Lock = (SkillLock)reader.ReadByte();
}
break;
}
}
if ( m_Lock < SkillLock.Up || m_Lock > SkillLock.Locked )
{
Console.WriteLine( "Bad skill lock -> {0}.{1}", owner.Owner, m_Lock );
m_Lock = SkillLock.Up;
}
}