예제 #1
0
파일: CharInfo.cs 프로젝트: devmvalvm/L2Net
        public void Load_UI(ByteBuffer buff)
        {
            //this only gets called if l2j f***s up

            X       = buff.ReadInt32();    //E7 3F 2 0
            Y       = buff.ReadInt32();    //9D 64 0 0
            Z       = buff.ReadInt32();    //28 F8 FF FF
            Heading = buff.ReadInt32();    //0 0 0 0
            ID      = buff.ReadUInt32();   //A0 B9 B0 49

            Name      = buff.ReadString(); //4B 0 61 0 72 0 76 0 6F 0 6B 0 0 0
            Race      = buff.ReadUInt32(); //0 0 0 0
            Sex       = buff.ReadUInt32(); //1 0 0 0
            BaseClass = buff.ReadUInt32(); //61 0 0 0 //base class

            Level = buff.ReadUInt32();     //4C 0 0 0
            buff.ReadUInt64();             //FB 62 76 43 0 0 0 0 //XP
            buff.ReadUInt32();             //12 0 0 0 //STR
            buff.ReadUInt32();             //15 0 0 0 //DEX
            buff.ReadUInt32();             //1F 0 0 0 //CON
            buff.ReadUInt32();             //27 0 0 0 //INT
            buff.ReadUInt32();             //1A 0 0 0 //WIT
            buff.ReadUInt32();             //23 0 0 0 //MEN

            Max_HP = buff.ReadUInt32();    //9B 11 0 0
            Cur_HP = buff.ReadUInt32();    //9B 11 0 0
            Max_MP = buff.ReadUInt32();    //F F 0 0
            Cur_MP = buff.ReadUInt32();    //F F 0 0
            buff.ReadUInt32();             //CA DF 59 0 //SP
            buff.ReadUInt32();             //CE 41 0 0 //Cur_Load
            buff.ReadUInt32();             //7C 28 1 0 //Max_Load
            buff.ReadUInt32();             //some junk data//0x28//28 0 0 0

            buff.ReadUInt32();             //0 0 0 0 //obj_Under
            buff.ReadUInt32();             //F 46 8B 40 //obj_REar
            buff.ReadUInt32();             //91 E5 78 40 //obj_LEar
            buff.ReadUInt32();             //58 E8 50 40 //obj_Neck
            buff.ReadUInt32();             //64 A1 87 40 //obj_RFinger
            buff.ReadUInt32();             //D9 64 83 40 //obj_LFinger
            buff.ReadUInt32();             //41 13 89 40 //obj_Head
            buff.ReadUInt32();             //C2 E4 88 40 //obj_RHand
            buff.ReadUInt32();             //97 E6 89 40 //obj_LHand
            buff.ReadUInt32();             //37 39 8B 40 //obj_Gloves
            buff.ReadUInt32();             //DE 16 8B 40 //obj_Chest
            buff.ReadUInt32();             //93 1A 87 40 //obj_Legs
            buff.ReadUInt32();             //9C FA 84 40 //obj_Feet
            buff.ReadUInt32();             //0 0 0 0 //obj_Back
            buff.ReadUInt32();             //0 0 0 0 //obj_LRHand
            buff.ReadUInt32();             //E1 43 8B 40 //obj_Hair
            buff.ReadUInt32();             //obj_Face

            buff.ReadUInt32();             //C7 //right bracelet
            buff.ReadUInt32();             //C7 //left bracelet
            buff.ReadUInt32();             //C7 //deco 1
            buff.ReadUInt32();             //C7 //deco 2
            buff.ReadUInt32();             //C7 //deco 3
            buff.ReadUInt32();             //C7 //deco 4
            buff.ReadUInt32();             //C7 //deco 5
            buff.ReadUInt32();             //C7 //deco 6

            if (Globals.gamedata.Chron >= Chronicle.CT2_3)
            {
                buff.ReadUInt32();//CT2.3
            }

            Underwear = buff.ReadUInt32(); //0 0 0 0
            buff.ReadUInt32();             //5 1A 0 0 //REar
            buff.ReadUInt32();             //3 1A 0 0 //LEar
            buff.ReadUInt32();             //98 3 0 0 //Neck
            buff.ReadUInt32();             //6 1A 0 0 //RFinger
            buff.ReadUInt32();             //79 3 0 0 //LFinger
            Head     = buff.ReadUInt32();  //23 2 0 0
            RHand    = buff.ReadUInt32();  //B9 19 0 0
            LHand    = buff.ReadUInt32();  //E9 18 0 0
            Gloves   = buff.ReadUInt32();  //8A 16 0 0
            Chest    = buff.ReadUInt32();  //60 9 0 0
            Legs     = buff.ReadUInt32();  //65 9 0 0
            Feet     = buff.ReadUInt32();  //96 16 0 0
            Back     = buff.ReadUInt32();  //0 0 0 0
            LRHand   = buff.ReadUInt32();  //0 0 0 0
            Hair     = buff.ReadUInt32();  //E 1E 0 0
            DollFace = buff.ReadUInt32();

            buff.ReadUInt32(); //C7 //right bracelet
            buff.ReadUInt32(); //C7 //left bracelet
            buff.ReadUInt32(); //C7 //deco 1
            buff.ReadUInt32(); //C7 //deco 2
            buff.ReadUInt32(); //C7 //deco 3
            buff.ReadUInt32(); //C7 //deco 4
            buff.ReadUInt32(); //C7 //deco 5
            buff.ReadUInt32(); //C7 //deco 6

            if (Globals.gamedata.Chron >= Chronicle.CT2_3)
            {
                buff.ReadUInt32();//CT2.3
            }

            buff.ReadUInt32(); //aug underwear
            buff.ReadUInt32(); //aug Rear
            buff.ReadUInt32(); //aug Lear
            buff.ReadUInt32(); //aug neck
            buff.ReadUInt32(); //aug R finger
            buff.ReadUInt32(); //aug L finger
            buff.ReadUInt32(); //aug head
            aug_RHand = buff.ReadUInt32();
            aug_LHand = buff.ReadUInt32();
            buff.ReadUInt32(); //aug gloves
            buff.ReadUInt32(); //aug chest
            buff.ReadUInt32(); //aug legs
            buff.ReadUInt32(); //aug feet
            buff.ReadUInt32(); //aug back
            buff.ReadUInt32(); //aug lr hand
            buff.ReadUInt32(); //aug hair
            buff.ReadUInt32(); //aug face

            buff.ReadUInt32(); //aug right bracelet
            buff.ReadUInt32(); //aug left bracelet
            buff.ReadUInt32(); //aug deco 1
            buff.ReadUInt32(); //aug deco 2
            buff.ReadUInt32(); //aug deco 3
            buff.ReadUInt32(); //aug deco 4
            buff.ReadUInt32(); //aug deco 5
            buff.ReadUInt32(); //aug deco 6

            if (Globals.gamedata.Chron >= Chronicle.CT2_3)
            {
                buff.ReadUInt32(); //CT2.3

                buff.ReadUInt32(); //CT2.3
                buff.ReadUInt32(); //CT2.3
            }
            if (Globals.gamedata.Chron >= Chronicle.CT3_0)
            {
                buff.ReadUInt32();
                buff.ReadUInt32();
                buff.ReadUInt32();

                buff.ReadUInt32(); //00 00 00 00
                buff.ReadUInt32(); //00 00 00 00
                buff.ReadUInt32(); //00 00 00 00
                buff.ReadUInt32(); //00 00 00 00
                buff.ReadUInt32(); //00 00 00 00
                buff.ReadUInt32(); //00 00 00 00
            }

            buff.ReadUInt32();             //F8 1 0 0 //Patk
            PatkSpeed = buff.ReadUInt32(); //FD 1 0 0
            buff.ReadUInt32();             //C3 2 0 0 //PDef
            buff.ReadUInt32();             //5F 0 0 0 //Evasion
            buff.ReadUInt32();             //71 0 0 0 //Accuracy
            buff.ReadUInt32();             //28 0 0 0 //Focus
            buff.ReadUInt32();             //99 2 0 0 //Matk

            MatkSpeed = buff.ReadUInt32(); //DD 2 0 0
            PatkSpeed = buff.ReadUInt32(); //twice...who knows why//FD 1 0 0

            buff.ReadUInt32();             //22 5 0 0 //MDef

            if (Globals.gamedata.Chron >= Chronicle.CT3_0)
            {
                buff.ReadUInt32(); //m.accuracy
                buff.ReadUInt32(); //m.evasion
                buff.ReadUInt32(); //m.critical
            }

            PvPFlag = buff.ReadUInt32();                                  //0 0 0 0
            Karma   = buff.ReadInt32();                                   //0 0 0 0

            RunSpeed      = buff.ReadUInt32();                            //78 0 0 0
            WalkSpeed     = buff.ReadUInt32();                            //4E 0 0 0
            SwimRunSpeed  = buff.ReadUInt32();                            //32 0 0 0
            SwimWalkSpeed = buff.ReadUInt32();                            //32 0 0 0
            flRunSpeed    = buff.ReadUInt32();                            //0 0 0 0
            flWalkSpeed   = buff.ReadUInt32();                            //0 0 0 0
            FlyRunSpeed   = buff.ReadUInt32();                            //0 0 0 0
            FlyWalkSpeed  = buff.ReadUInt32();                            //0 0 0 0

            MoveSpeedMult   = System.Convert.ToSingle(buff.ReadDouble()); //8F C2 F5 28 5C 8F F4 3F
            AttackSpeedMult = System.Convert.ToSingle(buff.ReadDouble()); //4E EA 78 8A 24 53 FD 3F

            CollisionRadius = System.Convert.ToSingle(buff.ReadDouble()); //0 0 0 0 0 0 1A 40
            CollisionHeight = System.Convert.ToSingle(buff.ReadDouble()); // 0 0 0 0 0 80 36 40

            HairSytle = buff.ReadUInt32();                                //0 0 0 0
            HairColor = buff.ReadUInt32();                                //1 0 0 0
            Face      = buff.ReadUInt32();                                //1 0 0 0
            buff.ReadUInt32();                                            //0 0 0 0 //is GM? //AccessLevel

            Title = buff.ReadString();                                    //4C 0 65 0 74 0 73 0 20 0 62 0 65 0 20 0 66 0 72 0 69 0 65 0 6E 0 64 0 73 0 21 0 0 0

            ClanID      = buff.ReadUInt32();                              //D1 2E 0 0
            ClanCrestID = buff.ReadUInt32();                              //EE C6 0 0
            AllyID      = buff.ReadUInt32();                              //0 0 0 0
            AllyCrestID = buff.ReadUInt32();                              //0 0 0 0
            buff.ReadUInt32();                                            //20 2 0 0 //relation //isClanLeader

            MountType        = buff.ReadByte();                           //0
            PrivateStoreType = buff.ReadByte();                           //0
            buff.ReadByte();                                              //0 //hasDwarfCraft
            buff.ReadUInt32();                                            //F 0 0 0 //PKCount
            buff.ReadUInt32();                                            //E4 2 0 0 //PvPCount

            CubicCount = buff.ReadUInt16();                               //0 0
            Cubics.Clear();
            for (uint i = 0; i < (uint)CubicCount; i++)
            {
                uint tmpc = buff.ReadUInt16();//ushort
                Cubics.Add(tmpc);
            }

            FindParty = buff.ReadByte();         //0

            AbnormalEffects = buff.ReadUInt32(); //0 0 0 0

            //Globals.l2net_home.Add_Text("AbnormalEffects: " + AbnormalEffects.ToString("X2"), Globals.Green, TextType.BOT);
            buff.ReadByte();                      //dunno//0

            buff.ReadUInt32();                    //8E AC C 0 //ClanPrivileges

            isFlying  = buff.ReadUInt16();        //9 0
            RecAmount = buff.ReadUInt16();        //13 0
            buff.ReadUInt32();                    //0 0 0 0 //getMountNpcId() + 1000000
            buff.ReadUInt16();                    //50 0 //InventoryLimit

            Class = buff.ReadUInt32();            //classid again //61 0 0 0
            buff.ReadUInt32();                    //special effects? //0 0 0 0 //SpecialEffects

            Max_CP = buff.ReadUInt32();           //92 9 0 0
            Cur_CP = buff.ReadUInt32();           //92 9 0 0

            EnchantAmount = buff.ReadByte();      //0
            TeamCircle    = buff.ReadByte();      //0

            ClanCrestIDLarge = buff.ReadUInt32(); //0 0 0 0

            HeroIcon = buff.ReadByte();           //is noble //1
            HeroGlow = buff.ReadByte();           //is hero glowing //0

            try
            {
                isFishing = buff.ReadByte();      //0
                FishX     = buff.ReadInt32();     //0 0 0 0
                FishY     = buff.ReadInt32();     //0 0 0 0
                FishZ     = buff.ReadInt32();     //0 0 0 0

                NameColor = buff.ReadUInt32();    //0 0 0 0
                isRunning = buff.ReadByte();      //0

                PledgeClass = buff.ReadUInt32();  //pldege class //40 BB 1A 0
                buff.ReadUInt32();                //0 5 0 0 //pledge type

                TitleColor = buff.ReadUInt32();   //title color //0 0 0 0

                DemonSword = buff.ReadUInt32();   //z sword? //0 0 0 0

                Transform_ID = buff.ReadUInt32(); //Transformation ID

                //these changed in CT2.3...
                buff.ReadInt16();               //Attack Element
                buff.ReadInt16();               //Attack Element Value
                buff.ReadInt16();               //Def Attr Fire
                buff.ReadInt16();               //Def Attr Water
                buff.ReadInt16();               //Def Attr Wind
                buff.ReadInt16();               //Def Attr Earth
                buff.ReadInt16();               //Def Attr Holy
                buff.ReadInt16();               //Def Attr Unholy

                Agathon_ID = buff.ReadUInt32(); //AgathionId

                if (Globals.gamedata.Chron >= Chronicle.CT2_1)
                {
                    //C9 - CT2.5
                    buff.ReadInt32();  //Fame
                    buff.ReadInt32();  // Allow or Prevent opening of mini map (hb cert)
                    buff.ReadInt32();  //Vitality Level
                    buff.ReadUInt32(); // EXtended VFX
                }

                if (Globals.gamedata.Chron >= Chronicle.CT3_0)
                {
                    buff.ReadUInt32(); //00
                    buff.ReadUInt32(); //00
                    buff.ReadByte();   //00
                }
            }
            catch
            {
            }
        }
