public void Load_Pet(ByteBuffer buff)
{
SummonType = buff.ReadUInt32(); //1 = summon, 2 = pet
ID = buff.ReadUInt32();
NPCID = buff.ReadUInt32();
isAttackAble = buff.ReadUInt32();//attackable = 0
X = buff.ReadUInt32();
Y = buff.ReadUInt32();
Z = buff.ReadUInt32();
Heading = buff.ReadInt32();
buff.ReadUInt32();//0x00
MatkSpeed = buff.ReadUInt32();
PatkSpeed = buff.ReadUInt32();
RunSpeed = buff.ReadUInt32();
WalkSpeed = buff.ReadUInt32();
SwimRunSpeed = buff.ReadUInt32();
SwimWalkSpeed = buff.ReadUInt32();
flRunSpeed = buff.ReadUInt32();
flWalkSpeed = buff.ReadUInt32();
if (Globals.gamedata.Chron >= Chronicle.CT1)
{
FlyRunSpeed = buff.ReadUInt32();
FlyWalkSpeed = buff.ReadUInt32();
}
MoveSpeedMult = System.Convert.ToSingle(buff.ReadDouble());
AttackSpeedMult = System.Convert.ToSingle(buff.ReadDouble());
CollisionRadius = System.Convert.ToSingle(buff.ReadDouble());
CollisionHeight = System.Convert.ToSingle(buff.ReadDouble());
LWeapon = buff.ReadUInt32();
Armor = buff.ReadUInt32();
RWeapon = buff.ReadUInt32();
HasOwner = buff.ReadByte(); //owneronline
isRunning = buff.ReadByte();
isInCombat = buff.ReadByte();
isAlikeDead = buff.ReadByte();
isSummoned = buff.ReadByte(); //isSummoned 0=teleported 1=default 2=summoned
if (Globals.gamedata.Chron >= Chronicle.CT3_0)
{
buff.ReadUInt32(); //FF FF FF FF
}
Name = buff.ReadString();
if (string.IsNullOrWhiteSpace(Name))
{
Name = Util.GetNPCName(NPCID);//"Unnamed Pet";
}
if (Globals.gamedata.Chron >= Chronicle.CT3_0)
{
buff.ReadUInt32(); //FF FF FF FF
}
Title = buff.ReadString(); //OwnerName
buff.ReadUInt32();//1
PvPFlag = buff.ReadUInt32();
Karma = buff.ReadInt32();
Cur_Fed = buff.ReadUInt32();
Max_Fed = buff.ReadUInt32();
Cur_HP = buff.ReadUInt32();
Max_HP = buff.ReadUInt32();
Cur_MP = buff.ReadUInt32();
Max_MP = buff.ReadUInt32();
SP = buff.ReadUInt32();
Level = buff.ReadUInt32();
XP = buff.ReadUInt64();
XP_ThisLevel = buff.ReadUInt64();
XP_NextLevel = buff.ReadUInt64();
Cur_Load = buff.ReadUInt32();
Max_Load = buff.ReadUInt32();
Patk = buff.ReadUInt32();
PDef = buff.ReadUInt32();
Accuracy = buff.ReadUInt32();// p
Evasion = buff.ReadUInt32();//p
Focus = buff.ReadUInt32();//p
Matk = buff.ReadUInt32();
MDef = buff.ReadUInt32();
buff.ReadUInt32();//m acu
buff.ReadUInt32();//m eva
buff.ReadUInt32();//m crit
buff.ReadUInt32();// speed
buff.ReadUInt32();//patak sped
buff.ReadUInt32();// cast
/*if (Globals.gamedata.Chron < Chronicle.CT3_0)
{
AbnormalEffects = buff.ReadUInt32(); //AbnormalEffect bleed=1; poison=2; poison & bleed=3; flame=4;
}
else
{
buff.ReadUInt32(); //??
}*/
Mountable = buff.ReadUInt16();
buff.ReadByte();
buff.ReadUInt16();
if (Globals.gamedata.Chron >= Chronicle.CT1)
{
TeamCircle = buff.ReadByte();
/*if (Globals.gamedata.Chron >= Chronicle.CT3_0)
{
//buff.ReadUInt32(); //00 00 00 00
buff.ReadUInt16();
AbnormalEffects = buff.ReadUInt32();
buff.ReadUInt32(); //00 00 00 00
buff.ReadUInt16(); //00 00 00 00
}*/
SSUsage = buff.ReadUInt32();
SPSUSage = buff.ReadUInt32();
Form = buff.ReadUInt32();
buff.ReadUInt32();//0x00
if (Globals.gamedata.Chron >= Chronicle.CT3_0)
{
//buff.ReadUInt16(); //00 00
try
{
buff.ReadUInt32(); //00 00
buff.ReadUInt32(); //02 00 00 00 current pet points
buff.ReadUInt32(); //06 00 00 00 max pet points
uint abn_count = buff.ReadUInt32();
if (abn_count < 30) // well ... its oddi wayso :P
{
_AbnEffects.Add(buff.ReadUInt32());
}
}
catch
{
}
}
}
else
{
HasOwner = buff.ReadByte();
SSUsage = buff.ReadUInt32();
Form = buff.ReadUInt32();
buff.ReadUInt32();//0x00
}
}