struct PACKET_ZC_NOTIFY_STANDENTRY {
/* this+0x0 */ short PacketType
/* this+0x2 */ unsigned char objecttype
/* this+0x3 */ unsigned long GID
/* this+0x7 */ short speed
/* this+0x9 */ short bodyState
/* this+0xb */ short healthState
/* this+0xd */ short effectState
/* this+0xf */ short job
/* this+0x11 */ short head
/* this+0x13 */ short weapon
/* this+0x15 */ short accessory
/* this+0x17 */ short shield
/* this+0x19 */ short accessory2
/* this+0x1b */ short accessory3
/* this+0x1d */ short headpalette
/* this+0x1f */ short bodypalette
/* this+0x21 */ short headDir
/* this+0x23 */ unsigned long GUID
/* this+0x27 */ short GEmblemVer
/* this+0x29 */ short honor
/* this+0x2b */ short virtue
/* this+0x2d */ bool isPKModeON
/* this+0x2e */ unsigned char sex
/* this+0x2f */ unsigned char[0x3] PosDir
/* this+0x32 */ unsigned char xSize
/* this+0x33 */ unsigned char ySize
/* this+0x34 */ unsigned char state
/* this+0x35 */ short clevel
}
--- ours
p.PacketType = idle_unit2Type;
p.objecttype = clif_bl_type(bl);
p.GID = bl->id;
p.speed = iStatus->get_speed(bl);
p.bodyState = (sc) ? sc->opt1 : 0;
p.healthState = (sc) ? sc->opt2 : 0;
p.effectState = (sc) ? sc->option : bl->type == BL_NPC ? ((TBL_NPC*)bl)->option : 0;
p.job = vd->class_;
p.head = vd->hair_style;
p.weapon = vd->weapon;
p.accessory = vd->head_bottom;
p.shield = vd->shield;
p.accessory2 = vd->head_top;
p.accessory3 = vd->head_mid;
if( bl->type == BL_NPC && vd->class_ == FLAG_CLASS ) { //The hell, why flags work like this?
p.shield = iStatus->get_emblem_id(bl);
p.accessory2 = GetWord(g_id, 1);
p.accessory3 = GetWord(g_id, 0);
}
p.headpalette = vd->hair_color;
p.bodypalette = vd->cloth_color;
p.headDir = (sd)? sd->head_dir : 0;
p.GUID = g_id;
p.GEmblemVer = iStatus->get_emblem_id(bl);
p.honor = (sd) ? sd->status.manner : 0;
p.virtue = (sc) ? sc->opt3 : 0;
p.isPKModeON = (sd) ? sd->status.karma : 0;
p.sex = vd->sex;
WBUFPOS(&p.PosDir[0],0,bl->x,bl->y,unit_getdir(bl));
p.xSize = p.ySize = (sd) ? 5 : 0;
p.state = vd->dead_sit;
p.clevel = clif_setlevel(bl);
--- ceres
memset(buf,0,packet_len(0x78));
WBUFW(buf,0)=0x78;
WBUFL(buf,2)=bl->id;
WBUFW(buf,6)=status_get_speed(bl);
if (sc) {
WBUFW(buf,8)=sc->opt1;
WBUFW(buf,10)=sc->opt2;
WBUFW(buf,12)=sc->option;
WBUFW(buf,42)=sc->opt3;
}
WBUFW(buf,14)=vd->class_;
WBUFW(buf,16)=vd->hair_style;
WBUFW(buf,18)=vd->weapon;
WBUFW(buf,20)=vd->head_bottom;
WBUFW(buf,22)=vd->shield;
WBUFW(buf,24)=vd->head_top;
WBUFW(buf,26)=vd->head_mid;
WBUFW(buf,28)=vd->hair_color;
WBUFW(buf,30)=vd->cloth_color;
WBUFW(buf,32)=sd?sd->head_dir:0;
WBUFL(buf,34)=guild_id;
WBUFW(buf,38)=emblem_id;
if (sd) {
WBUFW(buf,40)=sd->status.manner;
WBUFB(buf,44)=sd->status.karma;
}
WBUFB(buf,45)=vd->sex;
WBUFPOS(buf,46,bl->x,bl->y,dir);
WBUFB(buf,49)=5;
WBUFB(buf,50)=5;
WBUFB(buf,51)=vd->dead_sit;
WBUFW(buf,52)=clif_setlevel(lv);
return packet_len(0x78);