예제 #2
0
파일: CharInfo.cs 프로젝트: devmvalvm/L2Net
        public void Load(ByteBuffer buff)
        {
            //int offset = 1;

            /*
             * 31
             *  6E C8 FE FF
             *  9B 50 02 00
             *  20 F4 FF FF
             *
             *  00 00 00 00
             *
             *  68 5F 11 4A id
             *  4C 00 61 00 64 00 79 00 64 00 77 00 61 00 72 00 66 00 00 00
             *  04 race
             *  00 sex
             *  01 ?
             *  35 00 00 00 base class ??
             *
             *  F0 33 00 00
             *  61 84 00 00
             *  5F 84 00 00
             *  00 00 00 00
             *  B8 45 00 00
             *  62 84 00 00
             *  63 84 00 00
             *  65 84 00 00
             *  00 00 00 00
             *  5F 84 00 00
             *  00 00 00 00
             *  00 00 00 00 -1
             *
             *  EF 33 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00 -2
             *
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00 -3
             *
             *  00 00 00 00
             *  00 00 00 00 -4
             *
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00 -5
             *
             *  00 00 00 00
             *
             *  02 01 00 00 // karma  ?
             *
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00
             *  DE 00 00 00 // 222 ? cast speed ?
             *  79 02 00 00 // 633 attac k speed
             *  00 00 00 00
             *  83 00
             *  50 00
             *  32 00
             *  32 00
             *  00 00 // title ?
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  F0 3F 93 C1 51 F2 EA 3C
             *  02 40 00 00 00 00 00 00
             *  14 40 00 00
             *  00 00 00 00
             *  33 40 00 00
             *  00 00
             *  01 00 00 00
             *  02 00 00 00
             *  49 00 6D 00 61 00 53 00 68 00 6F 00 72 00 74 00 73 00 74 00 75 00 66 00 66 00 00 00 //title
             *  1F 03 10 60 clanid
             *  6B 9B 00 00 clansrect
             *  00 00 00 00 allyid
             *  00 00 00 00 alycrest
             *  01 is sitting
             *  01 is runing
             *  00 in combat
             *  00 isalikedead
             *  00 invi
             *  00 mount
             *  00 store
             *  00 00 cub
             *  00 find pt
             *  00
             *  23 00 rec ?
             *  00 00 00 00
             *  9C 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 00 00 00
             *  00 FF FF FF //color
             *  00 FF 6F 00 //head ?
             *  00
             *  04 00
             *  00 A2 F9 EC //tit color
             *  00 00
             *  D0 07 00 00 // 2k - clan rep?
             *  00 00 00 00 trans
             *  00 00 00 00 aghat
             *  01 00 00 00
             *  00 00 00 00
             *  00 00
             *  79 28 00 00
             *  7C 3C 00 00
             *  7C 3C 00 00
             *  96 0A 00 00
             *  96 0A 00 00
             *  00 00 00 00
             *  00 00
             *  01 00 00 00 // effect
             *  28 00
             *  00
             */
            X      = buff.ReadInt32();
            Y      = buff.ReadInt32();
            Z      = buff.ReadInt32();
            Dest_X = X;
            Dest_Y = Y;
            Dest_Z = Z;

            buff.ReadInt32();     // in G+ and onward this is now the Vechile ID

            ID   = buff.ReadUInt32();
            Name = buff.ReadString();

            //Race = buff.ReadUInt32();
            //Sex = buff.ReadUInt32();
            Race = buff.ReadByte();
            buff.ReadByte();
            Sex = buff.ReadUInt32();

            BaseClass = buff.ReadUInt32();

            Underwear = buff.ReadUInt32();
            Head      = buff.ReadUInt32();
            RHand     = buff.ReadUInt32();
            LHand     = buff.ReadUInt32();
            Gloves    = buff.ReadUInt32();
            Chest     = buff.ReadUInt32();
            Legs      = buff.ReadUInt32();
            Feet      = buff.ReadUInt32();
            Back      = buff.ReadUInt32();
            LRHand    = buff.ReadUInt32();
            Hair      = buff.ReadUInt32();
            DollFace  = buff.ReadUInt32();

            //GD OK

            buff.ReadUInt32();    //right bracelet
            buff.ReadUInt32();    //left bracelet
            buff.ReadUInt32();    //deco 1
            buff.ReadUInt32();    //deco 2
            buff.ReadUInt32();    //deco 3
            buff.ReadUInt32();    //deco 4
            buff.ReadUInt32();    //deco 5
            buff.ReadUInt32();    //deco 6

            buff.ReadUInt32();    //belt

            //GD OK

            buff.ReadUInt32();    //aug underwear
            buff.ReadUInt32();    //aug head
            aug_RHand = buff.ReadUInt32();
            aug_LHand = buff.ReadUInt32();

            buff.ReadUInt32();    //aug gloves
            buff.ReadUInt32();    //aug chest
            buff.ReadUInt32();    //aug legs
            buff.ReadUInt32();    //aug feet
            buff.ReadUInt32();    //aug back
            buff.ReadUInt32();    //aug lr hand
            buff.ReadUInt32();    //aug hair
            buff.ReadUInt32();    //aug doll face

            //GD OK

            buff.ReadUInt32();    //aug right bracelet
            buff.ReadUInt32();    //aug left bracelet
            buff.ReadUInt32();    //aug deco 1
            buff.ReadUInt32();    //aug deco 2
            buff.ReadUInt32();    //aug deco 3
            buff.ReadUInt32();    //aug deco 4
            buff.ReadUInt32();    //aug deco 5
            buff.ReadUInt32();    //aug deco 6

            buff.ReadUInt32();    //aug belt


            buff.ReadUInt32(); //05 00 00 00
            buff.ReadUInt32(); //01 00 00 00

            buff.ReadUInt32(); // old pvp flag
            buff.ReadInt32();  // old karma

            //GD OK


            buff.ReadUInt32();
            buff.ReadUInt32();
            buff.ReadUInt32();
            buff.ReadUInt32(); //00 00 00 00
            buff.ReadUInt32(); //00 00 00 00
            buff.ReadUInt32(); //00 00 00 00
            //buff.ReadUInt32();
            buff.ReadByte();   //00 00 00 00
            buff.ReadInt16();
            MatkSpeed = buff.ReadUInt32();
            PatkSpeed = buff.ReadUInt32();
            buff.ReadUInt32();//00
            RunSpeed      = buff.ReadUInt16();
            WalkSpeed     = buff.ReadUInt16();
            SwimRunSpeed  = buff.ReadUInt16();
            SwimWalkSpeed = buff.ReadUInt16();
            //PvPFlag = buff.ReadUInt32();
            //Karma = buff.ReadInt32();

            //buff.ReadUInt32(); //00 00 00 00
            //buff.ReadUInt32(); //64 00 00 00

            //GD OK

            //MatkSpeed = buff.ReadUInt32();
            //PatkSpeed = buff.ReadUInt32();

            buff.ReadUInt32(); //00 00 00 00
            buff.ReadUInt32(); //00 00 00 00
            buff.ReadUInt32(); //00 00 00 00
            buff.ReadUInt16();

            /*RunSpeed = buff.ReadUInt32();
             * WalkSpeed = buff.ReadUInt32();
             * SwimRunSpeed = buff.ReadUInt32();
             * SwimWalkSpeed = buff.ReadUInt32();
             * flRunSpeed = buff.ReadUInt32();
             * flWalkSpeed = buff.ReadUInt32();
             * 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());

            //GD OK
            buff.ReadUInt32();
            buff.ReadUInt32();
            buff.ReadUInt16();
            HairSytle = buff.ReadUInt32();
            HairColor = buff.ReadUInt32();
            Face      = buff.ReadUInt32();

            Title       = buff.ReadString();
            ClanID      = buff.ReadUInt32();
            ClanCrestID = buff.ReadUInt32();
            AllyID      = buff.ReadUInt32();
            AllyCrestID = buff.ReadUInt32();

            //GD OK

            isSitting   = buff.ReadByte();
            isRunning   = buff.ReadByte();
            isInCombat  = buff.ReadByte();
            isAlikeDead = buff.ReadByte();
            // re: hide
            //
            // When a player casts hide the server sets their CI
            // AbnormalEffect to the Stealth Mask and sets this byte to 1.
            // It then sends all clients a DeleteObject packet.
            // Since the Delete object packet is what actually makes the player
            // vanish this byte is responsible for handling what happens if the player
            // logs out and then back in.  Basically if this byte is set when
            // a player logs in, this tells all clients not to draw the actor :)
            // !! This byte alone does not mean a player is invisible, just that they will
            //  load invisible !!
            Invisible        = buff.ReadByte();
            MountType        = buff.ReadByte();
            PrivateStoreType = buff.ReadByte();

            CubicCount = buff.ReadUInt16();
            Cubics.Clear();
            for (uint i = 0; i < CubicCount; i++)
            {
                uint tmpc = buff.ReadUInt16();        //ushort
                Cubics.Add(tmpc);
            }

            FindParty = buff.ReadByte();


            //buff.ReadUInt32();


            isFlying  = buff.ReadByte();
            RecAmount = buff.ReadUInt16();

            buff.ReadUInt32();         //00 00 00 00
            Class = buff.ReadUInt32(); //class id

            //GD OK

            buff.ReadUInt32();               //00
            EnchantAmount = buff.ReadByte();
            TeamCircle    = buff.ReadByte(); //team color

            ClanCrestIDLarge = buff.ReadUInt32();

            HeroIcon = buff.ReadByte();    //is noble
            HeroGlow = buff.ReadByte();    //is hero

            isFishing = buff.ReadByte();
            FishX     = buff.ReadInt32();
            FishY     = buff.ReadInt32();
            FishZ     = buff.ReadInt32();

            NameColor   = buff.ReadUInt32();
            Heading     = buff.ReadInt32(); //heading
            PledgeClass = buff.ReadByte();
            buff.ReadByte();                //pledge type
            TitleColor = buff.ReadUInt32();

            //GD OK

            DemonSword = buff.ReadUInt16();   //z sword? //0 0 0 0
            buff.ReadUInt32();                //clan rep
            Transform_ID = buff.ReadUInt32(); //transformation id
            Agathon_ID   = buff.ReadUInt32(); //agathon id


            buff.ReadUInt32();//01 00 00 00


            ExtendedEffects = buff.ReadUInt32();     // Extended VFX (stigma etc)
            buff.ReadInt16();


            Cur_CP = buff.ReadUInt32(); //64 00 00 00

            Max_HP = buff.ReadUInt32(); //C1 00 00 00
            Cur_HP = buff.ReadUInt32(); //C1 00 00 00
            Max_MP = buff.ReadUInt32(); //27 00 00 00
            Cur_MP = buff.ReadUInt32(); //27 00 00 00

            buff.ReadUInt32();          //00 00 00 00
            buff.ReadByte();            //00

            AbnormalEffects = 0x00;
            uint AbnEffCount = buff.ReadUInt32();

            AbnEffects.Clear();

            for (uint i = 0; i < (uint)AbnEffCount; i++)
            {
                uint tmpabneff = buff.ReadUInt32();
                //Globals.l2net_home.Add_Text("Adding abnormal vfx: " + tmpabneff.ToString("X2") + "to : " + Name, Globals.Yellow, TextType.BOT);
                AbnEffects.Add(tmpabneff);
            }
            buff.ReadInt16();
        }